mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-30 18:03:32 +00:00
4a8d9d4953
The custom namespaces were originally registered against the storage pool source struct, but during review this was changed to the top level storage pool struct. The namespace URIs were not updated to match, so had a redundant '/source' component. Reviewed-by: John Ferlan <jferlan@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
732 lines
17 KiB
XML
732 lines
17 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='pooliscsidirect'/>
|
|
<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>
|
|
<optional>
|
|
<ref name='fs_mount_opts'/>
|
|
</optional>
|
|
</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>
|
|
<optional>
|
|
<ref name='fs_mount_opts'/>
|
|
</optional>
|
|
</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='pooliscsidirect'>
|
|
<attribute name='type'>
|
|
<value>iscsi-direct</value>
|
|
</attribute>
|
|
<interleave>
|
|
<ref name='commonmetadata'/>
|
|
<optional>
|
|
<ref name='sizing'/>
|
|
</optional>
|
|
<ref name='sourceiscsidirect'/>
|
|
</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>
|
|
<optional>
|
|
<ref name='rbd_config_opts'/>
|
|
</optional>
|
|
</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='poolName'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='uuid'>
|
|
<ref name='UUID'/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='commonmetadata'>
|
|
<interleave>
|
|
<element name='name'>
|
|
<ref name='poolName'/>
|
|
</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='sourceinfodeviscsidirect'>
|
|
<element name='device'>
|
|
<attribute name='path'>
|
|
<ref name='IscsiQualifiedName'/>
|
|
</attribute>
|
|
</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>
|
|
<element name='protocol'>
|
|
<attribute name='ver'>
|
|
<ref name='unsignedInt'/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<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='sourceiscsidirect'>
|
|
<element name='source'>
|
|
<interleave>
|
|
<ref name='sourceinfohost'/>
|
|
<ref name='sourceinfodeviscsidirect'/>
|
|
<ref name='initiatorinfo'/>
|
|
<optional>
|
|
<ref name='sourceinfoauth'/>
|
|
</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>
|
|
|
|
<!--
|
|
Optional storage pool extensions in their own namespace:
|
|
"fs" or "netfs"
|
|
-->
|
|
|
|
<define name="fs_mount_opts">
|
|
<element name="mount_opts" ns="http://libvirt.org/schemas/storagepool/fs/1.0">
|
|
<zeroOrMore>
|
|
<element name="option">
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<!--
|
|
Optional storage pool extensions in their own namespace:
|
|
RBD
|
|
-->
|
|
|
|
<define name="rbd_config_opts">
|
|
<element name="config_opts" ns="http://libvirt.org/schemas/storagepool/rbd/1.0">
|
|
<zeroOrMore>
|
|
<element name="option">
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
<attribute name='value'>
|
|
<text/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
</grammar>
|