{
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;
}