[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xend: check file exist for xm save
Check file exist for xm save, allow force to overwrite. Signed-off-by: Wei Kong <weikong.cn@gmail.com> diff -uNrp xen-3.4.0-testing/tools/python/xen/xend/XendAPI.py xen-3.4.0-testing/tools/python/xen/xend/XendAPI.py --- xen-3.4.0-testing/tools/python/xen/xend/XendAPI.py 2009-05-19 01:52:28.000000000 +0800 +++ xen-3.4.0-testing/tools/python/xen/xend/XendAPI.py 2009-05-19 01:52:44.000000000 +0800 @@ -1809,10 +1809,10 @@ class XendAPI(object):  bool(live), port, node, ssl)  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): diff -uNrp xen-3.4.0-testing/tools/python/xen/xend/XendDomain.py xen-3.4.0-testing/tools/python/xen/xend/XendDomain.py --- xen-3.4.0-testing/tools/python/xen/xend/XendDomain.py 2009-05-19 01:52:28.000000000 +0800 +++ xen-3.4.0-testing/tools/python/xen/xend/XendDomain.py 2009-05-19 01:52:44.000000000 +0800 @@ -1381,7 +1381,7 @@ class XendDomain:  finally:  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 @@ -1397,6 +1397,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: diff -uNrp xen-3.4.0-testing/tools/python/xen/xm/main.py xen-3.4.0-testing/tools/python/xen/xm/main.py --- xen-3.4.0-testing/tools/python/xen/xm/main.py 2009-05-19 01:52:28.000000000 +0800 +++ xen-3.4.0-testing/tools/python/xen/xm/main.py 2009-05-19 01:57:31.000000000 +0800 @@ -118,7 +118,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.'),  'snapshot-create' : ('[-d] <Domain> <SnapshotName>',  'Snapshot a running domain.'), @@ -283,6 +283,7 @@ SUBCOMMAND_OPTIONS = {  ),  'save': (  ('-c', '--checkpoint', 'Leave domain running after creating snapshot'), + ('-f', '--force', 'Force to overwrite exist file'),  ),  'snapshot-create': (  ('-d', '--diskonly', 'Perform disk only snapshot of domain'), @@ -801,18 +802,21 @@ def xm_snapshot_delete(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") @@ -826,9 +830,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) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |