summaryrefslogtreecommitdiffstats
path: root/src/main/resources/libvirt/rng/capability.rng
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/libvirt/rng/capability.rng')
-rw-r--r--src/main/resources/libvirt/rng/capability.rng525
1 files changed, 525 insertions, 0 deletions
diff --git a/src/main/resources/libvirt/rng/capability.rng b/src/main/resources/libvirt/rng/capability.rng
new file mode 100644
index 0000000..83b4149
--- /dev/null
+++ b/src/main/resources/libvirt/rng/capability.rng
@@ -0,0 +1,525 @@
+<?xml version="1.0"?>
+<!-- A Relax NG schema for the libvirt capabilities XML format -->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <include href="basictypes.rng"/>
+ <include href="cputypes.rng"/>
+ <start>
+ <ref name="capabilities"/>
+ </start>
+
+
+ <define name="capabilities">
+ <element name="capabilities">
+ <ref name="hostcaps"/>
+
+ <zeroOrMore>
+ <ref name="guestcaps"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="hostcaps">
+ <element name="host">
+ <optional>
+ <element name="uuid">
+ <ref name="UUID"/>
+ </element>
+ </optional>
+ <ref name="hostcpu"/>
+ <optional>
+ <ref name="power_management"/>
+ </optional>
+ <optional>
+ <ref name="iommu_support"/>
+ </optional>
+ <optional>
+ <ref name="migration"/>
+ </optional>
+ <optional>
+ <ref name="topology"/>
+ </optional>
+ <optional>
+ <ref name="cache"/>
+ </optional>
+ <optional>
+ <ref name="memory_bandwidth"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="secmodel"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="secmodel">
+ <element name="secmodel">
+ <interleave>
+ <element name="model">
+ <text/>
+ </element>
+ <element name="doi">
+ <text/>
+ </element>
+ <zeroOrMore>
+ <element name="baselabel">
+ <attribute name="type">
+ <text/>
+ </attribute>
+ <text/>
+ </element>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+
+ <define name="power_management">
+ <element name="power_management">
+ <interleave>
+ <optional>
+ <element name="suspend_mem">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suspend_disk">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suspend_hybrid">
+ <empty/>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+
+ <define name="iommu_support">
+ <element name="iommu">
+ <optional>
+ <attribute name="support">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+
+ <define name="migration">
+ <element name="migration_features">
+ <optional>
+ <element name="live">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="uri_transports">
+ <oneOrMore>
+ <element name="uri_transport">
+ <choice>
+ <value>vpxmigr</value>
+ <value>tcp</value>
+ <value>rdma</value>
+ <value>vzmigr</value>
+ </choice>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ </element>
+ </define>
+
+ <define name="topology">
+ <element name="topology">
+ <element name="cells">
+ <attribute name="num">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <oneOrMore>
+ <ref name="cell"/>
+ </oneOrMore>
+ </element>
+ <optional>
+ <ref name="numaInterconnects"/>
+ </optional>
+ </element>
+ </define>
+
+ <define name="cell">
+ <element name="cell">
+ <attribute name="id">
+ <ref name="unsignedInt"/>
+ </attribute>
+
+ <optional>
+ <ref name="memory"/>
+ </optional>
+
+ <zeroOrMore>
+ <ref name="pagesNuma"/>
+ </zeroOrMore>
+
+ <optional>
+ <element name="distances">
+ <oneOrMore>
+ <ref name="numaDistance"/>
+ </oneOrMore>
+ </element>
+ </optional>
+
+ <zeroOrMore>
+ <ref name="numaCache"/>
+ </zeroOrMore>
+
+ <optional>
+ <element name="cpus">
+ <attribute name="num">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <zeroOrMore>
+ <ref name="cpu"/>
+ </zeroOrMore>
+ </element>
+ </optional>
+ </element>
+ </define>
+
+ <define name="memory">
+ <element name="memory">
+ <ref name="scaledInteger"/>
+ </element>
+ </define>
+
+ <define name="cpu">
+ <element name="cpu">
+ <attribute name="id">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <optional>
+ <attribute name="socket_id">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <attribute name="die_id">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <attribute name="core_id">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <attribute name="siblings">
+ <ref name="cpuset"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+
+ <define name="cache">
+ <element name="cache">
+ <oneOrMore>
+ <element name="bank">
+ <attribute name="id">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <attribute name="level">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <ref name="cacheType"/>
+ <attribute name="size">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <attribute name="unit">
+ <ref name="unit"/>
+ </attribute>
+ <attribute name="cpus">
+ <ref name="cpuset"/>
+ </attribute>
+ <zeroOrMore>
+ <element name="control">
+ <attribute name="granularity">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <optional>
+ <attribute name="min">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ <attribute name="unit">
+ <ref name="unit"/>
+ </attribute>
+ <ref name="cacheType"/>
+ <attribute name="maxAllocs">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </element>
+ </zeroOrMore>
+ </element>
+ </oneOrMore>
+ <optional>
+ <ref name="cpuMonitor"/>
+ </optional>
+ </element>
+ </define>
+
+ <define name="cacheType">
+ <attribute name="type">
+ <choice>
+ <value>both</value>
+ <value>code</value>
+ <value>data</value>
+ </choice>
+ </attribute>
+ </define>
+
+ <define name="memory_bandwidth">
+ <element name="memory_bandwidth">
+ <oneOrMore>
+ <element name="node">
+ <attribute name="id">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <attribute name="cpus">
+ <ref name="cpuset"/>
+ </attribute>
+ <zeroOrMore>
+ <element name="control">
+ <attribute name="granularity">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <optional>
+ <attribute name="min">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ <attribute name="maxAllocs">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </element>
+ </zeroOrMore>
+ </element>
+ </oneOrMore>
+ <optional>
+ <ref name="cpuMonitor"/>
+ </optional>
+ </element>
+ </define>
+
+ <define name="cpuMonitor">
+ <element name="monitor">
+ <optional>
+ <attribute name="level">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <attribute name="reuseThreshold">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ <attribute name="maxMonitors">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <oneOrMore>
+ <element name="feature">
+ <attribute name="name">
+ <ref name="monitorFeature"/>
+ </attribute>
+ </element>
+ </oneOrMore>
+ </element>
+ </define>
+
+ <define name="monitorFeature">
+ <data type="string">
+ <param name="pattern">(llc_|mbm_)[a-zA-Z0-9\-_]+</param>
+ </data>
+ </define>
+
+ <define name="guestcaps">
+ <element name="guest">
+ <ref name="ostype"/>
+ <ref name="arch"/>
+ <optional>
+ <ref name="features"/>
+ </optional>
+ </element>
+ </define>
+
+ <define name="ostype">
+ <element name="os_type">
+ <choice>
+ <value>xen</value> <!-- Xen 3.0 pv -->
+ <value>linux</value> <!-- same as "xen" - meant to be legacy -->
+ <value>hvm</value> <!-- unmodified OS -->
+ <value>exe</value> <!-- For container based virt -->
+ <value>uml</value> <!-- user mode linux; NOT USED ANYMORE -->
+ </choice>
+ </element>
+ </define>
+
+ <define name="arch">
+ <element name="arch">
+ <attribute name="name">
+ <ref name="archnames"/>
+ </attribute>
+ <ref name="wordsize"/>
+ <optional>
+ <ref name="emulator"/>
+ </optional>
+ <optional>
+ <ref name="loader"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="machine"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="domain"/>
+ </oneOrMore>
+ </element>
+ </define>
+
+ <define name="emulator">
+ <element name="emulator">
+ <ref name="absFilePath"/>
+ </element>
+ </define>
+
+ <define name="loader">
+ <element name="loader">
+ <ref name="absFilePath"/>
+ </element>
+ </define>
+
+ <define name="wordsize">
+ <element name="wordsize">
+ <choice>
+ <value>31</value>
+ <value>32</value>
+ <value>64</value>
+ </choice>
+ </element>
+ </define>
+
+ <define name="machine">
+ <element name="machine">
+ <optional>
+ <attribute name="canonical">
+ <text/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maxCpus">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="deprecated">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <text/>
+ </element>
+ </define>
+
+ <define name="domain">
+ <element name="domain">
+ <attribute name="type">
+ <choice>
+ <value>qemu</value>
+ <value>kqemu</value>
+ <value>kvm</value>
+ <value>xen</value>
+ <value>uml</value> <!-- NOT USED ANYMORE -->
+ <value>lxc</value>
+ <value>openvz</value>
+ <value>test</value>
+ <value>hvf</value>
+ </choice>
+ </attribute>
+
+ <optional>
+ <ref name="emulator"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="machine"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="features">
+ <element name="features">
+ <interleave>
+ <optional>
+ <element name="pae">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="nonpae">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ia64_be">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="acpi">
+ <ref name="featuretoggle"/>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="apic">
+ <ref name="featuretoggle"/>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cpuselection">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="deviceboot">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="disksnapshot">
+ <ref name="featuretoggle"/>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hap">
+ <ref name="featuretoggle"/>
+ <empty/>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+
+ <define name="featuretoggle">
+ <attribute name="toggle">
+ <ref name="virYesNo"/>
+ </attribute>
+ <attribute name="default">
+ <ref name="virOnOff"/>
+ </attribute>
+ </define>
+
+ <define name="pagesNuma">
+ <element name="pages">
+ <ref name="pagesElem"/>
+ <ref name="unsignedInt"/>
+ </element>
+ </define>
+ <define name="pagesElem">
+ <optional>
+ <attribute name="unit">
+ <ref name="unit"/>
+ </attribute>
+ </optional>
+ <attribute name="size">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </define>
+</grammar>