The rng schema for <controller> had been non-specific about which types of controllers allowed which models, and also allowed the num_queues attribute (since that hasn't been released yet, should we rename it to "numQueues"?) and <master> subelement to be included for any controller type. In reality, half of the models are allowed only for type='scsi', and the other half only for type='usb', num_queues is allowed only for type='scsi', and <master> only for type='usb'. This patch makes a separate <group> for type='scsi' and type='usb', with each group allowing only the appropriate model values, and allowing num_queue and <master> only when appropriate. <interleave> also hadn't been specified, forcing a specific order of subelements, which should never be done. (Note that the <interleave> had to surround the main element attributes that are in the <group> subelements, due to one of the <group>s containing a subelement). --- docs/schemas/domaincommon.rng | 145 +++++++++++++++++++++++------------------- 1 file changed, 81 insertions(+), 64 deletions(-) diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index c96a247..26523a7 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -1402,80 +1402,97 @@ </define> <define name="controller"> <element name="controller"> - <choice> - <group> - <optional> + <attribute name="index"> + <ref name="unsignedInt"/> + </attribute> + <interleave> + <optional> + <ref name="alias"/> + </optional> + <optional> + <ref name="address"/> + </optional> + <choice> + <!-- fdc/ide/sata/ccid have only the common attributes --> + <group> <attribute name="type"> <choice> <value>fdc</value> <value>ide</value> - <value>scsi</value> <value>sata</value> <value>ccid</value> - <value>usb</value> </choice> </attribute> - </optional> - </group> - <!-- virtio-serial can have 2 additional attributes --> - <group> - <attribute name="type"> - <value>virtio-serial</value> - </attribute> - <optional> - <attribute name="ports"> - <ref name="unsignedInt"/> + </group> + <!-- scsi has an optional attribute "model" --> + <group> + <attribute name="type"> + <value>scsi</value> </attribute> - </optional> - <optional> - <attribute name="vectors"> - <ref name="unsignedInt"/> + <optional> + <attribute name="model"> + <choice> + <value>auto</value> + <value>buslogic</value> + <value>lsilogic</value> + <value>lsisas1068</value> + <value>vmpvscsi</value> + <value>ibmvscsi</value> + <value>virtio-scsi</value> + <value>lsisas1078</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="num_queues"> + <ref name="unsignedInt"/> + </attribute> + </optional> + </group> + <!-- usb has an optional attribute "model", and optional subelement "master" --> + <group> + <attribute name="type"> + <value>usb</value> </attribute> - </optional> - </group> - </choice> - <attribute name="index"> - <ref name="unsignedInt"/> - </attribute> - <optional> - <attribute name="model"> - <choice> - <value>auto</value> - <value>buslogic</value> - <value>lsilogic</value> - <value>lsisas1068</value> - <value>vmpvscsi</value> - <value>ibmvscsi</value> - <value>virtio-scsi</value> - <value>lsisas1078</value> - <value>piix3-uhci</value> - <value>piix4-uhci</value> - <value>ehci</value> - <value>ich9-ehci1</value> - <value>ich9-uhci1</value> - <value>ich9-uhci2</value> - <value>ich9-uhci3</value> - <value>vt82c686b-uhci</value> - <value>pci-ohci</value> - <value>nec-xhci</value> - <value>none</value> - </choice> - </attribute> - </optional> - <optional> - <attribute name="num_queues"> - <ref name="unsignedInt"/> - </attribute> - </optional> - <optional> - <ref name="usbmaster"/> - </optional> - <optional> - <ref name="alias"/> - </optional> - <optional> - <ref name="address"/> - </optional> + <optional> + <attribute name="model"> + <choice> + <value>piix3-uhci</value> + <value>piix4-uhci</value> + <value>ehci</value> + <value>ich9-ehci1</value> + <value>ich9-uhci1</value> + <value>ich9-uhci2</value> + <value>ich9-uhci3</value> + <value>vt82c686b-uhci</value> + <value>pci-ohci</value> + <value>nec-xhci</value> + <value>none</value> + </choice> + </attribute> + </optional> + <optional> + <ref name="usbmaster"/> + </optional> + </group> + <!-- virtio-serial has optional "ports" and "vectors" --> + <group> + <attribute name="type"> + <value>virtio-serial</value> + </attribute> + <optional> + <attribute name="ports"> + <ref name="unsignedInt"/> + </attribute> + </optional> + <optional> + <attribute name="vectors"> + <ref name="unsignedInt"/> + </attribute> + </optional> + </group> + </choice> + </interleave> </element> </define> <define name="filesystem"> -- 1.7.11.7 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list