Fill in virDomainCaps at Validate time and use it to call
virDomainCapsDeviceDefValidate
Signed-off-by: Cole Robinson <crobinso(a)redhat.com>
---
src/qemu/qemu_domain.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index f0bf1aa4fe..6da27a79b0 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -41,6 +41,7 @@
#include "viruuid.h"
#include "virfile.h"
#include "domain_addr.h"
+#include "domain_capabilities.h"
#include "domain_event.h"
#include "virtime.h"
#include "virnetdevopenvswitch.h"
@@ -6119,14 +6120,24 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
int ret = 0;
virQEMUDriverPtr driver = opaque;
virQEMUCapsPtr qemuCaps = NULL;
+ virDomainCapsPtr domCaps = NULL;
if (!(qemuCaps = virQEMUCapsCacheLookup(driver->qemuCapsCache,
def->emulator)))
return -1;
+ if (!(domCaps = virQEMUDriverGetDomainCapabilities(driver, qemuCaps,
+ def->os.machine,
+ def->os.arch,
+ def->virtType)))
+ goto cleanup;
+
if ((ret = qemuDomainDeviceDefValidateAddress(dev, qemuCaps)) < 0)
goto cleanup;
+ if (virDomainCapsDeviceDefValidate(domCaps, dev, def) < 0)
+ goto cleanup;
+
switch ((virDomainDeviceType)dev->type) {
case VIR_DOMAIN_DEVICE_NET:
ret = qemuDomainDeviceDefValidateNetwork(dev->data.net);
@@ -6207,6 +6218,7 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
cleanup:
virObjectUnref(qemuCaps);
+ virObjectUnref(domCaps);
return ret;
}
--
2.21.0