]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Introduce qemuDomainDefFromXML helper
authorJiri Denemark <jdenemar@redhat.com>
Wed, 14 Jun 2017 11:42:16 +0000 (13:42 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 14 Jun 2017 15:04:12 +0000 (17:04 +0200)
The main goal of this function is to enable reusing the parsing code
from qemuDomainDefCopy.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
src/qemu/qemu_domain.c

index 9b13241f9e17246e78a5af471a7ec8c6b25e959a..2f8afd1d922b61e2f979467652f7db6af5a0b57e 100644 (file)
@@ -4179,6 +4179,25 @@ void qemuDomainObjExitRemote(virDomainObjPtr obj)
 }
 
 
+static virDomainDefPtr
+qemuDomainDefFromXML(virQEMUDriverPtr driver,
+                     const char *xml)
+{
+    virCapsPtr caps;
+    virDomainDefPtr def;
+
+    if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
+        return NULL;
+
+    def = virDomainDefParseString(xml, caps, driver->xmlopt, NULL,
+                                  VIR_DOMAIN_DEF_PARSE_INACTIVE |
+                                  VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE);
+
+    virObjectUnref(caps);
+    return def;
+}
+
+
 virDomainDefPtr
 qemuDomainDefCopy(virQEMUDriverPtr driver,
                   virDomainDefPtr src,
@@ -4186,25 +4205,15 @@ qemuDomainDefCopy(virQEMUDriverPtr driver,
 {
     virBuffer buf = VIR_BUFFER_INITIALIZER;
     virDomainDefPtr ret = NULL;
-    virCapsPtr caps = NULL;
     char *xml = NULL;
 
     if (qemuDomainDefFormatBuf(driver, src, flags, &buf) < 0)
-        goto cleanup;
+        return NULL;
 
     xml = virBufferContentAndReset(&buf);
+    ret = qemuDomainDefFromXML(driver, xml);
 
-    if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
-        goto cleanup;
-
-    if (!(ret = virDomainDefParseString(xml, caps, driver->xmlopt, NULL,
-                                        VIR_DOMAIN_DEF_PARSE_INACTIVE |
-                                        VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))
-        goto cleanup;
-
- cleanup:
     VIR_FREE(xml);
-    virObjectUnref(caps);
     return ret;
 }