mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-28 11:21:44 +03:00
b8bf79aad7
Since Xen 3.1 the clock=variable semantic is supported. In addition to qemu/kvm Xen also knows about a variant where the offset is relative to 'localtime' instead of 'utc'. Extends the libvirt structure with a flag 'basis' to specify, if the offset is relative to 'localtime' or 'utc'. Extends the libvirt structure with a flag 'reset' to force the reset behaviour of 'localtime' and 'utc'; this is needed for backward compatibility with previous versions of libvirt, since they report incorrect XML. Adapt the only user 'qemu' to the new name. Extend the RelaxNG schema accordingly. Document the new 'basis' attribute in the HTML documentation. Adapt test for the new attribute. Signed-off-by: Philipp Hahn <hahn@univention.de>
3325 lines
86 KiB
XML
3325 lines
86 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='storageencryption.rng'/>
|
|
<include href='networkcommon.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">
|
|
<data type="string">
|
|
<!-- Use literal newline instead of \n for bug in libxml2 2.7.6 -->
|
|
<param name="pattern">[^
|
|
]+</param>
|
|
</data>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
We handle only document defining a domain
|
|
-->
|
|
<define name="domain">
|
|
<element name="domain">
|
|
<ref name="hvs"/>
|
|
<ref name="ids"/>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="title"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="description"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="metadata"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="cpu"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="sysinfo"/>
|
|
</optional>
|
|
<ref name="os"/>
|
|
<ref name="clock"/>
|
|
<ref name="resources"/>
|
|
<ref name="features"/>
|
|
<ref name="termination"/>
|
|
<optional>
|
|
<ref name="devices"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="seclabel"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name='qemucmdline'/>
|
|
</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'>
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</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. -->
|
|
<choice>
|
|
<attribute name='relabel'>
|
|
<value>no</value>
|
|
</attribute>
|
|
<group>
|
|
<optional>
|
|
<attribute name='relabel'>
|
|
<value>yes</value>
|
|
</attribute>
|
|
</optional>
|
|
<element name='label'>
|
|
<text/>
|
|
</element>
|
|
</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>
|
|
<value>openvz</value>
|
|
<value>test</value>
|
|
<value>vmware</value>
|
|
<value>hyperv</value>
|
|
<value>vbox</value>
|
|
<value>phyp</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">
|
|
<element name="os">
|
|
<ref name="ostypehvm"/>
|
|
<interleave>
|
|
<optional>
|
|
<element name="loader">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</optional>
|
|
<choice>
|
|
<ref name="osbootkernel"/>
|
|
<zeroOrMore>
|
|
<ref name="osbootdev"/>
|
|
</zeroOrMore>
|
|
</choice>
|
|
<optional>
|
|
<element name="bootmenu">
|
|
<attribute name="enable">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="smbios"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="bios"/>
|
|
</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>xenner</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<value>xen</value>
|
|
<value>linux</value>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
<define name="ostypehvm">
|
|
<element name="type">
|
|
<optional>
|
|
<choice>
|
|
<ref name="hvmx86"/>
|
|
<ref name="hvmmips"/>
|
|
<ref name="hvmsparc"/>
|
|
<ref name="hvmppc"/>
|
|
<ref name="hvmppc64"/>
|
|
</choice>
|
|
</optional>
|
|
<value>hvm</value>
|
|
</element>
|
|
</define>
|
|
<define name="hvmx86">
|
|
<group>
|
|
<optional>
|
|
<attribute name="arch">
|
|
<choice>
|
|
<value>i686</value>
|
|
<value>x86_64</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="machine">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9_\.\-]+</param>
|
|
</data>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</define>
|
|
<define name="hvmmips">
|
|
<group>
|
|
<optional>
|
|
<attribute name="arch">
|
|
<value>mips</value>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="machine">
|
|
<value>mips</value>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</define>
|
|
<define name="hvmsparc">
|
|
<group>
|
|
<optional>
|
|
<attribute name="arch">
|
|
<value>sparc</value>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="machine">
|
|
<value>sun4m</value>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</define>
|
|
<define name="hvmppc">
|
|
<group>
|
|
<optional>
|
|
<attribute name="arch">
|
|
<value>ppc</value>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="machine">
|
|
<choice>
|
|
<value>g3beige</value>
|
|
<value>mac99</value>
|
|
<value>prep</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</define>
|
|
<define name="hvmppc64">
|
|
<group>
|
|
<optional>
|
|
<attribute name="arch">
|
|
<value>ppc64</value>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="machine">
|
|
<choice>
|
|
<value>pseries</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</define>
|
|
<define name="osexe">
|
|
<element name="os">
|
|
<element name="type">
|
|
<optional>
|
|
<attribute name="arch">
|
|
<choice>
|
|
<value>i686</value>
|
|
<value>x86_64</value>
|
|
<value>ppc</value>
|
|
<value>ppc64</value>
|
|
<value>mips</value>
|
|
<value>sparc</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<value>exe</value>
|
|
</element>
|
|
<interleave>
|
|
<optional>
|
|
<element name="init">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="initarg">
|
|
<text/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</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="domainName"/>
|
|
</element>
|
|
<optional>
|
|
<element name="uuid">
|
|
<ref name="UUID"/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</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>
|
|
<element name="memory">
|
|
<ref name='scaledInteger'/>
|
|
</element>
|
|
<optional>
|
|
<element name="currentMemory">
|
|
<ref name='scaledInteger'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="memoryBacking">
|
|
<optional>
|
|
<element name="hugepages">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
|
|
<!-- The Blkio cgroup related tunables would go in the blkiotune -->
|
|
<optional>
|
|
<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>
|
|
<element name="weight">
|
|
<ref name="weight"/>
|
|
</element>
|
|
</interleave>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
|
|
<!-- All the memory/swap related tunables would go in the memtune -->
|
|
<optional>
|
|
<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>
|
|
</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>
|
|
|
|
<!-- All the cpu related tunables would go in the cputune -->
|
|
<optional>
|
|
<element name="cputune">
|
|
<optional>
|
|
<element name="shares">
|
|
<ref name="cpushares"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="period">
|
|
<ref name="cpuperiod"/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="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>
|
|
</element>
|
|
</optional>
|
|
|
|
<!-- All the NUMA related tunables would go in the numatune -->
|
|
<optional>
|
|
<element name="numatune">
|
|
<optional>
|
|
<element name="memory">
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>strict</value>
|
|
<value>preferred</value>
|
|
<value>interleave</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="nodeset">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</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">
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>platform</value>
|
|
<value>hpet</value>
|
|
<value>kvmclock</value>
|
|
<value>pit</value>
|
|
<value>rtc</value>
|
|
<value>tsc</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="track">
|
|
<choice>
|
|
<value>boot</value>
|
|
<value>guest</value>
|
|
<value>wall</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tickpolicy">
|
|
<choice>
|
|
<value>delay</value>
|
|
<value>catchup</value>
|
|
<value>merge</value>
|
|
<value>discard</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="catchup"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="frequency">
|
|
<ref name="unsignedInt"/>
|
|
</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>
|
|
<optional>
|
|
<attribute name="present">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
<define name="catchup">
|
|
<element name="catchup">
|
|
<optional>
|
|
<attribute name="threshold">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="slew">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="limit">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</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>
|
|
<element name="bootloader">
|
|
<choice>
|
|
<ref name="absFilePath"/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
<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>
|
|
</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="driver"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="diskAuth"/>
|
|
</optional>
|
|
<ref name="target"/>
|
|
<optional>
|
|
<ref name="deviceBoot"/>
|
|
</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>
|
|
</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">
|
|
<optional>
|
|
<attribute name="device">
|
|
<choice>
|
|
<value>floppy</value>
|
|
<value>disk</value>
|
|
<value>cdrom</value>
|
|
<value>lun</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="rawio">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="snapshot"/>
|
|
</optional>
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>file</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="source">
|
|
<optional>
|
|
<attribute name="file">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="startupPolicy"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name='devSeclabel'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<ref name="diskspec"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>block</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="source">
|
|
<attribute name="dev">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
<optional>
|
|
<ref name='devSeclabel'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<ref name="diskspec"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>dir</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="source">
|
|
<attribute name="dir">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name="diskspec"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>network</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="source">
|
|
<attribute name="protocol">
|
|
<choice>
|
|
<value>nbd</value>
|
|
<value>rbd</value>
|
|
<value>sheepdog</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="name"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="host">
|
|
<attribute name="name">
|
|
<ref name="dnsName"/>
|
|
</attribute>
|
|
<attribute name="port">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name="diskspec"/>
|
|
</interleave>
|
|
</group>
|
|
<ref name="diskspec"/>
|
|
</choice>
|
|
</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>
|
|
<value>sata</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="tray">
|
|
<choice>
|
|
<value>open</value>
|
|
<value>closed</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
Disk may use a special driver for access. Currently this is
|
|
only defined for Xen for tap/aio and file, but will certainly be
|
|
extended in the future, and libvirt doesn't look for specific values.
|
|
-->
|
|
<define name="driver">
|
|
<element name="driver">
|
|
<choice>
|
|
<group>
|
|
<ref name="driverFormat"/>
|
|
<optional>
|
|
<ref name="driverCache"/>
|
|
</optional>
|
|
</group>
|
|
<group>
|
|
<optional>
|
|
<ref name="driverFormat"/>
|
|
</optional>
|
|
<ref name="driverCache"/>
|
|
</group>
|
|
</choice>
|
|
<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>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
<define name="driverFormat">
|
|
<attribute name="name">
|
|
<ref name="genericName"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="type">
|
|
<ref name="genericName"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="driverCache">
|
|
<attribute name="cache">
|
|
<choice>
|
|
<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>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="ioeventfd">
|
|
<attribute name="ioeventfd">
|
|
<choice>
|
|
<value>on</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="event_idx">
|
|
<attribute name="event_idx">
|
|
<choice>
|
|
<value>on</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="copy_on_read">
|
|
<attribute name='copy_on_read'>
|
|
<choice>
|
|
<value>on</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="controller">
|
|
<element name="controller">
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>fdc</value>
|
|
<value>ide</value>
|
|
<value>scsi</value>
|
|
<value>sata</value>
|
|
<value>ccid</value>
|
|
<value>usb</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
<!-- virtio-serial can have 2 additional attributes -->
|
|
<group>
|
|
<attribute name="type">
|
|
<value>virtio-serial</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="ports">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="vectors">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
<attribute name="index">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>buslogic</value>
|
|
<value>lsilogic</value>
|
|
<value>lsisas1068</value>
|
|
<value>vmpvscsi</value>
|
|
<value>ibmvscsi</value>
|
|
<value>virtio-scsi</value>
|
|
<value>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>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="usbmaster"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="filesystem">
|
|
<element name="filesystem">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>file</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="file">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name="filesystemtgt"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>block</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="dev">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name="filesystemtgt"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<!-- type='mount' is default -->
|
|
<optional>
|
|
<attribute name="type">
|
|
<value>mount</value>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="dir">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<optional>
|
|
<element name="driver">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>path</value>
|
|
<value>handle</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="wrpolicy">
|
|
<value>immediate</value>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name="filesystemtgt"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>template</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="name">
|
|
<ref name="genericName"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name="filesystemtgt"/>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="accessmode">
|
|
<choice>
|
|
<value>passthrough</value>
|
|
<value>mapped</value>
|
|
<value>squash</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<element name='readonly'>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="filesystemtgt">
|
|
<interleave>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<element name="target">
|
|
<attribute name="dir">
|
|
<ref name="absDirPath"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</interleave>
|
|
</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">
|
|
<attribute name="bridge">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>ethernet</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name="source">
|
|
<attribute name="dev">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>network</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name="source">
|
|
<attribute name="network">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="portgroup">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
</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>
|
|
<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>
|
|
<optional>
|
|
<element name="mac">
|
|
<attribute name="address">
|
|
<ref name="uniMacAddr"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</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>
|
|
<optional>
|
|
<element name="mac">
|
|
<attribute name="address">
|
|
<ref name="uniMacAddr"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>hostdev</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="managed">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<element name="source">
|
|
<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="usbPort"/>
|
|
</attribute>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</choice>
|
|
</element>
|
|
<optional>
|
|
<ref name="virtualPortProfile"/>
|
|
</optional>
|
|
<ref name="interface-options"/>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</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
|
|
-->
|
|
<define name="interface-options">
|
|
<interleave>
|
|
<optional>
|
|
<element name="target">
|
|
<attribute name="dev">
|
|
<ref name="deviceName"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="mac">
|
|
<attribute name="address">
|
|
<ref name="uniMacAddr"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="ip">
|
|
<attribute name="address">
|
|
<ref name="ipv4Addr"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="script">
|
|
<attribute name="path">
|
|
<ref name="filePath"/>
|
|
</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="driver">
|
|
<optional>
|
|
<attribute name="name">
|
|
<choice>
|
|
<value>qemu</value>
|
|
<value>vhost</value>
|
|
</choice>
|
|
</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>
|
|
<empty/>
|
|
</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>
|
|
</interleave>
|
|
</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, currently in Xen only 2 types are supported:
|
|
- sdl with optional display, xauth and fullscreen
|
|
- vnc with a required port and optional listen IP address, password
|
|
and keymap
|
|
-->
|
|
<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">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</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">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="listen">
|
|
<ref name="addrIPorName"/>
|
|
</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">
|
|
<choice>
|
|
<value>keep</value>
|
|
</choice>
|
|
</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">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</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>
|
|
<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>
|
|
</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">
|
|
<choice>
|
|
<value>on</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</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">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="mouse">
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>server</value>
|
|
<value>client</value>
|
|
</choice>
|
|
</attribute>
|
|
<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">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="replaceUser">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="multiUser">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</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">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="listenElements">
|
|
<zeroOrMore>
|
|
<element name="listen">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>address</value>
|
|
</attribute>
|
|
<attribute name="address">
|
|
<ref name="addrIPorName"/>
|
|
</attribute>
|
|
</group>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>network</value>
|
|
</attribute>
|
|
<attribute name="network">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="address">
|
|
<ref name="addrIPorName"/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</zeroOrMore>
|
|
</define>
|
|
<!--
|
|
A video adapter description, allowing configuration of device
|
|
model, number of virtual heads, and video ram size
|
|
-->
|
|
<define name="video">
|
|
<element name="video">
|
|
<optional>
|
|
<element name="model">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>vga</value>
|
|
<value>cirrus</value>
|
|
<value>vmvga</value>
|
|
<value>xen</value>
|
|
<value>vbox</value>
|
|
<value>qxl</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="vram">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="heads">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<element name="acceleration">
|
|
<optional>
|
|
<attribute name="accel3d">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="accel2d">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
When a domain terminates multiple policies can be applied depending
|
|
on how it ended:
|
|
-->
|
|
<define name="termination">
|
|
<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>
|
|
</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>
|
|
<!--
|
|
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>
|
|
<value>virtio</value>
|
|
<value>lxc</value>
|
|
<value>openvz</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="qemucdevTgtDef">
|
|
<element name="target">
|
|
<interleave>
|
|
<optional>
|
|
<ref name="qemucdevConsoleTgtType"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="port"/>
|
|
</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>
|
|
</choice>
|
|
</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="wiremode"/>
|
|
</optional>
|
|
</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>
|
|
</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>
|
|
<choice>
|
|
<ref name="qemucdev"/>
|
|
</choice>
|
|
</choice>
|
|
</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>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="watchdog">
|
|
<element name="watchdog">
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>i6300esb</value>
|
|
<value>ib700</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>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="memballoon">
|
|
<element name="memballoon">
|
|
<attribute name="model">
|
|
<choice>
|
|
<value>virtio</value>
|
|
<value>xen</value>
|
|
<value>none</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</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>
|
|
</element>
|
|
</define>
|
|
<define name="channel">
|
|
<element name="channel">
|
|
<ref name="qemucdevSrcType"/>
|
|
<interleave>
|
|
<ref name="qemucdevSrcDef"/>
|
|
<choice>
|
|
<ref name="guestfwdTarget"/>
|
|
<ref name="virtioTarget"/>
|
|
</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="input">
|
|
<element name="input">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>tablet</value>
|
|
<value>mouse</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="bus">
|
|
<choice>
|
|
<value>ps2</value>
|
|
<value>usb</value>
|
|
<value>xen</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="hub">
|
|
<element name="hub">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>usb</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="redirdev">
|
|
<element name="redirdev">
|
|
<attribute name="bus">
|
|
<choice>
|
|
<value>usb</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="type">
|
|
<ref name="qemucdevSrcTypeChoice"/>
|
|
</attribute>
|
|
<ref name="qemucdevSrcDef"/>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="hostdev">
|
|
<element name="hostdev">
|
|
<optional>
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>subsystem</value>
|
|
<value>capabilities</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>usb</value>
|
|
<value>pci</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="managed">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<group>
|
|
<element name="source">
|
|
<choice>
|
|
<group>
|
|
<ref name="usbproduct"/>
|
|
<optional>
|
|
<ref name="usbaddress"/>
|
|
</optional>
|
|
</group>
|
|
<ref name="usbaddress"/>
|
|
<element name="address">
|
|
<ref name="pciaddress"/>
|
|
</element>
|
|
</choice>
|
|
</element>
|
|
</group>
|
|
<optional>
|
|
<ref name="deviceBoot"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="alias"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="address"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="rom"/>
|
|
</optional>
|
|
</element>
|
|
</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="usbPort"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
<define name="usbportaddress">
|
|
<attribute name="bus">
|
|
<ref name="usbAddr"/>
|
|
</attribute>
|
|
<attribute name="port">
|
|
<ref name="usbPort"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="spaprvioaddress">
|
|
<optional>
|
|
<attribute name="reg">
|
|
<ref name="spaprvioReg"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="pciaddress">
|
|
<optional>
|
|
<attribute name="domain">
|
|
<ref name="pciDomain"/>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="bus">
|
|
<ref name="pciBus"/>
|
|
</attribute>
|
|
<attribute name="slot">
|
|
<ref name="pciSlot"/>
|
|
</attribute>
|
|
<attribute name="function">
|
|
<ref name="pciFunc"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="multifunction">
|
|
<choice>
|
|
<value>on</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</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="driveUnit"/>
|
|
</attribute>
|
|
</optional>
|
|
</define>
|
|
<define name="ccidaddress">
|
|
<attribute name="controller">
|
|
<ref name="driveController"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="slot">
|
|
<ref name="driveUnit"/>
|
|
</attribute>
|
|
</optional>
|
|
</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="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"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<ref name="watchdog"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="memballoon"/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<!--
|
|
A set of optional features: PAE, APIC, ACPI, and HAP support
|
|
-->
|
|
<define name="features">
|
|
<optional>
|
|
<element name="features">
|
|
<interleave>
|
|
<optional>
|
|
<element name="pae">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="apic">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="acpi">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="hap">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="viridian">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="privnet">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
<!--
|
|
CPU specification
|
|
-->
|
|
<define name="cpu">
|
|
<element name="cpu">
|
|
<choice>
|
|
<group>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="cpuTopology"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="cpuNuma"/>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<ref name="cpuMode"/>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="cpuModel"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="cpuNuma"/>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<optional>
|
|
<ref name="cpuMode"/>
|
|
</optional>
|
|
<ref name="cpuMatch"/>
|
|
<interleave>
|
|
<ref name="cpuModel"/>
|
|
<optional>
|
|
<ref name="cpuVendor"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="cpuTopology"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="cpuFeature"/>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<ref name="cpuNuma"/>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cpuMode">
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>custom</value>
|
|
<value>host-model</value>
|
|
<value>host-passthrough</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="cpuMatch">
|
|
<attribute name="match">
|
|
<choice>
|
|
<value>minimum</value>
|
|
<value>exact</value>
|
|
<value>strict</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="cpuModel">
|
|
<element name="model">
|
|
<optional>
|
|
<attribute name="fallback">
|
|
<choice>
|
|
<value>allow</value>
|
|
<value>forbid</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<text/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cpuVendor">
|
|
<element name="vendor">
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cpuFeature">
|
|
<element name="feature">
|
|
<attribute name="policy">
|
|
<choice>
|
|
<value>force</value>
|
|
<value>require</value>
|
|
<value>optional</value>
|
|
<value>disable</value>
|
|
<value>forbid</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name="name">
|
|
<ref name="featureName"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cpuTopology">
|
|
<element name="topology">
|
|
<attribute name="sockets">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
<attribute name="cores">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
<attribute name="threads">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cpuNuma">
|
|
<element name="numa">
|
|
<oneOrMore>
|
|
<ref name="numaCell"/>
|
|
</oneOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="numaCell">
|
|
<element name="cell">
|
|
<attribute name="cpus">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
<attribute name="memory">
|
|
<ref name="memoryKB"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
System information specification:
|
|
Placeholder for system specific informations 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">
|
|
<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>
|
|
</interleave>
|
|
</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-value">
|
|
<data type="string">
|
|
<param name='pattern'>[a-zA-Z0-9/\-_\. \(\)]+</param>
|
|
</data>
|
|
</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">
|
|
<attribute name="useserial">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="address">
|
|
<element name="address">
|
|
<choice>
|
|
<group>
|
|
<attribute name="type">
|
|
<value>pci</value>
|
|
</attribute>
|
|
<ref name="pciaddress"/>
|
|
</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>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="rom">
|
|
<element name="rom">
|
|
<optional>
|
|
<attribute name="bar">
|
|
<choice>
|
|
<value>on</value>
|
|
<value>off</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="file">
|
|
<ref name="absFilePath"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="usbmaster">
|
|
<element name="master">
|
|
<attribute name="startport">
|
|
<ref name="usbPort"/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="filterref-node-attributes">
|
|
<attribute name="filter">
|
|
<data type="NCName"/>
|
|
</attribute>
|
|
<optional>
|
|
<element name="parameter">
|
|
<attribute name="name">
|
|
<ref name="filter-param-name"/>
|
|
</attribute>
|
|
<attribute name="value">
|
|
<ref name="filter-param-value"/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name="deviceBoot">
|
|
<element name="boot">
|
|
<attribute name="order">
|
|
<ref name="positiveInteger"/>
|
|
</attribute>
|
|
<empty/>
|
|
</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>
|
|
</choice>
|
|
</attribute>
|
|
<choice>
|
|
<attribute name='uuid'>
|
|
<ref name="UUID"/>
|
|
</attribute>
|
|
<attribute name='usage'>
|
|
<ref name='genericName'/>
|
|
</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>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Optional hypervisor extensions in their own namespace:
|
|
QEmu
|
|
-->
|
|
<define name="qemucmdline">
|
|
<element name="commandline" ns="http://libvirt.org/schemas/domain/qemu/1.0">
|
|
<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>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="metadata">
|
|
<element name="metadata">
|
|
<zeroOrMore>
|
|
<ref name="customElement"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="customElement">
|
|
<element>
|
|
<anyName/>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<attribute>
|
|
<anyName/>
|
|
</attribute>
|
|
<text/>
|
|
<ref name="customElement"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Type library
|
|
-->
|
|
<define name="cpuset">
|
|
<data type="string">
|
|
<param name="pattern">([0-9]+(-[0-9]+)?|\^[0-9]+)(,([0-9]+(-[0-9]+)?|\^[0-9]+))*</param>
|
|
</data>
|
|
</define>
|
|
<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="PortNumber">
|
|
<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>
|
|
<!-- Memory as an attribute is in KiB, no way to express a unit -->
|
|
<define name="memoryKB">
|
|
<data type="unsignedInt">
|
|
<param name="pattern">[0-9]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="domainName">
|
|
<data type="string">
|
|
<!-- Use literal newline instead of \n for bug in libxml2 2.7.6 -->
|
|
<param name="pattern">[^
|
|
]+</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">
|
|
<data type="string">
|
|
<param name="pattern">(([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9])|(([0-9a-fA-F]+|:)+[0-9a-fA-F]+)|([a-zA-Z0-9_\.\+\-]*)</param>
|
|
</data>
|
|
</define>
|
|
<define name="usbId">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
|
|
</data>
|
|
</define>
|
|
<define name="usbAddr">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,3}</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="pciDomain">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
|
|
</data>
|
|
</define>
|
|
<define name="pciBus">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="pciSlot">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-1]?[0-9a-fA-F]</param>
|
|
</data>
|
|
</define>
|
|
<define name="pciFunc">
|
|
<data type="string">
|
|
<param name="pattern">(0x)?[0-7]</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="driveUnit">
|
|
<data type="string">
|
|
<param name="pattern">[0-9]{1,2}</param>
|
|
</data>
|
|
</define>
|
|
<define name="featureName">
|
|
<data type="string">
|
|
<param name='pattern'>[a-zA-Z0-9\-_\.]+</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="filter-param-name">
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9_]+</param>
|
|
</data>
|
|
</define>
|
|
<define name="filter-param-value">
|
|
<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,16}</param>
|
|
</data>
|
|
</define>
|
|
<define name='aliasName'>
|
|
<data type="string">
|
|
<param name="pattern">[a-zA-Z0-9_-]+</param>
|
|
</data>
|
|
</define>
|
|
<define name='alias'>
|
|
<element name='alias'>
|
|
<attribute name='name'>
|
|
<ref name='aliasName'/>
|
|
</attribute>
|
|
</element>
|
|
<empty/>
|
|
</define>
|
|
</grammar>
|