
On Wed, Jul 13, 2016 at 04:43:18PM -0400, John Ferlan wrote:
On 07/01/2016 11:38 AM, Ján Tomko wrote:
We were requiring a USB port path in the schema, but not enforcing it. Omitting the USB port would lead to libvirt formatting it as (null). Such domain cannot be started and will disappear after libvirtd restart (since it cannot parse back the XML).
Only format the port if it has been specified and mark it as optional in the XML schema. --- docs/schemas/domaincommon.rng | 8 +++-- src/conf/domain_conf.c | 5 ++- src/qemu/qemu_command.c | 3 +- .../qemuxml2argv-usb-port-missing.args | 26 ++++++++++++++++ .../qemuxml2argv-usb-port-missing.xml | 25 +++++++++++++++ tests/qemuxml2argvtest.c | 3 ++ .../qemuxml2xmlout-usb-port-missing.xml | 36 ++++++++++++++++++++++ tests/qemuxml2xmltest.c | 1 + 8 files changed, 100 insertions(+), 7 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-port-missing.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-port-missing.xml create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-usb-port-missing.xml
As pointed out to me during the LUKS changes, if your "data" XML is essentially the same as your output XML, you could make a file link from output to data. See the *gic* files for an example. All I did was copy the output to data, removed output, and then recreated output as file link to data. It's not a "requirement" and it doesn't really matter to me, but I think in the effort to reduce the size of things is what started that. Of course, it's hard to know without tripping across it a few times...
I believe there are quite a few cases like that and they deserve a separate cleanup. Even with a symlink we would end up checking the validity twice in virschematest. Jan