mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-03 20:01:16 +00:00
8ef12b96fa
Pool types that have the VIR_STORAGE_POOL_SOURCE_NAME flag set allow omitting the <name> element and instead fill out the pool name from the <source><name> element. Relax the schema to make <name> optional for these pools. Expressing that at least one of these is required is out of scope of the schema.
655 lines
15 KiB
XML
655 lines
15 KiB
XML
<?xml version="1.0"?>
|
|
<!-- A Relax NG schema for the libvirt storage pool XML format -->
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<include href='basictypes.rng'/>
|
|
<include href='storagecommon.rng'/>
|
|
<start>
|
|
<ref name='pool'/>
|
|
</start>
|
|
|
|
|
|
<define name='pool'>
|
|
<element name='pool'>
|
|
<choice>
|
|
<ref name='pooldir'/>
|
|
<ref name='poolfs'/>
|
|
<ref name='poolnetfs'/>
|
|
<ref name='poollogical'/>
|
|
<ref name='pooldisk'/>
|
|
<ref name='pooliscsi'/>
|
|
<ref name='poolscsi'/>
|
|
<ref name='poolmpath'/>
|
|
<ref name='poolrbd'/>
|
|
<ref name='poolsheepdog'/>
|
|
<ref name='poolgluster'/>
|
|
<ref name='poolzfs'/>
|
|
<ref name='poolvstorage'/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='pooldir'>
|
|
<attribute name='type'>
|
|
<value>dir</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcedir'/>
|
|
<ref name='target'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolfs'>
|
|
<attribute name='type'>
|
|
<value>fs</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcefs'/>
|
|
<ref name='target'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolnetfs'>
|
|
<attribute name='type'>
|
|
<value>netfs</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcenetfs'/>
|
|
<ref name='target'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poollogical'>
|
|
<attribute name='type'>
|
|
<value>logical</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonMetadataNameOptional'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcelogical'/>
|
|
<ref name='targetlogical'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='pooldisk'>
|
|
<attribute name='type'>
|
|
<value>disk</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcedisk'/>
|
|
<ref name='target'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='pooliscsi'>
|
|
<attribute name='type'>
|
|
<value>iscsi</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourceiscsi'/>
|
|
<ref name='target'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolscsi'>
|
|
<attribute name='type'>
|
|
<value>scsi</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcescsi'/>
|
|
<ref name='target'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolmpath'>
|
|
<attribute name='type'>
|
|
<value>mpath</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<optional>
|
|
<ref name='sourcempath'/>
|
|
</optional>
|
|
<ref name='target'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolrbd'>
|
|
<attribute name='type'>
|
|
<value>rbd</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonMetadataNameOptional'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcerbd'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolsheepdog'>
|
|
<attribute name='type'>
|
|
<value>sheepdog</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonMetadataNameOptional'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcesheepdog'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolgluster'>
|
|
<attribute name='type'>
|
|
<value>gluster</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonMetadataNameOptional'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcegluster'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolzfs'>
|
|
<attribute name='type'>
|
|
<value>zfs</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonMetadataNameOptional'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcezfs'/>
|
|
<optional>
|
|
<ref name='target'/>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='poolvstorage'>
|
|
<attribute name='type'>
|
|
<value>vstorage</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonMetadataNameOptional'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcevstorage'/>
|
|
<ref name='target'/>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='sourceinfovendor'>
|
|
<interleave>
|
|
<optional>
|
|
<element name='vendor'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='product'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='commonMetadataNameOptional'>
|
|
<interleave>
|
|
<optional>
|
|
<element name='name'>
|
|
<ref name='genericName'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='uuid'>
|
|
<ref name='UUID'/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='commonmetadata'>
|
|
<interleave>
|
|
<element name='name'>
|
|
<ref name='genericName'/>
|
|
</element>
|
|
<optional>
|
|
<element name='uuid'>
|
|
<ref name='UUID'/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='sizing'>
|
|
<interleave>
|
|
<optional>
|
|
<element name='capacity'>
|
|
<ref name='scaledInteger'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='allocation'>
|
|
<ref name='scaledInteger'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='available'>
|
|
<ref name='scaledInteger'/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='target'>
|
|
<element name='target'>
|
|
<interleave>
|
|
<element name='path'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
<ref name='permissions'/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='targetlogical'>
|
|
<element name='target'>
|
|
<interleave>
|
|
<optional>
|
|
<element name='path'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
</optional>
|
|
<ref name='permissions'/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfohost'>
|
|
<oneOrMore>
|
|
<element name='host'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name='port'>
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</oneOrMore>
|
|
</define>
|
|
|
|
<define name='sourceinfodev'>
|
|
<element name='device'>
|
|
<attribute name='path'>
|
|
<choice>
|
|
<ref name='absFilePath'/>
|
|
<ref name='genericName'/>
|
|
<ref name='IscsiQualifiedName'/>
|
|
</choice>
|
|
</attribute>
|
|
<choice>
|
|
<empty/>
|
|
<ref name='devextents'/>
|
|
</choice>
|
|
<optional>
|
|
<attribute name="part_separator">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='initiatorinfo'>
|
|
<element name='initiator'>
|
|
<element name='iqn'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='devextents'>
|
|
<oneOrMore>
|
|
<element name='freeExtent'>
|
|
<attribute name='start'>
|
|
<ref name='unsignedLong'/>
|
|
</attribute>
|
|
<attribute name='end'>
|
|
<ref name='unsignedLong'/>
|
|
</attribute>
|
|
</element>
|
|
</oneOrMore>
|
|
</define>
|
|
|
|
<define name='sourceinfodir'>
|
|
<element name='dir'>
|
|
<attribute name='path'>
|
|
<ref name='absDirPath'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfonetrelativepath'>
|
|
<element name='dir'>
|
|
<attribute name='path'>
|
|
<ref name='dirPath'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfoname'>
|
|
<element name='name'>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfoauth'>
|
|
<element name='auth'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>chap</value>
|
|
<value>ceph</value>
|
|
</choice>
|
|
</attribute>
|
|
<attribute name='username'>
|
|
<text/>
|
|
</attribute>
|
|
<ref name='sourceinfoauthsecret'/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfoauthsecret'>
|
|
<element name='secret'>
|
|
<choice>
|
|
<attribute name='uuid'>
|
|
<text/>
|
|
</attribute>
|
|
<attribute name='usage'>
|
|
<text/>
|
|
</attribute>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcezfs'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfoname'/>
|
|
<optional>
|
|
<ref name='sourceinfodev'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcevstorage'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfoname'/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcefmtfs'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>ext2</value>
|
|
<value>ext3</value>
|
|
<value>ext4</value>
|
|
<value>ufs</value>
|
|
<value>iso9660</value>
|
|
<value>udf</value>
|
|
<value>gfs</value>
|
|
<value>gfs2</value>
|
|
<value>vfat</value>
|
|
<value>hfs+</value>
|
|
<value>xfs</value>
|
|
<value>ocfs2</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
|
|
<define name='sourcefmtnetfs'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>nfs</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
|
|
<define name='sourcefmtdisk'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>unknown</value>
|
|
<value>dos</value>
|
|
<value>dvh</value>
|
|
<value>gpt</value>
|
|
<value>mac</value>
|
|
<value>bsd</value>
|
|
<value>pc98</value>
|
|
<value>sun</value>
|
|
<value>lvm2</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
|
|
<define name='sourcefmtlogical'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>unknown</value> <!-- back-compat requires keeping 'unknown' not 'auto' -->
|
|
<value>lvm2</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
|
|
<define name='sourcedir'>
|
|
<optional>
|
|
<element name='source'>
|
|
<empty/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='sourcefs'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfodev'/>
|
|
<ref name='sourcefmtfs'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcenetfs'>
|
|
<element name='source'>
|
|
<choice>
|
|
<group>
|
|
<interleave>
|
|
<ref name='sourceinfohost'/>
|
|
<ref name='sourceinfodir'/>
|
|
<ref name='sourcefmtnetfs'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
<group>
|
|
<interleave>
|
|
<ref name='sourceinfohost'/>
|
|
<ref name='sourceinfonetrelativepath'/>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>cifs</value>
|
|
<value>glusterfs</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcelogical'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<oneOrMore>
|
|
<optional>
|
|
<ref name='sourceinfoname'/>
|
|
</optional>
|
|
<optional>
|
|
<ref name='sourceinfodev'/>
|
|
</optional>
|
|
</oneOrMore>
|
|
<ref name='sourcefmtlogical'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcedisk'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfodev'/>
|
|
<ref name='sourcefmtdisk'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceiscsi'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfohost'/>
|
|
<ref name='sourceinfodev'/>
|
|
<optional>
|
|
<ref name='initiatorinfo'/>
|
|
</optional>
|
|
<optional>
|
|
<ref name='sourceinfoauth'/>
|
|
</optional>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcescsi'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfoadapter'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcempath'>
|
|
<element name='source'>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcerbd'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfoname'/>
|
|
<ref name='sourceinfohost'/>
|
|
<optional>
|
|
<ref name='sourceinfoauth'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcesheepdog'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfohost'/>
|
|
<ref name='sourceinfoname'/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcegluster'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfohost'/>
|
|
<ref name='sourceinfoname'/>
|
|
<optional>
|
|
<ref name='sourceinfodir'/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='IscsiQualifiedName'>
|
|
<data type='string'>
|
|
<param name="pattern">iqn\.[0-9]{4}-(0[1-9]|1[0-2])\.[a-zA-Z0-9\.\-]+(:.+)?</param>
|
|
</data>
|
|
</define>
|
|
|
|
</grammar>
|