[libvirt] [PATCH 1/2] schema: do not require name for certain pool types

Ján Tomko jtomko at redhat.com
Tue Mar 28 13:22:07 UTC 2017


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 pool.
Expressing that at least one of these is required is out of scope
of the schema.~
---
 docs/schemas/storagepool.rng                       | 27 +++++++++++++++++-----
 tests/storagepoolxml2xmlin/pool-logical-noname.xml | 18 +++++++++++++++
 2 files changed, 39 insertions(+), 6 deletions(-)
 create mode 100644 tests/storagepoolxml2xmlin/pool-logical-noname.xml

diff --git a/docs/schemas/storagepool.rng b/docs/schemas/storagepool.rng
index 6219ce5..8386f29 100644
--- a/docs/schemas/storagepool.rng
+++ b/docs/schemas/storagepool.rng
@@ -70,7 +70,7 @@
       <value>logical</value>
     </attribute>
     <interleave>
-      <ref name='commonmetadata'/>
+      <ref name='commonMetadataNameOptional'/>
       <ref name='sizing'/>
       <ref name='sourcelogical'/>
       <ref name='targetlogical'/>
@@ -132,7 +132,7 @@
       <value>rbd</value>
     </attribute>
     <interleave>
-      <ref name='commonmetadata'/>
+      <ref name='commonMetadataNameOptional'/>
       <ref name='sizing'/>
       <ref name='sourcerbd'/>
     </interleave>
@@ -143,7 +143,7 @@
       <value>sheepdog</value>
     </attribute>
     <interleave>
-      <ref name='commonmetadata'/>
+      <ref name='commonMetadataNameOptional'/>
       <ref name='sizing'/>
       <ref name='sourcesheepdog'/>
     </interleave>
@@ -154,7 +154,7 @@
       <value>gluster</value>
     </attribute>
     <interleave>
-      <ref name='commonmetadata'/>
+      <ref name='commonMetadataNameOptional'/>
       <ref name='sizing'/>
       <ref name='sourcegluster'/>
     </interleave>
@@ -165,7 +165,7 @@
       <value>zfs</value>
     </attribute>
     <interleave>
-      <ref name='commonmetadata'/>
+      <ref name='commonMetadataNameOptional'/>
       <ref name='sizing'/>
       <ref name='sourcezfs'/>
       <optional>
@@ -179,7 +179,7 @@
       <value>vstorage</value>
     </attribute>
     <interleave>
-      <ref name='commonmetadata'/>
+      <ref name='commonMetadataNameOptional'/>
       <ref name='sizing'/>
       <ref name='sourcevstorage'/>
       <ref name='target'/>
@@ -205,6 +205,21 @@
     </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'>
diff --git a/tests/storagepoolxml2xmlin/pool-logical-noname.xml b/tests/storagepoolxml2xmlin/pool-logical-noname.xml
new file mode 100644
index 0000000..ad3f88d
--- /dev/null
+++ b/tests/storagepoolxml2xmlin/pool-logical-noname.xml
@@ -0,0 +1,18 @@
+<pool type='logical'>
+  <uuid>1c13165a-d0f4-3aee-b447-30fb38789091</uuid>
+  <capacity>99891544064</capacity>
+  <allocation>99220455424</allocation>
+  <available>671088640</available>
+  <source>
+    <name>zily</name>
+    <format type='lvm2'/>
+  </source>
+  <target>
+    <path>/dev/zily</path>
+    <permissions>
+      <mode>0700</mode>
+      <owner>0</owner>
+      <group>0</group>
+    </permissions>
+  </target>
+</pool>
-- 
2.10.2




More information about the libvir-list mailing list