summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2023-02-01 13:55:42 +0100
committerSimon Rettberg2023-02-01 13:55:42 +0100
commit337f21af9c33ddb55706977841841d71c1ea05d8 (patch)
tree82e87d228df0a91638503436c8ad2196f2bc460a
parentvmware: Add hwversion 20 (diff)
downloadmaster-sync-shared-337f21af9c33ddb55706977841841d71c1ea05d8.tar.gz
master-sync-shared-337f21af9c33ddb55706977841841d71c1ea05d8.tar.xz
master-sync-shared-337f21af9c33ddb55706977841841d71c1ea05d8.zip
Update libvirt rng files
-rw-r--r--src/main/resources/libvirt/rng/basictypes.rng9
-rw-r--r--src/main/resources/libvirt/rng/capability.rng39
-rw-r--r--src/main/resources/libvirt/rng/cputypes.rng88
-rw-r--r--src/main/resources/libvirt/rng/domain.rng12
-rw-r--r--src/main/resources/libvirt/rng/domainbackup.rng16
-rw-r--r--src/main/resources/libvirt/rng/domaincaps.rng126
-rw-r--r--src/main/resources/libvirt/rng/domaincheckpoint.rng2
-rw-r--r--src/main/resources/libvirt/rng/domaincommon.rng2237
-rw-r--r--src/main/resources/libvirt/rng/domainoverrides.rng16
-rw-r--r--src/main/resources/libvirt/rng/domainsnapshot.rng10
-rw-r--r--src/main/resources/libvirt/rng/inactiveDomain.rng10
-rw-r--r--src/main/resources/libvirt/rng/networkport.rng42
-rw-r--r--src/main/resources/libvirt/rng/nodedev.rng151
-rw-r--r--src/main/resources/libvirt/rng/nwfilter.rng36
-rw-r--r--src/main/resources/libvirt/rng/nwfilterbinding.rng14
-rw-r--r--src/main/resources/libvirt/rng/privatedata.rng30
-rw-r--r--src/main/resources/libvirt/rng/storagecommon.rng45
-rw-r--r--src/main/resources/libvirt/rng/storagepool.rng16
-rw-r--r--src/main/resources/libvirt/rng/storagevol.rng3
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">[&#x20;-&#x7E;]{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>