summaryrefslogtreecommitdiffstats
path: root/inspector
diff options
context:
space:
mode:
authorRichard Jones <rjones@trick.home.annexia.org>2009-10-01 16:58:38 +0100
committerJim Meyering <meyering@redhat.com>2009-10-02 15:00:27 +0200
commitee21bc1f8071bb35409e9f15fb8309348c9a5912 (patch)
tree3519519cdc57caa9f3a9dce6beda0f7b8584cc90 /inspector
parent3c58ea10c74e0a4121ad32b5d578955825371d92 (diff)
downloadlibguestfs-ee21bc1f8071bb35409e9f15fb8309348c9a5912.tar.gz
libguestfs-ee21bc1f8071bb35409e9f15fb8309348c9a5912.tar.xz
libguestfs-ee21bc1f8071bb35409e9f15fb8309348c9a5912.zip
inspector: Add RELAX NG schema for virt-inspector --xml output.
Diffstat (limited to 'inspector')
-rwxr-xr-xinspector/virt-inspector7
-rw-r--r--inspector/virt-inspector.rng168
2 files changed, 171 insertions, 4 deletions
diff --git a/inspector/virt-inspector b/inspector/virt-inspector
index dc8847f9..13673aff 100755
--- a/inspector/virt-inspector
+++ b/inspector/virt-inspector
@@ -247,10 +247,9 @@ Windows), the distribution and version.
The diagram above shows what we return for each OS.
With the I<--xml> option the output is mapped into an XML document.
-Unfortunately there is no clear schema for this document
-(contributions welcome) but you can get an idea of the format by
-looking at other documents and as a last resort the source for this
-program.
+There is a RELAX-NG schema for this XML in the file
+I<virt-inspector.rng> which normally ships with virt-inspector, or can
+be found in the source.
With the I<--fish> or I<--ro-fish> option the mount points are mapped to
L<guestfish(1)> command line parameters, so that you can go in
diff --git a/inspector/virt-inspector.rng b/inspector/virt-inspector.rng
new file mode 100644
index 00000000..1da58fc8
--- /dev/null
+++ b/inspector/virt-inspector.rng
@@ -0,0 +1,168 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- -*- xml -*-
+ This is a RELAX NG schema for the output of 'virt-inspector - -xml'.
+
+ To validate an existing document against this schema, you can
+ use xmllint, like this:
+
+ virt-inspector - -xml Foo > output.xml
+ xmllint - -noout - -relaxng virt-inspector.rng output.xml
+
+ (Note that because of limitations of XML, I have had to put spaces
+ between double dashes in the above code. Those spaces should not
+ be there in what you type on the command line).
+
+ Written by Richard W.M. Jones, with a little help from Daniel
+ Veillard.
+
+ This file can be freely copied and modified without restrictions.
+ -->
+ <start>
+ <element name="operatingsystems">
+ <oneOrMore>
+ <element name="operatingsystem">
+ <interleave>
+
+ <!-- required fields for an operating system -->
+ <element name="name">
+ <choice>
+ <value>linux</value>
+ <value>windows</value>
+ </choice>
+ </element>
+ <element name="arch"><text/></element>
+ <element name="root"><text/></element>
+
+ <!-- optional fields for an operating system -->
+ <optional><element name="distro"><text/></element></optional>
+ <optional><element name="major_version"><text/></element></optional>
+ <optional><element name="minor_version"><text/></element></optional>
+ <optional><element name="package_format"><text/></element></optional>
+ <optional><element name="package_management"><text/></element></optional>
+
+ <ref name="mountpoints"/>
+ <ref name="filesystems"/>
+ <optional><ref name="applications"/></optional>
+ <optional><ref name="modprobealiases"/></optional>
+ <optional><ref name="initrds"/></optional>
+ <optional><ref name="kernels"/></optional>
+ <optional><ref name="boot"/></optional>
+
+ </interleave>
+ </element>
+ </oneOrMore>
+ </element>
+ </start>
+
+ <!-- how filesystems are mounted on mount points -->
+ <define name="mountpoints">
+ <element name="mountpoints">
+ <oneOrMore>
+ <element name="mountpoint">
+ <attribute name="dev"><text/></attribute>
+ <text/>
+ </element>
+ </oneOrMore>
+ </element>
+ </define>
+
+ <!-- filesystems detected -->
+ <define name="filesystems">
+ <element name="filesystems">
+ <oneOrMore>
+ <element name="filesystem">
+ <attribute name="dev"><text/></attribute>
+ <interleave>
+ <element name="type"><text/></element>
+ <optional><element name="content"><text/></element></optional>
+ <optional><element name="label"><text/></element></optional>
+ <optional><element name="uuid"><text/></element></optional>
+ <optional><element name="spec"><text/></element></optional>
+ </interleave>
+ </element>
+ </oneOrMore>
+ </element>
+ </define>
+
+ <!-- applications installed -->
+ <define name="applications">
+ <element name="applications">
+ <zeroOrMore>
+ <element name="application">
+ <element name="name"><text/></element>
+ <element name="version"><text/></element>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <!-- contents of /etc/modprobe* -->
+ <define name="modprobealiases">
+ <element name="modprobealiases">
+ <zeroOrMore>
+ <element name="alias">
+ <attribute name="device"><text/></attribute>
+ <interleave>
+ <element name="modulename"><text/></element>
+ <optional><element name="augeas"><text/></element></optional>
+ <element name="file"><text/></element>
+ </interleave>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <!-- initrd images found -->
+ <define name="initrds">
+ <element name="initrds">
+ <zeroOrMore>
+ <element name="initrd">
+ <attribute name="version"><text/></attribute>
+ <zeroOrMore>
+ <element name="module"><text/></element>
+ </zeroOrMore>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <!-- boot configurations -->
+ <define name="boot">
+ <element name="boot">
+ <zeroOrMore>
+ <element name="config">
+ <optional>
+ <attribute name="default"><value>1</value></attribute>
+ </optional>
+ <interleave>
+ <element name="title"><text/></element>
+ <element name="kernel"><text/></element>
+ <element name="cmdline"><text/></element>
+ </interleave>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <!-- kernels -->
+ <define name="kernels">
+ <element name="kernels">
+ <zeroOrMore>
+ <element name="kernel">
+ <attribute name="version"><text/></attribute>
+ <attribute name="arch"><text/></attribute>
+ <interleave>
+ <element name="modules">
+ <zeroOrMore>
+ <element name="module"><text/></element>
+ </zeroOrMore>
+ </element>
+ <optional><element name="path"><text/></element></optional>
+ <optional><element name="package"><text/></element></optional>
+ </interleave>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+
+</grammar>