]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: schemas: Split out common parts of 'sysinfo' schema
authorPeter Krempa <pkrempa@redhat.com>
Tue, 8 Jul 2025 13:54:27 +0000 (15:54 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 14 Jul 2025 12:14:36 +0000 (14:14 +0200)
Extract the common bits of the domain definition <sysinfo> schema which
will be also later reused to construct schema for the host <sysinfo> top
level element.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/schemas/domaincommon.rng
src/conf/schemas/sysinfocommon.rng [new file with mode: 0644]

index 183dd5db5e2a37410bfb054fa81d0d2b624c4f23..2d6e15f144451af3dede9958177b4234cef4f759 100644 (file)
@@ -7,6 +7,7 @@
   <include href="cputypes.rng"/>
   <include href="nwfilter_params.rng"/>
   <include href="privatedata.rng"/>
+  <include href="sysinfocommon.rng"/>
 
   <define name="createMode">
     <data type="unsignedInt">
             <value>smbios</value>
           </attribute>
           <interleave>
-            <optional>
-              <element name="bios">
-                <oneOrMore>
-                  <element name="entry">
-                    <attribute name="name">
-                      <ref name="sysinfo-bios-name"/>
-                    </attribute>
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </optional>
-            <optional>
-              <element name="system">
-                <oneOrMore>
-                  <element name="entry">
-                    <attribute name="name">
-                      <ref name="sysinfo-system-name"/>
-                    </attribute>
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </optional>
-            <zeroOrMore>
-              <element name="baseBoard">
-                <oneOrMore>
-                  <element name="entry">
-                    <attribute name="name">
-                      <ref name="sysinfo-baseBoard-name"/>
-                    </attribute>
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </zeroOrMore>
-            <optional>
-              <element name="chassis">
-                <oneOrMore>
-                  <element name="entry">
-                    <attribute name="name">
-                      <ref name="sysinfo-chassis-name"/>
-                    </attribute>
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </optional>
-            <optional>
-              <element name="oemStrings">
-                <oneOrMore>
-                  <element name="entry">
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </optional>
+            <ref name="sysinfo-smbios-group-bios"/>
+            <ref name="sysinfo-smbios-group-system"/>
+            <ref name="sysinfo-smbios-group-baseboard"/>
+            <ref name="sysinfo-smbios-group-chassis"/>
+            <ref name="sysinfo-smbios-group-oemstrings"/>
           </interleave>
         </group>
         <group>
             <value>fwcfg</value>
           </attribute>
           <zeroOrMore>
-            <element name="entry">
-              <attribute name="name">
-                <data type="string"/>
-              </attribute>
-              <choice>
-                <group>
-                  <attribute name="file">
-                    <data type="string"/>
-                  </attribute>
-                  <empty/>
-                </group>
-                <group>
-                  <ref name="sysinfo-value"/>
-                </group>
-              </choice>
-            </element>
+            <ref name="sysinfo-fwcfg-entry"/>
           </zeroOrMore>
         </group>
       </choice>
     </element>
   </define>
 
-  <define name="sysinfo-bios-name">
-    <choice>
-      <value>vendor</value>
-      <value>version</value>
-      <value>date</value>
-      <value>release</value>
-    </choice>
-  </define>
-
-  <define name="sysinfo-system-name">
-    <choice>
-      <value>manufacturer</value>
-      <value>product</value>
-      <value>version</value>
-      <value>serial</value>
-      <value>uuid</value>
-      <value>sku</value>
-      <value>family</value>
-    </choice>
-  </define>
-
-  <define name="sysinfo-baseBoard-name">
-    <choice>
-      <value>manufacturer</value>
-      <value>product</value>
-      <value>version</value>
-      <value>serial</value>
-      <value>asset</value>
-      <value>location</value>
-    </choice>
-  </define>
-
-  <define name="sysinfo-chassis-name">
-    <choice>
-      <value>manufacturer</value>
-      <value>version</value>
-      <value>serial</value>
-      <value>asset</value>
-      <value>sku</value>
-    </choice>
-  </define>
-
-  <define name="sysinfo-value">
-    <data type="string"/>
-  </define>
-
   <define name="acpiTable">
     <element name="acpi">
       <zeroOrMore>
diff --git a/src/conf/schemas/sysinfocommon.rng b/src/conf/schemas/sysinfocommon.rng
new file mode 100644 (file)
index 0000000..dc3b761
--- /dev/null
@@ -0,0 +1,143 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+  <!-- This schema is not designed for standalone use -->
+
+  <define name="sysinfo-smbios-group-bios">
+    <optional>
+      <element name="bios">
+        <oneOrMore>
+          <element name="entry">
+            <attribute name="name">
+              <ref name="sysinfo-bios-name"/>
+            </attribute>
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="sysinfo-smbios-group-system">
+    <optional>
+      <element name="system">
+        <oneOrMore>
+          <element name="entry">
+            <attribute name="name">
+              <ref name="sysinfo-system-name"/>
+            </attribute>
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="sysinfo-smbios-group-baseboard">
+    <zeroOrMore>
+      <element name="baseBoard">
+        <oneOrMore>
+          <element name="entry">
+            <attribute name="name">
+              <ref name="sysinfo-baseBoard-name"/>
+            </attribute>
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </zeroOrMore>
+  </define>
+
+  <define name="sysinfo-smbios-group-chassis">
+    <optional>
+      <element name="chassis">
+        <oneOrMore>
+          <element name="entry">
+            <attribute name="name">
+              <ref name="sysinfo-chassis-name"/>
+            </attribute>
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="sysinfo-smbios-group-oemstrings">
+    <optional>
+      <element name="oemStrings">
+        <oneOrMore>
+          <element name="entry">
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="sysinfo-fwcfg-entry">
+    <element name="entry">
+      <attribute name="name">
+        <data type="string"/>
+      </attribute>
+      <choice>
+        <group>
+          <attribute name="file">
+            <data type="string"/>
+          </attribute>
+          <empty/>
+        </group>
+        <group>
+          <ref name="sysinfo-value"/>
+        </group>
+      </choice>
+    </element>
+  </define>
+
+  <define name="sysinfo-bios-name">
+    <choice>
+      <value>vendor</value>
+      <value>version</value>
+      <value>date</value>
+      <value>release</value>
+    </choice>
+  </define>
+
+  <define name="sysinfo-system-name">
+    <choice>
+      <value>manufacturer</value>
+      <value>product</value>
+      <value>version</value>
+      <value>serial</value>
+      <value>uuid</value>
+      <value>sku</value>
+      <value>family</value>
+    </choice>
+  </define>
+
+  <define name="sysinfo-baseBoard-name">
+    <choice>
+      <value>manufacturer</value>
+      <value>product</value>
+      <value>version</value>
+      <value>serial</value>
+      <value>asset</value>
+      <value>location</value>
+    </choice>
+  </define>
+
+  <define name="sysinfo-chassis-name">
+    <choice>
+      <value>manufacturer</value>
+      <value>version</value>
+      <value>serial</value>
+      <value>asset</value>
+      <value>sku</value>
+    </choice>
+  </define>
+
+  <define name="sysinfo-value">
+    <data type="string"/>
+  </define>
+
+</grammar>