mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-09 01:18:00 +03:00
metadata: group metadata next to description
It's better to group all the metadata together. This is a cosmetic output change; since the RNG allows interleave, it doesn't matter where the user stuck it on input, and an XPath query will find the same information when parsing the output. * src/conf/domain_conf.c (virDomainDefFormatInternal): Output metadata earlier. * docs/formatdomain.html.in: Update documentation. * tests/domainsnapshotxml2xmlout/metadata.xml: Update test. * tests/qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml: Likewise.
This commit is contained in:
parent
78af071964
commit
4d71ff450f
@ -33,6 +33,10 @@
|
|||||||
<name>fv0</name>
|
<name>fv0</name>
|
||||||
<uuid>4dea22b31d52d8f32516782e98ab3fa0</uuid>
|
<uuid>4dea22b31d52d8f32516782e98ab3fa0</uuid>
|
||||||
<description>Some human readable description</description>
|
<description>Some human readable description</description>
|
||||||
|
<metadata>
|
||||||
|
<app1:foo xmlns:app1="http://app1.org/app1/">..</app1:foo>
|
||||||
|
<app2:bar xmlns:app2="http://app1.org/app2/">..</app2:bar>
|
||||||
|
</metadata>
|
||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
@ -56,9 +60,18 @@
|
|||||||
|
|
||||||
<dt><code>description</code></dt>
|
<dt><code>description</code></dt>
|
||||||
<dd>The content of the <code>description</code> element provides a
|
<dd>The content of the <code>description</code> element provides a
|
||||||
human readable description of the virtual machine. This data is not
|
human readable description of the virtual machine. This data is not
|
||||||
used by libvirt in any way, it can contain any information the user
|
used by libvirt in any way, it can contain any information the user
|
||||||
wants. <span class="since">Since 0.7.2</span></dd>
|
wants. <span class="since">Since 0.7.2</span></dd>
|
||||||
|
|
||||||
|
<dt><code>metadata</code></dt>
|
||||||
|
<dd>The <code>metadata</code> node can be used by applications
|
||||||
|
to store custom metadata in the form of XML
|
||||||
|
nodes/trees. Applications must use custom namespaces on their
|
||||||
|
XML nodes/trees, with only one top-level element per namespace
|
||||||
|
(if the application needs structure, they should have
|
||||||
|
sub-elements to their namespace
|
||||||
|
element). <span class="since">Since 0.9.10</span></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h3><a name="elementsOS">Operating system booting</a></h3>
|
<h3><a name="elementsOS">Operating system booting</a></h3>
|
||||||
@ -3556,26 +3569,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
sub-element <code>label</code> are supported.
|
sub-element <code>label</code> are supported.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3><a name="customMetadata">Custom metadata</a></h3>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
...
|
|
||||||
<metadata>
|
|
||||||
<app1:foo xmlns:app1="http://app1.org/app1/">..</app1:foo>
|
|
||||||
<app2:bar xmlns:app2="http://app1.org/app2/">..</app2:bar>
|
|
||||||
</metadata>
|
|
||||||
...</pre>
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt><code>metadata</code></dt>
|
|
||||||
<dd>The <code>metadata</code> node can be used by applications to
|
|
||||||
store custom metadata in the form of XML nodes/trees. Applications
|
|
||||||
must use custom namespaces on their XML nodes/trees, with only
|
|
||||||
one top-level element per namespace (if the application needs
|
|
||||||
structure, they should have sub-elements to their namespace
|
|
||||||
element). <span class="since">Since 0.9.10</span></dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<h2><a name="examples">Example configs</a></h2>
|
<h2><a name="examples">Example configs</a></h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -11431,6 +11431,29 @@ virDomainDefFormatInternal(virDomainDefPtr def,
|
|||||||
virBufferEscapeString(buf, " <description>%s</description>\n",
|
virBufferEscapeString(buf, " <description>%s</description>\n",
|
||||||
def->description);
|
def->description);
|
||||||
|
|
||||||
|
if (def->metadata) {
|
||||||
|
xmlBufferPtr xmlbuf;
|
||||||
|
int oldIndentTreeOutput = xmlIndentTreeOutput;
|
||||||
|
|
||||||
|
/* Indentation on output requires that we previously set
|
||||||
|
* xmlKeepBlanksDefault to 0 when parsing; also, libxml does 2
|
||||||
|
* spaces per level of indentation of intermediate elements,
|
||||||
|
* but no leading indentation before the starting element.
|
||||||
|
* Thankfully, libxml maps what looks like globals into
|
||||||
|
* thread-local uses, so we are thread-safe. */
|
||||||
|
xmlIndentTreeOutput = 1;
|
||||||
|
xmlbuf = xmlBufferCreate();
|
||||||
|
if (xmlNodeDump(xmlbuf, def->metadata->doc, def->metadata,
|
||||||
|
virBufferGetIndent(buf, false) / 2 + 1, 1) < 0) {
|
||||||
|
xmlBufferFree(xmlbuf);
|
||||||
|
xmlIndentTreeOutput = oldIndentTreeOutput;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
virBufferAsprintf(buf, " %s\n", (char *) xmlBufferContent(xmlbuf));
|
||||||
|
xmlBufferFree(xmlbuf);
|
||||||
|
xmlIndentTreeOutput = oldIndentTreeOutput;
|
||||||
|
}
|
||||||
|
|
||||||
virBufferAsprintf(buf, " <memory>%lu</memory>\n", def->mem.max_balloon);
|
virBufferAsprintf(buf, " <memory>%lu</memory>\n", def->mem.max_balloon);
|
||||||
virBufferAsprintf(buf, " <currentMemory>%lu</currentMemory>\n",
|
virBufferAsprintf(buf, " <currentMemory>%lu</currentMemory>\n",
|
||||||
def->mem.cur_balloon);
|
def->mem.cur_balloon);
|
||||||
@ -11844,30 +11867,6 @@ virDomainDefFormatInternal(virDomainDefPtr def,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom metadata comes at the end */
|
|
||||||
if (def->metadata) {
|
|
||||||
xmlBufferPtr xmlbuf;
|
|
||||||
int oldIndentTreeOutput = xmlIndentTreeOutput;
|
|
||||||
|
|
||||||
/* Indentation on output requires that we previously set
|
|
||||||
* xmlKeepBlanksDefault to 0 when parsing; also, libxml does 2
|
|
||||||
* spaces per level of indentation of intermediate elements,
|
|
||||||
* but no leading indentation before the starting element.
|
|
||||||
* Thankfully, libxml maps what looks like globals into
|
|
||||||
* thread-local uses, so we are thread-safe. */
|
|
||||||
xmlIndentTreeOutput = 1;
|
|
||||||
xmlbuf = xmlBufferCreate();
|
|
||||||
if (xmlNodeDump(xmlbuf, def->metadata->doc, def->metadata,
|
|
||||||
virBufferGetIndent(buf, false) / 2 + 1, 1) < 0) {
|
|
||||||
xmlBufferFree(xmlbuf);
|
|
||||||
xmlIndentTreeOutput = oldIndentTreeOutput;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
virBufferAsprintf(buf, " %s\n", (char *) xmlBufferContent(xmlbuf));
|
|
||||||
xmlBufferFree(xmlbuf);
|
|
||||||
xmlIndentTreeOutput = oldIndentTreeOutput;
|
|
||||||
}
|
|
||||||
|
|
||||||
virBufferAddLit(buf, "</domain>\n");
|
virBufferAddLit(buf, "</domain>\n");
|
||||||
|
|
||||||
if (virBufferError(buf))
|
if (virBufferError(buf))
|
||||||
|
@ -9,6 +9,10 @@
|
|||||||
<domain type='qemu'>
|
<domain type='qemu'>
|
||||||
<name>QEMUGuest1</name>
|
<name>QEMUGuest1</name>
|
||||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<metadata>
|
||||||
|
<app1:foo xmlns:app1="http://foo.org/">fooish</app1:foo>
|
||||||
|
<app2:bar xmlns:app2="http://bar.com/" maman="baz">barish</app2:bar>
|
||||||
|
</metadata>
|
||||||
<memory>219100</memory>
|
<memory>219100</memory>
|
||||||
<currentMemory>219100</currentMemory>
|
<currentMemory>219100</currentMemory>
|
||||||
<vcpu cpuset='1-4,8-20,525'>1</vcpu>
|
<vcpu cpuset='1-4,8-20,525'>1</vcpu>
|
||||||
@ -30,9 +34,5 @@
|
|||||||
<controller type='ide' index='0'/>
|
<controller type='ide' index='0'/>
|
||||||
<memballoon model='virtio'/>
|
<memballoon model='virtio'/>
|
||||||
</devices>
|
</devices>
|
||||||
<metadata>
|
|
||||||
<app1:foo xmlns:app1="http://foo.org/">fooish</app1:foo>
|
|
||||||
<app2:bar xmlns:app2="http://bar.com/" maman="baz">barish</app2:bar>
|
|
||||||
</metadata>
|
|
||||||
</domain>
|
</domain>
|
||||||
</domainsnapshot>
|
</domainsnapshot>
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
<domain type='qemu'>
|
<domain type='qemu'>
|
||||||
<name>QEMUGuest1</name>
|
<name>QEMUGuest1</name>
|
||||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<metadata>
|
||||||
|
<app1:foo xmlns:app1="http://foo.org/">fooish</app1:foo>
|
||||||
|
<app2:bar xmlns:app2="http://bar.com/" maman="baz">barish</app2:bar>
|
||||||
|
</metadata>
|
||||||
<memory>219100</memory>
|
<memory>219100</memory>
|
||||||
<currentMemory>219100</currentMemory>
|
<currentMemory>219100</currentMemory>
|
||||||
<vcpu cpuset='1-4,8-20,525'>1</vcpu>
|
<vcpu cpuset='1-4,8-20,525'>1</vcpu>
|
||||||
@ -22,8 +26,4 @@
|
|||||||
<controller type='ide' index='0'/>
|
<controller type='ide' index='0'/>
|
||||||
<memballoon model='virtio'/>
|
<memballoon model='virtio'/>
|
||||||
</devices>
|
</devices>
|
||||||
<metadata>
|
|
||||||
<app1:foo xmlns:app1="http://foo.org/">fooish</app1:foo>
|
|
||||||
<app2:bar xmlns:app2="http://bar.com/" maman="baz">barish</app2:bar>
|
|
||||||
</metadata>
|
|
||||||
</domain>
|
</domain>
|
||||||
|
Loading…
Reference in New Issue
Block a user