]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_snapshot: create: move XML parsing to separate function
authorPavel Hrdina <phrdina@redhat.com>
Wed, 22 Sep 2021 11:28:34 +0000 (13:28 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Wed, 1 Dec 2021 11:33:07 +0000 (12:33 +0100)
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_snapshot.c

index 394956a14d2a4c8c958ffb7b80cf240077a44025..7ffebbbdf240bb0ca3d8e7620a35553cfbbb573e 100644 (file)
@@ -1530,6 +1530,30 @@ qemuSnapshotCreateActiveExternal(virQEMUDriver *driver,
 }
 
 
+static virDomainSnapshotDef*
+qemuSnapshotCreateXMLParse(virDomainObj *vm,
+                           virQEMUDriver *driver,
+                           const char *xmlDesc,
+                           unsigned int flags)
+{
+    qemuDomainObjPrivate *priv = vm->privateData;
+    unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
+
+    if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE)
+        parse_flags |= VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE;
+
+    if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY) ||
+        !virDomainObjIsActive(vm))
+        parse_flags |= VIR_DOMAIN_SNAPSHOT_PARSE_OFFLINE;
+
+    if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_VALIDATE)
+        parse_flags |= VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE;
+
+    return virDomainSnapshotDefParseString(xmlDesc, driver->xmlopt,
+                                           priv->qemuCaps, NULL, parse_flags);
+}
+
+
 virDomainSnapshotPtr
 qemuSnapshotCreateXML(virDomainPtr domain,
                       virDomainObj *vm,
@@ -1543,7 +1567,6 @@ qemuSnapshotCreateXML(virDomainPtr domain,
     virDomainMomentObj *current = NULL;
     bool update_current = true;
     bool redefine = flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE;
-    unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
     int align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL;
     bool align_match = true;
     g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
@@ -1572,8 +1595,6 @@ qemuSnapshotCreateXML(virDomainPtr domain,
     if ((redefine && !(flags & VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT)) ||
         (flags & VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA))
         update_current = false;
-    if (redefine)
-        parse_flags |= VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE;
 
     if (qemuDomainSupportsCheckpointsBlockjobs(vm) < 0)
         return NULL;
@@ -1583,15 +1604,8 @@ qemuSnapshotCreateXML(virDomainPtr domain,
                        _("cannot halt after transient domain snapshot"));
         return NULL;
     }
-    if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY) ||
-        !virDomainObjIsActive(vm))
-        parse_flags |= VIR_DOMAIN_SNAPSHOT_PARSE_OFFLINE;
-
-    if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_VALIDATE)
-        parse_flags |= VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE;
 
-    if (!(def = virDomainSnapshotDefParseString(xmlDesc, driver->xmlopt,
-                                                priv->qemuCaps, NULL, parse_flags)))
+    if (!(def = qemuSnapshotCreateXMLParse(vm, driver, xmlDesc, flags)))
         return NULL;
 
     /* reject snapshot names containing slashes or starting with dot as