]> xenbits.xensource.com Git - libvirt.git/commitdiff
test_driver: Implement virConnectGetDomainCapabilities()
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 20 Sep 2023 16:01:14 +0000 (18:01 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 21 Sep 2023 06:45:31 +0000 (08:45 +0200)
Our test driver lacks implementation for
virConnectGetDomainCapabilities(). Provide one, though a trivial
one. Mostly so that something else than VIR_ERR_NO_SUPPORT error
is returned.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
docs/formatdomaincaps.rst
src/conf/schemas/domaincaps.rng
src/test/test_driver.c

index 0f8015d4ddf68d512300e3469db4d80571590492..ef752a0f3ab36dacdb08746f7aacaaac8a8fbc2a 100644 (file)
@@ -66,7 +66,8 @@ The root element that emulator capability XML document starts with has name
    </domainCapabilities>
 
 ``path``
-   The full path to the emulator binary.
+   The full path to the emulator binary. Since not every hypervisor has a
+   notion of emulator binary this element might be omitted in such drivers.
 ``domain``
    Describes the `virtualization type <formatdomain.html#element-and-attribute-overview>`__ (or so
    called domain type).
index 99ef148d44bda14cabc83fcb2f2aa0dbda740821..e7aa4a10660d70b652c206c0c7ce31715338c05b 100644 (file)
   <define name="domainCapabilities">
     <element name="domainCapabilities">
       <interleave>
-        <element name="path">
-          <ref name="absFilePath"/>
-        </element>
+        <optional>
+          <element name="path">
+            <ref name="absFilePath"/>
+          </element>
+        </optional>
         <element name="domain">
           <text/>
         </element>
index c1d4d71b78e66771015ad2961c58e2f0135d7ccb..c962aa74786edca6323ccd38630c8e9401862873 100644 (file)
@@ -10000,6 +10000,41 @@ testNetworkSetMetadata(virNetworkPtr net,
     return ret;
 }
 
+static char *
+testConnectGetDomainCapabilities(virConnectPtr conn G_GNUC_UNUSED,
+                                 const char *emulatorbin,
+                                 const char *arch_str,
+                                 const char *machine,
+                                 const char *virttype_str,
+                                 unsigned int flags)
+{
+    g_autoptr(virDomainCaps) domCaps = NULL;
+    virArch arch = VIR_ARCH_I686;
+    int virttype = VIR_DOMAIN_VIRT_TEST;
+
+    virCheckFlags(0, NULL);
+
+    if (arch_str &&
+        (arch = virArchFromString(arch_str)) == VIR_ARCH_NONE) {
+        virReportError(VIR_ERR_INVALID_ARG,
+                       _("unknown architecture: %1$s"), arch_str);
+        return NULL;
+    }
+
+    if (virttype_str &&
+        (virttype = virDomainVirtTypeFromString(virttype_str)) < 0) {
+        virReportError(VIR_ERR_INVALID_ARG,
+                       _("unknown virttype: %1$s"), virttype_str);
+        return NULL;
+    }
+
+    if (!(domCaps = virDomainCapsNew(emulatorbin, machine, arch, virttype)))
+        return NULL;
+
+    return virDomainCapsFormat(domCaps);
+}
+
+
 /*
  * Test driver
  */
@@ -10167,6 +10202,7 @@ static virHypervisorDriver testHypervisorDriver = {
     .domainCheckpointGetParent = testDomainCheckpointGetParent, /* 5.6.0 */
     .domainCheckpointDelete = testDomainCheckpointDelete, /* 5.6.0 */
     .domainGetMessages = testDomainGetMessages, /* 7.6.0 */
+    .connectGetDomainCapabilities = testConnectGetDomainCapabilities, /* 9.8.0 */
 };
 
 static virNetworkDriver testNetworkDriver = {