Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
vmdriver
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
2
Merge Requests
0
Wiki
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
f708f27e
authored
Feb 13, 2014
by
Guba Sándor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vmdriver: modified shutdown method to accept interrupts
parent
90504bb9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
21 deletions
+30
-21
vmdriver.py
+30
-21
No files found.
vmdriver.py
View file @
f708f27e
...
...
@@ -9,6 +9,7 @@ from decorator import decorator
from
psutil
import
NUM_CPUS
,
virtual_memory
,
cpu_percent
from
celery.contrib.abortable
import
AbortableTask
from
vm
import
VMInstance
from
vmcelery
import
celery
,
lib_connection
...
...
@@ -188,30 +189,38 @@ def create(vm_desc):
return
domain_info
(
vm
.
name
)
@celery.task
(
time_limit
=
120
)
@req_connection
def
shutdown
(
name
):
class
shutdown
(
AbortableTask
):
""" Shutdown virtual machine (need ACPI support).
Return When domain is missing.
Return When domain is missiing.
This job is abortable:
AbortableAsyncResult(id="<<jobid>>").abort()
"""
from
time
import
sleep
try
:
domain
=
lookupByName
(
name
)
domain
.
shutdown
()
while
True
:
try
:
Connection
.
get
()
.
lookupByName
(
name
)
except
Exception
as
e
:
if
e
.
get_error_code
()
==
libvirt
.
VIR_ERR_NO_DOMAIN
:
return
time_limit
=
120
@req_connection
def
run
(
self
,
**
kwargs
):
from
time
import
sleep
name
=
kwargs
[
'name'
]
try
:
domain
=
lookupByName
(
name
)
domain
.
shutdown
()
while
True
:
try
:
Connection
.
get
()
.
lookupByName
(
name
)
except
libvirt
.
libvirtError
as
e
:
if
e
.
get_error_code
()
==
libvirt
.
VIR_ERR_NO_DOMAIN
:
return
else
:
raise
else
:
raise
else
:
sleep
(
5
)
except
Exception
as
e
:
new_e
=
Exception
(
e
.
get_error_message
())
new_e
.
libvirtError
=
True
raise
new_e
if
self
.
is_aborted
(
**
kwargs
):
logging
.
info
(
"Shutdown aborted on vm:
%
s"
,
name
)
return
sleep
(
5
)
except
libvirt
.
libvirtError
as
e
:
new_e
=
Exception
(
e
.
get_error_message
())
new_e
.
libvirtError
=
True
raise
new_e
@celery.task
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment