898951
From a1871d142620750d21fed3c06053fad60ca3f7c5 Mon Sep 17 00:00:00 2001
898951
Message-Id: <a1871d142620750d21fed3c06053fad60ca3f7c5@dist-git>
898951
From: Peter Krempa <pkrempa@redhat.com>
898951
Date: Thu, 22 Jan 2015 15:53:41 +0100
898951
Subject: [PATCH] conf: Factor out setting of metadata to simplify code
898951
898951
https://bugzilla.redhat.com/show_bug.cgi?id=1184929
898951
898951
The code to set the metadata in a domain definition is common to live
898951
and inactive domains. Factor it out into a common func.
898951
898951
(cherry picked from commit e9cb66f14e19935db16938ebdf1e407103b4de1e)
898951
898951
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
898951
---
898951
 src/conf/domain_conf.c | 115 +++++++++++++++++++++++--------------------------
898951
 1 file changed, 54 insertions(+), 61 deletions(-)
898951
898951
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
898951
index 7bfb602..6817e0e 100644
898951
--- a/src/conf/domain_conf.c
898951
+++ b/src/conf/domain_conf.c
898951
@@ -19032,87 +19032,80 @@ cleanup:
898951
     return ret;
898951
 }
898951
 
898951
-int
898951
-virDomainObjSetMetadata(virDomainObjPtr vm,
898951
+
898951
+static int
898951
+virDomainDefSetMetadata(virDomainDefPtr def,
898951
                         int type,
898951
                         const char *metadata,
898951
                         const char *key ATTRIBUTE_UNUSED,
898951
-                        const char *uri ATTRIBUTE_UNUSED,
898951
+                        const char *uri ATTRIBUTE_UNUSED)
898951
+{
898951
+    int ret = -1;
898951
+
898951
+    switch ((virDomainMetadataType) type) {
898951
+    case VIR_DOMAIN_METADATA_DESCRIPTION:
898951
+        VIR_FREE(def->description);
898951
+        if (VIR_STRDUP(def->description, metadata) < 0)
898951
+            goto cleanup;
898951
+        break;
898951
+
898951
+    case VIR_DOMAIN_METADATA_TITLE:
898951
+        VIR_FREE(def->title);
898951
+        if (VIR_STRDUP(def->title, metadata) < 0)
898951
+            goto cleanup;
898951
+        break;
898951
+
898951
+    case VIR_DOMAIN_METADATA_ELEMENT:
898951
+        virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
898951
+                       _("<metadata> element is not supported"));
898951
+        goto cleanup;
898951
+        break;
898951
+
898951
+    default:
898951
+        virReportError(VIR_ERR_INVALID_ARG, "%s",
898951
+                       _("unknown metadata type"));
898951
+        goto cleanup;
898951
+        break;
898951
+    }
898951
+
898951
+    ret = 0;
898951
+
898951
+cleanup:
898951
+    return ret;
898951
+}
898951
+
898951
+
898951
+int
898951
+virDomainObjSetMetadata(virDomainObjPtr vm,
898951
+                        int type,
898951
+                        const char *metadata,
898951
+                        const char *key,
898951
+                        const char *uri,
898951
                         virCapsPtr caps,
898951
                         virDomainXMLOptionPtr xmlopt,
898951
                         const char *configDir,
898951
                         unsigned int flags)
898951
 {
898951
     virDomainDefPtr persistentDef;
898951
-    int ret = -1;
898951
 
898951
     virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
898951
                   VIR_DOMAIN_AFFECT_CONFIG, -1);
898951
 
898951
     if (virDomainLiveConfigHelperMethod(caps, xmlopt, vm, &flags,
898951
                                         &persistentDef) < 0)
898951
-        goto cleanup;
898951
+        return -1;
898951
 
898951
-    if (flags & VIR_DOMAIN_AFFECT_LIVE) {
898951
-        switch ((virDomainMetadataType) type) {
898951
-        case VIR_DOMAIN_METADATA_DESCRIPTION:
898951
-            VIR_FREE(vm->def->description);
898951
-            if (VIR_STRDUP(vm->def->description, metadata) < 0)
898951
-                goto cleanup;
898951
-            break;
898951
-
898951
-        case VIR_DOMAIN_METADATA_TITLE:
898951
-            VIR_FREE(vm->def->title);
898951
-            if (VIR_STRDUP(vm->def->title, metadata) < 0)
898951
-                goto cleanup;
898951
-            break;
898951
-
898951
-        case VIR_DOMAIN_METADATA_ELEMENT:
898951
-            virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
898951
-                           _("<metadata> element is not supported"));
898951
-            goto cleanup;
898951
-            break;
898951
-
898951
-        default:
898951
-            virReportError(VIR_ERR_INVALID_ARG, "%s",
898951
-                           _("unknown metadata type"));
898951
-            goto cleanup;
898951
-            break;
898951
-        }
898951
-    }
898951
+    if (flags & VIR_DOMAIN_AFFECT_LIVE)
898951
+        if (virDomainDefSetMetadata(vm->def, type, metadata, key, uri) < 0)
898951
+            return -1;
898951
 
898951
     if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
898951
-        switch ((virDomainMetadataType) type) {
898951
-        case VIR_DOMAIN_METADATA_DESCRIPTION:
898951
-            VIR_FREE(persistentDef->description);
898951
-            if (VIR_STRDUP(persistentDef->description, metadata) < 0)
898951
-                goto cleanup;
898951
-            break;
898951
-
898951
-        case VIR_DOMAIN_METADATA_TITLE:
898951
-            VIR_FREE(persistentDef->title);
898951
-            if (VIR_STRDUP(persistentDef->title, metadata) < 0)
898951
-                goto cleanup;
898951
-            break;
898951
-
898951
-        case VIR_DOMAIN_METADATA_ELEMENT:
898951
-            virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
898951
-                           _("<metadata> element is not supported"));
898951
-            goto cleanup;
898951
-
898951
-         default:
898951
-            virReportError(VIR_ERR_INVALID_ARG, "%s",
898951
-                           _("unknown metadata type"));
898951
-            goto cleanup;
898951
-            break;
898951
-        }
898951
+        if (virDomainDefSetMetadata(persistentDef, type, metadata, key, uri) < 0)
898951
+            return -1;
898951
 
898951
         if (virDomainSaveConfig(configDir, persistentDef) < 0)
898951
-            goto cleanup;
898951
+            return -1;
898951
     }
898951
 
898951
-    ret = 0;
898951
-
898951
-cleanup:
898951
-    return ret;
898951
+    return 0;
898951
 }
898951
-- 
898951
2.2.1
898951