This patch adds a new filefor xml functions.

Signed-off-by: Yu Mingfei <yuming...@cn.fujitsu.com>
---
  client/virt/libvirt_xml_utils.py |   43 ++++++++++++++++++++++++++++++++++++++
  1 files changed, 43 insertions(+), 0 deletions(-)
  create mode 100644 client/virt/libvirt_xml_utils.py

diff --git a/client/virt/libvirt_xml_utils.py b/client/virt/libvirt_xml_utils.py
new file mode 100644
index 0000000..84a21b6
--- /dev/null
+++ b/client/virt/libvirt_xml_utils.py
@@ -0,0 +1,43 @@
+import logging, os, shutil
+from xml.dom.minidom import parse, parseString
+from autotest.client.shared import utils, error
+import libvirt_vm
+
+
+def create_new_vm(old_vm, newname, params):
+    """
+    Create a new vm through an exist vm,the difference is name and uuid.
+
+    @param old_vm:an exist vm object
+    @param newname:new vm name
+    @param params:params dict of your test target
+    @return:return a vm object
+    """
+    oldfile = "/etc/libvirt/qemu/%s.xml" % old_vm.name
+    newfile = "/etc/libvirt/qemu/%s.xml" % newname
+    if oldfile == newfile:
+        logging.info("use old vm.")
+        return old_vm
+    shutil.copy(oldfile, newfile)
+    dom = parse(newfile)
+    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(newfile, "w")
+    dom.writexml(f)
+    f.close()
+
+    if not os.path.exists(newfile):
+        raise error.TestError("Failed to create xml file.")
+
+    if params.has_key("uri"):
+        uri = params.get("uri")
+    status = libvirt_vm.virsh_define(newfile, uri)
+    if not status:
+        os.remove(newfile)
+        raise error.TestError("Failed to define a VM.")
+
+    new_vm = libvirt_vm.VM(newname, params, old_vm.root_dir, 
old_vm.address_cache)
+    return new_vm
-- 1.7.1

_______________________________________________
Autotest mailing list
Autotest@test.kernel.org
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to