3ab5d775a1
OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=4293852b248e1f267831a4305b1c05a9
98 lines
3.9 KiB
Diff
98 lines
3.9 KiB
Diff
Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
|
===================================================================
|
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPI.py
|
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
|
@@ -1923,10 +1923,10 @@ class XendAPI(object):
|
|
bool(live), port, node, ssl, bool(chs))
|
|
return xen_api_success_void()
|
|
|
|
- def VM_save(self, _, vm_ref, dest, checkpoint):
|
|
+ def VM_save(self, _, vm_ref, dest, checkpoint, force):
|
|
xendom = XendDomain.instance()
|
|
xeninfo = xendom.get_vm_by_uuid(vm_ref)
|
|
- xendom.domain_save(xeninfo.getDomid(), dest, checkpoint)
|
|
+ xendom.domain_save(xeninfo.getDomid(), dest, checkpoint, force)
|
|
return xen_api_success_void()
|
|
|
|
def VM_restore(self, _, src, paused):
|
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomain.py
|
|
===================================================================
|
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomain.py
|
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendDomain.py
|
|
@@ -1496,7 +1496,7 @@ class XendDomain:
|
|
pass
|
|
sock.close()
|
|
|
|
- def domain_save(self, domid, dst, checkpoint=False):
|
|
+ def domain_save(self, domid, dst, checkpoint=False, force=False):
|
|
"""Start saving a domain to file.
|
|
|
|
@param domid: Domain ID or Name
|
|
@@ -1512,6 +1512,9 @@ class XendDomain:
|
|
if not dominfo:
|
|
raise XendInvalidDomain(str(domid))
|
|
|
|
+ if os.access(dst, os.F_OK) and not force:
|
|
+ raise XendError("Save file:%s exist!\n" % dst)
|
|
+
|
|
if dominfo.getDomid() == DOM0_ID:
|
|
raise XendError("Cannot save privileged domain %s" % str(domid))
|
|
if dominfo._stateGet() != DOM_STATE_RUNNING:
|
|
Index: xen-4.0.0-testing/tools/python/xen/xm/main.py
|
|
===================================================================
|
|
--- xen-4.0.0-testing.orig/tools/python/xen/xm/main.py
|
|
+++ xen-4.0.0-testing/tools/python/xen/xm/main.py
|
|
@@ -120,7 +120,7 @@ SUBCOMMAND_HELP = {
|
|
'reset' : ('<Domain>', 'Reset a domain.'),
|
|
'restore' : ('<CheckpointFile> [-p]',
|
|
'Restore a domain from a saved state.'),
|
|
- 'save' : ('[-c] <Domain> <CheckpointFile>',
|
|
+ 'save' : ('[-c|-f] <Domain> <CheckpointFile>',
|
|
'Save a domain state to restore later.'),
|
|
'shutdown' : ('<Domain> [-waRH]', 'Shutdown a domain.'),
|
|
'top' : ('', 'Monitor a host and the domains in real time.'),
|
|
@@ -316,6 +316,7 @@ SUBCOMMAND_OPTIONS = {
|
|
),
|
|
'save': (
|
|
('-c', '--checkpoint', 'Leave domain running after creating snapshot'),
|
|
+ ('-f', '--force', 'Force to overwrite exist file'),
|
|
),
|
|
'restore': (
|
|
('-p', '--paused', 'Do not unpause domain after restoring it'),
|
|
@@ -820,18 +821,21 @@ def xm_event_monitor(args):
|
|
|
|
def xm_save(args):
|
|
|
|
- arg_check(args, "save", 2, 3)
|
|
+ arg_check(args, "save", 2, 4)
|
|
|
|
try:
|
|
- (options, params) = getopt.gnu_getopt(args, 'c', ['checkpoint'])
|
|
+ (options, params) = getopt.gnu_getopt(args, 'cf', ['checkpoint', 'force'])
|
|
except getopt.GetoptError, opterr:
|
|
err(opterr)
|
|
usage('save')
|
|
|
|
checkpoint = False
|
|
+ force = False
|
|
for (k, v) in options:
|
|
if k in ['-c', '--checkpoint']:
|
|
checkpoint = True
|
|
+ if k in ['-f', '--force']:
|
|
+ force = True
|
|
|
|
if len(params) != 2:
|
|
err("Wrong number of parameters")
|
|
@@ -845,9 +849,9 @@ def xm_save(args):
|
|
sys.exit(1)
|
|
|
|
if serverType == SERVER_XEN_API:
|
|
- server.xenapi.VM.save(get_single_vm(dom), savefile, checkpoint)
|
|
+ server.xenapi.VM.save(get_single_vm(dom), savefile, checkpoint, force)
|
|
else:
|
|
- server.xend.domain.save(dom, savefile, checkpoint)
|
|
+ server.xend.domain.save(dom, savefile, checkpoint, force)
|
|
|
|
def xm_restore(args):
|
|
arg_check(args, "restore", 1, 2)
|