提交 fec1a939 编写于 作者: E Eric Blake 提交者: Jiri Denemark

conf: split <disk> schema into more pieces

To make <disk> schema more maintainable and to allow for moving the
pieces to a common file in the future. It relies on the ability to
override definitions as part of an include, set up in the previous
patch.

The diff is a bit hard to read, because it mixes reindentation
with refactoring; 'git diff -b --patience' may help.

* docs/schemas/domaincommon.rng (disk): Refactor into pieces.
(diskSource, diskSourceFile, diskSourceBlock, diskSourceDir)
(diskSourceVolume: New defines.
(diskSourceNetwork): Revise scope.
* docs/schemas/domainsnapshot.rng (disksnapshot): Adjust.
* tests/domainsnapshotxml2xmlin/disk-seclabel-invalid.xml,
tests/domainsnapshotxml2xmlin/disk-network-seclabel-invalid.xml: New
tests to check seclabel is forbidden in domain snapshot by schema.
Signed-off-by: NEric Blake <eblake@redhat.com>
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 369cdfa8
...@@ -1196,176 +1196,187 @@ ...@@ -1196,176 +1196,187 @@
<optional> <optional>
<ref name="snapshot"/> <ref name="snapshot"/>
</optional> </optional>
<interleave> <ref name="diskSource"/>
<choice> </element>
<group> </define>
<optional>
<attribute name="type"> <define name="diskSource">
<value>file</value> <choice>
</attribute> <ref name="diskSourceFile"/>
</optional> <ref name="diskSourceBlock"/>
<interleave> <ref name="diskSourceDir"/>
<optional> <ref name="diskSourceNetwork"/>
<element name="source"> <ref name="diskSourceVolume"/>
<optional> </choice>
<attribute name="file"> </define>
<ref name="absFilePath"/>
</attribute> <define name="diskSourceFile">
</optional> <optional>
<optional> <attribute name="type">
<ref name="storageStartupPolicy"/> <value>file</value>
</optional> </attribute>
<optional> </optional>
<ref name='devSeclabel'/> <interleave>
</optional> <optional>
</element> <element name="source">
</optional> <optional>
</interleave> <attribute name="file">
</group> <ref name="absFilePath"/>
<group>
<attribute name="type">
<value>block</value>
</attribute>
<interleave>
<optional>
<element name="source">
<optional>
<attribute name="dev">
<ref name="absFilePath"/>
</attribute>
</optional>
<optional>
<ref name="storageStartupPolicy"/>
</optional>
<optional>
<ref name='devSeclabel'/>
</optional>
</element>
</optional>
</interleave>
</group>
<group>
<attribute name="type">
<value>dir</value>
</attribute>
<interleave>
<optional>
<element name="source">
<attribute name="dir">
<ref name="absFilePath"/>
</attribute>
<optional>
<ref name="storageStartupPolicy"/>
</optional>
<empty/>
</element>
</optional>
</interleave>
</group>
<group>
<attribute name="type">
<value>network</value>
</attribute> </attribute>
<interleave> </optional>
<optional> <optional>
<element name="source"> <ref name="storageStartupPolicy"/>
<ref name='diskSourceNetwork'/> </optional>
</element> <optional>
</optional> <ref name='devSeclabel'/>
</interleave> </optional>
</group> </element>
<group> </optional>
<attribute name="type"> <ref name='storageSourceExtra'/>
<value>volume</value> </interleave>
</define>
<define name="diskSourceBlock">
<attribute name="type">
<value>block</value>
</attribute>
<interleave>
<optional>
<element name="source">
<optional>
<attribute name="dev">
<ref name="absFilePath"/>
</attribute> </attribute>
<interleave> </optional>
<optional> <optional>
<element name="source"> <ref name="storageStartupPolicy"/>
<attribute name="pool"> </optional>
<ref name="genericName"/> <optional>
<ref name='devSeclabel'/>
</optional>
</element>
</optional>
<ref name='storageSourceExtra'/>
</interleave>
</define>
<define name="diskSourceDir">
<attribute name="type">
<value>dir</value>
</attribute>
<interleave>
<optional>
<element name="source">
<attribute name="dir">
<ref name="absFilePath"/>
</attribute>
<optional>
<ref name="storageStartupPolicy"/>
</optional>
<empty/>
</element>
</optional>
<ref name='storageSourceExtra'/>
</interleave>
</define>
<define name="diskSourceNetwork">
<attribute name="type">
<value>network</value>
</attribute>
<interleave>
<element name="source">
<attribute name="protocol">
<choice>
<value>nbd</value>
<value>rbd</value>
<value>sheepdog</value>
<value>gluster</value>
<value>iscsi</value>
<value>http</value>
<value>https</value>
<value>ftp</value>
<value>ftps</value>
<value>tftp</value>
</choice>
</attribute>
<optional>
<attribute name="name"/>
</optional>
<zeroOrMore>
<element name="host">
<choice>
<group>
<optional>
<attribute name="transport">
<choice>
<value>tcp</value>
<value>rdma</value>
</choice>
</attribute> </attribute>
<attribute name="volume"> </optional>
<ref name="volName"/> <attribute name="name">
<choice>
<ref name="dnsName"/>
<ref name="ipAddr"/>
</choice>
</attribute>
<optional>
<attribute name="port">
<ref name="unsignedInt"/>
</attribute> </attribute>
<optional> </optional>
<attribute name="mode"> </group>
<choice> <group>
<value>host</value> <attribute name="transport">
<value>direct</value> <value>unix</value>
</choice> </attribute>
</attribute> <attribute name="socket">
</optional> <ref name="absFilePath"/>
<optional> </attribute>
<ref name="storageStartupPolicy"/> </group>
</optional> </choice>
<optional> </element>
<ref name='devSeclabel'/> </zeroOrMore>
</optional> <empty/>
</element> </element>
</optional> <ref name='storageSourceExtra'/>
</interleave> </interleave>
</group>
</choice>
<ref name="storageSourceExtra"/>
</interleave>
</element>
</define> </define>
<define name="diskSourceNetwork"> <define name="diskSourceVolume">
<attribute name="protocol"> <attribute name="type">
<choice> <value>volume</value>
<value>nbd</value>
<value>rbd</value>
<value>sheepdog</value>
<value>gluster</value>
<value>iscsi</value>
<value>http</value>
<value>https</value>
<value>ftp</value>
<value>ftps</value>
<value>tftp</value>
</choice>
</attribute> </attribute>
<optional> <interleave>
<attribute name="name"/> <optional>
</optional> <element name="source">
<zeroOrMore> <attribute name="pool">
<element name="host"> <ref name="genericName"/>
<choice> </attribute>
<group> <attribute name="volume">
<optional> <ref name="volName"/>
<attribute name="transport"> </attribute>
<choice> <optional>
<value>tcp</value> <attribute name="mode">
<value>rdma</value>
</choice>
</attribute>
</optional>
<attribute name="name">
<choice> <choice>
<ref name="dnsName"/> <value>host</value>
<ref name="ipAddr"/> <value>direct</value>
</choice> </choice>
</attribute> </attribute>
<optional> </optional>
<attribute name="port"> <optional>
<ref name="unsignedInt"/> <ref name="storageStartupPolicy"/>
</attribute> </optional>
</optional> <optional>
</group> <ref name='devSeclabel'/>
<group> </optional>
<attribute name="transport"> </element>
<value>unix</value> </optional>
</attribute> <ref name='storageSourceExtra'/>
<attribute name="socket"> </interleave>
<ref name="absFilePath"/>
</attribute>
</group>
</choice>
</element>
</zeroOrMore>
<empty/>
</define> </define>
<define name="diskTarget"> <define name="diskTarget">
<data type="string"> <data type="string">
<param name="pattern">(ioemu:)?(fd|hd|sd|vd|xvd|ubd)[a-zA-Z0-9_]+</param> <param name="pattern">(ioemu:)?(fd|hd|sd|vd|xvd|ubd)[a-zA-Z0-9_]+</param>
......
...@@ -173,19 +173,7 @@ ...@@ -173,19 +173,7 @@
<ref name='storageSourceExtra'/> <ref name='storageSourceExtra'/>
</interleave> </interleave>
</group> </group>
<group> <ref name='diskSourceNetwork'/>
<attribute name="type">
<value>network</value>
</attribute>
<interleave>
<optional>
<element name="source">
<ref name='diskSourceNetwork'/>
</element>
</optional>
<ref name='storageSourceExtra'/>
</interleave>
</group>
</choice> </choice>
</group> </group>
</choice> </choice>
......
<domainsnapshot>
<name>my snap name</name>
<description>!@#$%^</description>
<disks>
<disk name='hdg' snapshot='external' type='network'>
<source protocol='gluster' name='volume/path'>
<host name='host' port='1234'/>
<seclabel model='dac' relabel='no'/>
</source>
</disk>
</disks>
</domainsnapshot>
<domainsnapshot>
<name>my snap name</name>
<description>!@#$%^</description>
<disks>
<disk name='hde' snapshot='external' type='file'>
<source file='/path/to/new2'>
<seclabel model='dac' relabel='no'/>
</source>
</disk>
</disks>
</domainsnapshot>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册