mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-09 01:04:59 +00:00
The <teaming> element in <interface> allows pairing two interfaces together as a simple "failover bond" network device in a guest. One of the devices is the "transient" interface - it will be preferred for all network traffic when it is present, but may be removed when necessary, in particular during migration, when traffic will instead go through the other interface of the pair - the "persistent" interface. As it happens, in the QEMU implementation of this teaming pair (called "virtio failover" in QEMU) the transient interface is always a host network device assigned to the guest using VFIO (aka "hostdev"); the persistent interface is always an emulated virtio NIC. When support was initially added for <teaming>, it was written to require that the transient/hostdev device be defined using <interface type='hostdev'>; this was done because the virtio failover implementation in QEMU and the virtio guest driver demands that the two interfaces in the pair have matching MAC addresses, and the only way libvirt can guarantee the MAC address of a hostdev network device is to use <interface type='hostdev'>, whose main purpose is to configure the device's MAC address before handing the device to QEMU. (note that <interface type='hostdev'> in turn requires that the network device be an SRIOV VF (Virtual Function), as that is the only type of network device whose MAC address we can set in a way that will survive the device's driver init in the guest). It has recently come up that some users are unable to use <teaming> because they are running in a container environment where libvirt doesn't have the necessary privileges or resources to set the VF's MAC address (because setting the VF MAC is done via the same device's PF (Physical Function), and the PF is not exposed to libvirt's container). At the same time, these users *are* able to set the VF's MAC address themselves in advance of staring up libvirt in the container. So they could theoretically use the <teaming> feature if libvirt just skipped the "setting the MAC address" part. Fortunately, that is *exactly* the difference between <interface type='hostdev'> (which must be a "hostdev VF") and <hostdev> (a "plain hostdev" - it could be *any* PCI device; libvirt doesn't know what type of PCI device it is, and doesn't care). But what is still needed is for libvirt to provide a small bit of information on the QEMU commandline argument for the hostdev, telling QEMU that this device will be part of a team ("failover pair"), and the id of the other device in the pair. To make both of those goals simultaneously possible, this patch adds support for the <teaming> element to plain <hostdev> - libvirt doesn't try to set any MAC addresses, and QEMU gets the extra commandline argument it needs) (actually, this patch adds only the parsing/formatting of the <teaming> element in <hostdev>. The next patch will actually wire that into the qemu driver.) Signed-off-by: Laine Stump <laine@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
7308 lines
193 KiB
XML
7308 lines
193 KiB
XML
<?xml version="1.0"?>
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<!-- domain-related definitions used in multiple grammars -->
|
|
<include href="basictypes.rng"/>
|
|
<include href="storagecommon.rng"/>
|
|
<include href="networkcommon.rng"/>
|
|
<include href="cputypes.rng"/>
|
|
<include href="nwfilter_params.rng"/>
|
|
|
|
<!--
|
|
description and title element, may be placed anywhere under the root
|
|
-->
|
|
<define name="description">
|
|
<element name="description">
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="title">
|
|
<element name="title">
|
|
<ref name="objectNameWithSlash"/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="createMode">
|
|
<data type="unsignedInt">
|
|
<param name="pattern">0[0-7]{3}|[0-7]{1,3}</param>
|
|
</data>
|
|
</define>
|
|
|
|
<!--
|
|
We handle only document defining a domain
|
|
-->
|
|
<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="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>
|
|
</element>
|
|
</define>
|
|
<define name="seclabel">
|
|
<element name="seclabel">
|
|
<optional>
|
|
<attribute name="model">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<group>
|
|
<!-- with dynamic label (default), relabel must be yes, baselabel
|
|
is optional, and label and imagelabel are output-only -->
|
|
<optional>
|
|
<attribute name="type">
|
|
<value>dynamic</value>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="relabel">
|
|
<value>yes</value>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<element name="label">
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="imagelabel">
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="baselabel">
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<!-- with static label, relabel can be either format (default
|
|
no), label is required, imagelabel is output-only, and no
|
|
baselabel is present -->
|
|
<attribute name="type">
|
|
<value>static</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="relabel">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<element name="label">
|
|
<text/>
|
|
</element>
|
|
<optional>
|
|
<element name="imagelabel">
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<!-- with none, relabel must be no if present -->
|
|
<attribute name="type">
|
|
<value>none</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="relabel">
|
|
<value>no</value>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
<define name="devSeclabel">
|
|
<element name="seclabel">
|
|
<!-- A per-device seclabel override is more limited, either
|
|
relabel=no or a <label> must be present on input;
|
|
output also can include labelskip=yes. -->
|
|
<optional>
|
|
<attribute name="model">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<group>
|
|
<attribute name="relabel">
|
|
<value>no</value>
|
|
</attribute>
|
|
</group>
|
|
<group>
|
|
<attribute name="labelskip">
|
|
<value>yes</value>
|
|
</attribute>
|
|
</group>
|
|
<group>
|
|
<optional>
|
|
<attribute name="relabel">
|
|
<value>yes</value>
|
|
</attribute>
|
|
</optional>
|
|
<oneOrMore>
|
|
<element name="label">
|
|
<text/>
|
|
</element>
|
|
</oneOrMore>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
<define name="hvs">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>qemu</value>
|
|
<value>kqemu</value>
|
|
<value>kvm</value>
|
|
<value>xen</value>
|
|
<value>lxc</value>
|
|
<value>uml</value> <!-- NOT USED ANYMORE -->
|
|
<value>openvz</value>
|
|
<value>test</value>
|
|
<value>vmware</value>
|
|
<value>hyperv</value>
|
|
<value>vbox</value>
|
|
<value>phyp</value> <!-- NOT USED ANYMORE -->
|
|
<value>vz</value>
|
|
<value>bhyve</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="os">
|
|
<choice>
|
|
<ref name="osxen"/>
|
|
<ref name="oshvm"/>
|
|
<ref name="osexe"/>
|
|
</choice>
|
|
</define>
|
|
<define name="osxen">
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<ref name="bootloader"/>
|
|
</optional>
|
|
<element name="os">
|
|
<ref name="ostypexen"/>
|
|
<ref name="osbootkernel"/>
|
|
</element>
|
|
</group>
|
|
<group>
|
|
<ref name="bootloader"/>
|
|
<optional>
|
|
<element name="os">
|
|
<ref name="ostypexen"/>
|
|
<optional>
|
|
<ref name="osbootkernel"/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</group>
|
|
</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="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">
|
|
<choice>
|
|
<value>rom</value>
|
|
<value>pflash</value>
|
|
</choice>
|
|
</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>
|
|
</define>
|
|
<define name="ostypexen">
|
|
<element name="type">
|
|
<optional>
|
|
<attribute name="arch">
|
|
<choice>
|
|
<value>i686</value>
|
|
<value>x86_64</value>
|
|
<value>ia64</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="machine">
|
|
<choice>
|
|
<value>xenpv</value>
|
|
<value>xenfv</value>
|
|
<value>xenpvh</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<value>xen</value>
|
|
<value>linux</value>
|
|
<value>xenpvh</value>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
<define name="ostypehvm">
|
|
<element name="type">
|
|
<optional>
|
|
<attribute name="arch">
|
|
<ref name="archnames"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="machine">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9_\.\-]+</param>
|
|
</data>
|
|
</attribute>
|
|
</optional>
|
|
<value>hvm</value>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="osexe">
|
|
<element name="os">
|
|
<element name="type">
|
|
<optional>
|
|
<attribute name="arch">
|
|
<ref name="archnames"/>
|
|
</attribute>
|
|
</optional>
|
|
<value>exe</value>
|
|
</element>
|
|
<interleave>
|
|
<optional>
|
|
<element name="init">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="initarg">
|
|
<text/>
|
|
</element>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<element name="initenv">
|
|
<attribute name="name">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z_]+[a-zA-Z0-9_]*</param>
|
|
</data>
|
|
</attribute>
|
|
<text/>
|
|
</element>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<element name="initdir">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="inituser">
|
|
<ref name="genericName"/>
|
|
</element>
|
|
<element name="initgroup">
|
|
<ref name="genericName"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="keywrap">
|
|
<element name="keywrap">
|
|
<oneOrMore>
|
|
<element name="cipher">
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>aes</value>
|
|
<value>dea</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="state">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="launchSecurity">
|
|
<element name="launchSecurity">
|
|
<attribute name="type">
|
|
<value>sev</value>
|
|
</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"/>
|
|
</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>
|
|
</define>
|
|
|
|
<!--
|
|
Enable or disable perf events for the domain. For each
|
|
of the events the following rules apply:
|
|
on: the event will be forcefully enabled
|
|
off: the event will be forcefully disabled
|
|
not specified: the event will be disabled by default
|
|
-->
|
|
<define name="perf">
|
|
<element name="perf">
|
|
<oneOrMore>
|
|
<element name="event">
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>cmt</value>
|
|
<value>mbmt</value>
|
|
<value>mbml</value>
|
|
<value>cpu_cycles</value>
|
|
<value>instructions</value>
|
|
<value>cache_references</value>
|
|
<value>cache_misses</value>
|
|
<value>branch_instructions</value>
|
|
<value>branch_misses</value>
|
|
<value>bus_cycles</value>
|
|
<value>stalled_cycles_frontend</value>
|
|
<value>stalled_cycles_backend</value>
|
|
<value>ref_cpu_cycles</value>
|
|
<value>cpu_clock</value>
|
|
<value>task_clock</value>
|
|
<value>page_faults</value>
|
|
<value>context_switches</value>
|
|
<value>cpu_migrations</value>
|
|
<value>page_faults_min</value>
|
|
<value>page_faults_maj</value>
|
|
<value>alignment_faults</value>
|
|
<value>emulation_faults</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="enabled">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
The Identifiers can be:
|
|
- an optional id attribute with a number on the domain element
|
|
- a mandatory name
|
|
- an optional uuid
|
|
-->
|
|
<define name="ids">
|
|
<optional>
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<element name="name">
|
|
<ref name="objectNameWithSlash"/>
|
|
</element>
|
|
<optional>
|
|
<element name="uuid">
|
|
<ref name="UUID"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="genid">
|
|
<choice>
|
|
<ref name="UUID"/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
<define name="idmap">
|
|
<element name="idmap">
|
|
<interleave>
|
|
<zeroOrMore>
|
|
<element name="uid">
|
|
<attribute name="start">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="target">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="count">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<element name="gid">
|
|
<attribute name="start">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="target">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="count">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
Resources usage defines the amount of memory (maximum and possibly
|
|
current usage) and number of virtual CPUs used by that domain.
|
|
We can't check here the rule that currentMemory <= memory
|
|
-->
|
|
<define name="resources">
|
|
<interleave>
|
|
<optional>
|
|
<element name="memory">
|
|
<ref name="scaledInteger"/>
|
|
<optional>
|
|
<attribute name="dumpCore">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="maxMemory">
|
|
<ref name="scaledInteger"/>
|
|
<attribute name="slots">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="currentMemory">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="memoryBacking">
|
|
<interleave>
|
|
<optional>
|
|
<element name="hugepages">
|
|
<zeroOrMore>
|
|
<element name="page">
|
|
<attribute name="size">
|
|
<ref name="unsignedLong"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="unit">
|
|
<ref name="unit"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="nodeset">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="nosharepages">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="locked">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="source">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>file</value>
|
|
<value>anonymous</value>
|
|
<value>memfd</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="access">
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>shared</value>
|
|
<value>private</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="allocation">
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>immediate</value>
|
|
<value>ondemand</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="discard">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name="vcpu">
|
|
<optional>
|
|
<attribute name="placement">
|
|
<choice>
|
|
<value>static</value>
|
|
<value>auto</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="cpuset">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="current">
|
|
<ref name="countCPU"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="countCPU"/>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name="vcpus">
|
|
<zeroOrMore>
|
|
<element name="vcpu">
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="enabled">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="hotpluggable">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="order">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name="iothreads">
|
|
<ref name="unsignedInt"/>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name="iothreadids">
|
|
<zeroOrMore>
|
|
<element name="iothread">
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<ref name="blkiotune"/>
|
|
</optional>
|
|
|
|
<optional>
|
|
<ref name="memtune"/>
|
|
</optional>
|
|
|
|
<optional>
|
|
<ref name="cputune"/>
|
|
</optional>
|
|
|
|
<optional>
|
|
<ref name="numatune"/>
|
|
</optional>
|
|
|
|
<optional>
|
|
<ref name="respartition"/>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<!-- The Blkio cgroup related tunables would go in the blkiotune -->
|
|
<define name="blkiotune">
|
|
<element name="blkiotune">
|
|
<interleave>
|
|
<!-- I/O weight the VM can use -->
|
|
<optional>
|
|
<element name="weight">
|
|
<ref name="weight"/>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="device">
|
|
<interleave>
|
|
<element name="path">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
<optional>
|
|
<element name="weight">
|
|
<ref name="weight"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="read_iops_sec">
|
|
<data type="unsignedInt"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="write_iops_sec">
|
|
<data type="unsignedInt"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="read_bytes_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="write_bytes_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<!-- 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>
|
|
</element>
|
|
</define>
|
|
|
|
<!-- All the cpu related tunables would go in the cputune -->
|
|
<define name="cputune">
|
|
<element name="cputune">
|
|
<interleave>
|
|
<optional>
|
|
<element name="shares">
|
|
<ref name="cpushares"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="global_period">
|
|
<ref name="cpuperiod"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="global_quota">
|
|
<ref name="cpuquota"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="period">
|
|
<ref name="cpuperiod"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="quota">
|
|
<ref name="cpuquota"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="emulator_period">
|
|
<ref name="cpuperiod"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="emulator_quota">
|
|
<ref name="cpuquota"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="iothread_period">
|
|
<ref name="cpuperiod"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="iothread_quota">
|
|
<ref name="cpuquota"/>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="vcpupin">
|
|
<attribute name="vcpu">
|
|
<ref name="vcpuid"/>
|
|
</attribute>
|
|
<attribute name="cpuset">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<element name="emulatorpin">
|
|
<attribute name="cpuset">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="iothreadpin">
|
|
<attribute name="iothread">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="cpuset">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<element name="vcpusched">
|
|
<optional>
|
|
<attribute name="vcpus">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="schedparam"/>
|
|
</element>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<element name="iothreadsched">
|
|
<optional>
|
|
<attribute name="iothreads">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="schedparam"/>
|
|
</element>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<element name="emulatorsched">
|
|
<ref name="schedparam"/>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="cachetune">
|
|
<attribute name="vcpus">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
<oneOrMore>
|
|
<choice>
|
|
<element name="cache">
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="level">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>both</value>
|
|
<value>code</value>
|
|
<value>data</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="size">
|
|
<ref name="unsignedLong"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="unit">
|
|
<ref name="unit"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
<element name="monitor">
|
|
<attribute name="level">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="vcpus">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</element>
|
|
</choice>
|
|
</oneOrMore>
|
|
</element>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<element name="memorytune">
|
|
<attribute name="vcpus">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
<oneOrMore>
|
|
<choice>
|
|
<element name="node">
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="bandwidth">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</element>
|
|
<element name="monitor">
|
|
<attribute name="vcpus">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</element>
|
|
</choice>
|
|
</oneOrMore>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="schedparam">
|
|
<choice>
|
|
<group>
|
|
<attribute name="scheduler">
|
|
<choice>
|
|
<value>batch</value>
|
|
<value>idle</value>
|
|
</choice>
|
|
</attribute>
|
|
</group>
|
|
<group>
|
|
<attribute name="scheduler">
|
|
<choice>
|
|
<value>fifo</value>
|
|
<value>rr</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="priority">
|
|
<ref name="unsignedShort"/>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
</define>
|
|
|
|
<!-- All the NUMA related tunables would go in the numatune -->
|
|
<define name="numatune">
|
|
<element name="numatune">
|
|
<interleave>
|
|
<optional>
|
|
<element name="memory">
|
|
<optional>
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>strict</value>
|
|
<value>preferred</value>
|
|
<value>interleave</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<attribute name="placement">
|
|
<value>static</value>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="nodeset">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<attribute name="placement">
|
|
<value>auto</value>
|
|
</attribute>
|
|
</choice>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="memnode">
|
|
<attribute name="cellid">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>strict</value>
|
|
<value>preferred</value>
|
|
<value>interleave</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="nodeset">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="respartition">
|
|
<element name="resource">
|
|
<element name="partition">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="clock">
|
|
<optional>
|
|
<element name="clock">
|
|
<choice>
|
|
<group>
|
|
<attribute name="offset">
|
|
<choice>
|
|
<value>localtime</value>
|
|
<value>utc</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="adjustment">
|
|
<choice>
|
|
<ref name="timeDelta"/>
|
|
<value>reset</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="offset">
|
|
<value>timezone</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="timezone">
|
|
<ref name="timeZone"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="offset">
|
|
<value>variable</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="adjustment">
|
|
<ref name="timeDelta"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="basis">
|
|
<choice>
|
|
<value>utc</value>
|
|
<value>localtime</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
<zeroOrMore>
|
|
<ref name="timer"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
<define name="timer">
|
|
<element name="timer">
|
|
<choice>
|
|
<group>
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>platform</value>
|
|
<value>rtc</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="track">
|
|
<choice>
|
|
<value>boot</value>
|
|
<value>guest</value>
|
|
<value>wall</value>
|
|
<value>realtime</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="tickpolicy"/>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="name">
|
|
<value>tsc</value>
|
|
</attribute>
|
|
<optional>
|
|
<ref name="tickpolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="frequency">
|
|
<ref name="unsignedLong"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>native</value>
|
|
<value>emulate</value>
|
|
<value>paravirt</value>
|
|
<value>smpsafe</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>hpet</value>
|
|
<value>pit</value>
|
|
<value>armvtimer</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name="tickpolicy"/>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>kvmclock</value>
|
|
<value>hypervclock</value>
|
|
</choice>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="present">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="tickpolicy">
|
|
<choice>
|
|
<group>
|
|
<attribute name="tickpolicy">
|
|
<choice>
|
|
<value>delay</value>
|
|
<value>merge</value>
|
|
<value>discard</value>
|
|
</choice>
|
|
</attribute>
|
|
</group>
|
|
<group>
|
|
<attribute name="tickpolicy">
|
|
<value>catchup</value>
|
|
</attribute>
|
|
<optional>
|
|
<element name="catchup">
|
|
<optional>
|
|
<attribute name="threshold">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="slew">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="limit">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
</define>
|
|
<!--
|
|
A bootloader may be used to extract the OS information instead of
|
|
defining the OS parameter in the instance. It points just to the
|
|
binary or script used to extract the data from the first disk device.
|
|
-->
|
|
<define name="bootloader">
|
|
<interleave>
|
|
<optional>
|
|
<element name="bootloader">
|
|
<choice>
|
|
<text/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="bootloader_args">
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
<define name="osbootkernel">
|
|
<interleave>
|
|
<optional>
|
|
<element name="kernel">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="initrd">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="root">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="cmdline">
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="dtb">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
<define name="osbootdev">
|
|
<element name="boot">
|
|
<attribute name="dev">
|
|
<choice>
|
|
<value>hd</value>
|
|
<value>fd</value>
|
|
<value>cdrom</value>
|
|
<value>network</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
<define name="diskspec">
|
|
<interleave>
|
|
<optional>
|
|
<ref name="diskDriver"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskMirror"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskAuth"/>
|
|
</optional>
|
|
<ref name="target"/>
|
|
<optional>
|
|
<ref name="deviceBoot"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="backenddomain">
|
|
<attribute name="name">
|
|
<ref name="objectNameWithSlash"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="readonly">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="shareable">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="transient">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="serial">
|
|
<ref name="diskSerial"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskIoTune"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="geometry"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskBlockIo"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="wwn">
|
|
<ref name="wwn"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="vendor">
|
|
<data type="string">
|
|
<!-- All printable characters -->
|
|
<param name="pattern">[ -~]{0,8}</param>
|
|
</data>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="product">
|
|
<data type="string">
|
|
<!-- All printable characters -->
|
|
<param name="pattern">[ -~]{0,16}</param>
|
|
</data>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
<define name="snapshot">
|
|
<attribute name="snapshot">
|
|
<choice>
|
|
<value>no</value>
|
|
<value>internal</value>
|
|
<value>external</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="lease">
|
|
<element name="lease">
|
|
<interleave>
|
|
<element name="lockspace">
|
|
<text/>
|
|
</element>
|
|
<element name="key">
|
|
<text/>
|
|
</element>
|
|
<element name="target">
|
|
<attribute name="path">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="offset">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="startupPolicy">
|
|
<attribute name="startupPolicy">
|
|
<choice>
|
|
<value>mandatory</value>
|
|
<value>requisite</value>
|
|
<value>optional</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<!--
|
|
A disk description can be either of type file or block
|
|
The name of the attribute on the source element depends on the type
|
|
|
|
-->
|
|
<define name="disk">
|
|
<element name="disk">
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<attribute name="device">
|
|
<choice>
|
|
<value>floppy</value>
|
|
<value>disk</value>
|
|
<value>cdrom</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<ref name="diskSource"/>
|
|
<ref name="diskSpecsExtra"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="device">
|
|
<value>lun</value>
|
|
</attribute>
|
|
<optional>
|
|
<ref name="rawIO"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="sgIO"/>
|
|
</optional>
|
|
<interleave>
|
|
<choice>
|
|
<ref name="diskSourceNetwork"/>
|
|
<ref name="diskSourceBlock"/>
|
|
<ref name="diskSourceVolume"/>
|
|
</choice>
|
|
<ref name="diskSpecsExtra"/>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="snapshot"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSpecsExtra">
|
|
<interleave>
|
|
<ref name="storageSourceExtra"/>
|
|
<ref name="diskBackingChain"/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name="diskBackingChain">
|
|
<choice>
|
|
<ref name="diskBackingStore"/>
|
|
<ref name="diskBackingStoreLast"/>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="diskBackingStore">
|
|
<element name="backingStore">
|
|
<optional>
|
|
<attribute name="index">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<ref name="diskSource"/>
|
|
<ref name="diskBackingChain"/>
|
|
<ref name="diskFormat"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskFormat">
|
|
<element name="format">
|
|
<attribute name="type">
|
|
<ref name="storageFormat"/>
|
|
</attribute>
|
|
<optional>
|
|
<element name="metadata_cache">
|
|
<optional>
|
|
<element name="max_size">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskBackingStoreLast">
|
|
<optional>
|
|
<element name="backingStore">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="diskSourceSlice">
|
|
<attribute name="offset">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
<attribute name="size">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="diskSourceCommon">
|
|
<optional>
|
|
<attribute name="index">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<element name="slices">
|
|
<element name="slice">
|
|
<attribute name="type">
|
|
<value>storage</value>
|
|
</attribute>
|
|
<ref name="diskSourceSlice"/>
|
|
</element>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="diskSource">
|
|
<choice>
|
|
<ref name="diskSourceFile"/>
|
|
<ref name="diskSourceBlock"/>
|
|
<ref name="diskSourceDir"/>
|
|
<ref name="diskSourceNetwork"/>
|
|
<ref name="diskSourceVolume"/>
|
|
<ref name="diskSourceNvme"/>
|
|
<ref name="diskSourceVhostUser"/>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="diskSourceFile">
|
|
<optional>
|
|
<attribute name="type">
|
|
<value>file</value>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<element name="source">
|
|
<interleave>
|
|
<optional>
|
|
<attribute name="file">
|
|
<choice>
|
|
<ref name="absFilePath"/>
|
|
<ref name="vmwarePath"/>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="diskSourceCommon"/>
|
|
<optional>
|
|
<ref name="storageStartupPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="devSeclabel"/>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="diskSourceBlock">
|
|
<attribute name="type">
|
|
<value>block</value>
|
|
</attribute>
|
|
<optional>
|
|
<element name="source">
|
|
<interleave>
|
|
<optional>
|
|
<attribute name="dev">
|
|
<choice>
|
|
<ref name="absFilePath"/>
|
|
<ref name="deviceName"/>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="diskSourceCommon"/>
|
|
<optional>
|
|
<ref name="storageStartupPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="reservations"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="devSeclabel"/>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="diskSourceDir">
|
|
<attribute name="type">
|
|
<value>dir</value>
|
|
</attribute>
|
|
<optional>
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="dir">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
<ref name="diskSourceCommon"/>
|
|
<optional>
|
|
<ref name="storageStartupPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<empty/>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkHost">
|
|
<element name="host">
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<attribute name="transport">
|
|
<choice>
|
|
<value>tcp</value>
|
|
<value>rdma</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="name">
|
|
<choice>
|
|
<ref name="dnsName"/>
|
|
<ref name="ipAddr"/>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="port">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="transport">
|
|
<value>unix</value>
|
|
</attribute>
|
|
<attribute name="socket">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkNFS">
|
|
<element name="identity">
|
|
<optional>
|
|
<attribute name="user">
|
|
<ref name="genericName"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="group">
|
|
<ref name="genericName"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolRBD">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<value>rbd</value>
|
|
</attribute>
|
|
<ref name="diskSourceCommon"/>
|
|
<optional>
|
|
<attribute name="name"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<element name="snapshot">
|
|
<attribute name="name">
|
|
<ref name="genericName"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="config">
|
|
<attribute name="file">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskAuth"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<empty/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolISCSI">
|
|
<element name="source">
|
|
<attribute name="protocol">
|
|
<value>iscsi</value>
|
|
</attribute>
|
|
<attribute name="name"/>
|
|
<interleave>
|
|
<ref name="diskSourceCommon"/>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
<optional>
|
|
<ref name="diskAuth"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="initiatorinfo"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</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>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolSSLVerify">
|
|
<element name="ssl">
|
|
<attribute name="verify">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolHTTPCookies">
|
|
<element name="cookies">
|
|
<oneOrMore>
|
|
<element name="cookie">
|
|
<attribute name="name">
|
|
<data type="string">
|
|
<param name="pattern">[!#$%&'*+\-.0-9A-Z\^_`a-z|~]+</param>
|
|
</data>
|
|
</attribute>
|
|
<data type="string">
|
|
<param name="pattern">"?[!#$%&'()*+\-./0-9:>=<?@A-Z\^_`\[\]a-z|~]+"?</param>
|
|
</data>
|
|
</element>
|
|
</oneOrMore>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolHTTPS">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<choice>
|
|
<value>https</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="name"/>
|
|
<optional>
|
|
<attribute name="query"/>
|
|
</optional>
|
|
<ref name="diskSourceCommon"/>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskSourceNetworkProtocolSSLVerify"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskSourceNetworkProtocolHTTPCookies"/>
|
|
</optional>
|
|
<ref name="diskSourceNetworkProtocolPropsCommon"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolHTTP">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<choice>
|
|
<value>http</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="name"/>
|
|
<optional>
|
|
<attribute name="query"/>
|
|
</optional>
|
|
<ref name="diskSourceCommon"/>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskSourceNetworkProtocolHTTPCookies"/>
|
|
</optional>
|
|
<ref name="diskSourceNetworkProtocolPropsCommon"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolFTPS">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<choice>
|
|
<value>ftps</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="name"/>
|
|
<ref name="diskSourceCommon"/>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskSourceNetworkProtocolSSLVerify"/>
|
|
</optional>
|
|
<ref name="diskSourceNetworkProtocolPropsCommon"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolSimple">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<choice>
|
|
<value>sheepdog</value>
|
|
<value>ftp</value>
|
|
<value>tftp</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="name"/>
|
|
<ref name="diskSourceCommon"/>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<ref name="diskSourceNetworkProtocolPropsCommon"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolNBD">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<value>nbd</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="name"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tls">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="diskSourceCommon"/>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolGluster">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<value>gluster</value>
|
|
</attribute>
|
|
<attribute name="name"/>
|
|
<ref name="diskSourceCommon"/>
|
|
<oneOrMore>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
</oneOrMore>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolVxHS">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<choice>
|
|
<value>vxhs</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="name"/>
|
|
<ref name="diskSourceCommon"/>
|
|
<optional>
|
|
<attribute name="tls">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetworkProtocolNFS">
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="protocol">
|
|
<choice>
|
|
<value>nfs</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="name"/>
|
|
<ref name="diskSourceCommon"/>
|
|
<ref name="diskSourceNetworkHost"/>
|
|
<ref name="diskSourceNetworkNFS"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskSourceNetwork">
|
|
<attribute name="type">
|
|
<value>network</value>
|
|
</attribute>
|
|
<choice>
|
|
<ref name="diskSourceNetworkProtocolNBD"/>
|
|
<ref name="diskSourceNetworkProtocolGluster"/>
|
|
<ref name="diskSourceNetworkProtocolRBD"/>
|
|
<ref name="diskSourceNetworkProtocolISCSI"/>
|
|
<ref name="diskSourceNetworkProtocolHTTP"/>
|
|
<ref name="diskSourceNetworkProtocolHTTPS"/>
|
|
<ref name="diskSourceNetworkProtocolFTPS"/>
|
|
<ref name="diskSourceNetworkProtocolSimple"/>
|
|
<ref name="diskSourceNetworkProtocolVxHS"/>
|
|
<ref name="diskSourceNetworkProtocolNFS"/>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="diskSourceVolume">
|
|
<attribute name="type">
|
|
<value>volume</value>
|
|
</attribute>
|
|
<optional>
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="pool">
|
|
<ref name="objectName"/>
|
|
</attribute>
|
|
<attribute name="volume">
|
|
<ref name="volName"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>host</value>
|
|
<value>direct</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="diskSourceCommon"/>
|
|
<optional>
|
|
<ref name="storageStartupPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="devSeclabel"/>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="diskSourceNvme">
|
|
<attribute name="type">
|
|
<value>nvme</value>
|
|
</attribute>
|
|
<optional>
|
|
<element name="source">
|
|
<interleave>
|
|
<attribute name="type">
|
|
<value>pci</value>
|
|
</attribute>
|
|
<attribute name="namespace">
|
|
<ref name="uint32"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="managed">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<element name="address">
|
|
<ref name="pciaddress"/>
|
|
</element>
|
|
<ref name="diskSourceCommon"/>
|
|
<optional>
|
|
<ref name="storageStartupPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="encryption"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="diskSourceVhostUser">
|
|
<attribute name="type">
|
|
<value>vhostuser</value>
|
|
</attribute>
|
|
<element name="source">
|
|
<attribute name="type">
|
|
<value>unix</value>
|
|
</attribute>
|
|
<attribute name="path">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
<optional>
|
|
<ref name="reconnect"/>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskTarget">
|
|
<data type="string">
|
|
<param name="pattern">(ioemu:)?(fd|hd|sd|vd|xvd|ubd)[a-zA-Z0-9_]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="target">
|
|
<element name="target">
|
|
<attribute name="dev">
|
|
<ref name="diskTarget"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="bus">
|
|
<choice>
|
|
<value>ide</value>
|
|
<value>fdc</value>
|
|
<value>scsi</value>
|
|
<value>virtio</value>
|
|
<value>xen</value>
|
|
<value>usb</value>
|
|
<value>uml</value> <!-- NOT USED ANYMORE -->
|
|
<value>sata</value>
|
|
<value>sd</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tray">
|
|
<choice>
|
|
<value>open</value>
|
|
<value>closed</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="removable">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="geometry">
|
|
<element name="geometry">
|
|
<attribute name="cyls">
|
|
<data type="integer"/>
|
|
</attribute>
|
|
<attribute name="heads">
|
|
<data type="integer"/>
|
|
</attribute>
|
|
<attribute name="secs">
|
|
<data type="integer"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="trans">
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>none</value>
|
|
<value>lba</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="diskBlockIo">
|
|
<element name="blockio">
|
|
<optional>
|
|
<attribute name="logical_block_size">
|
|
<data type="integer"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="physical_block_size">
|
|
<data type="integer"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
Disk may use a special driver for access.
|
|
-->
|
|
<define name="diskDriver">
|
|
<element name="driver">
|
|
<optional>
|
|
<ref name="driverFormat"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="driverCache"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="driverErrorPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="driverRerrorPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="driverIO"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="ioeventfd"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="event_idx"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="copy_on_read"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="discard"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="driverIOThread"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="detect_zeroes"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="queues">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="virtioOptions"/>
|
|
<optional>
|
|
<element name="metadata_cache">
|
|
<optional>
|
|
<element name="max_size">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="driverFormat">
|
|
<optional>
|
|
<attribute name="name">
|
|
<ref name="genericName"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="type">
|
|
<choice>
|
|
<ref name="storageFormat"/>
|
|
<value>aio</value> <!-- back-compat for "raw" -->
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="driverCache">
|
|
<attribute name="cache">
|
|
<choice>
|
|
<value>default</value>
|
|
<value>none</value>
|
|
<value>writeback</value>
|
|
<value>writethrough</value>
|
|
<value>directsync</value>
|
|
<value>unsafe</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="driverErrorPolicy">
|
|
<attribute name="error_policy">
|
|
<choice>
|
|
<value>stop</value>
|
|
<value>report</value>
|
|
<value>ignore</value>
|
|
<value>enospace</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="driverRerrorPolicy">
|
|
<attribute name="rerror_policy">
|
|
<choice>
|
|
<value>stop</value>
|
|
<value>report</value>
|
|
<value>ignore</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="driverIO">
|
|
<attribute name="io">
|
|
<choice>
|
|
<value>threads</value>
|
|
<value>native</value>
|
|
<value>io_uring</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="ioeventfd">
|
|
<attribute name="ioeventfd">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="event_idx">
|
|
<attribute name="event_idx">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="copy_on_read">
|
|
<attribute name="copy_on_read">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="discard">
|
|
<attribute name="discard">
|
|
<choice>
|
|
<value>unmap</value>
|
|
<value>ignore</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="driverIOThread">
|
|
<attribute name="iothread">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="detect_zeroes">
|
|
<attribute name="detect_zeroes">
|
|
<choice>
|
|
<value>off</value>
|
|
<value>on</value>
|
|
<value>unmap</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="controller">
|
|
<element name="controller">
|
|
<optional>
|
|
<attribute name="index">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<choice>
|
|
<!-- fdc/sata/ccid have only the common attributes -->
|
|
<group>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>fdc</value>
|
|
<value>sata</value>
|
|
<value>ccid</value>
|
|
</choice>
|
|
</attribute>
|
|
</group>
|
|
<!-- scsi has an optional attribute "model" -->
|
|
<group>
|
|
<attribute name="type">
|
|
<value>scsi</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>buslogic</value>
|
|
<value>lsilogic</value>
|
|
<value>lsisas1068</value>
|
|
<value>vmpvscsi</value>
|
|
<value>ibmvscsi</value>
|
|
<value>virtio-scsi</value>
|
|
<value>lsisas1078</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
<value>ncr53c90</value>
|
|
<value>dc390</value>
|
|
<value>am53c974</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<!-- usb has an optional attribute "model",
|
|
and optional subelements "master" and "ports" -->
|
|
<group>
|
|
<attribute name="type">
|
|
<value>usb</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>piix3-uhci</value>
|
|
<value>piix4-uhci</value>
|
|
<value>ehci</value>
|
|
<value>ich9-ehci1</value>
|
|
<value>ich9-uhci1</value>
|
|
<value>ich9-uhci2</value>
|
|
<value>ich9-uhci3</value>
|
|
<value>vt82c686b-uhci</value>
|
|
<value>pci-ohci</value>
|
|
<value>nec-xhci</value>
|
|
<value>none</value>
|
|
<value>qusb1</value>
|
|
<value>qusb2</value>
|
|
<value>qemu-xhci</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="usbmaster"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="ports">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<!-- ide has an optional attribute "model" -->
|
|
<group>
|
|
<attribute name="type">
|
|
<value>ide</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>piix3</value>
|
|
<value>piix4</value>
|
|
<value>ich6</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<!-- isa -->
|
|
<group>
|
|
<attribute name="type">
|
|
<value>isa</value>
|
|
</attribute>
|
|
</group>
|
|
<!-- pci has an optional attribute "model" -->
|
|
<group>
|
|
<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"/>
|
|
</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>
|
|
<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>
|
|
<!-- virtio-serial has optional "ports" and "vectors" -->
|
|
<group>
|
|
<attribute name="type">
|
|
<value>virtio-serial</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="ports">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="vectors">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<!-- xenbus has an optional attribute "maxGrantFrames" -->
|
|
<group>
|
|
<attribute name="type">
|
|
<value>xenbus</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="maxGrantFrames">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="maxEventChannels">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<element name="driver">
|
|
<optional>
|
|
<attribute name="queues">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="cmd_per_lun">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="max_sectors">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="ioeventfd"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="driverIOThread"/>
|
|
</optional>
|
|
<ref name="virtioOptions"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</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="type">
|
|
<value>mount</value>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="fsDriver"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="fsBinary"/>
|
|
</optional>
|
|
<element name="source">
|
|
<attribute name="dir">
|
|
<ref name="absDirPath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<optional>
|
|
<attribute name="type">
|
|
<value>bind</value>
|
|
</attribute>
|
|
</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>
|
|
<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="address"/>
|
|
</optional>
|
|
</interleave>
|
|
<interleave>
|
|
<optional>
|
|
<element name="space_hard_limit">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="space_soft_limit">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="fsDriver">
|
|
<element name="driver">
|
|
<!-- Annoying inconsistency. "disk" uses "name"
|
|
for this kind of info, and "type" for the
|
|
storage format. We need the latter too, so
|
|
had to invent a new attribute name -->
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>path</value>
|
|
<value>handle</value>
|
|
<value>loop</value>
|
|
<value>nbd</value>
|
|
<value>ploop</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="format">
|
|
<ref name="storageFormat"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="wrpolicy">
|
|
<value>immediate</value>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="virtioOptions"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>virtiofs</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="queue">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="virtioOptions"/>
|
|
</group>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
<define name="fsBinary">
|
|
<element name="binary">
|
|
<optional>
|
|
<attribute name="path">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="xattr">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<element name="cache">
|
|
<optional>
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>none</value>
|
|
<value>always</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="lock">
|
|
<optional>
|
|
<attribute name="posix">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="flock">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="interface-network-attributes">
|
|
<attribute name="network">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="portgroup">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="portid">
|
|
<ref name="UUID"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="interface-bridge-attributes">
|
|
<attribute name="bridge">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9_\.\-\\:/ ]*</param>
|
|
</data>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="macTableManager">
|
|
<ref name="macTableManager"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
|
|
<!--
|
|
An interface description can either be of type bridge in which case
|
|
it will use a bridging source, or of type ethernet which uses a device
|
|
source and a device target instead. They both share a set of interface
|
|
options. FIXME
|
|
-->
|
|
<define name="interface">
|
|
<element name="interface">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>bridge</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="source">
|
|
<ref name="interface-bridge-attributes"/>
|
|
<optional>
|
|
<ref name="interface-network-attributes"/>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="virtualPortProfile"/>
|
|
</optional>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>ethernet</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="source">
|
|
<ref name="interface-ip-info"/>
|
|
</element>
|
|
</optional>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>vhostuser</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name="unixSocketSource"/>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>network</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<ref name="interface-network-attributes"/>
|
|
<optional>
|
|
<ref name="interface-bridge-attributes"/>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
<optional>
|
|
<ref name="virtualPortProfile"/>
|
|
</optional>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>direct</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="dev">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="mode">
|
|
<ref name="bridgeMode"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="interface-network-attributes"/>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
<optional>
|
|
<ref name="virtualPortProfile"/>
|
|
</optional>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>user</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>internal</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="name">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>mcast</value>
|
|
<value>client</value>
|
|
</choice>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="address">
|
|
<ref name="ipv4Addr"/>
|
|
</attribute>
|
|
<attribute name="port">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>udp</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="address">
|
|
<ref name="ipv4Addr"/>
|
|
</attribute>
|
|
<attribute name="port">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
<element name="local">
|
|
<attribute name="address">
|
|
<ref name="ipv4Addr"/>
|
|
</attribute>
|
|
<attribute name="port">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</element>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>server</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<optional>
|
|
<attribute name="address">
|
|
<ref name="ipv4Addr"/>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="port">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>hostdev</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="managed">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<element name="source">
|
|
<optional>
|
|
<attribute name="missing">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<group>
|
|
<ref name="usbproduct"/>
|
|
<optional>
|
|
<ref name="usbaddress"/>
|
|
</optional>
|
|
</group>
|
|
<element name="address">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>pci</value>
|
|
</attribute>
|
|
<ref name="pciaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>usb</value>
|
|
</attribute>
|
|
<attribute name="bus">
|
|
<ref name="usbAddr"/>
|
|
</attribute>
|
|
<attribute name="device">
|
|
<ref name="usbAddr"/>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</choice>
|
|
</element>
|
|
<optional>
|
|
<ref name="virtualPortProfile"/>
|
|
</optional>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
|
|
<group>
|
|
<attribute name="type">
|
|
<value>vdpa</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="dev">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
</element>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
|
|
</choice>
|
|
<optional>
|
|
<attribute name="trustGuestRxFilters">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
The interface options possible are:
|
|
- the MAC address
|
|
- the IP address bound to the interface
|
|
- the name of the script used to set up the binding
|
|
- the target device used
|
|
- boot order
|
|
- link state
|
|
-->
|
|
<define name="interface-options">
|
|
<interleave>
|
|
<optional>
|
|
<element name="link">
|
|
<attribute name="state">
|
|
<choice>
|
|
<value>up</value>
|
|
<value>down</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="mtu"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="coalesce"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="target">
|
|
<attribute name="dev">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="managed">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="guest">
|
|
<interleave>
|
|
<optional>
|
|
<attribute name="dev">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="actual">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
</optional>
|
|
</interleave>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="mac">
|
|
<attribute name="address">
|
|
<ref name="uniMacAddr"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>generated</value>
|
|
<value>static</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="check">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name="interface-ip-info"/>
|
|
<optional>
|
|
<element name="script">
|
|
<attribute name="path">
|
|
<ref name="filePath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="downscript">
|
|
<attribute name="path">
|
|
<ref name="filePath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="backenddomain">
|
|
<attribute name="name">
|
|
<ref name="objectNameWithSlash"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="model">
|
|
<attribute name="type">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9\-_]+</param>
|
|
</data>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="backend">
|
|
<optional>
|
|
<attribute name="tap">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="vhost">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="driver">
|
|
<choice>
|
|
<group>
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>kvm</value>
|
|
<value>vfio</value>
|
|
<value>xen</value>
|
|
</choice>
|
|
</attribute>
|
|
</group>
|
|
<group>
|
|
<optional>
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>qemu</value>
|
|
<value>vhost</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="queues">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="rx_queue_size">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tx_queue_size">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="txmode">
|
|
<choice>
|
|
<value>iothread</value>
|
|
<value>timer</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="ioeventfd"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="event_idx"/>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
<ref name="virtioOptions"/>
|
|
<interleave>
|
|
<optional>
|
|
<element name="host">
|
|
<optional>
|
|
<attribute name="csum">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="gso">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tso4">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tso6">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="ecn">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="ufo">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="mrg_rxbuf">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="guest">
|
|
<optional>
|
|
<attribute name="csum">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tso4">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tso6">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="ecn">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="ufo">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="filterref">
|
|
<ref name="filterref-node-attributes"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="tune">
|
|
<optional>
|
|
<!-- size of send buffer for network tap devices -->
|
|
<element name="sndbuf">
|
|
<ref name="unsignedInt"/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="deviceBoot"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="rom"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="bandwidth"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="vlan"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="portOptions"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="teaming"/>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<!--
|
|
All ip-related info for either the host or guest side of an interface
|
|
-->
|
|
<define name="interface-ip-info">
|
|
<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>
|
|
</define>
|
|
|
|
<define name="teaming">
|
|
<element name="teaming">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>persistent</value>
|
|
</attribute>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>transient</value>
|
|
</attribute>
|
|
<attribute name="persistent">
|
|
<ref name="aliasName"/>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
An emulator description is just a path to the binary used for the task
|
|
-->
|
|
<define name="emulator">
|
|
<element name="emulator">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
A graphic description (SPICE, VNC, SDL, ...)
|
|
-->
|
|
<define name="graphic">
|
|
<element name="graphics">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>sdl</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="display">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="xauth">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="fullscreen">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<element name="gl">
|
|
<attribute name="enable">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>vnc</value>
|
|
</attribute>
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<attribute name="port">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="autoport">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="websocket">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="listen">
|
|
<ref name="addrIPorName"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="sharePolicy">
|
|
<choice>
|
|
<value>allow-exclusive</value>
|
|
<value>force-shared</value>
|
|
<value>ignore</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<optional>
|
|
<attribute name="socket">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="passwd">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="keymap">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="passwdValidTo">
|
|
<data type="dateTime"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="connected">
|
|
<value>keep</value>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="listenElements"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>spice</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="port">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tlsPort">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="autoport">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="listen">
|
|
<ref name="addrIPorName"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="passwd">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="keymap">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="passwdValidTo">
|
|
<data type="dateTime"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="connected">
|
|
<choice>
|
|
<value>fail</value>
|
|
<value>disconnect</value>
|
|
<value>keep</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="defaultMode">
|
|
<choice>
|
|
<value>any</value>
|
|
<value>secure</value>
|
|
<value>insecure</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<ref name="listenElements"/>
|
|
<zeroOrMore>
|
|
<element name="channel">
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>main</value>
|
|
<value>display</value>
|
|
<value>inputs</value>
|
|
<value>cursor</value>
|
|
<value>playback</value>
|
|
<value>record</value>
|
|
<value>smartcard</value>
|
|
<value>usbredir</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>any</value>
|
|
<value>secure</value>
|
|
<value>insecure</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<element name="image">
|
|
<attribute name="compression">
|
|
<choice>
|
|
<value>auto_glz</value>
|
|
<value>auto_lz</value>
|
|
<value>quic</value>
|
|
<value>glz</value>
|
|
<value>lz</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="jpeg">
|
|
<attribute name="compression">
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>never</value>
|
|
<value>always</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="zlib">
|
|
<attribute name="compression">
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>never</value>
|
|
<value>always</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="playback">
|
|
<attribute name="compression">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="streaming">
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>filter</value>
|
|
<value>all</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="clipboard">
|
|
<attribute name="copypaste">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="mouse">
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>server</value>
|
|
<value>client</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="filetransfer">
|
|
<attribute name="enable">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<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>rdp</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="port">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="autoport">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="replaceUser">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="multiUser">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="listen">
|
|
<ref name="addrIPorName"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="listenElements"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>desktop</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="display">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="fullscreen">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>egl-headless</value>
|
|
</attribute>
|
|
<optional>
|
|
<element name="gl">
|
|
<optional>
|
|
<attribute name="rendernode">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="listenElements">
|
|
<zeroOrMore>
|
|
<element name="listen">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>address</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="address">
|
|
<ref name="addrIPorName"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>network</value>
|
|
</attribute>
|
|
<attribute name="network">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="address">
|
|
<ref name="addrIPorName"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>socket</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="socket">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>none</value>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</zeroOrMore>
|
|
</define>
|
|
<!--
|
|
A video adapter description, allowing configuration of device
|
|
model, number of virtual heads, video ram size, and for qxl
|
|
both ram bar sizes.
|
|
-->
|
|
<define name="video">
|
|
<element name="video">
|
|
<optional>
|
|
<element name="driver">
|
|
<optional>
|
|
<ref name="virtioOptions"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>qemu</value>
|
|
<value>vhostuser</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="vgaconf">
|
|
<choice>
|
|
<value>io</value>
|
|
<value>on</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="model">
|
|
<choice>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>vga</value>
|
|
<value>cirrus</value>
|
|
<value>vmvga</value>
|
|
<value>xen</value>
|
|
<value>vbox</value>
|
|
<value>virtio</value>
|
|
<value>gop</value>
|
|
<value>none</value>
|
|
<value>bochs</value>
|
|
<value>ramfb</value>
|
|
</choice>
|
|
</attribute>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>qxl</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="ram">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="vgamem">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="vram64">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="vram">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="heads">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="primary">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<element name="acceleration">
|
|
<optional>
|
|
<attribute name="accel3d">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="accel2d">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="rendernode">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="resolution">
|
|
<attribute name="x">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="y">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
When a certain event happens, multiple policies can be applied
|
|
depends on what happened:
|
|
-->
|
|
<define name="events">
|
|
<interleave>
|
|
<optional>
|
|
<element name="on_reboot">
|
|
<ref name="offOptions"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="on_poweroff">
|
|
<ref name="offOptions"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="on_crash">
|
|
<ref name="crashOptions"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="on_lockfailure">
|
|
<ref name="lockfailureOptions"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
<!--
|
|
Options when a domain terminates:
|
|
destroy: The domain is cleaned up
|
|
restart: A new domain is started in place of the old one
|
|
preserve: The domain will remain in memory until it is destroyed manually
|
|
rename-restart: a variant of the previous one but where the old domain is
|
|
renamed before being saved to allow a restart
|
|
-->
|
|
<define name="offOptions">
|
|
<choice>
|
|
<value>destroy</value>
|
|
<value>restart</value>
|
|
<value>preserve</value>
|
|
<value>rename-restart</value>
|
|
</choice>
|
|
</define>
|
|
<!--
|
|
Options when a domain crashes:
|
|
destroy: The domain is cleaned up
|
|
restart: A new domain is started in place of the old one
|
|
preserve: The domain will remain in memory until it is destroyed manually
|
|
rename-restart: a variant of the previous one but where the old domain is
|
|
renamed before being saved to allow a restart
|
|
coredump-destroy: The crashed domain's core will be dumped, and then the
|
|
domain will be terminated completely and all resources
|
|
released
|
|
coredump-restart: The crashed domain's core will be dumped, and then the
|
|
domain will be restarted with the same configuration
|
|
-->
|
|
<define name="crashOptions">
|
|
<choice>
|
|
<value>destroy</value>
|
|
<value>restart</value>
|
|
<value>preserve</value>
|
|
<value>rename-restart</value>
|
|
<value>coredump-destroy</value>
|
|
<value>coredump-restart</value>
|
|
</choice>
|
|
</define>
|
|
<!--
|
|
Options when resource locks are lost:
|
|
poweroff: power off the domain
|
|
restart: power off the domain and start it up again to reacquire the
|
|
locks
|
|
pause: pause the execution of the domain so that it can be manually
|
|
resumed when lock issues are solved
|
|
ignore: keep the domain running
|
|
-->
|
|
<define name="lockfailureOptions">
|
|
<choice>
|
|
<value>poweroff</value>
|
|
<value>restart</value>
|
|
<value>pause</value>
|
|
<value>ignore</value>
|
|
</choice>
|
|
</define>
|
|
<!--
|
|
Control ACPI sleep states (dis)allowed for the domain
|
|
For each of the states the following rules apply:
|
|
on: the state will be forcefully enabled
|
|
off: the state will be forcefully disabled
|
|
not specified: hypervisor will be left to decide its defaults
|
|
-->
|
|
<define name="pm">
|
|
<element name="pm">
|
|
<interleave>
|
|
<optional>
|
|
<element name="suspend-to-mem">
|
|
<ref name="suspendChoices"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="suspend-to-disk">
|
|
<ref name="suspendChoices"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
<define name="suspendChoices">
|
|
<optional>
|
|
<attribute name="enabled">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<!--
|
|
Specific setup for a qemu emulated character device. Note: this
|
|
definition doesn't fully specify the constraints on this node.
|
|
-->
|
|
<define name="qemucdev">
|
|
<ref name="qemucdevSrcType"/>
|
|
<optional>
|
|
<attribute name="tty">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<ref name="qemucdevSrcDef"/>
|
|
<optional>
|
|
<ref name="qemucdevTgtDef"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name="qemucdevConsoleTgtType">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>xen</value>
|
|
<value>serial</value>
|
|
<value>uml</value> <!-- NOT USED ANYMORE -->
|
|
<value>virtio</value>
|
|
<value>lxc</value>
|
|
<value>openvz</value>
|
|
<value>sclp</value>
|
|
<value>sclplm</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="qemucdevSerialTgtType">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>isa-serial</value>
|
|
<value>usb-serial</value>
|
|
<value>pci-serial</value>
|
|
<value>spapr-vio-serial</value>
|
|
<value>system-serial</value>
|
|
<value>sclp-serial</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="qemucdevSerialTgtModel">
|
|
<element name="model">
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>isa-serial</value>
|
|
<value>usb-serial</value>
|
|
<value>pci-serial</value>
|
|
<value>spapr-vty</value>
|
|
<value>pl011</value>
|
|
<value>16550a</value>
|
|
<value>sclpconsole</value>
|
|
<value>sclplmconsole</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="qemucdevTgtDef">
|
|
<element name="target">
|
|
<interleave>
|
|
<choice>
|
|
<optional>
|
|
<ref name="qemucdevConsoleTgtType"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="qemucdevSerialTgtType"/>
|
|
</optional>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="port"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="qemucdevSerialTgtModel"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="qemucdevSrcTypeChoice">
|
|
<choice>
|
|
<value>dev</value>
|
|
<value>file</value>
|
|
<value>pipe</value>
|
|
<value>unix</value>
|
|
<value>tcp</value>
|
|
<value>udp</value>
|
|
<value>null</value>
|
|
<value>stdio</value>
|
|
<value>vc</value>
|
|
<value>pty</value>
|
|
<value>spicevmc</value>
|
|
<value>spiceport</value>
|
|
<value>nmdm</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="usbdevfilter">
|
|
<element name="usbdev">
|
|
<attribute name="allow">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="class">
|
|
<choice>
|
|
<ref name="usbClass"/>
|
|
<ref name="usbIdDefault"/>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="vendor">
|
|
<choice>
|
|
<ref name="usbId"/>
|
|
<ref name="usbIdDefault"/>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="product">
|
|
<choice>
|
|
<ref name="usbId"/>
|
|
<ref name="usbIdDefault"/>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="version">
|
|
<choice>
|
|
<ref name="usbVersion"/>
|
|
<ref name="usbIdDefault"/>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="qemucdevSrcType">
|
|
<attribute name="type">
|
|
<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"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
<!--
|
|
The description for a console
|
|
just a tty device
|
|
-->
|
|
<define name="console">
|
|
<element name="console">
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<attribute name="tty">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</group>
|
|
<ref name="qemucdev"/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
<define name="codec">
|
|
<element name="codec">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>duplex</value>
|
|
<value>micro</value>
|
|
<value>output</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
<define name="sound">
|
|
<element name="sound">
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>sb16</value>
|
|
<value>es1370</value>
|
|
<value>pcspk</value>
|
|
<value>ac97</value>
|
|
<value>ich6</value>
|
|
<value>ich7</value>
|
|
<value>ich9</value>
|
|
<value>usb</value>
|
|
</choice>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="audio">
|
|
<attribute name="id">
|
|
<ref name="uint8"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="codec"/>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="audio">
|
|
<element name="audio">
|
|
<attribute name="id">
|
|
<ref name="uint8"/>
|
|
</attribute>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>oss</value>
|
|
</choice>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="input">
|
|
<attribute name="dev">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="output">
|
|
<attribute name="dev">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</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">
|
|
<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="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="nvram">
|
|
<element name="nvram">
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="shmem">
|
|
<element name="shmem">
|
|
<attribute name="name">
|
|
<data type="string">
|
|
<param name="pattern">[^/]*</param>
|
|
</data>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="role">
|
|
<choice>
|
|
<value>master</value>
|
|
<value>peer</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<element name="model">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>ivshmem</value>
|
|
<value>ivshmem-plain</value>
|
|
<value>ivshmem-doorbell</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="size">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="server">
|
|
<optional>
|
|
<attribute name="path">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="msi">
|
|
<optional>
|
|
<ref name="ioeventfd"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="vectors">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="memballoon">
|
|
<element name="memballoon">
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
<value>xen</value>
|
|
<value>none</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="autodeflate">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="freePageReporting">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="stats">
|
|
<attribute name="period">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="driver">
|
|
<ref name="virtioOptions"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="parallel">
|
|
<element name="parallel">
|
|
<ref name="qemucdev"/>
|
|
</element>
|
|
</define>
|
|
<define name="serial">
|
|
<element name="serial">
|
|
<ref name="qemucdev"/>
|
|
</element>
|
|
</define>
|
|
<define name="guestfwdTarget">
|
|
<element name="target">
|
|
<attribute name="type">
|
|
<value>guestfwd</value>
|
|
</attribute>
|
|
<attribute name="address"/>
|
|
<attribute name="port"/>
|
|
</element>
|
|
</define>
|
|
<define name="virtioTarget">
|
|
<element name="target">
|
|
<attribute name="type">
|
|
<value>virtio</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="name"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="state">
|
|
<choice>
|
|
<value>connected</value>
|
|
<value>disconnected</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="xenTarget">
|
|
<element name="target">
|
|
<attribute name="type">
|
|
<value>xen</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="name"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="channel">
|
|
<element name="channel">
|
|
<ref name="qemucdevSrcType"/>
|
|
<interleave>
|
|
<ref name="qemucdevSrcDef"/>
|
|
<choice>
|
|
<ref name="guestfwdTarget"/>
|
|
<ref name="virtioTarget"/>
|
|
<ref name="xenTarget"/>
|
|
</choice>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="smartcard">
|
|
<element name="smartcard">
|
|
<choice>
|
|
<group>
|
|
<attribute name="mode">
|
|
<value>host</value>
|
|
</attribute>
|
|
<!-- might need to add optional database element here later -->
|
|
</group>
|
|
<group>
|
|
<attribute name="mode">
|
|
<value>host-certificates</value>
|
|
</attribute>
|
|
<ref name="certificate"/>
|
|
<ref name="certificate"/>
|
|
<ref name="certificate"/>
|
|
<optional>
|
|
<element name="database">
|
|
<ref name="absDirPath"/>
|
|
</element>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="mode">
|
|
<value>passthrough</value>
|
|
</attribute>
|
|
<ref name="qemucdevSrcType"/>
|
|
<interleave>
|
|
<ref name="qemucdevSrcDef"/>
|
|
<optional>
|
|
<ref name="qemucdevTgtDef"/>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="certificate">
|
|
<element name="certificate">
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="tpm">
|
|
<element name="tpm">
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>tpm-tis</value>
|
|
<value>tpm-crb</value>
|
|
<value>tpm-spapr</value>
|
|
<value>spapr-tpm-proxy</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="tpm-backend"/>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="tpm-backend">
|
|
<element name="backend">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>passthrough</value>
|
|
</attribute>
|
|
<ref name="tpm-passthrough-device"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>emulator</value>
|
|
</attribute>
|
|
<ref name="tpm-backend-emulator-encryption"/>
|
|
<optional>
|
|
<attribute name="persistent_state">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="version">
|
|
<choice>
|
|
<value>1.2</value>
|
|
<value>2.0</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="tpm-passthrough-device">
|
|
<optional>
|
|
<element name="device">
|
|
<optional>
|
|
<attribute name="path">
|
|
<ref name="filePath"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="tpm-backend-emulator-encryption">
|
|
<optional>
|
|
<element name="encryption">
|
|
<attribute name="secret">
|
|
<ref name="UUID"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="vsock">
|
|
<element name="vsock">
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<element name="cid">
|
|
<optional>
|
|
<attribute name="auto">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="address">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="driver">
|
|
<ref name="virtioOptions"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="iommu">
|
|
<element name="iommu">
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>intel</value>
|
|
<value>smmuv3</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>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="input">
|
|
<element name="input">
|
|
<interleave>
|
|
<optional>
|
|
<element name="driver">
|
|
<ref name="virtioOptions"/>
|
|
</element>
|
|
</optional>
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>tablet</value>
|
|
<value>mouse</value>
|
|
<value>keyboard</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="bus">
|
|
<choice>
|
|
<value>ps2</value>
|
|
<value>usb</value>
|
|
<value>xen</value>
|
|
<value>virtio</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>passthrough</value>
|
|
</attribute>
|
|
<attribute name="bus">
|
|
<value>virtio</value>
|
|
</attribute>
|
|
<element name="source">
|
|
<attribute name="evdev">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</element>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="hub">
|
|
<element name="hub">
|
|
<attribute name="type">
|
|
<value>usb</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="redirdev">
|
|
<element name="redirdev">
|
|
<attribute name="bus">
|
|
<value>usb</value>
|
|
</attribute>
|
|
<attribute name="type">
|
|
<ref name="qemucdevSrcTypeChoice"/>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name="qemucdevSrcDef"/>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="deviceBoot"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="redirfilter">
|
|
<element name="redirfilter">
|
|
<zeroOrMore>
|
|
<ref name="usbdevfilter"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostdev">
|
|
<element name="hostdev">
|
|
<interleave>
|
|
<choice>
|
|
<group>
|
|
<ref name="hostdevsubsys"/>
|
|
</group>
|
|
<group>
|
|
<ref name="hostdevcaps"/>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="deviceBoot"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="rom"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="readonly">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="shareable">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostdevsubsys">
|
|
<optional>
|
|
<attribute name="mode">
|
|
<value>subsystem</value>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="managed">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<ref name="hostdevsubsyspci"/>
|
|
<ref name="hostdevsubsysusb"/>
|
|
<ref name="hostdevsubsysscsi"/>
|
|
<ref name="hostdevsubsyshost"/>
|
|
<ref name="hostdevsubsysmdev"/>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="hostdevcaps">
|
|
<attribute name="mode">
|
|
<value>capabilities</value>
|
|
</attribute>
|
|
<choice>
|
|
<group>
|
|
<ref name="hostdevcapsstorage"/>
|
|
</group>
|
|
<group>
|
|
<ref name="hostdevcapsmisc"/>
|
|
</group>
|
|
<group>
|
|
<ref name="hostdevcapsnet"/>
|
|
</group>
|
|
</choice>
|
|
</define>
|
|
|
|
|
|
<define name="hostdevsubsyspci">
|
|
<attribute name="type">
|
|
<value>pci</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="driver">
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>kvm</value>
|
|
<value>vfio</value>
|
|
<value>xen</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="teaming"/>
|
|
</optional>
|
|
<element name="source">
|
|
<optional>
|
|
<ref name="startupPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="writeFiltering">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<element name="address">
|
|
<ref name="pciaddress"/>
|
|
</element>
|
|
</element>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name="hostdevsubsysusb">
|
|
<attribute name="type">
|
|
<value>usb</value>
|
|
</attribute>
|
|
<element name="source">
|
|
<optional>
|
|
<ref name="startupPolicy"/>
|
|
</optional>
|
|
<choice>
|
|
<group>
|
|
<ref name="usbproduct"/>
|
|
<optional>
|
|
<ref name="usbaddress"/>
|
|
</optional>
|
|
</group>
|
|
<ref name="usbaddress"/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostdevsubsysscsi">
|
|
<attribute name="type">
|
|
<value>scsi</value>
|
|
</attribute>
|
|
<optional>
|
|
<ref name="sgIO"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="rawIO"/>
|
|
</optional>
|
|
<element name="source">
|
|
<choice>
|
|
<group> <!-- scsi_host adapter -->
|
|
<optional>
|
|
<attribute name="protocol">
|
|
<value>adapter</value> <!-- scsi_host, default, optional -->
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<ref name="sourceinfoadapter"/>
|
|
<element name="address">
|
|
<ref name="scsiaddress"/>
|
|
</element>
|
|
</interleave>
|
|
</group>
|
|
<group> <!-- iscsi adapter -->
|
|
<attribute name="protocol">
|
|
<value>iscsi</value> <!-- iscsi, required -->
|
|
</attribute>
|
|
<attribute name="name">
|
|
<text/>
|
|
</attribute>
|
|
<interleave>
|
|
<oneOrMore>
|
|
<element name="host">
|
|
<attribute name="name">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="port">
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</oneOrMore>
|
|
<optional>
|
|
<ref name="diskAuth"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="initiatorinfo"/>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostdevsubsyshost">
|
|
<attribute name="type">
|
|
<value>scsi_host</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<element name="source">
|
|
<choice>
|
|
<group>
|
|
<attribute name="protocol">
|
|
<value>vhost</value> <!-- vhost, required -->
|
|
</attribute>
|
|
<attribute name="wwpn">
|
|
<data type="string">
|
|
<param name="pattern">(naa\.)[0-9a-fA-F]{16}</param>
|
|
</data>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostdevsubsysmdev">
|
|
<attribute name="type">
|
|
<value>mdev</value>
|
|
</attribute>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>vfio-pci</value>
|
|
<value>vfio-ccw</value>
|
|
<value>vfio-ap</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="ramfb">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="display">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<element name="source">
|
|
<ref name="mdevaddress"/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostdevcapsstorage">
|
|
<attribute name="type">
|
|
<value>storage</value>
|
|
</attribute>
|
|
<element name="source">
|
|
<element name="block">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostdevcapsmisc">
|
|
<attribute name="type">
|
|
<value>misc</value>
|
|
</attribute>
|
|
<element name="source">
|
|
<element name="char">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostdevcapsnet">
|
|
<attribute name="type">
|
|
<value>net</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<element name="interface">
|
|
<ref name="deviceName"/>
|
|
</element>
|
|
</element>
|
|
<ref name="interface-ip-info"/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name="usbproduct">
|
|
<element name="vendor">
|
|
<attribute name="id">
|
|
<ref name="usbId"/>
|
|
</attribute>
|
|
</element>
|
|
<element name="product">
|
|
<attribute name="id">
|
|
<ref name="usbId"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
<define name="usbaddress">
|
|
<element name="address">
|
|
<attribute name="bus">
|
|
<ref name="usbAddr"/>
|
|
</attribute>
|
|
<attribute name="device">
|
|
<ref name="usbAddr"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
<define name="scsiaddress">
|
|
<attribute name="bus">
|
|
<ref name="driveBus"/>
|
|
</attribute>
|
|
<attribute name="target">
|
|
<ref name="driveSCSITarget"/>
|
|
</attribute>
|
|
<attribute name="unit">
|
|
<ref name="driveSCSIUnit"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="usbportaddress">
|
|
<attribute name="bus">
|
|
<ref name="usbAddr"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="port">
|
|
<ref name="usbPort"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="spaprvioaddress">
|
|
<optional>
|
|
<attribute name="reg">
|
|
<ref name="spaprvioReg"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="ccwaddress">
|
|
<optional>
|
|
<attribute name="cssid">
|
|
<ref name="ccwCssidRange"/>
|
|
</attribute>
|
|
<attribute name="ssid">
|
|
<ref name="ccwSsidRange"/>
|
|
</attribute>
|
|
<attribute name="devno">
|
|
<ref name="ccwDevnoRange"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="driveaddress">
|
|
<optional>
|
|
<attribute name="controller">
|
|
<ref name="driveController"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="bus">
|
|
<ref name="driveBus"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="target">
|
|
<ref name="driveTarget"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="unit">
|
|
<ref name="driveUnit"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="virtioserialaddress">
|
|
<attribute name="controller">
|
|
<ref name="driveController"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="bus">
|
|
<ref name="driveBus"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="port">
|
|
<ref name="virtioserialPort"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="ccidaddress">
|
|
<attribute name="controller">
|
|
<ref name="driveController"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="slot">
|
|
<ref name="ccidSlot"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="dimmaddress">
|
|
<optional>
|
|
<attribute name="slot">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="base">
|
|
<ref name="hexuint"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="mdevaddress">
|
|
<element name="address">
|
|
<attribute name="uuid">
|
|
<ref name="UUID"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
<define name="devices">
|
|
<element name="devices">
|
|
<interleave>
|
|
<optional>
|
|
<ref name="emulator"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="disk"/>
|
|
<ref name="controller"/>
|
|
<ref name="lease"/>
|
|
<ref name="filesystem"/>
|
|
<ref name="interface"/>
|
|
<ref name="input"/>
|
|
<ref name="sound"/>
|
|
<ref name="audio"/>
|
|
<ref name="hostdev"/>
|
|
<ref name="graphic"/>
|
|
<ref name="video"/>
|
|
<ref name="console"/>
|
|
<ref name="parallel"/>
|
|
<ref name="serial"/>
|
|
<ref name="channel"/>
|
|
<ref name="smartcard"/>
|
|
<ref name="hub"/>
|
|
<ref name="redirdev"/>
|
|
<ref name="redirfilter"/>
|
|
<ref name="rng"/>
|
|
<ref name="tpm"/>
|
|
<ref name="shmem"/>
|
|
<ref name="memorydev"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<ref name="watchdog"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="memballoon"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="nvram"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="panic"/>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<ref name="iommu"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="vsock"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
A set of optional features: PAE, APIC, ACPI, GIC,
|
|
HyperV Enlightenment, KVM features, paravirtual spinlocks and HAP support
|
|
-->
|
|
<define name="features">
|
|
<optional>
|
|
<element name="features">
|
|
<interleave>
|
|
<optional>
|
|
<element name="pae">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="apic">
|
|
<optional>
|
|
<attribute name="eoi">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="acpi">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="hap">
|
|
<optional>
|
|
<attribute name="state">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="hyperv"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="viridian">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="kvm"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="xen"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="privnet">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="pvspinlock">
|
|
<optional>
|
|
<ref name="featurestate"/>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="capabilities"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="pmu"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="vmport">
|
|
<optional>
|
|
<attribute name="state">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="gic">
|
|
<optional>
|
|
<attribute name="version">
|
|
<choice>
|
|
<value>host</value>
|
|
<value>2</value>
|
|
<value>3</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="smm">
|
|
<optional>
|
|
<attribute name="state">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
<optional>
|
|
<element name="tseg">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="ioapic"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="hpt"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="vmcoreinfo"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="htm">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="nested-hv">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="msrs"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="ccf-assist">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="cfpc"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="sbbc"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="ibs"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<!--
|
|
System information specification:
|
|
Placeholder for system specific information likes the ones
|
|
contained in the SMBIOS area.
|
|
Only a limited subset of entries can be modified there, so we
|
|
fully enumerate each case here.
|
|
The DMTF spec doesn't specify any string subset, just 0 terminated
|
|
byte strings, but better be safe and restrict at least the names
|
|
to avoid problems with space normalization in attribute values,
|
|
the value is kept as the element body for maximum flexibility.
|
|
A priori we allow only type 0 and type 1 string updates
|
|
-->
|
|
<define name="sysinfo">
|
|
<element name="sysinfo">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>smbios</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="bios">
|
|
<oneOrMore>
|
|
<element name="entry">
|
|
<attribute name="name">
|
|
<ref name="sysinfo-bios-name"/>
|
|
</attribute>
|
|
<ref name="sysinfo-value"/>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="system">
|
|
<oneOrMore>
|
|
<element name="entry">
|
|
<attribute name="name">
|
|
<ref name="sysinfo-system-name"/>
|
|
</attribute>
|
|
<ref name="sysinfo-value"/>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="baseBoard">
|
|
<oneOrMore>
|
|
<element name="entry">
|
|
<attribute name="name">
|
|
<ref name="sysinfo-baseBoard-name"/>
|
|
</attribute>
|
|
<ref name="sysinfo-value"/>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<element name="chassis">
|
|
<oneOrMore>
|
|
<element name="entry">
|
|
<attribute name="name">
|
|
<ref name="sysinfo-chassis-name"/>
|
|
</attribute>
|
|
<ref name="sysinfo-value"/>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="oemStrings">
|
|
<oneOrMore>
|
|
<element name="entry">
|
|
<ref name="sysinfo-value"/>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>fwcfg</value>
|
|
</attribute>
|
|
<zeroOrMore>
|
|
<element name="entry">
|
|
<attribute name="name">
|
|
<data type="string"/>
|
|
</attribute>
|
|
<choice>
|
|
<group>
|
|
<attribute name="file">
|
|
<data type="string"/>
|
|
</attribute>
|
|
<empty/>
|
|
</group>
|
|
<group>
|
|
<ref name="sysinfo-value"/>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</zeroOrMore>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="sysinfo-bios-name">
|
|
<choice>
|
|
<value>vendor</value>
|
|
<value>version</value>
|
|
<value>date</value>
|
|
<value>release</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="sysinfo-system-name">
|
|
<choice>
|
|
<value>manufacturer</value>
|
|
<value>product</value>
|
|
<value>version</value>
|
|
<value>serial</value>
|
|
<value>uuid</value>
|
|
<value>sku</value>
|
|
<value>family</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="sysinfo-baseBoard-name">
|
|
<choice>
|
|
<value>manufacturer</value>
|
|
<value>product</value>
|
|
<value>version</value>
|
|
<value>serial</value>
|
|
<value>asset</value>
|
|
<value>location</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="sysinfo-chassis-name">
|
|
<choice>
|
|
<value>manufacturer</value>
|
|
<value>version</value>
|
|
<value>serial</value>
|
|
<value>asset</value>
|
|
<value>sku</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name="sysinfo-value">
|
|
<data type="string"/>
|
|
</define>
|
|
|
|
<define name="acpiTable">
|
|
<element name="acpi">
|
|
<zeroOrMore>
|
|
<element name="table">
|
|
<attribute name="type">
|
|
<value>slic</value>
|
|
</attribute>
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="smbios">
|
|
<element name="smbios">
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>emulate</value>
|
|
<value>host</value>
|
|
<value>sysinfo</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="bios">
|
|
<element name="bios">
|
|
<optional>
|
|
<attribute name="useserial">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="rebootTimeout">
|
|
<ref name="rebootTimeoutDelay"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="ioapic">
|
|
<element name="ioapic">
|
|
<attribute name="driver">
|
|
<choice>
|
|
<value>qemu</value>
|
|
<value>kvm</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hpt">
|
|
<element name="hpt">
|
|
<optional>
|
|
<attribute name="resizing">
|
|
<choice>
|
|
<value>enabled</value>
|
|
<value>disabled</value>
|
|
<value>required</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<element name="maxpagesize">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="vmcoreinfo">
|
|
<element name="vmcoreinfo">
|
|
<optional>
|
|
<attribute name="state">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="msrs">
|
|
<element name="msrs">
|
|
<attribute name="unknown">
|
|
<choice>
|
|
<value>ignore</value>
|
|
<value>fault</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cfpc">
|
|
<element name="cfpc">
|
|
<attribute name="value">
|
|
<choice>
|
|
<value>broken</value>
|
|
<value>workaround</value>
|
|
<value>fixed</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="sbbc">
|
|
<element name="sbbc">
|
|
<attribute name="value">
|
|
<choice>
|
|
<value>broken</value>
|
|
<value>workaround</value>
|
|
<value>fixed</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="ibs">
|
|
<element name="ibs">
|
|
<attribute name="value">
|
|
<choice>
|
|
<value>broken</value>
|
|
<value>workaround</value>
|
|
<value>fixed-ibs</value>
|
|
<value>fixed-ccd</value>
|
|
<value>fixed-na</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="address">
|
|
<element name="address">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>pci</value>
|
|
</attribute>
|
|
<ref name="pciaddress"/>
|
|
<ref name="zpciaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>drive</value>
|
|
</attribute>
|
|
<ref name="driveaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>virtio-serial</value>
|
|
</attribute>
|
|
<ref name="virtioserialaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>ccid</value>
|
|
</attribute>
|
|
<ref name="ccidaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>usb</value>
|
|
</attribute>
|
|
<ref name="usbportaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>spapr-vio</value>
|
|
</attribute>
|
|
<ref name="spaprvioaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>ccw</value>
|
|
</attribute>
|
|
<ref name="ccwaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>isa</value>
|
|
</attribute>
|
|
<ref name="isaaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>virtio-mmio</value>
|
|
</attribute>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>dimm</value>
|
|
</attribute>
|
|
<ref name="dimmaddress"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>unassigned</value>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="rom">
|
|
<element name="rom">
|
|
<optional>
|
|
<attribute name="enabled">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="bar">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="file">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="memorydev">
|
|
<element name="memory">
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>dimm</value>
|
|
<value>nvdimm</value>
|
|
<value>virtio-pmem</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="access">
|
|
<choice>
|
|
<value>shared</value>
|
|
<value>private</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="discard">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<element name="uuid">
|
|
<ref name="UUID"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="memorydev-source"/>
|
|
</optional>
|
|
<ref name="memorydev-target"/>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="memorydev-source">
|
|
<element name="source">
|
|
<choice>
|
|
<group>
|
|
<interleave>
|
|
<optional>
|
|
<element name="pagesize">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="nodemask">
|
|
<ref name="cpuset"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<interleave>
|
|
<element name="path">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
<optional>
|
|
<element name="alignsize">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="pmem">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="memorydev-target">
|
|
<element name="target">
|
|
<interleave>
|
|
<element name="size">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
<optional>
|
|
<element name="node">
|
|
<ref name="unsignedInt"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="label">
|
|
<element name="size">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="readonly">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="rng">
|
|
<element name="rng">
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</choice>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name="rng-backend"/>
|
|
<optional>
|
|
<element name="driver">
|
|
<ref name="virtioOptions"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="rng-rate"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="rng-backend">
|
|
<element name="backend">
|
|
<choice>
|
|
<group>
|
|
<attribute name="model">
|
|
<value>random</value>
|
|
</attribute>
|
|
<choice>
|
|
<ref name="absFilePath"/>
|
|
<empty/>
|
|
</choice>
|
|
</group>
|
|
<group>
|
|
<attribute name="model">
|
|
<value>egd</value>
|
|
</attribute>
|
|
<ref name="qemucdevSrcType"/>
|
|
<ref name="qemucdevSrcDef"/>
|
|
</group>
|
|
<group>
|
|
<attribute name="model">
|
|
<value>builtin</value>
|
|
</attribute>
|
|
<empty/>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="rng-rate">
|
|
<element name="rate">
|
|
<attribute name="bytes">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="period">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="virtioOptions">
|
|
<optional>
|
|
<attribute name="iommu">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="ats">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="packed">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="usbmaster">
|
|
<element name="master">
|
|
<attribute name="startport">
|
|
<ref name="usbPort"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="deviceBoot">
|
|
<element name="boot">
|
|
<attribute name="order">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="loadparm">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9.\s]{1,8}</param>
|
|
</data>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<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"/>
|
|
</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">
|
|
<choice>
|
|
<value>copy</value>
|
|
<value>active-commit</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"/>
|
|
</element>
|
|
</define>
|
|
<define name="diskAuth">
|
|
<element name="auth">
|
|
<attribute name="username">
|
|
<ref name="genericName"/>
|
|
</attribute>
|
|
<ref name="diskAuthSecret"/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskAuthSecret">
|
|
<element name="secret">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>ceph</value>
|
|
<value>iscsi</value>
|
|
</choice>
|
|
</attribute>
|
|
<choice>
|
|
<attribute name="uuid">
|
|
<ref name="UUID"/>
|
|
</attribute>
|
|
<attribute name="usage">
|
|
<ref name="objectName"/>
|
|
</attribute>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="diskIoTune">
|
|
<element name="iotune">
|
|
<interleave>
|
|
<choice>
|
|
<element name="total_bytes_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
<group>
|
|
<interleave>
|
|
<optional>
|
|
<element name="read_bytes_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="write_bytes_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
<choice>
|
|
<element name="total_iops_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
<group>
|
|
<interleave>
|
|
<optional>
|
|
<element name="read_iops_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="write_iops_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
<choice>
|
|
<element name="total_bytes_sec_max">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
<group>
|
|
<interleave>
|
|
<optional>
|
|
<element name="read_bytes_sec_max">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="write_bytes_sec_max">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
<choice>
|
|
<element name="total_iops_sec_max">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
<group>
|
|
<interleave>
|
|
<optional>
|
|
<element name="read_iops_sec_max">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="write_iops_sec_max">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<element name="size_iops_sec">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="group_name">
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<choice>
|
|
<element name="total_bytes_sec_max_length">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
<group>
|
|
<interleave>
|
|
<optional>
|
|
<element name="read_bytes_sec_max_length">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="write_bytes_sec_max_length">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
<choice>
|
|
<element name="total_iops_sec_max_length">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
<group>
|
|
<interleave>
|
|
<optional>
|
|
<element name="read_iops_sec_max_length">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="write_iops_sec_max_length">
|
|
<data type="unsignedLong"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<!-- 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"/>
|
|
<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>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<!-- Hyper-V stimer features -->
|
|
<define name="stimer">
|
|
<interleave>
|
|
<optional>
|
|
<ref name="featurestate"/>
|
|
</optional>
|
|
<optional>
|
|
<element name="direct">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<!-- Optional KVM features -->
|
|
<define name="kvm">
|
|
<element name="kvm">
|
|
<interleave>
|
|
<optional>
|
|
<element name="hidden">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="hint-dedicated">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="poll-control">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<!-- Optional Xen features -->
|
|
<define name="xen">
|
|
<element name="xen">
|
|
<interleave>
|
|
<optional>
|
|
<element name="e820_host">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="passthrough">
|
|
<ref name="featurestate"/>
|
|
<optional>
|
|
<attribute name="mode">
|
|
<data type="string">
|
|
<param name="pattern">(sync_pt|share_pt)</param>
|
|
</data>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<!-- Optional capabilities features -->
|
|
<define name="capabilities">
|
|
<element name="capabilities">
|
|
<ref name="capabilitiespolicy"/>
|
|
<interleave>
|
|
<optional>
|
|
<element name="audit_control">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="audit_write">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="block_suspend">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="chown">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="dac_override">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="dac_read_search">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="fowner">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="fsetid">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="ipc_lock">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="ipc_owner">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="kill">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="lease">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="linux_immutable">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="mac_admin">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="mac_override">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="mknod">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="net_admin">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="net_bind_service">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="net_broadcast">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="net_raw">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="setgid">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="setfcap">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="setpcap">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="setuid">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_admin">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_boot">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_chroot">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_module">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_nice">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_pacct">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_ptrace">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_rawio">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_resource">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_time">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="sys_tty_config">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="syslog">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="wake_alarm">
|
|
<ref name="featurestate"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="pmu">
|
|
<element name="pmu">
|
|
<optional>
|
|
<ref name="featurestate"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="featurestate">
|
|
<attribute name="state">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="capabilitiespolicy">
|
|
<attribute name="policy">
|
|
<choice>
|
|
<value>default</value>
|
|
<value>allow</value>
|
|
<value>deny</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<!--
|
|
Optional hypervisor extensions in their own namespace:
|
|
QEMU
|
|
-->
|
|
<define name="qemucmdline">
|
|
<element name="commandline" ns="http://libvirt.org/schemas/domain/qemu/1.0">
|
|
<interleave>
|
|
<zeroOrMore>
|
|
<element name="arg">
|
|
<attribute name="value"/>
|
|
</element>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<element name="env">
|
|
<attribute name="name">
|
|
<ref name="filter-param-name"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="value"/>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="qemucapabilities">
|
|
<element name="capabilities" ns="http://libvirt.org/schemas/domain/qemu/1.0">
|
|
<interleave>
|
|
<zeroOrMore>
|
|
<element name="add">
|
|
<attribute name="capability"/>
|
|
</element>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<element name="del">
|
|
<attribute name="capability"/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
|
|
<!--
|
|
Optional hypervisor extensions in their own namespace:
|
|
LXC
|
|
-->
|
|
<define name="lxcsharens">
|
|
<element name="namespace" ns="http://libvirt.org/schemas/domain/lxc/1.0">
|
|
<interleave>
|
|
<optional>
|
|
<element name="sharenet">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>netns</value>
|
|
<value>name</value>
|
|
<value>pid</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="value"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="shareipc">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>name</value>
|
|
<value>pid</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="value"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="shareuts">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>name</value>
|
|
<value>pid</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="value"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Optional hypervisor extensions in their own namespace:
|
|
Bhyve
|
|
-->
|
|
<define name="bhyvecmdline">
|
|
<element name="commandline" ns="http://libvirt.org/schemas/domain/bhyve/1.0">
|
|
<zeroOrMore>
|
|
<element name="arg">
|
|
<attribute name="value"/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Optional hypervisor extensions in their own namespace:
|
|
Xen
|
|
-->
|
|
<define name="xencmdline">
|
|
<element name="commandline" ns="http://libvirt.org/schemas/domain/xen/1.0">
|
|
<zeroOrMore>
|
|
<element name="arg">
|
|
<attribute name="value"/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Optional hypervisor extensions in their own namespace:
|
|
vmware
|
|
-->
|
|
<define name="vmwaredatacenterpath">
|
|
<element name="datacenterpath" ns="http://libvirt.org/schemas/domain/vmware/1.0">
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Type library
|
|
-->
|
|
<define name="countCPU">
|
|
<data type="unsignedShort">
|
|
<param name="pattern">[0-9]+</param>
|
|
<param name="minInclusive">1</param>
|
|
</data>
|
|
</define>
|
|
<define name="vcpuid">
|
|
<data type="unsignedShort">
|
|
<param name="pattern">[0-9]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="cpushares">
|
|
<data type="unsignedInt">
|
|
<param name="pattern">[0-9]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="cpuperiod">
|
|
<data type="unsignedLong">
|
|
<param name="pattern">[0-9]+</param>
|
|
<param name="minInclusive">1000</param>
|
|
<param name="maxInclusive">1000000</param>
|
|
</data>
|
|
</define>
|
|
<define name="cpuquota">
|
|
<data type="long">
|
|
<param name="pattern">-?[0-9]+</param>
|
|
<param name="maxInclusive">18446744073709551</param>
|
|
<param name="minInclusive">-1</param>
|
|
</data>
|
|
</define>
|
|
<define name="rebootTimeoutDelay">
|
|
<data type="short">
|
|
<param name="minInclusive">-1</param>
|
|
</data>
|
|
</define>
|
|
<!-- weight currently is in range [100, 1000] -->
|
|
<define name="weight">
|
|
<data type="unsignedInt">
|
|
<param name="pattern">[0-9]+</param>
|
|
<param name="minInclusive">100</param>
|
|
<param name="maxInclusive">1000</param>
|
|
</data>
|
|
</define>
|
|
<define name="diskSerial">
|
|
<data type="string">
|
|
<param name="pattern">[A-Za-z0-9_\.\+\- ]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="bridgeMode">
|
|
<data type="string">
|
|
<param name="pattern">(vepa|bridge|private|passthrough)</param>
|
|
</data>
|
|
</define>
|
|
<define name="addrIPorName">
|
|
<choice>
|
|
<ref name="ipAddr"/>
|
|
<ref name="dnsName"/>
|
|
</choice>
|
|
</define>
|
|
<define name="usbIdDefault">
|
|
<data type="string">
|
|
<param name="pattern">-1</param>
|
|
</data>
|
|
</define>
|
|
<define name="usbId">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
|
|
</data>
|
|
</define>
|
|
<define name="usbVersion">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,2}.[0-9]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="usbAddr">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,3}</param>
|
|
</data>
|
|
</define>
|
|
<define name="usbClass">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="usbPort">
|
|
<data type="string">
|
|
<param name="pattern">((0x)?[0-9a-fA-F]{1,3}\.){0,3}(0x)?[0-9a-fA-F]{1,3}</param>
|
|
</data>
|
|
</define>
|
|
<define name="driveController">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="driveBus">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="driveTarget">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="driveSCSITarget">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,10}</param>
|
|
</data>
|
|
</define>
|
|
<define name="driveUnit">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,5}</param>
|
|
</data>
|
|
</define>
|
|
<define name="driveSCSIUnit">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,20}</param>
|
|
</data>
|
|
</define>
|
|
<define name="timeDelta">
|
|
<data type="string">
|
|
<param name="pattern">(-|\+)?[0-9]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="timeZone">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9_\.\+\-/]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="spaprvioReg">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,8}</param>
|
|
</data>
|
|
</define>
|
|
<define name="aliasName">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9_\-.]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="virtioserialPort">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="ccidSlot">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="alias">
|
|
<element name="alias">
|
|
<attribute name="name">
|
|
<ref name="aliasName"/>
|
|
</attribute>
|
|
</element>
|
|
<empty/>
|
|
</define>
|
|
<define name="panic">
|
|
<element name="panic">
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>isa</value>
|
|
<value>pseries</value>
|
|
<value>hyperv</value>
|
|
<value>s390</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="rawIO">
|
|
<attribute name="rawio">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="sgIO">
|
|
<attribute name="sgio">
|
|
<choice>
|
|
<value>filtered</value>
|
|
<value>unfiltered</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="coalesce">
|
|
<element name="coalesce">
|
|
<interleave>
|
|
<optional>
|
|
<element name="rx">
|
|
<optional>
|
|
<element name="frames">
|
|
<optional>
|
|
<attribute name="max">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<!--
|
|
This is how we'd add more Rx-related settings for
|
|
frames, like irq, high, and low
|
|
|
|
<optional>
|
|
<attribute name="irq">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="high">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="low">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
|
|
-->
|
|
</element>
|
|
</optional>
|
|
<!--
|
|
This is how we'd add more Rx-related settings, like
|
|
usecs
|
|
|
|
<optional>
|
|
<element name="usecs">
|
|
<optional>
|
|
<attribute name="max">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="irq">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="high">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="low">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
-->
|
|
</element>
|
|
</optional>
|
|
<!--
|
|
This is how you would add more coalesce settings, like
|
|
Tx-related ones
|
|
|
|
<optional>
|
|
<element name="tx">
|
|
<optional>
|
|
<element name="frames">
|
|
<optional>
|
|
<attribute name="max">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="irq">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="high">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="low">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="usecs">
|
|
<optional>
|
|
<attribute name="max">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="irq">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="high">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="low">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
-->
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
</grammar>
|