]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: conf: add virQEMUDriverGetDomainCapabilities
authorCole Robinson <crobinso@redhat.com>
Thu, 4 Apr 2019 21:31:00 +0000 (17:31 -0400)
committerCole Robinson <crobinso@redhat.com>
Tue, 6 Aug 2019 23:45:49 +0000 (19:45 -0400)
For now it's just a helper for building a qemu virDomainCapsPtr,
used in qemuConnectGetDomainCapabilities

Reviewed-by: Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
src/qemu/qemu_conf.c
src/qemu/qemu_conf.h
src/qemu/qemu_driver.c

index 8853578dc62bdc0c7341df40b310b261d30c3cf9..b6aadf358794c12beed26e5ce0049a0c8262d540 100644 (file)
@@ -1363,6 +1363,45 @@ virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
     return ret;
 }
 
+
+/**
+ * virQEMUDriverGetDomainCapabilities:
+ *
+ * Build a virDomainCapsPtr instance for the passed data.
+ *
+ * Returns: a reference to a virDomainCapsPtr instance or NULL
+ */
+virDomainCapsPtr
+virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr driver,
+                                   virQEMUCapsPtr qemuCaps,
+                                   const char *machine,
+                                   virArch arch,
+                                   virDomainVirtType virttype)
+{
+    virDomainCapsPtr ret = NULL, domCaps = NULL;
+    virCapsPtr caps = NULL;
+    virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+
+    if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
+        goto cleanup;
+
+    if (!(domCaps = virDomainCapsNew(virQEMUCapsGetBinary(qemuCaps), machine,
+                                     arch, virttype)))
+        goto cleanup;
+
+    if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps, driver->privileged,
+                                  cfg->firmwares, cfg->nfirmwares) < 0)
+        goto cleanup;
+
+    VIR_STEAL_PTR(ret, domCaps);
+ cleanup:
+    virObjectUnref(domCaps);
+    virObjectUnref(cfg);
+    virObjectUnref(caps);
+    return ret;
+}
+
+
 struct _qemuSharedDeviceEntry {
     size_t ref;
     char **domains; /* array of domain names */
index 8f078cbe79449716d5acc36fc3789dd8465d82ee..0cbddd7a9c5fa2ad8c2f9ed84398314ef33c3535 100644 (file)
@@ -315,6 +315,13 @@ virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver);
 virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
                                         bool refresh);
 
+virDomainCapsPtr
+virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr driver,
+                                   virQEMUCapsPtr qemuCaps,
+                                   const char *machine,
+                                   virArch arch,
+                                   virDomainVirtType virttype);
+
 typedef struct _qemuSharedDeviceEntry qemuSharedDeviceEntry;
 typedef qemuSharedDeviceEntry *qemuSharedDeviceEntryPtr;
 
index 560663948298a2ccdc1bb96427116c2953552e65..f1983f33e60e30704a68ad8757f32374385c16b0 100644 (file)
@@ -20606,19 +20606,12 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
     virArch arch;
     virDomainVirtType virttype;
     virDomainCapsPtr domCaps = NULL;
-    virQEMUDriverConfigPtr cfg = NULL;
-    virCapsPtr caps = NULL;
 
     virCheckFlags(0, ret);
 
     if (virConnectGetDomainCapabilitiesEnsureACL(conn) < 0)
         return ret;
 
-    cfg = virQEMUDriverGetConfig(driver);
-
-    if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
-        goto cleanup;
-
     qemuCaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache,
                                              emulatorbin,
                                              arch_str,
@@ -20628,19 +20621,13 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
     if (!qemuCaps)
         goto cleanup;
 
-    if (!(domCaps = virDomainCapsNew(virQEMUCapsGetBinary(qemuCaps), machine,
-                                     arch, virttype)))
-        goto cleanup;
-
-    if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps,
-                                  driver->privileged,
-                                  cfg->firmwares, cfg->nfirmwares) < 0)
+    if (!(domCaps = virQEMUDriverGetDomainCapabilities(driver,
+                                                       qemuCaps, machine,
+                                                       arch, virttype)))
         goto cleanup;
 
     ret = virDomainCapsFormat(domCaps);
  cleanup:
-    virObjectUnref(cfg);
-    virObjectUnref(caps);
     virObjectUnref(domCaps);
     virObjectUnref(qemuCaps);
     return ret;