diff options
author | Simon Rettberg | 2023-02-01 13:55:42 +0100 |
---|---|---|
committer | Simon Rettberg | 2023-02-01 13:55:42 +0100 |
commit | 337f21af9c33ddb55706977841841d71c1ea05d8 (patch) | |
tree | 82e87d228df0a91638503436c8ad2196f2bc460a | |
parent | vmware: Add hwversion 20 (diff) | |
download | master-sync-shared-337f21af9c33ddb55706977841841d71c1ea05d8.tar.gz master-sync-shared-337f21af9c33ddb55706977841841d71c1ea05d8.tar.xz master-sync-shared-337f21af9c33ddb55706977841841d71c1ea05d8.zip |
Update libvirt rng files
19 files changed, 1922 insertions, 980 deletions
diff --git a/src/main/resources/libvirt/rng/basictypes.rng b/src/main/resources/libvirt/rng/basictypes.rng index a221ff6..2d6f1a2 100644 --- a/src/main/resources/libvirt/rng/basictypes.rng +++ b/src/main/resources/libvirt/rng/basictypes.rng @@ -220,6 +220,13 @@ </define> <!--======================================================================--> + <!-- A D-Bus server address: https://dbus.freedesktop.org/doc/dbus-specification.html#addresses --> + <define name="dbusAddr"> + <data type="string"> + <param name="pattern">.+</param> + </data> + </define> + <!-- An ipv4 "dotted quad" address --> <define name="ipv4Addr"> <data type="string"> @@ -227,7 +234,7 @@ </data> </define> - <!-- Based on http://blog.mes-stats.fr/2008/10/09/regex-ipv4-et-ipv6 --> + <!-- Based on https://web.archive.org/web/20090503193311/http://blog.mes-stats.fr/2008/10/09/regex-ipv4-et-ipv6 --> <define name="ipv6Addr"> <data type="string"> <!-- To understand this better, take apart the toplevel "|"s --> diff --git a/src/main/resources/libvirt/rng/capability.rng b/src/main/resources/libvirt/rng/capability.rng index c4cafc4..c7e72c6 100644 --- a/src/main/resources/libvirt/rng/capability.rng +++ b/src/main/resources/libvirt/rng/capability.rng @@ -138,6 +138,9 @@ <ref name="cell"/> </oneOrMore> </element> + <optional> + <ref name="numaInterconnects"/> + </optional> </element> </define> @@ -157,27 +160,24 @@ <optional> <element name="distances"> - <zeroOrMore> - <element name="sibling"> - <attribute name="id"> - <ref name="unsignedInt"/> - </attribute> - <attribute name="value"> - <ref name="unsignedInt"/> - </attribute> - </element> - </zeroOrMore> + <oneOrMore> + <ref name="numaDistance"/> + </oneOrMore> </element> </optional> + <zeroOrMore> + <ref name="numaCache"/> + </zeroOrMore> + <optional> <element name="cpus"> <attribute name="num"> <ref name="unsignedInt"/> </attribute> - <oneOrMore> + <zeroOrMore> <ref name="cpu"/> - </oneOrMore> + </zeroOrMore> </element> </optional> </element> @@ -283,11 +283,11 @@ <attribute name="granularity"> <ref name="unsignedInt"/> </attribute> - <optional> - <attribute name="min"> - <ref name="unsignedInt"/> - </attribute> - </optional> + <optional> + <attribute name="min"> + <ref name="unsignedInt"/> + </attribute> + </optional> <attribute name="maxAllocs"> <ref name="unsignedInt"/> </attribute> @@ -409,10 +409,7 @@ </optional> <optional> <attribute name="deprecated"> - <choice> - <value>yes</value> - <value>no</value> - </choice> + <ref name="virYesNo"/> </attribute> </optional> <text/> diff --git a/src/main/resources/libvirt/rng/cputypes.rng b/src/main/resources/libvirt/rng/cputypes.rng index 77c8fa7..3e79bdd 100644 --- a/src/main/resources/libvirt/rng/cputypes.rng +++ b/src/main/resources/libvirt/rng/cputypes.rng @@ -250,6 +250,11 @@ <attribute name="target"> <ref name="unsignedInt"/> </attribute> + <optional> + <attribute name="cache"> + <ref name="unsignedInt"/> + </attribute> + </optional> <attribute name="type"> <choice> <value>access</value> @@ -300,32 +305,50 @@ </element> </define> - <define name="hostcpu"> - <element name="cpu"> - <element name="arch"> - <ref name="archnames"/> - </element> + <define name="cpuMaxPhysAddr"> + <element name="maxphysaddr"> + <attribute name="mode"> + <choice> + <value>emulate</value> + <value>passthrough</value> + </choice> + </attribute> <optional> - <element name="features"> - <optional> - <element name="pae"><empty/></element> - </optional> - <optional> - <element name="nonpae"><empty/></element> - </optional> - <optional> - <element name="vmx"><empty/></element> - </optional> - <optional> - <element name="svm"><empty/></element> - </optional> - </element> + <attribute name="bits"> + <ref name="unsignedInt"/> + </attribute> </optional> - <optional> - <element name="model"> - <text/> + </element> + </define> + + <define name="hostcpu"> + <element name="cpu"> + <interleave> + <element name="arch"> + <ref name="archnames"/> </element> <optional> + <element name="features"> + <optional> + <element name="pae"><empty/></element> + </optional> + <optional> + <element name="nonpae"><empty/></element> + </optional> + <optional> + <element name="vmx"><empty/></element> + </optional> + <optional> + <element name="svm"><empty/></element> + </optional> + </element> + </optional> + <optional> + <element name="model"> + <text/> + </element> + </optional> + <optional> <element name="vendor"> <text/> </element> @@ -338,6 +361,19 @@ </element> </optional> <optional> + <element name="signature"> + <attribute name="family"> + <ref name="positiveInteger"/> + </attribute> + <attribute name="model"> + <ref name="unsignedInt"/> + </attribute> + <attribute name="stepping"> + <ref name="unsignedInt"/> + </attribute> + </element> + </optional> + <optional> <element name="counter"> <attribute name="name"> <text/> @@ -353,6 +389,9 @@ <optional> <ref name="cpuTopology"/> </optional> + <optional> + <ref name="cpuMaxPhysAddr"/> + </optional> <zeroOrMore> <element name="feature"> <attribute name="name"> @@ -375,7 +414,7 @@ </attribute> </element> </zeroOrMore> - </optional> + </interleave> </element> </define> @@ -414,6 +453,9 @@ <optional> <ref name="cpuCache"/> </optional> + <optional> + <ref name="cpuMaxPhysAddr"/> + </optional> </interleave> </element> </define> diff --git a/src/main/resources/libvirt/rng/domain.rng b/src/main/resources/libvirt/rng/domain.rng index b93bbed..adc4386 100644 --- a/src/main/resources/libvirt/rng/domain.rng +++ b/src/main/resources/libvirt/rng/domain.rng @@ -6,16 +6,6 @@ <ref name="domain"/> </start> - <include href="domaincommon.rng"/> - - <define name="storageStartupPolicy" combine="choice"> - <!-- overrides the no-op version in storagecommon.rng --> - <ref name="startupPolicy"/> - </define> - - <define name="storageSourceExtra" combine="choice"> - <!-- overrides the no-op version in storagecommon.rng --> - <ref name="diskspec"/> - </define> + <include href="domainoverrides.rng"/> </grammar> diff --git a/src/main/resources/libvirt/rng/domainbackup.rng b/src/main/resources/libvirt/rng/domainbackup.rng index c03455a..bfc29a6 100644 --- a/src/main/resources/libvirt/rng/domainbackup.rng +++ b/src/main/resources/libvirt/rng/domainbackup.rng @@ -14,6 +14,13 @@ <value>luks</value> </choice> </attribute> + <optional> + <attribute name="engine"> + <choice> + <value>qemu</value> + </choice> + </attribute> + </optional> <interleave> <ref name="secret"/> <optional> @@ -53,10 +60,7 @@ <element name="server"> <optional> <attribute name="tls"> - <choice> - <value>yes</value> - <value>no</value> - </choice> + <ref name="virYesNo"/> </attribute> </optional> <choice> @@ -153,7 +157,7 @@ <oneOrMore> <element name="disk"> <attribute name="name"> - <ref name="diskTarget"/> + <ref name="diskTargetDev"/> </attribute> <ref name="backupDiskMode"/> <choice> @@ -223,7 +227,7 @@ <oneOrMore> <element name="disk"> <attribute name="name"> - <ref name="diskTarget"/> + <ref name="diskTargetDev"/> </attribute> <ref name="backupDiskMode"/> <optional> diff --git a/src/main/resources/libvirt/rng/domaincaps.rng b/src/main/resources/libvirt/rng/domaincaps.rng index 83d93ee..4b96e89 100644 --- a/src/main/resources/libvirt/rng/domaincaps.rng +++ b/src/main/resources/libvirt/rng/domaincaps.rng @@ -38,6 +38,9 @@ <ref name="cpu"/> </optional> <optional> + <ref name="memoryBacking"/> + </optional> + <optional> <ref name="devices"/> </optional> <optional> @@ -153,18 +156,25 @@ </attribute> <optional> <attribute name="deprecated"> - <choice> - <value>yes</value> - <value>no</value> - </choice> + <ref name="virYesNo"/> </attribute> </optional> + <attribute name='vendor'> + <text/> + </attribute> <text/> </element> </zeroOrMore> </element> </define> + <define name="memoryBacking"> + <element name="memoryBacking"> + <ref name="supported"/> + <ref name="enum"/> + </element> + </define> + <define name="devices"> <element name="devices"> <optional> @@ -182,6 +192,18 @@ <optional> <ref name="rng"/> </optional> + <optional> + <ref name="filesystem"/> + </optional> + <optional> + <ref name="tpm"/> + </optional> + <optional> + <ref name="redirdev"/> + </optional> + <optional> + <ref name="channel"/> + </optional> </element> </define> @@ -220,6 +242,34 @@ </element> </define> + <define name="filesystem"> + <element name="filesystem"> + <ref name="supported"/> + <ref name="enum"/> + </element> + </define> + + <define name="tpm"> + <element name="tpm"> + <ref name="supported"/> + <ref name="enum"/> + </element> + </define> + + <define name="redirdev"> + <element name="redirdev"> + <ref name="supported"/> + <ref name="enum"/> + </element> + </define> + + <define name="channel"> + <element name="channel"> + <ref name="supported"/> + <ref name="enum"/> + </element> + </define> + <define name="features"> <element name="features"> <optional> @@ -238,8 +288,17 @@ <ref name="backup"/> </optional> <optional> + <ref name="s390-pv"/> + </optional> + <optional> <ref name="sev"/> </optional> + <optional> + <ref name="sgx"/> + </optional> + <optional> + <ref name="hyperv"/> + </optional> </element> </define> @@ -274,6 +333,12 @@ </element> </define> + <define name="s390-pv"> + <element name="s390-pv"> + <ref name="supported"/> + </element> + </define> + <define name="sev"> <element name="sev"> <ref name="supported"/> @@ -284,10 +349,63 @@ <element name="reducedPhysBits"> <data type="unsignedInt"/> </element> + <element name="maxGuests"> + <data type="unsignedInt"/> + </element> + <element name="maxESGuests"> + <data type="unsignedInt"/> + </element> </optional> </element> </define> + <define name="sgx"> + <element name="sgx"> + <ref name="supported"/> + <optional> + <element name="flc"> + <ref name="virYesNo"/> + </element> + <element name="sgx1"> + <ref name="virYesNo"/> + </element> + <element name="sgx2"> + <ref name="virYesNo"/> + </element> + <element name="section_size"> + <attribute name="unit"> + <value>KiB</value> + </attribute> + <data type="unsignedLong"/> + </element> + <optional> + <element name="sections"> + <zeroOrMore> + <element name="section"> + <attribute name="node"> + <data type="unsignedInt"/> + </attribute> + <attribute name="size"> + <data type="unsignedLong"/> + </attribute> + <attribute name="unit"> + <value>KiB</value> + </attribute> + </element> + </zeroOrMore> + </element> + </optional> + </optional> + </element> + </define> + + <define name="hyperv"> + <element name="hyperv"> + <ref name="supported"/> + <ref name="enum"/> + </element> + </define> + <define name="value"> <zeroOrMore> <element name="value"> diff --git a/src/main/resources/libvirt/rng/domaincheckpoint.rng b/src/main/resources/libvirt/rng/domaincheckpoint.rng index a1c8b0b..72c4186 100644 --- a/src/main/resources/libvirt/rng/domaincheckpoint.rng +++ b/src/main/resources/libvirt/rng/domaincheckpoint.rng @@ -55,7 +55,7 @@ <element name="disk"> <attribute name="name"> <choice> - <ref name="diskTarget"/> + <ref name="diskTargetDev"/> <ref name="absFilePath"/> </choice> </attribute> diff --git a/src/main/resources/libvirt/rng/domaincommon.rng b/src/main/resources/libvirt/rng/domaincommon.rng index a2e5c50..6cb0a20 100644 --- a/src/main/resources/libvirt/rng/domaincommon.rng +++ b/src/main/resources/libvirt/rng/domaincommon.rng @@ -6,6 +6,7 @@ <include href="networkcommon.rng"/> <include href="cputypes.rng"/> <include href="nwfilter_params.rng"/> + <include href="privatedata.rng"/> <!-- description and title element, may be placed anywhere under the root @@ -33,74 +34,89 @@ --> <define name="domain"> <element name="domain"> - <ref name="hvs"/> - <interleave> - <ref name="ids"/> - <optional> - <ref name="title"/> - </optional> - <optional> - <ref name="description"/> - </optional> - <optional> - <ref name="metadata"/> - </optional> - <optional> - <ref name="guestcpu"/> - </optional> - <zeroOrMore> - <ref name="sysinfo"/> - </zeroOrMore> - <ref name="os"/> - <ref name="clock"/> - <ref name="resources"/> - <ref name="features"/> - <ref name="events"/> - <optional> - <ref name="pm"/> - </optional> - <optional> - <ref name="perf"/> - </optional> - <optional> - <ref name="idmap"/> - </optional> - <optional> - <ref name="devices"/> - </optional> - <zeroOrMore> - <ref name="seclabel"/> - </zeroOrMore> - <optional> - <ref name="qemucmdline"/> - </optional> - <optional> - <ref name="qemucapabilities"/> - </optional> - <optional> - <ref name="qemudeprecation"/> - </optional> - <optional> - <ref name="lxcsharens"/> - </optional> - <optional> - <ref name="keywrap"/> - </optional> - <optional> - <ref name="launchSecurity"/> - </optional> - <optional> - <ref name="bhyvecmdline"/> - </optional> - <optional> - <ref name="xencmdline"/> - </optional> - <optional> - <ref name="vmwaredatacenterpath"/> - </optional> - </interleave> + <ref name="domaincontents"/> + </element> + </define> + + <!-- this element is used as a child of a snapshot definition --> + <define name="inactiveDomain"> + <element name="inactiveDomain"> + <ref name="domaincontents"/> </element> </define> + + <define name="domaincontents"> + <ref name="hvs"/> + <interleave> + <ref name="ids"/> + <optional> + <ref name="title"/> + </optional> + <optional> + <ref name="description"/> + </optional> + <optional> + <ref name="metadata"/> + </optional> + <optional> + <ref name="guestcpu"/> + </optional> + <zeroOrMore> + <ref name="sysinfo"/> + </zeroOrMore> + <ref name="os"/> + <ref name="clock"/> + <ref name="resources"/> + <ref name="features"/> + <ref name="events"/> + <optional> + <ref name="pm"/> + </optional> + <optional> + <ref name="perf"/> + </optional> + <optional> + <ref name="idmap"/> + </optional> + <optional> + <ref name="devices"/> + </optional> + <zeroOrMore> + <ref name="seclabel"/> + </zeroOrMore> + <optional> + <ref name="qemucmdline"/> + </optional> + <optional> + <ref name="qemucapabilities"/> + </optional> + <optional> + <ref name="qemudeprecation"/> + </optional> + <optional> + <ref name="qemuoverride"/> + </optional> + <optional> + <ref name="lxcsharens"/> + </optional> + <optional> + <ref name="keywrap"/> + </optional> + <optional> + <ref name="launchSecurity"/> + </optional> + <optional> + <ref name="bhyvecmdline"/> + </optional> + <optional> + <ref name="xencmdline"/> + </optional> + <optional> + <ref name="vmwaredatacenterpath"/> + </optional> + </interleave> + </define> + <define name="seclabel"> <element name="seclabel"> <optional> @@ -230,6 +246,7 @@ <value>phyp</value> <!-- NOT USED ANYMORE --> <value>vz</value> <value>bhyve</value> + <value>hvf</value> </choice> </attribute> </define> @@ -265,110 +282,119 @@ </choice> </define> <define name="oshvm"> - <optional> - <ref name="bootloader"/> - </optional> - <element name="os"> - <interleave> - <optional> - <attribute name="firmware"> - <choice> - <value>bios</value> - <value>efi</value> - </choice> - </attribute> - </optional> - <ref name="ostypehvm"/> - <optional> - <element name="firmware"> - <oneOrMore> - <element name="feature"> - <attribute name="enabled"> + <interleave> + <optional> + <ref name="bootloader"/> + </optional> + <element name="os"> + <interleave> + <optional> + <attribute name="firmware"> + <choice> + <value>bios</value> + <value>efi</value> + </choice> + </attribute> + </optional> + <ref name="ostypehvm"/> + <optional> + <element name="firmware"> + <oneOrMore> + <element name="feature"> + <attribute name="enabled"> + <ref name="virYesNo"/> + </attribute> + <attribute name="name"> + <choice> + <value>enrolled-keys</value> + <value>secure-boot</value> + </choice> + </attribute> + </element> + </oneOrMore> + </element> + </optional> + <optional> + <element name="loader"> + <optional> + <attribute name="readonly"> <ref name="virYesNo"/> </attribute> - <attribute name="name"> + </optional> + <optional> + <attribute name="secure"> + <ref name="virYesNo"/> + </attribute> + </optional> + <optional> + <attribute name="type"> <choice> - <value>enrolled-keys</value> - <value>secure-boot</value> + <value>rom</value> + <value>pflash</value> </choice> </attribute> - </element> - </oneOrMore> - </element> - </optional> - <optional> - <element name="loader"> - <optional> - <attribute name="readonly"> - <choice> - <value>yes</value> - <value>no</value> - </choice> - </attribute> - </optional> - <optional> - <attribute name="secure"> - <choice> - <value>yes</value> - <value>no</value> - </choice> - </attribute> - </optional> - <optional> - <attribute name="type"> + </optional> + <optional> + <attribute name="stateless"> + <ref name="virYesNo"/> + </attribute> + </optional> + <optional> + <ref name="absFilePath"/> + </optional> + </element> + </optional> + <optional> + <element name="nvram"> + <optional> + <attribute name="template"> + <ref name="absFilePath"/> + </attribute> + </optional> + <optional> <choice> - <value>rom</value> - <value>pflash</value> + <group> + <ref name="absFilePath"/> + </group> + <group> + <ref name="diskSource"/> + </group> </choice> + </optional> + </element> + </optional> + <optional> + <ref name="osbootkernel"/> + </optional> + <zeroOrMore> + <ref name="osbootdev"/> + </zeroOrMore> + <optional> + <element name="bootmenu"> + <attribute name="enable"> + <ref name="virYesNo"/> </attribute> - </optional> - <optional> - <ref name="absFilePath"/> - </optional> - </element> - </optional> - <optional> - <element name="nvram"> - <optional> - <attribute name="template"> - <ref name="absFilePath"/> - </attribute> - </optional> - <optional> - <ref name="absFilePath"/> - </optional> - </element> - </optional> - <optional> - <ref name="osbootkernel"/> - </optional> - <zeroOrMore> - <ref name="osbootdev"/> - </zeroOrMore> - <optional> - <element name="bootmenu"> - <attribute name="enable"> - <ref name="virYesNo"/> - </attribute> - <optional> - <attribute name="timeout"> - <ref name="unsignedShort"/> - </attribute> - </optional> - </element> - </optional> - <optional> - <ref name="smbios"/> - </optional> - <optional> - <ref name="bios"/> - </optional> - <optional> - <ref name="acpiTable"/> - </optional> - </interleave> - </element> + <optional> + <attribute name="timeout"> + <ref name="unsignedShort"/> + </attribute> + </optional> + </element> + </optional> + <optional> + <ref name="smbios"/> + </optional> + <optional> + <ref name="bios"/> + </optional> + <optional> + <ref name="acpiTable"/> + </optional> + </interleave> + </element> + </interleave> </define> + <define name="ostypexen"> <element name="type"> <optional> @@ -416,15 +442,15 @@ <define name="osexe"> <element name="os"> - <element name="type"> - <optional> - <attribute name="arch"> - <ref name="archnames"/> - </attribute> - </optional> - <value>exe</value> - </element> <interleave> + <element name="type"> + <optional> + <attribute name="arch"> + <ref name="archnames"/> + </attribute> + </optional> + <value>exe</value> + </element> <optional> <element name="init"> <ref name="absFilePath"/> @@ -482,40 +508,58 @@ <define name="launchSecurity"> <element name="launchSecurity"> - <attribute name="type"> - <value>sev</value> + <choice> + <group> + <ref name="launchSecuritySEV"/> + </group> + <group> + <attribute name="type"> + <value>s390-pv</value> + </attribute> + </group> + </choice> + </element> + </define> + + <define name="launchSecuritySEV"> + <attribute name="type"> + <value>sev</value> + </attribute> + <optional> + <attribute name="kernelHashes"> + <ref name="virYesNo"/> </attribute> - <interleave> - <optional> - <element name="cbitpos"> - <data type="unsignedInt"/> - </element> - </optional> - <optional> - <element name="reducedPhysBits"> - <data type="unsignedInt"/> - </element> - </optional> - <element name="policy"> - <ref name="hexuint"/> + </optional> + <interleave> + <optional> + <element name="cbitpos"> + <data type="unsignedInt"/> </element> - <optional> - <element name="handle"> - <ref name="unsignedInt"/> - </element> - </optional> - <optional> - <element name="dhCert"> - <data type="string"/> - </element> - </optional> - <optional> - <element name="session"> - <data type="string"/> - </element> - </optional> - </interleave> - </element> + </optional> + <optional> + <element name="reducedPhysBits"> + <data type="unsignedInt"/> + </element> + </optional> + <element name="policy"> + <ref name="hexuint"/> + </element> + <optional> + <element name="handle"> + <ref name="unsignedInt"/> + </element> + </optional> + <optional> + <element name="dhCert"> + <data type="string"/> + </element> + </optional> + <optional> + <element name="session"> + <data type="string"/> + </element> + </optional> + </interleave> </define> <!-- @@ -563,6 +607,17 @@ </element> </define> + <define name="fibrechannel"> + <element name="fibrechannel"> + <attribute name="appid"> + <data type="string"> + <!-- All printable characters --> + <param name="pattern">[ -~]{1,128}</param> + </data> + </attribute> + </element> + </define> + <!-- The Identifiers can be: - an optional id attribute with a number on the domain element @@ -716,12 +771,19 @@ </optional> <optional> <element name="allocation"> - <attribute name="mode"> - <choice> - <value>immediate</value> - <value>ondemand</value> - </choice> - </attribute> + <optional> + <attribute name="mode"> + <choice> + <value>immediate</value> + <value>ondemand</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="threads"> + <ref name="unsignedInt"/> + </attribute> + </optional> </element> </optional> <optional> @@ -795,12 +857,37 @@ <attribute name="id"> <ref name="unsignedInt"/> </attribute> + <optional> + <attribute name="thread_pool_min"> + <ref name="unsignedInt"/> + </attribute> + </optional> + <optional> + <attribute name="thread_pool_max"> + <ref name="unsignedInt"/> + </attribute> + </optional> </element> </zeroOrMore> </element> </optional> <optional> + <element name="defaultiothread"> + <optional> + <attribute name="thread_pool_min"> + <ref name="unsignedInt"/> + </attribute> + </optional> + <optional> + <attribute name="thread_pool_max"> + <ref name="unsignedInt"/> + </attribute> + </optional> + </element> + </optional> + + <optional> <ref name="blkiotune"/> </optional> @@ -873,30 +960,32 @@ <!-- All the memory/swap related tunables would go in the memtune --> <define name="memtune"> <element name="memtune"> - <!-- Maximum memory the VM can use --> - <optional> - <element name="hard_limit"> - <ref name="scaledInteger"/> - </element> - </optional> - <!-- Minimum memory ascertained for the VM during contention --> - <optional> - <element name="soft_limit"> - <ref name="scaledInteger"/> - </element> - </optional> - <!-- Minimum amount of memory required to start the VM --> - <optional> - <element name="min_guarantee"> - <ref name="scaledInteger"/> - </element> - </optional> - <!-- Maximum swap area the VM can use --> - <optional> - <element name="swap_hard_limit"> - <ref name="scaledInteger"/> - </element> - </optional> + <interleave> + <!-- Maximum memory the VM can use --> + <optional> + <element name="hard_limit"> + <ref name="scaledInteger"/> + </element> + </optional> + <!-- Minimum memory ascertained for the VM during contention --> + <optional> + <element name="soft_limit"> + <ref name="scaledInteger"/> + </element> + </optional> + <!-- Minimum amount of memory required to start the VM --> + <optional> + <element name="min_guarantee"> + <ref name="scaledInteger"/> + </element> + </optional> + <!-- Maximum swap area the VM can use --> + <optional> + <element name="swap_hard_limit"> + <ref name="scaledInteger"/> + </element> + </optional> + </interleave> </element> </define> @@ -1006,6 +1095,11 @@ <attribute name="vcpus"> <ref name="cpuset"/> </attribute> + <optional> + <attribute name="id"> + <data type="string"/> + </attribute> + </optional> <oneOrMore> <choice> <element name="cache"> @@ -1154,9 +1248,14 @@ <define name="respartition"> <element name="resource"> - <element name="partition"> - <ref name="absFilePath"/> - </element> + <optional> + <element name="partition"> + <ref name="absFilePath"/> + </element> + </optional> + <optional> + <ref name="fibrechannel"/> + </optional> </element> </define> @@ -1208,6 +1307,14 @@ </attribute> </optional> </group> + <group> + <attribute name="offset"> + <value>absolute</value> + </attribute> + <attribute name="start"> + <ref name="unsignedLong"/> + </attribute> + </group> </choice> <zeroOrMore> <ref name="timer"/> @@ -1405,7 +1512,7 @@ <optional> <ref name="diskAuth"/> </optional> - <ref name="target"/> + <ref name="diskTarget"/> <optional> <ref name="deviceBoot"/> </optional> @@ -1429,6 +1536,11 @@ </optional> <optional> <element name="transient"> + <optional> + <attribute name="shareBacking"> + <ref name='virYesNo'/> + </attribute> + </optional> <empty/> </element> </optional> @@ -1487,6 +1599,7 @@ <value>no</value> <value>internal</value> <value>external</value> + <value>manual</value> </choice> </attribute> </define> @@ -1586,6 +1699,7 @@ <interleave> <ref name="storageSourceExtra"/> <ref name="diskBackingChain"/> + <ref name="privateDataDeviceDisk"/> </interleave> </define> @@ -1638,7 +1752,7 @@ <define name="diskSourceSlice"> <attribute name="offset"> - <ref name="positiveInteger"/> + <ref name="unsignedInt"/> </attribute> <attribute name="size"> <ref name="positiveInteger"/> @@ -1661,6 +1775,7 @@ </element> </element> </optional> + <ref name="privateDataStorageSource"/> </define> <define name="diskSource"> @@ -1691,6 +1806,9 @@ <ref name="vmwarePath"/> </choice> </attribute> + <optional> + <attribute name="fdgroup"/> + </optional> </optional> <ref name="diskSourceCommon"/> <optional> @@ -1877,22 +1995,24 @@ </define> <define name="diskSourceNetworkProtocolPropsCommon"> - <optional> - <element name="readahead"> - <attribute name="size"> - <ref name="positiveInteger"/> - </attribute> - <empty/> - </element> - </optional> - <optional> - <element name="timeout"> - <attribute name="seconds"> - <ref name="positiveInteger"/> - </attribute> - <empty/> - </element> - </optional> + <interleave> + <optional> + <element name="readahead"> + <attribute name="size"> + <ref name="positiveInteger"/> + </attribute> + <empty/> + </element> + </optional> + <optional> + <element name="timeout"> + <attribute name="seconds"> + <ref name="positiveInteger"/> + </attribute> + <empty/> + </element> + </optional> + </interleave> </define> <define name="diskSourceNetworkProtocolSSLVerify"> @@ -1946,7 +2066,10 @@ <ref name="diskSourceNetworkProtocolHTTPCookies"/> </optional> <ref name="diskSourceNetworkProtocolPropsCommon"/> - </interleave> + <optional> + <ref name="diskAuth"/> + </optional> + </interleave> </element> </define> @@ -1971,6 +2094,9 @@ <ref name="diskSourceNetworkProtocolHTTPCookies"/> </optional> <ref name="diskSourceNetworkProtocolPropsCommon"/> + <optional> + <ref name="diskAuth"/> + </optional> </interleave> </element> </define> @@ -1993,6 +2119,31 @@ <ref name="diskSourceNetworkProtocolSSLVerify"/> </optional> <ref name="diskSourceNetworkProtocolPropsCommon"/> + <optional> + <ref name="diskAuth"/> + </optional> + </interleave> + </element> + </define> + + <define name="diskSourceNetworkProtocolFTP"> + <element name="source"> + <interleave> + <attribute name="protocol"> + <choice> + <value>ftp</value> + </choice> + </attribute> + <attribute name="name"/> + <ref name="diskSourceCommon"/> + <ref name="diskSourceNetworkHost"/> + <optional> + <ref name="encryption"/> + </optional> + <ref name="diskSourceNetworkProtocolPropsCommon"/> + <optional> + <ref name="diskAuth"/> + </optional> </interleave> </element> </define> @@ -2003,7 +2154,6 @@ <attribute name="protocol"> <choice> <value>sheepdog</value> - <value>ftp</value> <value>tftp</value> </choice> </attribute> @@ -2032,6 +2182,9 @@ <ref name="virYesNo"/> </attribute> </optional> + <optional> + <attribute name="tlsHostname"/> + </optional> <ref name="diskSourceCommon"/> <ref name="diskSourceNetworkHost"/> <optional> @@ -2107,6 +2260,7 @@ <ref name="diskSourceNetworkProtocolHTTP"/> <ref name="diskSourceNetworkProtocolHTTPS"/> <ref name="diskSourceNetworkProtocolFTPS"/> + <ref name="diskSourceNetworkProtocolFTP"/> <ref name="diskSourceNetworkProtocolSimple"/> <ref name="diskSourceNetworkProtocolVxHS"/> <ref name="diskSourceNetworkProtocolNFS"/> @@ -2200,15 +2354,16 @@ </element> </define> - <define name="diskTarget"> + <define name="diskTargetDev"> <data type="string"> <param name="pattern">(ioemu:)?(fd|hd|sd|vd|xvd|ubd)[a-zA-Z0-9_]+</param> </data> </define> - <define name="target"> + + <define name="diskTarget"> <element name="target"> <attribute name="dev"> - <ref name="diskTarget"/> + <ref name="diskTargetDev"/> </attribute> <optional> <attribute name="bus"> @@ -2324,6 +2479,11 @@ <ref name="positiveInteger"/> </attribute> </optional> + <optional> + <attribute name="queue_size"> + <ref name="positiveInteger"/> + </attribute> + </optional> <ref name="virtioOptions"/> <optional> <element name="metadata_cache"> @@ -2543,103 +2703,105 @@ <attribute name="type"> <value>pci</value> </attribute> - <optional> - <element name="model"> - <attribute name="name"> - <choice> - <!-- implementations of "pci-root" --> - <value>spapr-pci-host-bridge</value> - <!-- implementations of "pci-bridge" --> - <value>pci-bridge</value> - <!-- implementations of "dmi-to-pci-bridge" --> - <value>i82801b11-bridge</value> - <!-- implementations of "pcie-to-pci-bridge" --> - <value>pcie-pci-bridge</value> - <!-- implementations of "pcie-root-port" --> - <value>ioh3420</value> - <value>pcie-root-port</value> - <!-- implementations of "pcie-switch-upstream-port" --> - <value>x3130-upstream</value> - <!-- implementations of "pcie-switch-downstream-port" --> - <value>xio3130-downstream</value> - <!-- implementations of "pci-expander-bus" --> - <value>pxb</value> - <!-- implementations of "pcie-expander-bus" --> - <value>pxb-pcie</value> - </choice> - </attribute> - <empty/> - </element> - </optional> - <optional> - <element name="target"> - <optional> - <attribute name="chassisNr"> - <ref name="uint8"/> - </attribute> - </optional> - <optional> - <attribute name="chassis"> - <ref name="uint8"/> - </attribute> - </optional> - <optional> - <attribute name="port"> - <ref name="uint8"/> - </attribute> - </optional> - <optional> - <attribute name="busNr"> - <ref name="uint8"/> + <interleave> + <optional> + <element name="model"> + <attribute name="name"> + <choice> + <!-- implementations of "pci-root" --> + <value>spapr-pci-host-bridge</value> + <!-- implementations of "pci-bridge" --> + <value>pci-bridge</value> + <!-- implementations of "dmi-to-pci-bridge" --> + <value>i82801b11-bridge</value> + <!-- implementations of "pcie-to-pci-bridge" --> + <value>pcie-pci-bridge</value> + <!-- implementations of "pcie-root-port" --> + <value>ioh3420</value> + <value>pcie-root-port</value> + <!-- implementations of "pcie-switch-upstream-port" --> + <value>x3130-upstream</value> + <!-- implementations of "pcie-switch-downstream-port" --> + <value>xio3130-downstream</value> + <!-- implementations of "pci-expander-bus" --> + <value>pxb</value> + <!-- implementations of "pcie-expander-bus" --> + <value>pxb-pcie</value> + </choice> </attribute> - </optional> - <optional> - <attribute name="index"> - <ref name="uint8"/> + <empty/> + </element> + </optional> + <optional> + <element name="target"> + <optional> + <attribute name="chassisNr"> + <ref name="uint8"/> + </attribute> + </optional> + <optional> + <attribute name="chassis"> + <ref name="uint8"/> + </attribute> + </optional> + <optional> + <attribute name="port"> + <ref name="uint8"/> + </attribute> + </optional> + <optional> + <attribute name="busNr"> + <ref name="uint8"/> + </attribute> + </optional> + <optional> + <attribute name="index"> + <ref name="uint8"/> + </attribute> + </optional> + <optional> + <attribute name="hotplug"> + <ref name="virOnOff"/> + </attribute> + </optional> + <optional> + <element name="node"> + <ref name="unsignedInt"/> + </element> + </optional> + </element> + </optional> + <!-- *-root controllers have an optional element "pcihole64"--> + <choice> + <group> + <attribute name="model"> + <choice> + <value>pci-root</value> + <value>pcie-root</value> + </choice> </attribute> - </optional> - <optional> - <attribute name="hotplug"> - <ref name="virOnOff"/> + <optional> + <element name="pcihole64"> + <ref name="scaledInteger"/> + </element> + </optional> + </group> + <group> + <attribute name="model"> + <choice> + <value>pci-bridge</value> + <value>dmi-to-pci-bridge</value> + <value>pcie-to-pci-bridge</value> + <value>pcie-root-port</value> + <value>pcie-switch-upstream-port</value> + <value>pcie-switch-downstream-port</value> + <value>pci-expander-bus</value> + <value>pcie-expander-bus</value> + </choice> </attribute> - </optional> - <optional> - <element name="node"> - <ref name="unsignedInt"/> - </element> - </optional> - </element> - </optional> - <!-- *-root controllers have an optional element "pcihole64"--> - <choice> - <group> - <attribute name="model"> - <choice> - <value>pci-root</value> - <value>pcie-root</value> - </choice> - </attribute> - <optional> - <element name="pcihole64"> - <ref name="scaledInteger"/> - </element> - </optional> - </group> - <group> - <attribute name="model"> - <choice> - <value>pci-bridge</value> - <value>dmi-to-pci-bridge</value> - <value>pcie-to-pci-bridge</value> - <value>pcie-root-port</value> - <value>pcie-switch-upstream-port</value> - <value>pcie-switch-downstream-port</value> - <value>pci-expander-bus</value> - <value>pcie-expander-bus</value> - </choice> - </attribute> - </group> - </choice> + </group> + </choice> + </interleave> </group> <!-- virtio-serial has optional "ports" and "vectors" --> <group> @@ -2712,207 +2874,212 @@ </interleave> </element> </define> + + <define name="filesystemCommon"> + <interleave> + <element name="target"> + <attribute name="dir"/> + <empty/> + </element> + <optional> + <attribute name="accessmode"> + <choice> + <value>passthrough</value> + <value>mapped</value> + <value>squash</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="multidevs"> + <choice> + <value>default</value> + <value>remap</value> + <value>forbid</value> + <value>warn</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fmode"> + <ref name="createMode"/> + </attribute> + </optional> + <optional> + <attribute name="dmode"> + <ref name="createMode"/> + </attribute> + </optional> + <optional> + <element name="readonly"> + <empty/> + </element> + </optional> + <optional> + <ref name="deviceBoot"/> + </optional> + <optional> + <ref name="alias"/> + </optional> + <optional> + <ref name="acpi"/> + </optional> + <optional> + <ref name="address"/> + </optional> + <optional> + <element name="space_hard_limit"> + <ref name="scaledInteger"/> + </element> + </optional> + <optional> + <element name="space_soft_limit"> + <ref name="scaledInteger"/> + </element> + </optional> + </interleave> + </define> + <define name="filesystem"> <element name="filesystem"> - <interleave> - <choice> - <group> - <attribute name="type"> - <value>file</value> - </attribute> - <interleave> - <optional> - <ref name="fsDriver"/> - </optional> - <element name="source"> - <attribute name="file"> - <ref name="absFilePath"/> - </attribute> - <empty/> - </element> - </interleave> - </group> - <group> - <attribute name="type"> - <value>block</value> - </attribute> - <interleave> - <optional> - <ref name="fsDriver"/> - </optional> - <element name="source"> - <attribute name="dev"> - <ref name="absFilePath"/> - </attribute> - <empty/> - </element> - </interleave> - </group> - <group> - <!-- type="mount" is default --> + <optional> + <attribute name="model"> + <choice> + <value>virtio</value> + <value>virtio-transitional</value> + <value>virtio-non-transitional</value> + </choice> + </attribute> + </optional> + <choice> + <group> + <attribute name="type"> + <value>file</value> + </attribute> + <interleave> <optional> - <attribute name="type"> - <value>mount</value> - </attribute> + <ref name="fsDriver"/> </optional> - <interleave> - <optional> - <ref name="fsDriver"/> - </optional> - <optional> - <ref name="fsBinary"/> - </optional> - <element name="source"> - <choice> - <group> - <attribute name="dir"> - <ref name="absDirPath"/> - </attribute> - </group> - <group> - <attribute name="socket"> + <element name="source"> + <attribute name="file"> <ref name="absFilePath"/> </attribute> - </group> - </choice> - <empty/> - </element> - </interleave> - </group> - <group> + <empty/> + </element> + <ref name="filesystemCommon"/> + </interleave> + </group> + <group> + <attribute name="type"> + <value>block</value> + </attribute> + <interleave> <optional> - <attribute name="type"> - <value>bind</value> - </attribute> + <ref name="fsDriver"/> </optional> - <interleave> - <optional> - <ref name="fsDriver"/> - </optional> - <element name="source"> - <attribute name="dir"> - <ref name="absDirPath"/> - </attribute> - <empty/> - </element> - </interleave> - </group> - <group> - <attribute name="type"> - <value>template</value> - </attribute> - <interleave> - <optional> - <ref name="fsDriver"/> - </optional> - <element name="source"> - <attribute name="name"> - <ref name="genericName"/> - </attribute> - <empty/> - </element> - </interleave> - </group> - <group> - <attribute name="type"> - <value>ram</value> - </attribute> - <interleave> - <optional> - <ref name="fsDriver"/> - </optional> - <element name="source"> - <attribute name="usage"> - <ref name="unsignedLong"/> - </attribute> - <optional> - <attribute name="units"> - <ref name="unit"/> - </attribute> - </optional> - <empty/> - </element> - </interleave> - </group> - </choice> - <interleave> - <optional> - <element name="target"> - <attribute name="dir"/> - <empty/> - </element> - </optional> + <element name="source"> + <attribute name="dev"> + <ref name="absFilePath"/> + </attribute> + <empty/> + </element> + <ref name="filesystemCommon"/> + </interleave> + </group> + <group> + <!-- type="mount" is default --> <optional> - <attribute name="accessmode"> - <choice> - <value>passthrough</value> - <value>mapped</value> - <value>squash</value> - </choice> + <attribute name="type"> + <value>mount</value> </attribute> </optional> - <optional> - <attribute name="multidevs"> + <interleave> + <optional> + <ref name="fsDriver"/> + </optional> + <optional> + <ref name="fsBinary"/> + </optional> + <element name="source"> <choice> - <value>default</value> - <value>remap</value> - <value>forbid</value> - <value>warn</value> + <group> + <attribute name="dir"> + <ref name="absDirPath"/> + </attribute> + </group> + <group> + <attribute name="socket"> + <ref name="absFilePath"/> + </attribute> + </group> </choice> - </attribute> - </optional> - <optional> - <attribute name="fmode"> - <ref name="createMode"/> - </attribute> - </optional> - <optional> - <attribute name="dmode"> - <ref name="createMode"/> - </attribute> - </optional> - <optional> - <element name="readonly"> <empty/> </element> - </optional> - <optional> - <ref name="deviceBoot"/> - </optional> - <optional> - <ref name="alias"/> - </optional> - <optional> - <ref name="acpi"/> - </optional> + <ref name="filesystemCommon"/> + </interleave> + </group> + <group> <optional> - <ref name="address"/> + <attribute name="type"> + <value>bind</value> + </attribute> </optional> - </interleave> - <interleave> - <optional> - <element name="space_hard_limit"> - <ref name="scaledInteger"/> + <interleave> + <optional> + <ref name="fsDriver"/> + </optional> + <element name="source"> + <attribute name="dir"> + <ref name="absDirPath"/> + </attribute> + <empty/> </element> - </optional> - <optional> - <element name="space_soft_limit"> - <ref name="scaledInteger"/> + <ref name="filesystemCommon"/> + </interleave> + </group> + <group> + <attribute name="type"> + <value>template</value> + </attribute> + <interleave> + <optional> + <ref name="fsDriver"/> + </optional> + <element name="source"> + <attribute name="name"> + <ref name="genericName"/> + </attribute> + <empty/> </element> - </optional> - </interleave> - <optional> - <attribute name="model"> - <choice> - <value>virtio</value> - <value>virtio-transitional</value> - <value>virtio-non-transitional</value> - </choice> + <ref name="filesystemCommon"/> + </interleave> + </group> + <group> + <attribute name="type"> + <value>ram</value> </attribute> - </optional> - </interleave> + <interleave> + <optional> + <ref name="fsDriver"/> + </optional> + <element name="source"> + <attribute name="usage"> + <ref name="unsignedLong"/> + </attribute> + <optional> + <attribute name="units"> + <ref name="unit"/> + </attribute> + </optional> + <empty/> + </element> + <ref name="filesystemCommon"/> + </interleave> + </group> + </choice> </element> </define> + <define name="fsDriver"> <element name="driver"> <!-- Annoying inconsistency. "disk" uses "name" @@ -3010,6 +3177,15 @@ </optional> </element> </optional> + <optional> + <element name="thread_pool"> + <optional> + <attribute name="size"> + <data type="integer"/> + </attribute> + </optional> + </element> + </optional> </interleave> </element> </define> @@ -3142,6 +3318,14 @@ <value>user</value> </attribute> <interleave> + <optional> + <element name="source"> + <attribute name="dev"> + <ref name="deviceName"/> + </attribute> + <empty/> + </element> + </optional> <ref name="interface-options"/> </interleave> </group> @@ -3290,6 +3474,36 @@ </interleave> </group> + <group> + <attribute name="type"> + <value>null</value> + </attribute> + <ref name="interface-options"/> + </group> + + <group> + <attribute name="type"> + <value>vds</value> + </attribute> + <interleave> + <element name="source"> + <attribute name="switchid"> + <ref name="UUID"/> + </attribute> + <attribute name="portid"> + <data type="long"/> + </attribute> + <attribute name="portgroupid"> + <data type="string"/> + </attribute> + <attribute name="connectionid"> + <data type="long"/> + </attribute> + </element> + <ref name="interface-options"/> + </interleave> + </group> + </choice> <optional> <attribute name="trustGuestRxFilters"> @@ -3378,6 +3592,7 @@ </element> </optional> <ref name="interface-ip-info"/> + <ref name="interface-port-forwards"/> <optional> <element name="script"> <attribute name="path"> @@ -3415,6 +3630,13 @@ <optional> <element name="backend"> <optional> + <attribute name="type"> + <choice> + <value>passt</value> + </choice> + </attribute> + </optional> + <optional> <attribute name="tap"> <ref name="absFilePath"/> </attribute> @@ -3424,6 +3646,11 @@ <ref name="absFilePath"/> </attribute> </optional> + <optional> + <attribute name="logFile"> + <ref name="absFilePath"/> + </attribute> + </optional> </element> </optional> <optional> @@ -3548,6 +3775,16 @@ </optional> </element> </optional> + <optional> + <attribute name="rss"> + <ref name="virOnOff"/> + </attribute> + </optional> + <optional> + <attribute name="rss_hash_report"> + <ref name="virOnOff"/> + </attribute> + </optional> </interleave> </element> </optional> @@ -3600,32 +3837,81 @@ All ip-related info for either the host or guest side of an interface --> <define name="interface-ip-info"> + <interleave> + <zeroOrMore> + <element name="ip"> + <attribute name="address"> + <ref name="ipAddr"/> + </attribute> + <optional> + <attribute name="family"> + <ref name="addr-family"/> + </attribute> + </optional> + <optional> + <attribute name="prefix"> + <ref name="ipPrefix"/> + </attribute> + </optional> + <optional> + <attribute name="peer"> + <ref name="ipAddr"/> + </attribute> + </optional> + <empty/> + </element> + </zeroOrMore> + <zeroOrMore> + <ref name="route"/> + </zeroOrMore> + </interleave> + </define> + + <define name="interface-port-forwards"> <zeroOrMore> - <element name="ip"> - <attribute name="address"> - <ref name="ipAddr"/> + <element name="portForward"> + <attribute name="proto"> + <choice> + <value>tcp</value> + <value>udp</value> + </choice> </attribute> <optional> - <attribute name="family"> - <ref name="addr-family"/> - </attribute> - </optional> - <optional> - <attribute name="prefix"> - <ref name="ipPrefix"/> + <attribute name="address"> + <ref name="ipAddr"/> </attribute> </optional> <optional> - <attribute name="peer"> - <ref name="ipAddr"/> + <attribute name="dev"> + <ref name="deviceName"/> </attribute> </optional> - <empty/> + <interleave> + <zeroOrMore> + <element name="range"> + <attribute name="start"> + <ref name="PortNumber"/> + </attribute> + <optional> + <attribute name="end"> + <ref name="PortNumber"/> + </attribute> + </optional> + <optional> + <attribute name="to"> + <ref name="PortNumber"/> + </attribute> + </optional> + <optional> + <attribute name="exclude"> + <ref name="virYesNo"/> + </attribute> + </optional> + </element> + </zeroOrMore> + </interleave> </element> </zeroOrMore> - <zeroOrMore> - <ref name="route"/> - </zeroOrMore> </define> <define name="teaming"> @@ -3913,32 +4199,53 @@ </element> </optional> <optional> - <element name="clipboard"> - <attribute name="copypaste"> - <ref name="virYesNo"/> - </attribute> - <empty/> - </element> + <ref name="clipboard"/> </optional> <optional> - <element name="mouse"> - <attribute name="mode"> - <choice> - <value>server</value> - <value>client</value> - </choice> + <ref name="mousemode"/> + </optional> + <optional> + <element name="filetransfer"> + <attribute name="enable"> + <ref name="virYesNo"/> </attribute> <empty/> </element> </optional> <optional> - <element name="filetransfer"> + <element name="gl"> <attribute name="enable"> <ref name="virYesNo"/> </attribute> + <optional> + <attribute name="rendernode"> + <ref name="absFilePath"/> + </attribute> + </optional> <empty/> </element> </optional> + </interleave> + </group> + <group> + <attribute name="type"> + <value>dbus</value> + </attribute> + <optional> + <choice> + <group> + <attribute name="address"> + <ref name="dbusAddr"/> + </attribute> + </group> + <group> + <attribute name="p2p"> + <ref name="virYesNo"/> + </attribute> + </group> + </choice> + </optional> + <interleave> <optional> <element name="gl"> <attribute name="enable"> @@ -3949,7 +4256,13 @@ <ref name="absFilePath"/> </attribute> </optional> - <empty/> + </element> + </optional> + <optional> + <element name="audio"> + <attribute name="id"> + <ref name="uint8"/> + </attribute> </element> </optional> </interleave> @@ -4018,6 +4331,25 @@ </element> </define> + <define name="clipboard"> + <element name="clipboard"> + <attribute name="copypaste"> + <ref name="virYesNo"/> + </attribute> + <empty/> + </element> + </define> + <define name="mousemode"> + <element name="mouse"> + <attribute name="mode"> + <choice> + <value>server</value> + <value>client</value> + </choice> + </attribute> + <empty/> + </element> + </define> <define name="listenElements"> <zeroOrMore> <element name="listen"> @@ -4359,6 +4691,7 @@ <value>spapr-vio-serial</value> <value>system-serial</value> <value>sclp-serial</value> + <value>isa-debug</value> </choice> </attribute> </define> @@ -4375,6 +4708,7 @@ <value>16550a</value> <value>sclpconsole</value> <value>sclplmconsole</value> + <value>isa-debugcon</value> </choice> </attribute> </element> @@ -4416,6 +4750,8 @@ <value>spicevmc</value> <value>spiceport</value> <value>nmdm</value> + <value>qemu-vdagent</value> + <value>dbus</value> </choice> </define> @@ -4464,74 +4800,85 @@ <ref name="qemucdevSrcTypeChoice"/> </attribute> </define> + <define name="qemucdevSrcDef"> - <zeroOrMore> - <element name="source"> - <optional> - <attribute name="mode"/> - </optional> - <optional> - <attribute name="path"/> - </optional> - <optional> - <attribute name="host"/> - </optional> - <optional> - <attribute name="service"/> - </optional> - <optional> - <attribute name="channel"/> - </optional> - <optional> - <attribute name="master"/> - </optional> - <optional> - <attribute name="slave"/> - </optional> - <optional> - <attribute name="append"> - <ref name="virOnOff"/> - </attribute> - </optional> - <optional> - <attribute name="tls"> - <ref name="virYesNo"/> - </attribute> - </optional> - <optional> - <ref name="reconnect"/> - </optional> - <zeroOrMore> - <ref name="devSeclabel"/> - </zeroOrMore> - </element> - </zeroOrMore> - <optional> - <element name="protocol"> - <optional> - <attribute name="type"> - <choice> - <value>raw</value> - <value>telnet</value> - <value>telnets</value> - <value>tls</value> - </choice> - </attribute> - </optional> - </element> - </optional> - <optional> - <element name="log"> - <attribute name="file"> - <ref name="absFilePath"/> - </attribute> - <optional> - <attribute name="append"> - <ref name="virOnOff"/> + <interleave> + <zeroOrMore> + <element name="source"> + <optional> + <attribute name="mode"/> + </optional> + <optional> + <attribute name="path"/> + </optional> + <optional> + <attribute name="host"/> + </optional> + <optional> + <attribute name="service"/> + </optional> + <optional> + <attribute name="channel"/> + </optional> + <optional> + <attribute name="master"/> + </optional> + <optional> + <attribute name="slave"/> + </optional> + <optional> + <attribute name="append"> + <ref name="virOnOff"/> + </attribute> + </optional> + <optional> + <attribute name="tls"> + <ref name="virYesNo"/> + </attribute> + </optional> + <optional> + <ref name="reconnect"/> + </optional> + <interleave> + <zeroOrMore> + <ref name="devSeclabel"/> + </zeroOrMore> + <optional> + <ref name="clipboard"/> + </optional> + <optional> + <ref name="mousemode"/> + </optional> + </interleave> + </element> + </zeroOrMore> + <optional> + <element name="protocol"> + <optional> + <attribute name="type"> + <choice> + <value>raw</value> + <value>telnet</value> + <value>telnets</value> + <value>tls</value> + </choice> + </attribute> + </optional> + </element> + </optional> + <optional> + <element name="log"> + <attribute name="file"> + <ref name="absFilePath"/> </attribute> - </optional> - </element> - </optional> + <optional> + <attribute name="append"> + <ref name="virOnOff"/> + </attribute> + </optional> + </element> + </optional> + </interleave> </define> <!-- The description for a console @@ -4764,11 +5111,21 @@ <ref name="audiocommonchild"/> </define> + <define name="audiodbus"> + <ref name="audiocommonattr"/> + <ref name="audiocommonchild"/> + </define> + <define name="audio"> <element name="audio"> <attribute name="id"> <ref name="uint8"/> </attribute> + <optional> + <attribute name="timerPeriod"> + <ref name="uint32"/> + </attribute> + </optional> <choice> <group> <attribute name="type"> @@ -4789,6 +5146,23 @@ </group> <group> <attribute name="type"> + <value>dbus</value> + </attribute> + <interleave> + <optional> + <element name="input"> + <ref name="audiodbus"/> + </element> + </optional> + <optional> + <element name="output"> + <ref name="audiodbus"/> + </element> + </optional> + </interleave> + </group> + <group> + <attribute name="type"> <value>alsa</value> </attribute> <interleave> @@ -4965,35 +5339,37 @@ </define> <define name="watchdog"> <element name="watchdog"> - <attribute name="model"> - <choice> - <value>i6300esb</value> - <value>ib700</value> - <value>diag288</value> - </choice> - </attribute> - <optional> - <attribute name="action"> + <interleave> + <attribute name="model"> <choice> - <value>reset</value> - <value>shutdown</value> - <value>poweroff</value> - <value>pause</value> - <value>none</value> - <value>dump</value> - <value>inject-nmi</value> + <value>i6300esb</value> + <value>ib700</value> + <value>diag288</value> </choice> </attribute> - </optional> - <optional> - <ref name="alias"/> - </optional> - <optional> - <ref name="acpi"/> - </optional> - <optional> - <ref name="address"/> - </optional> + <optional> + <attribute name="action"> + <choice> + <value>reset</value> + <value>shutdown</value> + <value>poweroff</value> + <value>pause</value> + <value>none</value> + <value>dump</value> + <value>inject-nmi</value> + </choice> + </attribute> + </optional> + <optional> + <ref name="alias"/> + </optional> + <optional> + <ref name="acpi"/> + </optional> + <optional> + <ref name="address"/> + </optional> + </interleave> </element> </define> <define name="nvram"> @@ -5177,9 +5553,6 @@ <ref name="alias"/> </optional> <optional> - <ref name="acpi"/> - </optional> - <optional> <ref name="address"/> </optional> </interleave> @@ -5221,9 +5594,6 @@ </group> </choice> <optional> - <ref name="alias"/> - </optional> - <optional> <ref name="acpi"/> </optional> <optional> @@ -5249,16 +5619,15 @@ </choice> </attribute> </optional> - <ref name="tpm-backend"/> - <optional> - <ref name="alias"/> - </optional> - <optional> - <ref name="acpi"/> - </optional> - <optional> - <ref name="address"/> - </optional> + <interleave> + <ref name="tpm-backend"/> + <optional> + <ref name="alias"/> + </optional> + <optional> + <ref name="address"/> + </optional> + </interleave> </element> </define> @@ -5273,18 +5642,24 @@ </group> <group> <attribute name="type"> - <value>emulator</value> + <value>emulator</value> </attribute> - <ref name="tpm-backend-emulator-encryption"/> + <interleave> + <ref name="tpm-backend-emulator-encryption"/> + <ref name="tpm-backend-emulator-active-pcr-banks"/> + </interleave> <optional> <attribute name="persistent_state"> - <choice> - <value>yes</value> - <value>no</value> - </choice> - </attribute> + <ref name="virYesNo"/> + </attribute> </optional> </group> + <group> + <attribute name="type"> + <value>external</value> + </attribute> + <ref name="tpm-external-source"/> + </group> </choice> <optional> <attribute name="version"> @@ -5309,6 +5684,22 @@ </optional> </define> + <define name="tpm-external-source"> + <optional> + <element name="source"> + <attribute name="type"> + <value>unix</value> + </attribute> + <attribute name="path"> + <ref name="filePath"/> + </attribute> + <attribute name="mode"> + <value>connect</value> + </attribute> + </element> + </optional> + </define> + <define name="tpm-backend-emulator-encryption"> <optional> <element name="encryption"> @@ -5319,6 +5710,35 @@ </optional> </define> + <define name="tpm-backend-emulator-active-pcr-banks"> + <optional> + <element name="active_pcr_banks"> + <interleave> + <optional> + <element name="sha1"> + <empty/> + </element> + </optional> + <optional> + <element name="sha256"> + <empty/> + </element> + </optional> + <optional> + <element name="sha384"> + <empty/> + </element> + </optional> + <optional> + <element name="sha512"> + <empty/> + </element> + </optional> + </interleave> + </element> + </optional> + </define> + <define name="vsock"> <element name="vsock"> <optional> @@ -5368,37 +5788,49 @@ <choice> <value>intel</value> <value>smmuv3</value> + <value>virtio</value> </choice> </attribute> - <optional> - <element name="driver"> - <optional> - <attribute name="intremap"> - <ref name="virOnOff"/> - </attribute> - </optional> - <optional> - <attribute name="caching_mode"> - <ref name="virOnOff"/> - </attribute> - </optional> - <optional> - <attribute name="eim"> - <ref name="virOnOff"/> - </attribute> - </optional> - <optional> - <attribute name="iotlb"> - <ref name="virOnOff"/> - </attribute> - </optional> - <optional> - <attribute name="aw_bits"> - <ref name="uint8"/> - </attribute> - </optional> - </element> - </optional> + <interleave> + <optional> + <element name="driver"> + <optional> + <attribute name="intremap"> + <ref name="virOnOff"/> + </attribute> + </optional> + <optional> + <attribute name="caching_mode"> + <ref name="virOnOff"/> + </attribute> + </optional> + <optional> + <attribute name="eim"> + <ref name="virOnOff"/> + </attribute> + </optional> + <optional> + <attribute name="iotlb"> + <ref name="virOnOff"/> + </attribute> + </optional> + <optional> + <attribute name="aw_bits"> + <ref name="uint8"/> + </attribute> + </optional> + </element> + </optional> + <optional> + <ref name="acpi"/> + </optional> + <optional> + <ref name="address"/> + </optional> + <optional> + <ref name="alias"/> + </optional> + </interleave> </element> </define> @@ -5443,6 +5875,38 @@ </attribute> </element> </group> + <group> + <attribute name="type"> + <value>evdev</value> + </attribute> + <element name="source"> + <attribute name="dev"> + <ref name="absFilePath"/> + </attribute> + <optional> + <attribute name="grab"> + <value>all</value> + </attribute> + </optional> + <optional> + <attribute name="grabToggle"> + <choice> + <value>ctrl-ctrl</value> + <value>alt-alt</value> + <value>shift-shift</value> + <value>meta-meta</value> + <value>scrolllock</value> + <value>ctrl-scrolllock</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="repeat"> + <ref name="virOnOff"/> + </attribute> + </optional> + </element> + </group> </choice> <optional> <attribute name="model"> @@ -5475,9 +5939,6 @@ <ref name="alias"/> </optional> <optional> - <ref name="acpi"/> - </optional> - <optional> <ref name="address"/> </optional> </interleave> @@ -5497,9 +5958,6 @@ <ref name="alias"/> </optional> <optional> - <ref name="acpi"/> - </optional> - <optional> <ref name="address"/> </optional> <optional> @@ -5638,6 +6096,15 @@ <optional> <ref name="startupPolicy"/> </optional> + <optional> + <attribute name="guestReset"> + <choice> + <value>off</value> + <value>uninitialized</value> + <value>on</value> + </choice> + </attribute> + </optional> <choice> <group> <ref name="usbproduct"/> @@ -5983,7 +6450,7 @@ </element> </define> <!-- - A set of optional features: PAE, APIC, ACPI, GIC, + A set of optional features: PAE, APIC, ACPI, GIC, TCG, HyperV Enlightenment, KVM features, paravirtual spinlocks and HAP support --> <define name="features"> @@ -6123,6 +6590,9 @@ <optional> <ref name="ibs"/> </optional> + <optional> + <ref name="tcgfeatures"/> + </optional> </interleave> </element> </optional> @@ -6411,6 +6881,16 @@ </element> </define> + <define name="tcgfeatures"> + <element name="tcg"> + <optional> + <element name="tb-cache"> + <ref name="scaledInteger"/> + </element> + </optional> + </element> + </define> + <define name="address"> <element name="address"> <choice> @@ -6521,6 +7001,8 @@ <value>dimm</value> <value>nvdimm</value> <value>virtio-pmem</value> + <value>virtio-mem</value> + <value>sgx-epc</value> </choice> </attribute> <optional> @@ -6609,6 +7091,21 @@ </element> </optional> <optional> + <element name="block"> + <ref name="scaledInteger"/> + </element> + </optional> + <optional> + <element name="requested"> + <ref name="scaledInteger"/> + </element> + </optional> + <optional> + <element name="current"> + <ref name="scaledInteger"/> + </element> + </optional> + <optional> <element name="label"> <element name="size"> <ref name="scaledInteger"/> @@ -6715,6 +7212,11 @@ <ref name="virOnOff"/> </attribute> </optional> + <optional> + <attribute name="page_per_vq"> + <ref name="virOnOff"/> + </attribute> + </optional> </define> <define name="usbmaster"> @@ -6744,57 +7246,60 @@ <define name="diskMirror"> <element name="mirror"> - <choice> - <group> <!-- old format, for block copy back-compat --> - <attribute name="file"> - <ref name="absFilePath"/> - </attribute> - <optional> - <attribute name="format"> - <ref name="storageFormat"/> + <interleave> + <choice> + <group> <!-- old format, for block copy back-compat --> + <attribute name="file"> + <ref name="absFilePath"/> </attribute> - </optional> - <optional> + <optional> + <attribute name="format"> + <ref name="storageFormat"/> + </attribute> + </optional> + <optional> + <attribute name="job"> + <value>copy</value> + </attribute> + </optional> + <optional> + <interleave> + <ref name="diskSourceFile"/> + <optional> + <ref name="diskFormat"/> + </optional> + </interleave> + </optional> + </group> + <group> <!-- preferred format --> <attribute name="job"> - <value>copy</value> + <choice> + <value>copy</value> + <value>active-commit</value> + </choice> </attribute> - </optional> - <optional> <interleave> - <ref name="diskSourceFile"/> + <ref name="diskSource"/> <optional> <ref name="diskFormat"/> </optional> </interleave> - </optional> - </group> - <group> <!-- preferred format --> - <attribute name="job"> + </group> + </choice> + <optional> + <attribute name="ready"> <choice> - <value>copy</value> - <value>active-commit</value> + <value>yes</value> + <value>abort</value> + <value>pivot</value> </choice> </attribute> - <interleave> - <ref name="diskSource"/> - <optional> - <ref name="diskFormat"/> - </optional> - </interleave> - </group> - </choice> - <optional> - <attribute name="ready"> - <choice> - <value>yes</value> - <value>abort</value> - <value>pivot</value> - </choice> - </attribute> - </optional> - <ref name="diskBackingChain"/> + </optional> + <ref name="diskBackingChain"/> + </interleave> </element> </define> + <define name="diskAuth"> <element name="auth"> <attribute name="username"> @@ -6957,90 +7462,107 @@ <!-- Optional HyperV Enlightenment features --> <define name="hyperv"> <element name="hyperv"> - <interleave> - <optional> - <element name="relaxed"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="vapic"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="spinlocks"> - <ref name="featurestate"/> + <choice> + <attribute name="mode"> + <value>passthrough</value> + </attribute> + <group> + <optional> + <attribute name="mode"> + <value>custom</value> + </attribute> + </optional> + <interleave> <optional> - <attribute name="retries"> - <data type="unsignedInt"/> - </attribute> + <element name="relaxed"> + <ref name="featurestate"/> + </element> </optional> - </element> - </optional> - <optional> - <element name="vpindex"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="runtime"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="synic"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="stimer"> - <ref name="stimer"/> - </element> - </optional> - <optional> - <element name="reset"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="vendor_id"> - <ref name="featurestate"/> <optional> - <attribute name="value"> - <data type="string"> - <param name="pattern">[^,]{0,12}</param> - </data> - </attribute> + <element name="vapic"> + <ref name="featurestate"/> + </element> </optional> - </element> - </optional> - <optional> - <element name="frequencies"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="reenlightenment"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="tlbflush"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="ipi"> - <ref name="featurestate"/> - </element> - </optional> - <optional> - <element name="evmcs"> - <ref name="featurestate"/> - </element> - </optional> - </interleave> + <optional> + <element name="spinlocks"> + <ref name="featurestate"/> + <optional> + <attribute name="retries"> + <data type="unsignedInt"/> + </attribute> + </optional> + </element> + </optional> + <optional> + <element name="vpindex"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="runtime"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="synic"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="stimer"> + <ref name="stimer"/> + </element> + </optional> + <optional> + <element name="reset"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="vendor_id"> + <ref name="featurestate"/> + <optional> + <attribute name="value"> + <data type="string"> + <param name="pattern">[^,]{0,12}</param> + </data> + </attribute> + </optional> + </element> + </optional> + <optional> + <element name="frequencies"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="reenlightenment"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="tlbflush"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="ipi"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="evmcs"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="avic"> + <ref name="featurestate"/> + </element> + </optional> + </interleave> + </group> + </choice> </element> </define> @@ -7077,6 +7599,21 @@ <ref name="featurestate"/> </element> </optional> + <optional> + <element name="pv-ipi"> + <ref name="featurestate"/> + </element> + </optional> + <optional> + <element name="dirty-ring"> + <ref name="featurestate"/> + <optional> + <attribute name="size"> + <data type="unsignedInt"/> + </attribute> + </optional> + </element> + </optional> </interleave> </element> </define> @@ -7381,6 +7918,45 @@ </element> </define> + <define name="qemuoverrideproperty"> + <element name="property" ns="http://libvirt.org/schemas/domain/qemu/1.0"> + <attribute name="name"/> + <attribute name="type"> + <choice> + <value>string</value> + <value>signed</value> + <value>unsigned</value> + <value>bool</value> + <value>remove</value> + </choice> + </attribute> + <optional> + <attribute name="value"/> + </optional> + </element> + </define> + + <define name="qemuoverride"> + <element name="override" ns="http://libvirt.org/schemas/domain/qemu/1.0"> + <interleave> + <zeroOrMore> + <element name="device"> + <attribute name="alias"/> + <interleave> + <optional> + <element name="frontend"> + <zeroOrMore> + <ref name="qemuoverrideproperty"/> + </zeroOrMore> + </element> + </optional> + </interleave> + </element> + </zeroOrMore> + </interleave> + </element> + </define> + <!-- Optional hypervisor extensions in their own namespace: @@ -7642,9 +8218,6 @@ <ref name="alias"/> </optional> <optional> - <ref name="acpi"/> - </optional> - <optional> <ref name="address"/> </optional> </interleave> diff --git a/src/main/resources/libvirt/rng/domainoverrides.rng b/src/main/resources/libvirt/rng/domainoverrides.rng new file mode 100644 index 0000000..13b18a2 --- /dev/null +++ b/src/main/resources/libvirt/rng/domainoverrides.rng @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <!-- Overrides for the no-op versions of storage elements for use with domain XMLs. --> + <include href="domaincommon.rng"/> + + <define name="storageStartupPolicy" combine="choice"> + <!-- overrides the no-op version in storagecommon.rng --> + <ref name="startupPolicy"/> + </define> + + <define name="storageSourceExtra" combine="choice"> + <!-- overrides the no-op version in storagecommon.rng --> + <ref name="diskspec"/> + </define> + +</grammar> diff --git a/src/main/resources/libvirt/rng/domainsnapshot.rng b/src/main/resources/libvirt/rng/domainsnapshot.rng index 58c3708..4048266 100644 --- a/src/main/resources/libvirt/rng/domainsnapshot.rng +++ b/src/main/resources/libvirt/rng/domainsnapshot.rng @@ -84,6 +84,11 @@ </choice> </optional> <optional> + <grammar> + <include href="inactiveDomain.rng"/> + </grammar> + </optional> + <optional> <element name="parent"> <element name="name"> <text/> @@ -122,7 +127,7 @@ <element name="disk"> <attribute name="name"> <choice> - <ref name="diskTarget"/> + <ref name="diskTargetDev"/> <ref name="absFilePath"/> </choice> </attribute> @@ -200,6 +205,9 @@ <ref name="diskSourceNetwork"/> </choice> </group> + <attribute name="snapshot"> + <value>manual</value> + </attribute> </choice> </element> </define> diff --git a/src/main/resources/libvirt/rng/inactiveDomain.rng b/src/main/resources/libvirt/rng/inactiveDomain.rng new file mode 100644 index 0000000..ae1207d --- /dev/null +++ b/src/main/resources/libvirt/rng/inactiveDomain.rng @@ -0,0 +1,10 @@ +<?xml version="1.0"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <!-- inactiveDomain element grammar is included into domainsnapshot.rng --> + <start> + <ref name="inactiveDomain"/> + </start> + + <include href="domainoverrides.rng"/> + +</grammar> diff --git a/src/main/resources/libvirt/rng/networkport.rng b/src/main/resources/libvirt/rng/networkport.rng index 1a12a32..14db949 100644 --- a/src/main/resources/libvirt/rng/networkport.rng +++ b/src/main/resources/libvirt/rng/networkport.rng @@ -44,12 +44,14 @@ <define name="owner"> <element name="owner"> - <element name="name"> - <text/> - </element> - <element name="uuid"> - <ref name="UUID"/> - </element> + <interleave> + <element name="name"> + <text/> + </element> + <element name="uuid"> + <ref name="UUID"/> + </element> + </interleave> </element> </define> @@ -141,20 +143,22 @@ <ref name="virYesNo"/> </attribute> </optional> - <optional> - <element name="driver"> - <attribute name="name"> - <choice> - <value>kvm</value> - <value>vfio</value> - </choice> - </attribute> - <empty/> + <interleave> + <optional> + <element name="driver"> + <attribute name="name"> + <choice> + <value>kvm</value> + <value>vfio</value> + </choice> + </attribute> + <empty/> + </element> + </optional> + <element name="address"> + <ref name="pciaddress"/> </element> - </optional> - <element name="address"> - <ref name="pciaddress"/> - </element> + </interleave> </define> </grammar> diff --git a/src/main/resources/libvirt/rng/nodedev.rng b/src/main/resources/libvirt/rng/nodedev.rng index 777227c..6299c52 100644 --- a/src/main/resources/libvirt/rng/nodedev.rng +++ b/src/main/resources/libvirt/rng/nodedev.rng @@ -78,6 +78,7 @@ <ref name="capusbdev"/> <ref name="capusbinterface"/> <ref name="capnet"/> + <ref name="capscsigeneric"/> <ref name="capscsihost"/> <ref name="capscsitarget"/> <ref name="capscsi"/> @@ -223,6 +224,10 @@ </optional> <optional> + <ref name="vpd"/> + </optional> + + <optional> <element name="iommuGroup"> <attribute name="number"> <ref name="unsignedInt"/> @@ -411,7 +416,7 @@ <define name="capsvports"> <attribute name="type"> - <value>vports_ops</value> + <value>vport_ops</value> </attribute> <element name="max_vports"> <ref name="unsignedInt"/> @@ -421,6 +426,16 @@ </element> </define> + <define name="capscsigeneric"> + <attribute name="type"> + <value>scsi_generic</value> + </attribute> + + <element name='char'> + <text/> + </element> + </define> + <define name="capscsihost"> <attribute name="type"> <value>scsi_host</value> @@ -432,7 +447,7 @@ <optional> <element name="unique_id"> - <ref name="positiveInteger"/> + <ref name="unsignedInt"/> </element> </optional> @@ -496,9 +511,11 @@ <ref name="unsignedLong"/> </element> - <element name="type"> - <text/> - </element> + <optional> + <element name="type"> + <text/> + </element> + </optional> </define> <define name="capstorage"> @@ -627,6 +644,11 @@ <ref name="UUID"/> </element> </optional> + <optional> + <element name="parent_addr"> + <data type="string"/> + </element> + </optional> <zeroOrMore> <element name="attr"> <attribute name="name"/> @@ -636,10 +658,7 @@ </interleave> </define> - <define name="capccwdev"> - <attribute name="type"> - <value>ccw</value> - </attribute> + <define name="capccwaddress"> <element name="cssid"> <ref name="ccwCssidRange"/> </element> @@ -651,19 +670,23 @@ </element> </define> + <define name="capccwdev"> + <attribute name="type"> + <value>ccw</value> + </attribute> + <ref name="capccwaddress"/> + </define> + <define name="capcssdev"> <attribute name="type"> <value>css</value> </attribute> - <element name="cssid"> - <ref name="ccwCssidRange"/> - </element> - <element name="ssid"> - <ref name="ccwSsidRange"/> - </element> - <element name="devno"> - <ref name="ccwDevnoRange"/> - </element> + <ref name="capccwaddress"/> + <optional> + <element name="channel_dev_addr"> + <ref name="capccwaddress"/> + </element> + </optional> <optional> <ref name="mdev_types"/> </optional> @@ -757,6 +780,80 @@ </element> </define> + <define name="vpd"> + <element name="capability"> + <attribute name="type"> + <value>vpd</value> + </attribute> + <element name="name"> + <ref name="vpdFieldValueFormat"/> + </element> + <optional> + <element name="fields"> + <attribute name="access"> + <value>readonly</value> + </attribute> + <optional> + <element name="change_level"> + <ref name="vpdFieldValueFormat"/> + </element> + </optional> + <optional> + <element name="manufacture_id"> + <ref name="vpdFieldValueFormat"/> + </element> + </optional> + <optional> + <element name="part_number"> + <ref name="vpdFieldValueFormat"/> + </element> + </optional> + <optional> + <element name="serial_number"> + <ref name="vpdFieldValueFormat"/> + </element> + </optional> + <zeroOrMore> + <element name="vendor_field"> + <attribute name="index"> + <ref name="vendorVPDFieldIndex"/> + </attribute> + <ref name="vpdFieldValueFormat"/> + </element> + </zeroOrMore> + </element> + </optional> + <optional> + <element name="fields"> + <attribute name="access"> + <value>readwrite</value> + </attribute> + <optional> + <element name="asset_tag"> + <ref name="vpdFieldValueFormat"/> + </element> + </optional> + <zeroOrMore> + <element name="vendor_field"> + <attribute name="index"> + <ref name="vendorVPDFieldIndex"/> + </attribute> + <ref name="vpdFieldValueFormat"/> + </element> + </zeroOrMore> + <zeroOrMore> + <element name="system_field"> + <attribute name="index"> + <ref name="systemVPDFieldIndex"/> + </attribute> + <ref name="vpdFieldValueFormat"/> + </element> + </zeroOrMore> + </element> + </optional> + </element> + </define> + <define name="apDomainRange"> <choice> <data type="string"> @@ -769,4 +866,22 @@ </choice> </define> + <define name="vpdFieldValueFormat"> + <data type="string"> + <param name="pattern">[0-9a-zA-F -_,.:;=]{0,255}</param> + </data> + </define> + + <define name="vendorVPDFieldIndex"> + <data type="string"> + <param name="pattern">[0-9A-Z]{1}</param> + </data> + </define> + + <define name="systemVPDFieldIndex"> + <data type="string"> + <param name="pattern">[0-9B-Z]{1}</param> + </data> + </define> + </grammar> diff --git a/src/main/resources/libvirt/rng/nwfilter.rng b/src/main/resources/libvirt/rng/nwfilter.rng index a75de7e..262bd55 100644 --- a/src/main/resources/libvirt/rng/nwfilter.rng +++ b/src/main/resources/libvirt/rng/nwfilter.rng @@ -7,20 +7,21 @@ </start> <define name="filter"> <element name="filter"> - <ref name="filter-node-attributes"/> - <optional> - <element name="uuid"> - <ref name="UUID"/> - </element> - </optional> - <zeroOrMore> - <choice> - <element name="filterref"> - <ref name="filterref-node-attributes"/> + <interleave> + <ref name="filter-node-attributes"/> + <optional> + <element name="uuid"> + <ref name="UUID"/> </element> - <element name="rule"> - <ref name="rule-node-attributes"/> - <choice> + </optional> + <zeroOrMore> + <choice> + <element name="filterref"> + <ref name="filterref-node-attributes"/> + </element> + <element name="rule"> + <ref name="rule-node-attributes"/> + <choice> <empty/> <element name="mac"> <ref name="match-attribute"/> @@ -199,10 +200,11 @@ <ref name="common-ipv6-attributes-p2"/> <ref name="comment-attribute"/> </element> - </choice> - </element> - </choice> - </zeroOrMore> + </choice> + </element> + </choice> + </zeroOrMore> + </interleave> </element> </define> diff --git a/src/main/resources/libvirt/rng/nwfilterbinding.rng b/src/main/resources/libvirt/rng/nwfilterbinding.rng index a0a956e..c91312b 100644 --- a/src/main/resources/libvirt/rng/nwfilterbinding.rng +++ b/src/main/resources/libvirt/rng/nwfilterbinding.rng @@ -12,12 +12,14 @@ <element name="filterbinding"> <interleave> <element name="owner"> - <element name="name"> - <text/> - </element> - <element name="uuid"> - <ref name="UUID"/> - </element> + <interleave> + <element name="name"> + <text/> + </element> + <element name="uuid"> + <ref name="UUID"/> + </element> + </interleave> </element> <element name="portdev"> diff --git a/src/main/resources/libvirt/rng/privatedata.rng b/src/main/resources/libvirt/rng/privatedata.rng new file mode 100644 index 0000000..3955193 --- /dev/null +++ b/src/main/resources/libvirt/rng/privatedata.rng @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + + <!-- This schema is provides scaffolding for having proper schema for private + data elements used by libvirt internally. + + Public schema must not implement any of the defines below. + + To override the definitions below use: + + <define name="..." combine="choice"> + --> + + <define name="privateDataStorageSource"> + <optional> + <element name="privateData"> + <notAllowed/> + </element> + </optional> + </define> + + <define name="privateDataDeviceDisk"> + <optional> + <element name="privateData"> + <notAllowed/> + </element> + </optional> + </define> + +</grammar> diff --git a/src/main/resources/libvirt/rng/storagecommon.rng b/src/main/resources/libvirt/rng/storagecommon.rng index e3d08a8..76714c9 100644 --- a/src/main/resources/libvirt/rng/storagecommon.rng +++ b/src/main/resources/libvirt/rng/storagecommon.rng @@ -13,19 +13,30 @@ <value>default</value> <value>qcow</value> <value>luks</value> + <value>luks2</value> </choice> </attribute> - <interleave> - <ref name="secret"/> - <optional> - <element name="cipher"> - <ref name="keycipher"/> - </element> - <element name="ivgen"> - <ref name="keyivgen"/> - </element> - </optional> - </interleave> + <optional> + <attribute name="engine"> + <choice> + <value>qemu</value> + <value>librbd</value> + </choice> + </attribute> + </optional> + <optional> + <interleave> + <ref name="secret"/> + <optional> + <element name="cipher"> + <ref name="keycipher"/> + </element> + <element name="ivgen"> + <ref name="keyivgen"/> + </element> + </optional> + </interleave> + </optional> </element> </define> @@ -110,6 +121,13 @@ </data> </element> </define> + + <define name="clusterSize"> + <element name="clusterSize"> + <ref name="scaledInteger"/> + </element> + </define> + <define name="fileFormatFeatures"> <element name="features"> <interleave> @@ -118,6 +136,11 @@ <empty/> </element> </optional> + <optional> + <element name="extended_l2"> + <empty/> + </element> + </optional> </interleave> </element> </define> diff --git a/src/main/resources/libvirt/rng/storagepool.rng b/src/main/resources/libvirt/rng/storagepool.rng index bd24b8b..63a8b75 100644 --- a/src/main/resources/libvirt/rng/storagepool.rng +++ b/src/main/resources/libvirt/rng/storagepool.rng @@ -69,10 +69,10 @@ <ref name="features"/> <ref name="sourcenetfs"/> <ref name="target"/> + <optional> + <ref name="fs_mount_opts"/> + </optional> </interleave> - <optional> - <ref name="fs_mount_opts"/> - </optional> </define> <define name="poollogical"> @@ -166,10 +166,10 @@ <ref name="features"/> <ref name="sourcerbd"/> <ref name="refresh"/> + <optional> + <ref name="rbd_config_opts"/> + </optional> </interleave> - <optional> - <ref name="rbd_config_opts"/> - </optional> </define> <define name="poolsheepdog"> @@ -577,9 +577,7 @@ <ref name="sourcefmtnetfs"/> <optional> <element name="protocol"> - <attribute name="ver"> - <ref name="unsignedInt"/> - </attribute> + <attribute name="ver"/> </element> </optional> <optional> diff --git a/src/main/resources/libvirt/rng/storagevol.rng b/src/main/resources/libvirt/rng/storagevol.rng index 22ce5ea..3e0f482 100644 --- a/src/main/resources/libvirt/rng/storagevol.rng +++ b/src/main/resources/libvirt/rng/storagevol.rng @@ -125,6 +125,9 @@ </element> </optional> <optional> + <ref name="clusterSize"/> + </optional> + <optional> <ref name="fileFormatFeatures"/> </optional> </interleave> |