]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Factor out setting of metadata to simplify code
authorPeter Krempa <pkrempa@redhat.com>
Fri, 6 Sep 2013 14:38:55 +0000 (16:38 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 17 Sep 2013 07:42:49 +0000 (09:42 +0200)
The code to set the metadata in a domain definition is common to live
and inactive domains. Factor it out into a common func.

src/conf/domain_conf.c

index ff30bc808024fe4883a65665888158289a290fd5..087c351c54ec71996d045bd8a66468982a1463c4 100644 (file)
@@ -18587,87 +18587,80 @@ cleanup:
     return ret;
 }
 
+
+static int
+virDomainDefSetMetadata(virDomainDefPtr def,
+                        int type,
+                        const char *metadata,
+                        const char *key ATTRIBUTE_UNUSED,
+                        const char *uri ATTRIBUTE_UNUSED)
+{
+    int ret = -1;
+
+    switch ((virDomainMetadataType) type) {
+    case VIR_DOMAIN_METADATA_DESCRIPTION:
+        VIR_FREE(def->description);
+        if (VIR_STRDUP(def->description, metadata) < 0)
+            goto cleanup;
+        break;
+
+    case VIR_DOMAIN_METADATA_TITLE:
+        VIR_FREE(def->title);
+        if (VIR_STRDUP(def->title, metadata) < 0)
+            goto cleanup;
+        break;
+
+    case VIR_DOMAIN_METADATA_ELEMENT:
+        virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
+                       _("<metadata> element is not supported"));
+        goto cleanup;
+        break;
+
+    default:
+        virReportError(VIR_ERR_INVALID_ARG, "%s",
+                       _("unknown metadata type"));
+        goto cleanup;
+        break;
+    }
+
+    ret = 0;
+
+cleanup:
+    return ret;
+}
+
+
 int
 virDomainObjSetMetadata(virDomainObjPtr vm,
                         int type,
                         const char *metadata,
-                        const char *key ATTRIBUTE_UNUSED,
-                        const char *uri ATTRIBUTE_UNUSED,
+                        const char *key,
+                        const char *uri,
                         virCapsPtr caps,
                         virDomainXMLOptionPtr xmlopt,
                         const char *configDir,
                         unsigned int flags)
 {
     virDomainDefPtr persistentDef;
-    int ret = -1;
 
     virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
                   VIR_DOMAIN_AFFECT_CONFIG, -1);
 
     if (virDomainLiveConfigHelperMethod(caps, xmlopt, vm, &flags,
                                         &persistentDef) < 0)
-        goto cleanup;
-
-    if (flags & VIR_DOMAIN_AFFECT_LIVE) {
-        switch ((virDomainMetadataType) type) {
-        case VIR_DOMAIN_METADATA_DESCRIPTION:
-            VIR_FREE(vm->def->description);
-            if (VIR_STRDUP(vm->def->description, metadata) < 0)
-                goto cleanup;
-            break;
-
-        case VIR_DOMAIN_METADATA_TITLE:
-            VIR_FREE(vm->def->title);
-            if (VIR_STRDUP(vm->def->title, metadata) < 0)
-                goto cleanup;
-            break;
-
-        case VIR_DOMAIN_METADATA_ELEMENT:
-            virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
-                           _("<metadata> element is not supported"));
-            goto cleanup;
-            break;
+        return -1;
 
-        default:
-            virReportError(VIR_ERR_INVALID_ARG, "%s",
-                           _("unknown metadata type"));
-            goto cleanup;
-            break;
-        }
-    }
+    if (flags & VIR_DOMAIN_AFFECT_LIVE)
+        if (virDomainDefSetMetadata(vm->def, type, metadata, key, uri) < 0)
+            return -1;
 
     if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
-        switch ((virDomainMetadataType) type) {
-        case VIR_DOMAIN_METADATA_DESCRIPTION:
-            VIR_FREE(persistentDef->description);
-            if (VIR_STRDUP(persistentDef->description, metadata) < 0)
-                goto cleanup;
-            break;
-
-        case VIR_DOMAIN_METADATA_TITLE:
-            VIR_FREE(persistentDef->title);
-            if (VIR_STRDUP(persistentDef->title, metadata) < 0)
-                goto cleanup;
-            break;
-
-        case VIR_DOMAIN_METADATA_ELEMENT:
-            virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
-                           _("<metadata> element is not supported"));
-            goto cleanup;
-
-         default:
-            virReportError(VIR_ERR_INVALID_ARG, "%s",
-                           _("unknown metadata type"));
-            goto cleanup;
-            break;
-        }
+        if (virDomainDefSetMetadata(persistentDef, type, metadata, key, uri) < 0)
+            return -1;
 
         if (virDomainSaveConfig(configDir, persistentDef) < 0)
-            goto cleanup;
+            return -1;
     }
 
-    ret = 0;
-
-cleanup:
-    return ret;
+    return 0;
 }