On Thu, Jan 07, 2016 at 22:50:06 -0500, Cole Robinson wrote:
In order to make this work, we need to short circuit the normal
virDomainDefPostParse ordering, and manually add stock devices
ourselves, since we need them in the XML before assigning addresses.
There's a bit of test suite churn due to extra XML output, and validation
happening at different call sites, but it all looks correct to me.
There's still quite a few manual callers of qemuDomainAssignAddresses
that could be dropped too but it would need additional testing.
---
src/qemu/qemu_domain.c | 10 +++++++
src/qemu/qemu_driver.c | 9 ------
.../qemuxml2argvdata/qemuxml2argv-pseries-disk.xml | 4 ++-
tests/qemuxml2argvtest.c | 12 ++------
.../qemuxml2xmlout-channel-virtio-auto.xml | 9 +++---
.../qemuxml2xmlout-disk-scsi-vscsi.xml | 35 ++++++++++++++++++++++
.../qemuxml2xmlout-panic-pseries.xml | 30 +++++++++++++++++++
.../qemuxml2xmlout-pseries-panic-missing.xml | 4 +--
.../qemuxml2xmlout-pseries-panic-no-address.xml | 4 +--
tests/qemuxml2xmltest.c | 10 +++++--
10 files changed, 97 insertions(+), 30 deletions(-)
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-scsi-vscsi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-panic-pseries.xml
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index a981310..e0520ab 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1249,6 +1249,16 @@ qemuDomainDefPostParse(virDomainDefPtr def,
if (virSecurityManagerVerify(driver->securityManager, def) < 0)
goto cleanup;
+ /* Device defaults are normally set after calling the driver specific
+ PostParse routine (this function), but we need them earlier. */
+ if (virDomainDefPostParseDevices(def, caps, driver->xmlopt) < 0)
+ goto cleanup;
NACK to this, this would create a possibly dangerous situation by
encouraging others to call the post parse callback handlers from
themeself.
If it's necessary to do two passes of post parse stuff, then please add
a new callback pointer for it.