diff options
author | Stephan Schwär | 2021-02-19 00:09:54 +0100 |
---|---|---|
committer | Stephan Schwär | 2021-02-19 00:09:54 +0100 |
commit | 62dce8c2b4e519f689e89038ff2afe4496f60628 (patch) | |
tree | 7c6802a436e2beb943065b5a377b61eb77d93170 /src/main/resources/libvirt/rng/domaincommon.rng | |
parent | [docker] Check recieved content. (diff) | |
parent | Add automatic RelaxNG schema validation for Libvirt domain XML documents (diff) | |
download | master-sync-shared-62dce8c2b4e519f689e89038ff2afe4496f60628.tar.gz master-sync-shared-62dce8c2b4e519f689e89038ff2afe4496f60628.tar.xz master-sync-shared-62dce8c2b4e519f689e89038ff2afe4496f60628.zip |
Merge remote-tracking branch 'origin/feature/qemu-integration'
Diffstat (limited to 'src/main/resources/libvirt/rng/domaincommon.rng')
-rw-r--r-- | src/main/resources/libvirt/rng/domaincommon.rng | 7270 |
1 files changed, 7270 insertions, 0 deletions
diff --git a/src/main/resources/libvirt/rng/domaincommon.rng b/src/main/resources/libvirt/rng/domaincommon.rng new file mode 100644 index 0000000..7dc419b --- /dev/null +++ b/src/main/resources/libvirt/rng/domaincommon.rng @@ -0,0 +1,7270 @@ +<?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> + </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"/> + </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="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="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> + <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> + </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> + <!-- + 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> + </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> + <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> + </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> |