diff options
Diffstat (limited to 'src/main/resources/libvirt/rng/storagepool.rng')
-rw-r--r-- | src/main/resources/libvirt/rng/storagepool.rng | 786 |
1 files changed, 786 insertions, 0 deletions
diff --git a/src/main/resources/libvirt/rng/storagepool.rng b/src/main/resources/libvirt/rng/storagepool.rng new file mode 100644 index 0000000..63a8b75 --- /dev/null +++ b/src/main/resources/libvirt/rng/storagepool.rng @@ -0,0 +1,786 @@ +<?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="features"/> + <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="features"/> + <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="features"/> + <ref name="sourcenetfs"/> + <ref name="target"/> + <optional> + <ref name="fs_mount_opts"/> + </optional> + </interleave> + </define> + + <define name="poollogical"> + <attribute name="type"> + <value>logical</value> + </attribute> + <interleave> + <ref name="commonMetadataNameOptional"/> + <ref name="sizing"/> + <ref name="features"/> + <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="features"/> + <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="features"/> + <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="features"/> + <ref name="sourceiscsidirect"/> + </interleave> + </define> + + <define name="poolscsi"> + <attribute name="type"> + <value>scsi</value> + </attribute> + <interleave> + <ref name="commonmetadata"/> + <ref name="sizing"/> + <ref name="features"/> + <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"/> + <ref name="features"/> + <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="features"/> + <ref name="sourcerbd"/> + <ref name="refresh"/> + <optional> + <ref name="rbd_config_opts"/> + </optional> + </interleave> + </define> + + <define name="poolsheepdog"> + <attribute name="type"> + <value>sheepdog</value> + </attribute> + <interleave> + <ref name="commonMetadataNameOptional"/> + <ref name="sizing"/> + <ref name="features"/> + <ref name="sourcesheepdog"/> + </interleave> + </define> + + <define name="poolgluster"> + <attribute name="type"> + <value>gluster</value> + </attribute> + <interleave> + <ref name="commonMetadataNameOptional"/> + <ref name="sizing"/> + <ref name="features"/> + <ref name="sourcegluster"/> + </interleave> + </define> + + <define name="poolzfs"> + <attribute name="type"> + <value>zfs</value> + </attribute> + <interleave> + <ref name="commonMetadataNameOptional"/> + <ref name="sizing"/> + <ref name="features"/> + <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="features"/> + <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="objectName"/> + </element> + </optional> + <optional> + <element name="uuid"> + <ref name="UUID"/> + </element> + </optional> + </interleave> + </define> + + <define name="commonmetadata"> + <interleave> + <element name="name"> + <ref name="objectName"/> + </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="features"> + <optional> + <element name="features"> + <interleave> + <optional> + <element name="cow"> + <attribute name="state"> + <ref name="virYesNo"/> + </attribute> + </element> + </optional> + </interleave> + </element> + </optional> + </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"> + <choice> + <ref name="dnsName"/> + <ref name="ipAddr"/> + </choice> + </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> + <value>vmfs</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"/> + </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> + + <define name="refresh"> + <optional> + <element name="refresh"> + <interleave> + <ref name="refreshVolume"/> + </interleave> + </element> + </optional> + </define> + + <define name="refreshVolume"> + <optional> + <element name="volume"> + <optional> + <attribute name="allocation"> + <ref name="refreshVolumeAllocation"/> + </attribute> + </optional> + </element> + </optional> + </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> |