mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
Make xm save / restore talk XenAPI; add save / restore to VM class.
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
This commit is contained in:
1 parent
7133144e3a
commit
a28f499e56
2 files changed
+34
-11
No files matched your search
@@ -1095,9 +1095,11 @@ class XendAPI(object):
|
||||
('remove_from_platform', None),
|
||||
('add_to_other_config', None),
|
||||
('remove_from_other_config', None),
|
||||
('save', None),
|
||||
('send_trigger', None)]
|
||||
|
||||
VM_funcs = [('create', 'VM'),
|
||||
('restore', None),
|
||||
('get_by_name_label', 'Set(VM)')]
|
||||
|
||||
# parameters required for _create()
|
||||
@@ -1584,7 +1586,18 @@ class XendAPI(object):
|
||||
xeninfo = xendom.get_vm_by_uuid(vm_ref)
|
||||
xendom.domain_send_trigger(xeninfo.getDomid(), trigger, vcpu)
|
||||
return xen_api_success_void()
|
||||
|
||||
|
||||
def VM_save(self, _, vm_ref, dest, checkpoint):
|
||||
xendom = XendDomain.instance()
|
||||
xeninfo = xendom.get_vm_by_uuid(vm_ref)
|
||||
xendom.domain_save(xeninfo.getDomid(), dest, checkpoint)
|
||||
return xen_api_success_void()
|
||||
|
||||
def VM_restore(self, _, src, paused):
|
||||
xendom = XendDomain.instance()
|
||||
xendom.domain_restore(src, bool(paused))
|
||||
return xen_api_success_void()
|
||||
|
||||
|
||||
# Xen API: Class VM_metrics
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
+20
-10
@@ -637,14 +637,18 @@ def xm_shell(args):
|
||||
#########################################################################
|
||||
|
||||
def xm_save(args):
|
||||
arg_check(args, "save", 2, 3)
|
||||
|
||||
arg_check(args, "save", 2, 3)
|
||||
|
||||
try:
|
||||
(options, params) = getopt.gnu_getopt(args, 'c', ['checkpoint'])
|
||||
except getopt.GetoptError, opterr:
|
||||
err(opterr)
|
||||
sys.exit(1)
|
||||
|
||||
dom = params[0]
|
||||
savefile = params[1]
|
||||
|
||||
checkpoint = False
|
||||
for (k, v) in options:
|
||||
if k in ['-c', '--checkpoint']:
|
||||
@@ -655,19 +659,22 @@ def xm_save(args):
|
||||
usage('save')
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
dominfo = parse_doms_info(server.xend.domain(params[0]))
|
||||
except xmlrpclib.Fault, ex:
|
||||
raise ex
|
||||
|
||||
domid = dominfo['domid']
|
||||
savefile = os.path.abspath(params[1])
|
||||
savefile = os.path.abspath(savefile)
|
||||
|
||||
if not os.access(os.path.dirname(savefile), os.W_OK):
|
||||
err("xm save: Unable to create file %s" % savefile)
|
||||
sys.exit(1)
|
||||
|
||||
if serverType == SERVER_XEN_API:
|
||||
server.xenapi.VM.save(get_single_vm(dom), savefile, checkpoint)
|
||||
else:
|
||||
try:
|
||||
dominfo = parse_doms_info(server.xend.domain(dom))
|
||||
except xmlrpclib.Fault, ex:
|
||||
raise ex
|
||||
|
||||
server.xend.domain.save(domid, savefile, checkpoint)
|
||||
domid = dominfo['domid']
|
||||
server.xend.domain.save(domid, savefile, checkpoint)
|
||||
|
||||
def xm_restore(args):
|
||||
arg_check(args, "restore", 1, 2)
|
||||
@@ -693,7 +700,10 @@ def xm_restore(args):
|
||||
err("xm restore: Unable to read file %s" % savefile)
|
||||
sys.exit(1)
|
||||
|
||||
server.xend.domain.restore(savefile, paused)
|
||||
if serverType == SERVER_XEN_API:
|
||||
server.xenapi.VM.restore(savefile, paused)
|
||||
else:
|
||||
server.xend.domain.restore(savefile, paused)
|
||||
|
||||
|
||||
def getDomains(domain_names, state, full = 0):
|
||||
|
||||