]> xenbits.xensource.com Git - libvirt.git/commitdiff
test: Sync GetXML INACTIVE behavior with live driver
authorCole Robinson <crobinso@redhat.com>
Wed, 17 Apr 2024 15:07:14 +0000 (11:07 -0400)
committerCole Robinson <crobinso@redhat.com>
Wed, 24 Apr 2024 13:38:54 +0000 (09:38 -0400)
- Error if INACTIVE requested for transient object
- Force dumping INACTIVE XML when object is inactive

Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
src/test/test_driver.c

index 153ab7cdc25b98330d16ca4443b289c0fa5575ba..e7d2b6c86652045a3fa44dae856700917a2670a7 100644 (file)
@@ -7514,15 +7514,30 @@ testNodeDeviceGetXMLDesc(virNodeDevicePtr dev,
 {
     testDriver *driver = dev->conn->privateData;
     virNodeDeviceObj *obj;
+    virNodeDeviceDef *def;
     char *ret = NULL;
 
     virCheckFlags(VIR_NODE_DEVICE_XML_INACTIVE, NULL);
 
     if (!(obj = testNodeDeviceObjFindByName(driver, dev->name)))
         return NULL;
+    def = virNodeDeviceObjGetDef(obj);
 
-    ret = virNodeDeviceDefFormat(virNodeDeviceObjGetDef(obj), flags);
+    if (flags & VIR_NODE_DEVICE_XML_INACTIVE) {
+        if (!virNodeDeviceObjIsPersistent(obj)) {
+            virReportError(VIR_ERR_OPERATION_INVALID,
+                           _("node device '%1$s' is not persistent"),
+                           def->name);
+            goto cleanup;
+        }
+    } else {
+        if (!virNodeDeviceObjIsActive(obj))
+            flags |= VIR_NODE_DEVICE_XML_INACTIVE;
+    }
 
+    ret = virNodeDeviceDefFormat(def, flags);
+
+ cleanup:
     virNodeDeviceObjEndAPI(&obj);
     return ret;
 }