]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
test_driver: introduce domain-private data
authorIlias Stamatis <stamatis.iliass@gmail.com>
Sun, 4 Aug 2019 13:27:15 +0000 (15:27 +0200)
committerErik Skultety <eskultet@redhat.com>
Tue, 6 Aug 2019 08:40:43 +0000 (10:40 +0200)
vm-specific data can be used by APIs that need to preserve some state
between calls

Some of them are:
- FS-related APIs for remembering which mountpoints are frozen
- virDomainSetTime / virDomainGetTime for maintaining time information
- virDomainSetIOThreadParams for storing the I/O thread parameters
- virDomainManagedSaveDefineXML for internally storing the VM definition

Signed-off-by: Ilias Stamatis <stamatis.iliass@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/test/test_driver.c

index 6f407551e5e16bcb97da83e09f3ecaa56d172656..510cd72a59c8d63b157510adb9515a94d376c804 100755 (executable)
@@ -386,6 +386,35 @@ testBuildCapabilities(virConnectPtr conn)
 }
 
 
+typedef struct _testDomainObjPrivate testDomainObjPrivate;
+typedef testDomainObjPrivate *testDomainObjPrivatePtr;
+struct _testDomainObjPrivate {
+    testDriverPtr driver;
+};
+
+
+static void *
+testDomainObjPrivateAlloc(void *opaque)
+{
+    testDomainObjPrivatePtr priv;
+
+    if (VIR_ALLOC(priv) < 0)
+        return NULL;
+
+    priv->driver = opaque;
+
+    return priv;
+}
+
+
+static void
+testDomainObjPrivateFree(void *data)
+{
+    testDomainObjPrivatePtr priv = data;
+    VIR_FREE(priv);
+}
+
+
 static testDriverPtr
 testDriverNew(void)
 {
@@ -401,6 +430,10 @@ testDriverNew(void)
                     VIR_DOMAIN_DEF_FEATURE_FW_AUTOSELECT |
                     VIR_DOMAIN_DEF_FEATURE_NET_MODEL_STRING,
     };
+    virDomainXMLPrivateDataCallbacks privatecb = {
+        .alloc = testDomainObjPrivateAlloc,
+        .free = testDomainObjPrivateFree,
+    };
     testDriverPtr ret;
 
     if (testDriverInitialize() < 0)
@@ -409,7 +442,7 @@ testDriverNew(void)
     if (!(ret = virObjectLockableNew(testDriverClass)))
         return NULL;
 
-    if (!(ret->xmlopt = virDomainXMLOptionNew(&config, NULL, &ns, NULL, NULL)) ||
+    if (!(ret->xmlopt = virDomainXMLOptionNew(&config, &privatecb, &ns, NULL, NULL)) ||
         !(ret->eventState = virObjectEventStateNew()) ||
         !(ret->ifaces = virInterfaceObjListNew()) ||
         !(ret->domains = virDomainObjListNew()) ||