mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-28 08:35:22 +00:00
5ba372306a
* src/domain_conf.c src/domain_conf.h src/qemu_conf.c src/qemu_driver.c: patch from Guido Günther allowing to add disk as USB devices * docs/libvirt.rng: extend the schemas for the new value * tests/qemuxml2argvdata/qemuxml2argv-disk-usb.args tests/qemuxml2argvdata/qemuxml2argv-disk-usb.xml tests/qemuxml2argvtest.c tests/qemuxml2xmltest.c: add a specific test to the regression suite Daniel
1053 lines
23 KiB
XML
1053 lines
23 KiB
XML
<?xml version="1.0" ?>
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<!-- We handle only document defining a domain -->
|
|
<start>
|
|
<ref name='domain'/>
|
|
</start>
|
|
|
|
<!--
|
|
We handle only document defining a domain
|
|
-->
|
|
<define name='domain'>
|
|
<element name="domain">
|
|
<ref name='hvs'/>
|
|
<ref name='ids'/>
|
|
<interleave>
|
|
<ref name='os'/>
|
|
<ref name='clock'/>
|
|
<ref name='resources'/>
|
|
<ref name='features'/>
|
|
<ref name='termination'/>
|
|
<optional>
|
|
<ref name='devices'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='hvs'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>xen</value>
|
|
<value>kvm</value>
|
|
<value>kqemu</value>
|
|
<value>qemu</value>
|
|
<value>lxc</value>
|
|
<value>openvz</value>
|
|
<value>test</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name='os'>
|
|
<choice>
|
|
<ref name='osxen'/>
|
|
<ref name='oshvm'/>
|
|
<ref name='osexe'/>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name='osxen'>
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<ref name='bootloader'/>
|
|
</optional>
|
|
<element name='os'>
|
|
<ref name='ostypexen'/>
|
|
<ref name='osbootkernel'/>
|
|
</element>
|
|
</group>
|
|
<group>
|
|
<ref name='bootloader'/>
|
|
<optional>
|
|
<element name='os'>
|
|
<ref name='ostypexen'/>
|
|
<optional>
|
|
<ref name='osbootkernel'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
</define>
|
|
|
|
|
|
<define name='oshvm'>
|
|
<element name='os'>
|
|
<ref name='ostypehvm'/>
|
|
<interleave>
|
|
<optional>
|
|
<element name='loader'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
</optional>
|
|
<choice>
|
|
<ref name='osbootkernel'/>
|
|
<ref name='osbootdev'/>
|
|
</choice>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
|
|
<define name='ostypexen'>
|
|
<element name='type'>
|
|
<optional>
|
|
<attribute name='arch'>
|
|
<choice>
|
|
<value>i686</value>
|
|
<value>x86_64</value>
|
|
<value>ia64</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name='machine'>
|
|
<choice>
|
|
<value>xenpv</value>
|
|
<value>xenner</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<value>xen</value>
|
|
<value>linux</value>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='ostypehvm'>
|
|
<element name='type'>
|
|
<optional>
|
|
<choice>
|
|
<ref name='hvmx86'/>
|
|
<ref name='hvmmips'/>
|
|
<ref name='hvmsparc'/>
|
|
<ref name='hvmppc'/>
|
|
</choice>
|
|
</optional>
|
|
<value>hvm</value>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='hvmx86'>
|
|
<group>
|
|
<attribute name='arch'>
|
|
<choice>
|
|
<value>i686</value>
|
|
<value>x86_64</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name='machine'>
|
|
<choice>
|
|
<value>xenfv</value>
|
|
<value>pc</value>
|
|
<value>isapc</value>
|
|
</choice>
|
|
</attribute>
|
|
</group>
|
|
</define>
|
|
|
|
<define name='hvmmips'>
|
|
<group>
|
|
<attribute name='arch'>
|
|
<value>mips</value>
|
|
</attribute>
|
|
<attribute name='machine'>
|
|
<value>mips</value>
|
|
</attribute>
|
|
</group>
|
|
</define>
|
|
|
|
<define name='hvmsparc'>
|
|
<group>
|
|
<attribute name='arch'>
|
|
<value>sparc</value>
|
|
</attribute>
|
|
<attribute name='machine'>
|
|
<value>sun4m</value>
|
|
</attribute>
|
|
</group>
|
|
</define>
|
|
|
|
<define name='hvmppc'>
|
|
<group>
|
|
<attribute name='arch'>
|
|
<value>ppc</value>
|
|
</attribute>
|
|
<attribute name='machine'>
|
|
<choice>
|
|
<value>g3bw</value>
|
|
<value>mac99</value>
|
|
<value>prep</value>
|
|
</choice>
|
|
</attribute>
|
|
</group>
|
|
</define>
|
|
|
|
|
|
<define name='osexe'>
|
|
<element name='os'>
|
|
<element name='type'>
|
|
<value>exe</value>
|
|
</element>
|
|
<interleave>
|
|
<optional>
|
|
<element name='init'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
|
|
|
|
<!--
|
|
The Identifiers can be:
|
|
- an optional id attribute with a number on the domain element
|
|
- a mandatory name
|
|
- an optional uuid
|
|
-->
|
|
<define name='ids'>
|
|
<optional>
|
|
<attribute name='id'>
|
|
<ref name='unsignedInt'/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<element name="name">
|
|
<ref name='domainName'/>
|
|
</element>
|
|
<optional>
|
|
<element name="uuid">
|
|
<ref name='UUID'/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<!--
|
|
Resources usage defines the amount of memory (maximum and possibly
|
|
current usage) and number of virtual CPUs used by that domain.
|
|
We can't check here the rule that currentMemory <= memory
|
|
-->
|
|
|
|
<define name='resources'>
|
|
<interleave>
|
|
<element name='memory'>
|
|
<ref name='memoryKB'/>
|
|
</element>
|
|
<optional>
|
|
<element name='currentMemory'>
|
|
<ref name='memoryKB'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='vcpu'>
|
|
<optional>
|
|
<attribute name='cpuset' />
|
|
</optional>
|
|
<ref name='countCPU'/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='clock'>
|
|
<optional>
|
|
<element name='clock'>
|
|
<attribute name='offset'>
|
|
<choice>
|
|
<value>localtime</value>
|
|
<value>utc</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<!--
|
|
A bootloader may be used to extract the OS information instead of
|
|
defining the OS parameter in the instance. It points just to the
|
|
binary or script used to extract the data from the first disk device.
|
|
-->
|
|
<define name='bootloader'>
|
|
<interleave>
|
|
<element name='bootloader'>
|
|
<choice>
|
|
<ref name='absFilePath'/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
<optional>
|
|
<element name='bootloader_args'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='osbootkernel'>
|
|
<interleave>
|
|
<element name='kernel'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
<optional>
|
|
<element name='initrd'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='root'>
|
|
<ref name='devicePath'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='cmdline'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='osbootdev'>
|
|
<element name='boot'>
|
|
<attribute name='dev'>
|
|
<choice>
|
|
<value>hd</value>
|
|
<value>fd</value>
|
|
<value>cdrom</value>
|
|
<value>network</value>
|
|
</choice>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
|
|
<define name='diskspec'>
|
|
<optional>
|
|
<ref name='driver'/>
|
|
</optional>
|
|
<ref name='target'/>
|
|
<optional>
|
|
<element name='readonly'>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='shareable'>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<!--
|
|
A disk description can be either of type file or block
|
|
The name of the attribute on the source element depends on the type
|
|
|
|
-->
|
|
<define name='disk'>
|
|
<element name='disk'>
|
|
<optional>
|
|
<attribute name='device'>
|
|
<choice>
|
|
<value>floppy</value>
|
|
<value>disk</value>
|
|
<value>cdrom</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<choice>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>file</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name='source'>
|
|
<attribute name='file'>
|
|
<ref name='absFilePath'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name='diskspec'/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>block</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name='source'>
|
|
<attribute name='dev'>
|
|
<ref name='deviceName'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name='diskspec'/>
|
|
</interleave>
|
|
</group>
|
|
<ref name='diskspec'/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='target'>
|
|
<element name='target'>
|
|
<attribute name='dev'>
|
|
<ref name='deviceName'/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name='bus'>
|
|
<choice>
|
|
<value>ide</value>
|
|
<value>virtio</value>
|
|
<value>fdc</value>
|
|
<value>xen</value>
|
|
<value>usb</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Disk may use a special driver for access. Currently this is
|
|
only defined for Xen for tap/aio and file, but will certainly be
|
|
extended in the future, and libvirt doesn't look for specific values.
|
|
-->
|
|
<define name='driver'>
|
|
<element name='driver'>
|
|
<attribute name='name'>
|
|
<ref name='genericName'/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name='type'>
|
|
<ref name='genericName'/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='filesystem'>
|
|
<element name='filesystem'>
|
|
<choice>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>file</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name='source'>
|
|
<attribute name='file'>
|
|
<ref name='absFilePath'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name='filesystemtgt'/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>block</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name='source'>
|
|
<attribute name='dev'>
|
|
<ref name='deviceName'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name='filesystemtgt'/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>mount</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name='source'>
|
|
<attribute name='dir'>
|
|
<ref name='absFilePath'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name='filesystemtgt'/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>template</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name='source'>
|
|
<attribute name='name'>
|
|
<ref name='genericName'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name='filesystemtgt'/>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='filesystemtgt'>
|
|
<element name='target'>
|
|
<attribute name='dir'>
|
|
<ref name='absDirPath'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
An interface description can either be of type bridge in which case
|
|
it will use a bridging source, or of type ethernet which uses a device
|
|
source and a device target instead. They both share a set of interface
|
|
options. FIXME
|
|
-->
|
|
<define name='interface'>
|
|
<element name='interface'>
|
|
<choice>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>bridge</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name='source'>
|
|
<attribute name='bridge'>
|
|
<ref name='deviceName'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name='interface-options'/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>ethernet</value>
|
|
</attribute>
|
|
<interleave>
|
|
<optional>
|
|
<element name='source'>
|
|
<attribute name='dev'>
|
|
<ref name='deviceName'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<ref name='interface-options'/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>network</value>
|
|
</attribute>
|
|
<interleave>
|
|
<element name='source'>
|
|
<attribute name='network'>
|
|
<ref name='deviceName'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
<ref name='interface-options'/>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>user</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='interface-options'/>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
The interface options possible are:
|
|
- the MAC address
|
|
- the IP address bound to the interface
|
|
- the name of the script used to set up the binding
|
|
- the target device used
|
|
-->
|
|
<define name='interface-options'>
|
|
<interleave>
|
|
<optional>
|
|
<element name='target'>
|
|
<attribute name='dev'>
|
|
<ref name='deviceName'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='mac'>
|
|
<attribute name='address'>
|
|
<ref name='addrMAC'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='ip'>
|
|
<attribute name='address'>
|
|
<ref name='addrIP'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='script'>
|
|
<attribute name='path'>
|
|
<ref name='filePath'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='model'>
|
|
<attribute name='type' />
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<!--
|
|
An emulator description is just a path to the binary used for the task
|
|
-->
|
|
<define name='emulator'>
|
|
<element name='emulator'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
A graphic description, currently in Xen only 2 types are supported:
|
|
- sdl without arguments
|
|
- vnc with a required port and optional listen IP address, password
|
|
and keymap
|
|
-->
|
|
<define name='graphic'>
|
|
<element name='graphics'>
|
|
<choice>
|
|
<attribute name='type'>
|
|
<value>sdl</value>
|
|
</attribute>
|
|
<group>
|
|
<attribute name='type'>
|
|
<value>vnc</value>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name='port'>
|
|
<ref name='PortNumber'/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name='autoport'>
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name='listen'>
|
|
<ref name='addrIP'/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name='passwd'>
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name='keymap'>
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
When a domain terminates multiple policies can be applied depending
|
|
on how it ended:
|
|
-->
|
|
<define name='termination'>
|
|
<interleave>
|
|
<optional>
|
|
<element name='on_reboot'>
|
|
<ref name='offOptions'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='on_poweroff'>
|
|
<ref name='offOptions'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='on_crash'>
|
|
<ref name='offOptions'/>
|
|
</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>
|
|
|
|
<!--
|
|
Specific setup for a qemu emulated character device. Note: this
|
|
definition doesn't fully specify the constraints on this node.
|
|
-->
|
|
<define name='qemucdev'>
|
|
<attribute name='type'>
|
|
<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>
|
|
</choice>
|
|
</attribute>
|
|
|
|
<interleave>
|
|
<optional>
|
|
<oneOrMore>
|
|
<element name='source'>
|
|
<optional>
|
|
<attribute name='mode' />
|
|
</optional>
|
|
<optional>
|
|
<attribute name='path' />
|
|
</optional>
|
|
<optional>
|
|
<attribute name='host' />
|
|
</optional>
|
|
<optional>
|
|
<attribute name='service' />
|
|
</optional>
|
|
<optional>
|
|
<attribute name='wiremode' />
|
|
</optional>
|
|
</element>
|
|
</oneOrMore>
|
|
</optional>
|
|
<optional>
|
|
<element name='protocol'>
|
|
<optional>
|
|
<attribute name='type' />
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='target'>
|
|
<optional>
|
|
<attribute name='port' />
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<!--
|
|
The description for a console
|
|
just a tty device
|
|
-->
|
|
<define name='console'>
|
|
<element name='console'>
|
|
<choice>
|
|
<group>
|
|
<optional>
|
|
<attribute name='tty'>
|
|
<ref name='devicePath'/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</group>
|
|
<ref name='qemucdev' />
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sound'>
|
|
<element name='sound'>
|
|
<attribute name='model'>
|
|
<choice>
|
|
<value>sb16</value>
|
|
<value>es1370</value>
|
|
<value>pcspk</value>
|
|
</choice>
|
|
</attribute>
|
|
</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='input'>
|
|
<element name='input'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>tablet</value>
|
|
<value>mouse</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name='bus'>
|
|
<choice>
|
|
<value>ps2</value>
|
|
<value>usb</value>
|
|
<value>xen</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='hostdev'>
|
|
<element name='hostdev'>
|
|
<optional>
|
|
<attribute name='mode'>
|
|
<choice>
|
|
<value>subsystem</value>
|
|
<value>capabilities</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>usb</value>
|
|
<value>pci</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<group>
|
|
<element name='source'>
|
|
<choice>
|
|
<ref name="usbproduct"/>
|
|
<ref name="usbaddress"/>
|
|
</choice>
|
|
</element>
|
|
</group>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="usbproduct">
|
|
<element name="vendor">
|
|
<attribute name="id">
|
|
<ref name="usbId"/>
|
|
</attribute>
|
|
</element>
|
|
<element name="product">
|
|
<attribute name="id">
|
|
<ref name="usbId"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="usbaddress">
|
|
<element name="address">
|
|
<attribute name="bus">
|
|
<ref name="usbAddr"/>
|
|
</attribute>
|
|
<attribute name="device">
|
|
<ref name="usbAddr"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Devices attached to a domain.
|
|
-->
|
|
<define name='devices'>
|
|
<element name='devices'>
|
|
<interleave>
|
|
<optional>
|
|
<ref name='emulator'/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name='graphic'/>
|
|
<ref name='disk'/>
|
|
<ref name='filesystem'/>
|
|
<ref name='interface'/>
|
|
<ref name='console'/>
|
|
<ref name='sound'/>
|
|
<ref name='parallel'/>
|
|
<ref name='serial'/>
|
|
<ref name='input'/>
|
|
<ref name='hostdev'/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
A set of optional features: PAE, APIC and ACPI support
|
|
-->
|
|
<define name='features'>
|
|
<optional>
|
|
<element name="features">
|
|
<interleave>
|
|
<optional>
|
|
<element name="pae">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="apic">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="acpi">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<!--
|
|
Type library
|
|
|
|
Our unsignedInt doesn't allow a leading '+' in its lexical form
|
|
A domain name shoul be made of ascii, numbers, _-+ and is non-empty
|
|
UUID currently allows only the 32 characters strict syntax
|
|
memoryKB request at least 4Mbytes though Xen will grow bigger if too low
|
|
-->
|
|
<define name='unsignedInt'>
|
|
<data type='unsignedInt'>
|
|
<param name="pattern">[0-9]+</param>
|
|
</data>
|
|
</define>
|
|
<define name='countCPU'>
|
|
<data type='unsignedShort'>
|
|
<param name="pattern">[0-9]+</param>
|
|
<param name="minInclusive">1</param>
|
|
</data>
|
|
</define>
|
|
<define name='PortNumber'>
|
|
<data type='short'>
|
|
<param name="minInclusive">-1</param>
|
|
</data>
|
|
</define>
|
|
<define name='memoryKB'>
|
|
<data type='unsignedInt'>
|
|
<param name="pattern">[0-9]+</param>
|
|
<param name="minInclusive">4000</param>
|
|
</data>
|
|
</define>
|
|
<define name='domainName'>
|
|
<data type='string'>
|
|
<param name="pattern">[A-Za-z0-9_\.\+\-&:/]+</param>
|
|
</data>
|
|
</define>
|
|
<define name='genericName'>
|
|
<data type='string'>
|
|
<param name="pattern">[a-zA-Z0-9_\+\-]+</param>
|
|
</data>
|
|
</define>
|
|
<define name='UUID'>
|
|
<choice>
|
|
<data type='string'>
|
|
<param name="pattern">[a-fA-F0-9]{32}</param>
|
|
</data>
|
|
<data type='string'>
|
|
<param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
|
|
</data>
|
|
</choice>
|
|
</define>
|
|
<define name='filePath'>
|
|
<data type='string'>
|
|
<param name="pattern">[a-zA-Z0-9_\.\+\-&/%]+</param>
|
|
</data>
|
|
</define>
|
|
<define name='absFilePath'>
|
|
<data type='string'>
|
|
<param name="pattern">/[a-zA-Z0-9_\.\+\-&/%]+</param>
|
|
</data>
|
|
</define>
|
|
<define name='absDirPath'>
|
|
<data type='string'>
|
|
<param name="pattern">/[a-zA-Z0-9_\.\+\-&/%]*</param>
|
|
</data>
|
|
</define>
|
|
<define name='devicePath'>
|
|
<data type='string'>
|
|
<param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
|
|
</data>
|
|
</define>
|
|
<define name='deviceName'>
|
|
<data type='string'>
|
|
<param name="pattern">[a-zA-Z0-9_\.\-:/]+</param>
|
|
</data>
|
|
</define>
|
|
<define name='addrMAC'>
|
|
<data type='string'>
|
|
<param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param>
|
|
</data>
|
|
</define>
|
|
<define name='addrIP'>
|
|
<data type='string'>
|
|
<param name="pattern">([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9]</param>
|
|
</data>
|
|
</define>
|
|
<define name='usbId'>
|
|
<data type='string'>
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
|
|
</data>
|
|
</define>
|
|
<define name='usbAddr'>
|
|
<data type='string'>
|
|
<param name="pattern">(0x)?[0-9a-fA-F]{1,3}</param>
|
|
</data>
|
|
</define>
|
|
</grammar>
|