]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virDomainBackupDiskDefParseXML: Use virDomainStorageSourceParseBase
authorPeter Krempa <pkrempa@redhat.com>
Mon, 7 Dec 2020 13:03:22 +0000 (14:03 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 8 Dec 2020 14:12:33 +0000 (15:12 +0100)
Don't duplicate code to parse the virStorageSource basics.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/backup_conf.c

index 47e3bc1d60de56e262775cf8d8cf86c016b3a4dd..11d419ce2bdc5d1e0a37bbbaaf26f30e4108a3f9 100644 (file)
@@ -104,7 +104,7 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node,
 {
     VIR_XPATH_NODE_AUTORESTORE(ctxt)
     g_autofree char *type = NULL;
-    g_autofree char *driver = NULL;
+    g_autofree char *format = NULL;
     g_autofree char *backup = NULL;
     g_autofree char *state = NULL;
     g_autofree char *backupmode = NULL;
@@ -169,23 +169,17 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node,
         def->state = tmp;
     }
 
-    def->store = virStorageSourceNew();
+    type = virXMLPropString(node, "type");
+    format = virXPathString("string(./driver/@type)", ctxt);
 
-    if ((type = virXMLPropString(node, "type"))) {
-        if ((def->store->type = virStorageTypeFromString(type)) <= 0) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("unknown disk backup type '%s'"), type);
-            return -1;
-        }
+    if (!(def->store = virDomainStorageSourceParseBase(type, format, NULL)))
+          return -1;
 
-        if (def->store->type != VIR_STORAGE_TYPE_FILE &&
-            def->store->type != VIR_STORAGE_TYPE_BLOCK) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("unsupported disk backup type '%s'"), type);
-            return -1;
-        }
-    } else {
-        def->store->type = VIR_STORAGE_TYPE_FILE;
+    if (def->store->type != VIR_STORAGE_TYPE_FILE &&
+        def->store->type != VIR_STORAGE_TYPE_BLOCK) {
+        virReportError(VIR_ERR_XML_ERROR,
+                       _("unsupported disk backup type '%s'"), type);
+        return -1;
     }
 
     if (push)
@@ -198,15 +192,6 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node,
                                     storageSourceParseFlags, xmlopt) < 0)
         return -1;
 
-    if ((driver = virXPathString("string(./driver/@type)", ctxt))) {
-        def->store->format = virStorageFileFormatTypeFromString(driver);
-        if (def->store->format <= 0) {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                           _("unknown disk backup driver '%s'"), driver);
-            return -1;
-        }
-    }
-
     return 0;
 }