dom0: add VM rename support (#371)
This commit is contained in:
parent
134af81b3b
commit
c0c64ecdc5
@ -404,6 +404,44 @@ class QubesVm(object):
|
|||||||
|
|
||||||
self.netvm_vm = netvm_vm
|
self.netvm_vm = netvm_vm
|
||||||
|
|
||||||
|
def pre_rename(self, new_name):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def set_name(self, name):
|
||||||
|
if self.is_running():
|
||||||
|
raise QubesException("Cannot change name of running VM!")
|
||||||
|
|
||||||
|
self.pre_rename(name)
|
||||||
|
|
||||||
|
new_conf = "%s/%s.conf" % (self.dir_path, name)
|
||||||
|
if os.path.exists(self.conf_file):
|
||||||
|
os.rename(self.conf_file, "%s/%s.conf" % (self.dir_path, name))
|
||||||
|
old_dirpath = self.dir_path
|
||||||
|
new_dirpath = os.path.dirname(self.dir_path) + '/' + name
|
||||||
|
os.rename(old_dirpath, new_dirpath)
|
||||||
|
self.dir_path = new_dirpath
|
||||||
|
old_name = self.name
|
||||||
|
self.name = name
|
||||||
|
if self.private_img is not None:
|
||||||
|
self.private_img = self.private_img.replace(old_dirpath, new_dirpath)
|
||||||
|
if self.root_img is not None:
|
||||||
|
self.root_img = self.root_img.replace(old_dirpath, new_dirpath)
|
||||||
|
if self.volatile_img is not None:
|
||||||
|
self.volatile_img = self.volatile_img.replace(old_dirpath, new_dirpath)
|
||||||
|
if self.conf_file is not None:
|
||||||
|
self.conf_file = new_conf.replace(old_dirpath, new_dirpath)
|
||||||
|
if self.appmenus_templates_dir is not None:
|
||||||
|
self.appmenus_templates_dir = self.appmenus_templates_dir.replace(old_dirpath, new_dirpath)
|
||||||
|
if self.icon_path is not None:
|
||||||
|
self.icon_path = self.icon_path.replace(old_dirpath, new_dirpath)
|
||||||
|
if self.kernels_dir is not None:
|
||||||
|
self.kernels_dir = self.kernels_dir.replace(old_dirpath, new_dirpath)
|
||||||
|
|
||||||
|
self.post_rename(old_name)
|
||||||
|
|
||||||
|
def post_rename(self, old_name):
|
||||||
|
pass
|
||||||
|
|
||||||
def is_template(self):
|
def is_template(self):
|
||||||
return isinstance(self, QubesTemplateVm)
|
return isinstance(self, QubesTemplateVm)
|
||||||
|
|
||||||
@ -1302,6 +1340,16 @@ class QubesTemplateVm(QubesVm):
|
|||||||
def remove_appmenus(self):
|
def remove_appmenus(self):
|
||||||
subprocess.check_call ([qubes_appmenu_remove_cmd, self.name, "vm-templates"])
|
subprocess.check_call ([qubes_appmenu_remove_cmd, self.name, "vm-templates"])
|
||||||
|
|
||||||
|
def pre_rename(self, new_name):
|
||||||
|
self.remove_appmenus()
|
||||||
|
|
||||||
|
def post_rename(self, old_name):
|
||||||
|
self.create_appmenus(False)
|
||||||
|
|
||||||
|
old_dirpath = os.path.dirname(self.dir_path) + '/' + old_name
|
||||||
|
self.clean_volatile_img = self.clean_volatile_img.replace(old_dirpath, self.dir_path)
|
||||||
|
self.rootcow_img = self.rootcow_img.replace(old_dirpath, self.dir_path)
|
||||||
|
|
||||||
def remove_from_disk(self):
|
def remove_from_disk(self):
|
||||||
if dry_run:
|
if dry_run:
|
||||||
return
|
return
|
||||||
@ -1815,6 +1863,12 @@ class QubesAppVm(QubesVm):
|
|||||||
self.remove_appmenus()
|
self.remove_appmenus()
|
||||||
super(QubesAppVm, self).remove_from_disk()
|
super(QubesAppVm, self).remove_from_disk()
|
||||||
|
|
||||||
|
def pre_rename(self, new_name):
|
||||||
|
self.remove_appmenus()
|
||||||
|
|
||||||
|
def post_rename(self, old_name):
|
||||||
|
self.create_appmenus(False)
|
||||||
|
|
||||||
|
|
||||||
class QubesVmCollection(dict):
|
class QubesVmCollection(dict):
|
||||||
"""
|
"""
|
||||||
|
@ -276,6 +276,17 @@ def set_kernelopts(vms, vm, args):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def set_name(vms, vm, args):
|
||||||
|
if len (args) != 1:
|
||||||
|
print >> sys.stderr, "Missing new name!"
|
||||||
|
return False
|
||||||
|
|
||||||
|
if args[0] == vm.name:
|
||||||
|
return False
|
||||||
|
vm.set_name(args[0])
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
properties = {
|
properties = {
|
||||||
"updateable": set_updateable,
|
"updateable": set_updateable,
|
||||||
"nonupdateable": set_nonupdateable,
|
"nonupdateable": set_nonupdateable,
|
||||||
@ -288,6 +299,7 @@ properties = {
|
|||||||
"template" : set_template,
|
"template" : set_template,
|
||||||
"vcpus" : set_vcpus,
|
"vcpus" : set_vcpus,
|
||||||
"kernelopts": set_kernelopts,
|
"kernelopts": set_kernelopts,
|
||||||
|
"name": set_name,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user