[libvirt PATCH 02/15] schema: consolidate RNG for all hostdev <driver> elements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The exact same element can appear in <hostdev> and <interface
type='hostdev'>, and nearly identical in <network> and <networkport>
(these latter two don't include "xen" as a possible driver, but that's
coincidental - there's no reason Xen couldn't also use the VF pools in
virtual networks, it just doesn't).

This patch modifies all 4 to use the same <ref name="hostdevDriver"/>
so that it is simpler to add something new.

A side effect of this patch is that the grammar for the <interface>
element in domain XML has been tightened up a bit - previously it was
accepted by the schema (but nonsensical) to have virtio and network
interface options specified; as a part of making the two different
<driver> choices each a complete element (rather than each being a
collection of attributes and subelements) these extra
attributes/subelements that were irrelevant to the hostdev-type
<driver> were made to be valid only for an emulated interface's
<driver>.

Signed-off-by: Laine Stump <laine@xxxxxxxxxx>
---
 src/conf/schemas/basictypes.rng   |  13 +++
 src/conf/schemas/domaincommon.rng | 173 ++++++++++++++----------------
 src/conf/schemas/network.rng      |  10 +-
 src/conf/schemas/networkport.rng  |  10 +-
 4 files changed, 94 insertions(+), 112 deletions(-)

diff --git a/src/conf/schemas/basictypes.rng b/src/conf/schemas/basictypes.rng
index 26eb538077..8d5f4475ca 100644
--- a/src/conf/schemas/basictypes.rng
+++ b/src/conf/schemas/basictypes.rng
@@ -656,4 +656,17 @@
     </choice>
   </define>
 
+  <define name="hostdevDriver">
+    <element name="driver">
+      <attribute name="name">
+        <choice>
+          <value>kvm</value>
+          <value>vfio</value>
+          <value>xen</value>
+        </choice>
+      </attribute>
+      <empty/>
+    </element>
+  </define>
+
 </grammar>
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
index a26986b5ce..002587db58 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -3759,18 +3759,12 @@
         </element>
       </optional>
       <optional>
-        <element name="driver">
-          <choice>
-            <group>
-              <attribute name="name">
-                <choice>
-                  <value>kvm</value>
-                  <value>vfio</value>
-                  <value>xen</value>
-                </choice>
-              </attribute>
-            </group>
-            <group>
+        <choice>
+          <group>
+            <ref name="hostdevDriver"/>
+          </group>
+          <group>
+            <element name="driver">
               <optional>
                 <attribute name="name">
                   <choice>
@@ -3808,90 +3802,90 @@
               <optional>
                 <ref name="event_idx"/>
               </optional>
-            </group>
-          </choice>
-          <ref name="virtioOptions"/>
-          <interleave>
-            <optional>
-              <element name="host">
-                <optional>
-                  <attribute name="csum">
-                    <ref name="virOnOff"/>
-                  </attribute>
-                </optional>
-                <optional>
-                  <attribute name="gso">
-                    <ref name="virOnOff"/>
-                  </attribute>
-                </optional>
-                <optional>
-                  <attribute name="tso4">
-                    <ref name="virOnOff"/>
-                  </attribute>
-                </optional>
-                <optional>
-                  <attribute name="tso6">
-                    <ref name="virOnOff"/>
-                  </attribute>
-                </optional>
-                <optional>
-                  <attribute name="ecn">
-                    <ref name="virOnOff"/>
-                  </attribute>
-                </optional>
-                <optional>
-                  <attribute name="ufo">
-                    <ref name="virOnOff"/>
-                  </attribute>
-                </optional>
-                <optional>
-                  <attribute name="mrg_rxbuf">
-                    <ref name="virOnOff"/>
-                  </attribute>
-                </optional>
-              </element>
-            </optional>
-            <optional>
-              <element name="guest">
-                <optional>
-                  <attribute name="csum">
-                    <ref name="virOnOff"/>
-                  </attribute>
-                </optional>
+              <ref name="virtioOptions"/>
+              <interleave>
                 <optional>
-                  <attribute name="tso4">
-                    <ref name="virOnOff"/>
-                  </attribute>
+                  <element name="host">
+                    <optional>
+                      <attribute name="csum">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="gso">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="tso4">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="tso6">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="ecn">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="ufo">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="mrg_rxbuf">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                  </element>
                 </optional>
                 <optional>
-                  <attribute name="tso6">
-                    <ref name="virOnOff"/>
-                  </attribute>
+                  <element name="guest">
+                    <optional>
+                      <attribute name="csum">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="tso4">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="tso6">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="ecn">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                    <optional>
+                      <attribute name="ufo">
+                        <ref name="virOnOff"/>
+                      </attribute>
+                    </optional>
+                  </element>
                 </optional>
                 <optional>
-                  <attribute name="ecn">
+                  <attribute name="rss">
                     <ref name="virOnOff"/>
                   </attribute>
                 </optional>
                 <optional>
-                  <attribute name="ufo">
+                  <attribute name="rss_hash_report">
                     <ref name="virOnOff"/>
                   </attribute>
                 </optional>
-              </element>
-            </optional>
-            <optional>
-              <attribute name="rss">
-                <ref name="virOnOff"/>
-              </attribute>
-            </optional>
-            <optional>
-              <attribute name="rss_hash_report">
-                <ref name="virOnOff"/>
-              </attribute>
-            </optional>
-          </interleave>
-        </element>
+              </interleave>
+            </element>
+          </group>
+        </choice>
       </optional>
       <optional>
         <ref name="alias"/>
@@ -6182,16 +6176,7 @@
     </attribute>
     <interleave>
       <optional>
-        <element name="driver">
-          <attribute name="name">
-            <choice>
-              <value>kvm</value>
-              <value>vfio</value>
-              <value>xen</value>
-            </choice>
-          </attribute>
-          <empty/>
-        </element>
+        <ref name="hostdevDriver"/>
       </optional>
       <optional>
         <ref name="teaming"/>
diff --git a/src/conf/schemas/network.rng b/src/conf/schemas/network.rng
index cda174ab4b..e56e07d130 100644
--- a/src/conf/schemas/network.rng
+++ b/src/conf/schemas/network.rng
@@ -179,15 +179,7 @@
                 </element>
               </optional>
               <optional>
-                <element name="driver">
-                  <attribute name="name">
-                    <choice>
-                      <value>kvm</value>
-                      <value>vfio</value>
-                    </choice>
-                  </attribute>
-                  <empty/>
-                </element>
+                <ref name="hostdevDriver"/>
               </optional>
               <optional>
                 <element name="nat">
diff --git a/src/conf/schemas/networkport.rng b/src/conf/schemas/networkport.rng
index 14db949578..50995559e8 100644
--- a/src/conf/schemas/networkport.rng
+++ b/src/conf/schemas/networkport.rng
@@ -145,15 +145,7 @@
     </optional>
     <interleave>
       <optional>
-        <element name="driver">
-          <attribute name="name">
-            <choice>
-              <value>kvm</value>
-              <value>vfio</value>
-            </choice>
-          </attribute>
-          <empty/>
-        </element>
+        <ref name="hostdevDriver"/>
       </optional>
       <element name="address">
         <ref name="pciaddress"/>
-- 
2.41.0




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux