]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: domain: Introduce and use virDomainObjGetMessages()
authorLuke Yue <lukedyue@gmail.com>
Mon, 12 Jul 2021 11:32:14 +0000 (19:32 +0800)
committerMartin Kletzander <mkletzan@redhat.com>
Tue, 3 Aug 2021 12:22:08 +0000 (14:22 +0200)
The test driver and qemu driver could share the same code in
virDomainGetMessages(), so extract it to a function.

Signed-off-by: Luke Yue <lukedyue@gmail.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms
src/qemu/qemu_driver.c

index 06c1fcf5e5abdd47d49f0ac106f1b0e20a474dec..09da4ab9521dee9d9483fb508d0a31e8288defbf 100644 (file)
@@ -31209,3 +31209,55 @@ virHostdevIsVFIODevice(const virDomainHostdevDef *hostdev)
         hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
         hostdev->source.subsys.u.pci.backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO;
 }
+
+
+/**
+ * virDomainObjGetMessages:
+ * @vm: domain object
+ * @msgs: pointer to a variable to store messages
+ * @flags: zero or more virDomainMessageType flags
+ *
+ * Returns number of messages stored in @msgs, -1 otherwise.
+ */
+int
+virDomainObjGetMessages(virDomainObj *vm,
+                        char ***msgs,
+                        unsigned int flags)
+{
+    size_t i = 0;
+    size_t n = 0;
+    int nmsgs = 0;
+    int rv = -1;
+
+    *msgs = NULL;
+
+    if (!flags || (flags & VIR_DOMAIN_MESSAGE_TAINTING)) {
+        nmsgs += __builtin_popcount(vm->taint);
+        *msgs = g_renew(char *, *msgs, nmsgs+1);
+
+        for (i = 0; i < VIR_DOMAIN_TAINT_LAST; i++) {
+            if (vm->taint & (1 << i)) {
+                (*msgs)[n++] = g_strdup_printf(
+                    _("tainted: %s"),
+                    _(virDomainTaintMessageTypeToString(i)));
+            }
+        }
+    }
+
+    if (!flags || (flags & VIR_DOMAIN_MESSAGE_DEPRECATION)) {
+        nmsgs += vm->ndeprecations;
+        *msgs = g_renew(char *, *msgs, nmsgs+1);
+
+        for (i = 0; i < vm->ndeprecations; i++) {
+            (*msgs)[n++] = g_strdup_printf(
+                _("deprecated configuration: %s"),
+                vm->deprecations[i]);
+        }
+    }
+
+    (*msgs)[nmsgs] = NULL;
+
+    rv = nmsgs;
+
+    return rv;
+}
index ca2108262418749d850fad187eb8a41ed83650fc..9f32bcf9cf9b76f72da52f3371e6dda48195b536 100644 (file)
@@ -4165,3 +4165,8 @@ virHostdevIsMdevDevice(const virDomainHostdevDef *hostdev)
 bool
 virHostdevIsVFIODevice(const virDomainHostdevDef *hostdev)
     ATTRIBUTE_NONNULL(1);
+
+int
+virDomainObjGetMessages(virDomainObj *vm,
+                        char ***msgs,
+                        unsigned int flags);
index 43493ea76e33e94e334ceed59c48942c894097e7..6961cdb137a4819aa724cba0a5df41325a16e280 100644 (file)
@@ -567,6 +567,7 @@ virDomainObjDeprecation;
 virDomainObjEndAPI;
 virDomainObjFormat;
 virDomainObjGetDefs;
+virDomainObjGetMessages;
 virDomainObjGetMetadata;
 virDomainObjGetOneDef;
 virDomainObjGetOneDefState;
index 0b35bbc15cfe4f3fddba5a46969ea5936fc644a7..d8c431b41a5bcb1998d49703edfe447372251809 100644 (file)
@@ -20362,8 +20362,6 @@ qemuDomainGetMessages(virDomainPtr dom,
 {
     virDomainObj *vm = NULL;
     int rv = -1;
-    size_t i, n;
-    int nmsgs;
 
     virCheckFlags(VIR_DOMAIN_MESSAGE_DEPRECATION |
                   VIR_DOMAIN_MESSAGE_TAINTING, -1);
@@ -20374,37 +20372,7 @@ qemuDomainGetMessages(virDomainPtr dom,
     if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0)
         goto cleanup;
 
-    *msgs = NULL;
-    nmsgs = 0;
-    n = 0;
-
-    if (!flags || (flags & VIR_DOMAIN_MESSAGE_TAINTING)) {
-        nmsgs += __builtin_popcount(vm->taint);
-        *msgs = g_renew(char *, *msgs, nmsgs+1);
-
-        for (i = 0; i < VIR_DOMAIN_TAINT_LAST; i++) {
-            if (vm->taint & (1 << i)) {
-                (*msgs)[n++] = g_strdup_printf(
-                    _("tainted: %s"),
-                    _(virDomainTaintMessageTypeToString(i)));
-            }
-        }
-    }
-
-    if (!flags || (flags & VIR_DOMAIN_MESSAGE_DEPRECATION)) {
-        nmsgs += vm->ndeprecations;
-        *msgs = g_renew(char *, *msgs, nmsgs+1);
-
-        for (i = 0; i < vm->ndeprecations; i++) {
-            (*msgs)[n++] = g_strdup_printf(
-                _("deprecated configuration: %s"),
-                vm->deprecations[i]);
-        }
-    }
-
-    (*msgs)[nmsgs] = NULL;
-
-    rv = nmsgs;
+    rv = virDomainObjGetMessages(vm, msgs, flags);
 
  cleanup:
     virDomainObjEndAPI(&vm);