This is the patch you can refer to.^^
Signed-off-by: Yu Mingfei <[email protected]>
---
client/virt/libvirt_vm.py | 60
+++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 60 insertions(+), 0 deletions(-)
diff --git a/client/virt/libvirt_vm.py b/client/virt/libvirt_vm.py
index d97ac0c..e2d0daf 100644
--- a/client/virt/libvirt_vm.py
+++ b/client/virt/libvirt_vm.py
@@ -1597,3 +1597,63 @@ class VM(virt_vm.BaseVM):
Override BaseVM restore_from_file method
"""
virsh_restore(self.name, path, uri=self.connect_uri)
+
+
+ def rename(self, newname):
+ """
+ Rename this vm.
+ @param newname:new name of vm.
+ @return:True or False
+ """
+ def rename_xml_utils(xml_path, newname):
+ """
+ Modify name in an xml file.
+ @param xml_path:xml file path
+ """
+ dom = minidom.parse(xml_path)
+ root = dom.documentElement
+ node_name = root.getElementsByTagName("name")[0]
+ node_name.firstChild.data = "%s" % newname
+ node_uuid = root.getElementsByTagName("uuid")[0]
+ root.removeChild(node_uuid)
+ f=open(xml_path, "w")
+ dom.writexml(f)
+ f.close()
+
+ if self.name == newname:
+ logging.error("Error:Please give a different name with current.")
+ return False
+
+ #Create a new xml file for new vm
+ new_vm_tmp_xml = self.backup_xml()
+ try:
+ rename_xml_utils(new_vm_tmp_xml, newname)
+ except Exception, detail:
+ logging.error("Error:Edit xml failed: %s", detail)
+ if os.path.exists(new_vm_tmp_xml):
+ os.remove(new_vm_tmp_xml)
+ return False
+
+ #Undefine old vm and define new vm
+ old_vm_tmp_xml = self.backup_xml()
+ if not self.undefine():
+ logging.error("Error:Undefine %s failed.", self.name)
+ if os.path.exists(new_vm_tmp_xml):
+ os.remove(new_vm_tmp_xml)
+ if os.path.exists(old_vm_tmp_xml):
+ os.remove(old_vm_tmp_xml)
+ return False
+ if not self.define(new_vm_tmp_xml):
+ logging.error("Error:Define %s failed.", newname)
+ self.define(old_vm_tmp_xml)
+ return False
+ logging.debug("Rename %s to %s succeed.", self.name, newname)
+ self.name = newname
+
+ #delete tmp files
+ if os.path.exists(new_vm_tmp_xml):
+ os.remove(new_vm_tmp_xml)
+ if os.path.exists(old_vm_tmp_xml):
+ os.remove(old_vm_tmp_xml)
+ return True
+
-- 1.7.1
--
Best Regards
Yu Mingfei
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest