Re: [libvirt] [PATCHv3 1/4] xml: Add element to allow short description of domains</span></a></span> </h1> <p class="darkgray font13"> <span class="sender pipe"><a href="/search?l=libvir-list@redhat.com&q=from:%22Daniel+Veillard%22" rel="nofollow"><span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Daniel Veillard</span></span></a></span> <span class="date"><a href="/search?l=libvir-list@redhat.com&q=date:20120202" rel="nofollow">Thu, 02 Feb 2012 05:09:49 -0800</a></span> </p> </div> <div itemprop="articleBody" class="msgBody"> <!--X-Body-of-Message--> <pre>On Wed, Feb 01, 2012 at 02:03:49PM +0100, Peter Krempa wrote: > This patch adds a new element <title> to the domain XML. This attribute > can hold a short title defined by the user to ease the identification of > domains. The title may not contain newlines and should be reasonably short. > > *docs/formatdomain.html.in > *docs/schemas/domaincommon.rng > - add schema grammar for the new element and documentation > *src/conf/domain_conf.c > *src/conf/domain_conf.h > - add field to hold the new attribute > - add code to parse and create XML with the new attribute > --- > docs/formatdomain.html.in | 8 +++++- > docs/schemas/domaincommon.rng | 15 ++++++++++- > src/conf/domain_conf.c | 11 ++++++++ > src/conf/domain_conf.h | 1 + > .../qemu-simple-description-title.xml | 27 > ++++++++++++++++++++ > tests/qemuxml2argvdata/qemuxml2argv-minimal.xml | 5 +++ > 6 files changed, 65 insertions(+), 2 deletions(-) > create mode 100644 tests/domainschemadata/qemu-simple-description-title.xml > > diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in > index d58a5e1..99152b6 100644 > --- a/docs/formatdomain.html.in > +++ b/docs/formatdomain.html.in > @@ -32,6 +32,7 @@ > &lt;domain type='xen' id='3'&gt; > &lt;name&gt;fv0&lt;/name&gt; > &lt;uuid&gt;4dea22b31d52d8f32516782e98ab3fa0&lt;/uuid&gt; > + &lt;title&gt;A short description - title - of the domain&lt;/title&gt; > &lt;description&gt;Some human readable description&lt;/description&gt; > &lt;metadata&gt; > &lt;app1:foo xmlns:app1="<a rel="nofollow" href="http://app1.org/app1/"&gt;..&lt;/app1:foo&gt">http://app1.org/app1/"&gt;..&lt;/app1:foo&gt</a>; > @@ -58,6 +59,11 @@ > specification. <span class="since">Since 0.0.1, sysinfo > since 0.8.7</span></dd> > > + <dt><code>title</code></dt> > + <dd>The optional element <code>title</code> provides space for a > + short description of the domain. The title should not contain > + any newlines. <span class="since">Since 0.9.10</span>.</dd> > + > <dt><code>description</code></dt> > <dd>The content of the <code>description</code> element provides a > human readable description of the virtual machine. This data is not > @@ -72,7 +78,7 @@ > (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> > > diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng > index 2423154..1576233 100644 > --- a/docs/schemas/domaincommon.rng > +++ b/docs/schemas/domaincommon.rng > @@ -6,7 +6,7 @@ > <include href='networkcommon.rng'/> > > <!-- > - description element, may be placed anywhere under the root > + description and title element, may be placed anywhere under the root > --> > <define name="description"> > <element name="description"> > @@ -14,6 +14,16 @@ > </element> > </define> > > + <define name="title"> > + <element name="title"> > + <data type="string"> > + <!-- Use literal newline instead of \n for bug in libxml2 2.7.6 --> > + <param name="pattern">[^ > +]+</param></pre><pre> Hum, using [^&#xA;]+ should do the trick too I think, since rng is XML it would be first interpreted by the parser and replaced by the equivalent character i.e. \n. > + </data> > + </element> > + </define> > + > <!-- > We handle only document defining a domain > --> > @@ -23,6 +33,9 @@ > <ref name="ids"/> > <interleave> > <optional> > + <ref name="title"/> > + </optional> > + <optional> > <ref name="description"/> > </optional> > <optional> > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 35cb7a4..072fcc7 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -1481,6 +1481,7 @@ void virDomainDefFree(virDomainDefPtr def) > VIR_FREE(def->cpumask); > VIR_FREE(def->emulator); > VIR_FREE(def->description); > + VIR_FREE(def->title); > > virBlkioDeviceWeightArrayClear(def->blkio.devices, > def->blkio.ndevices); > @@ -7158,6 +7159,14 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr > caps, > VIR_FREE(tmp); > } > > + /* Extract short description of domain (title) */ > + def->title = virXPathString("string(./title[1])", ctxt); > + if (def->title && strchr(def->title, '\n')) { > + virDomainReportError(VIR_ERR_XML_ERROR, "%s", > + _("Domain title can't contain newlines")); > + goto error; > + } > + > /* Extract documentation if present */ > def->description = virXPathString("string(./description[1])", ctxt); > > @@ -11487,6 +11496,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, > virUUIDFormat(uuid, uuidstr); > virBufferAsprintf(buf, " <uuid>%s</uuid>\n", uuidstr); > > + virBufferEscapeString(buf, " <title>%s</title>\n", def->title); > + > virBufferEscapeString(buf, " <description>%s</description>\n", > def->description); > > diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h > index 503684f..acb936e 100644 > --- a/src/conf/domain_conf.h > +++ b/src/conf/domain_conf.h > @@ -1425,6 +1425,7 @@ struct _virDomainDef { > int id; > unsigned char uuid[VIR_UUID_BUFLEN]; > char *name; > + char *title; > char *description; > > struct { > diff --git a/tests/domainschemadata/qemu-simple-description-title.xml > b/tests/domainschemadata/qemu-simple-description-title.xml > new file mode 100644 > index 0000000..a8a9cac > --- /dev/null > +++ b/tests/domainschemadata/qemu-simple-description-title.xml > @@ -0,0 +1,27 @@ > +<domain type='qemu'> > + <name>qemu-demo</name> > + <uuid>603cc28c-9841-864e-0949-8cc7d3bae9f8</uuid> > + <memory>65536</memory> > + <currentMemory>65536</currentMemory> > + <title>A short description of this domain</title> > + <description> > + A longer explanation that this domain is a test domain > + for validating domain schemas. > + </description> > + <vcpu>1</vcpu> > + <os> > + <type arch='x86_64' machine='pc-0.14'>hvm</type> > + </os> > + <features> > + <acpi/> > + <apic/> > + <pae/> > + </features> > + <clock offset='utc'/> > + <on_poweroff>destroy</on_poweroff> > + <on_reboot>restart</on_reboot> > + <on_crash>restart</on_crash> > + <devices> > + <emulator>/usr/bin/qemu-kvm</emulator> > + </devices> > +</domain> > diff --git a/tests/qemuxml2argvdata/qemuxml2argv-minimal.xml > b/tests/qemuxml2argvdata/qemuxml2argv-minimal.xml > index 2f13d46..51eb59a 100644 > --- a/tests/qemuxml2argvdata/qemuxml2argv-minimal.xml > +++ b/tests/qemuxml2argvdata/qemuxml2argv-minimal.xml > @@ -1,6 +1,11 @@ > <domain type='qemu'> > <name>QEMUGuest1</name> > <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> > + <title>A description of the test machine.</title> > + <description> > + A test of qemu&apos;s minimal configuration. > + This test also tests the description and title elements. > + </description> > <memory>219100</memory> > <currentMemory>219100</currentMemory> > <vcpu cpuset='1-4,8-20,525'>1</vcpu> ACK, fairly close to what I wrote too, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit <a rel="nofollow" href="http://xmlsoft.org/">http://xmlsoft.org/</a> dan...@veillard.com | Rpmfind RPM search engine <a rel="nofollow" href="http://rpmfind.net/">http://rpmfind.net/</a> <a rel="nofollow" href="http://veillard.com/">http://veillard.com/</a> | virtualization library <a rel="nofollow" href="http://libvirt.org/">http://libvirt.org/</a> -- libvir-list mailing list libvir-list@redhat.com <a rel="nofollow" href="https://www.redhat.com/mailman/listinfo/libvir-list">https://www.redhat.com/mailman/listinfo/libvir-list</a> </pre> </div> <div class="msgButtons margintopdouble"> <ul class="overflow"> <li class="msgButtonItems"><a class="button buttonleft " accesskey="p" href="msg51475.html">Previous message</a></li> <li class="msgButtonItems textaligncenter"><a class="button" accesskey="c" href="index.html#51531">View by thread</a></li> <li class="msgButtonItems textaligncenter"><a class="button" accesskey="i" href="maillist.html#51531">View by date</a></li> <li class="msgButtonItems textalignright"><a class="button buttonright " accesskey="n" href="msg51460.html">Next message</a></li> </ul> </div> <a name="tslice"></a> <div class="tSliceList margintopdouble"> <ul class="icons monospace"> <li class="icons-email"><span class="subject"><a href="msg51459.html">[libvirt] [PATCHv3 0/4] API for modification of domain met...</a></span> <span class="sender italic">Peter Krempa</span></li> <li><ul> <li class="icons-email"><span class="subject"><a href="msg51457.html">[libvirt] [PATCHv3 4/4] qemu: Add support for virDoma...</a></span> <span class="sender italic">Peter Krempa</span></li> <li><ul> <li class="icons-email"><span class="subject"><a href="msg51477.html">Re: [libvirt] [PATCHv3 4/4] qemu: Add support for...</a></span> <span class="sender italic">Eric Blake</span></li> </ul></li> <li class="icons-email"><span class="subject"><a href="msg51458.html">[libvirt] [PATCHv3 1/4] xml: Add element <title>...</a></span> <span class="sender italic">Peter Krempa</span></li> <li><ul> <li class="icons-email"><span class="subject"><a href="msg51475.html">Re: [libvirt] [PATCHv3 1/4] xml: Add element <...</a></span> <span class="sender italic">Eric Blake</span></li> <li class="icons-email tSliceCur"><span class="subject">Re: [libvirt] [PATCHv3 1/4] xml: Add element <...</span> <span class="sender italic">Daniel Veillard</span></li> </ul></li> <li class="icons-email"><span class="subject"><a href="msg51460.html">[libvirt] [PATCHv3 2/4] API: Add api to set and get d...</a></span> <span class="sender italic">Peter Krempa</span></li> <li><ul> <li class="icons-email"><span class="subject"><a href="msg51473.html">Re: [libvirt] [PATCHv3 2/4] API: Add api to set a...</a></span> <span class="sender italic">Eric Blake</span></li> <li class="icons-email"><span class="subject"><a href="msg51533.html">Re: [libvirt] [PATCHv3 2/4] API: Add api to set a...</a></span> <span class="sender italic">Daniel Veillard</span></li> </ul></li> <li class="icons-email"><span class="subject"><a href="msg51461.html">[libvirt] [PATCHv3 3/4] virsh: Add support for modify...</a></span> <span class="sender italic">Peter Krempa</span></li> <li><ul> <li class="icons-email"><span class="subject"><a href="msg51476.html">Re: [libvirt] [PATCHv3 3/4] virsh: Add support fo...</a></span> <span class="sender italic">Eric Blake</span></li> <li><ul> <li class="icons-email"><span class="subject"><a href="msg51500.html">Re: [libvirt] [PATCHv3 3/4] virsh: Add suppor...</a></span> <span class="sender italic">Eric Blake</span></li> <li><ul> <li class="icons-email"><span class="subject"><a href="msg51499.html">Re: [libvirt] [PATCHv3 3/4] virsh: Add su...</a></span> <span class="sender italic">Peter Krempa</span></li> </ul></li> </ul></li> </ul></li> <li class="icons-email"><span class="subject"><a href="msg51501.html">Re: [libvirt] [PATCHv3 0/4] API for modification of d...</a></span> <span class="sender italic">Eric Blake</span></li> <li><ul> <li class="icons-email"><span class="subject"><a href="msg51503.html">Re: [libvirt] [PATCHv3 0/4] API for modification ...</a></span> <span class="sender italic">Peter Krempa</span></li> </ul> </ul> </ul> </div> <div class="overflow msgActions margintopdouble"> <div class="msgReply" > <h2> Reply via email to </h2> <form method="POST" action="/mailto.php"> <input type="hidden" name="subject" value="Re: [libvirt] [PATCHv3 1/4] xml: Add element <title> to allow short description of domains"> <input type="hidden" name="msgid" value="20120202130150.GE2619@redhat.com"> <input type="hidden" name="relpath" value="libvir-list@redhat.com/msg51531.html"> <input type="submit" value=" Daniel Veillard "> </form> </div> </div> </div> <div class="aside" role="complementary"> <div class="logo"> <a href="/"><img src="/logo.png" width=247 height=88 alt="The Mail Archive"></a> </div> <form class="overflow" action="/search" method="get"> <input type="hidden" name="l" value="libvir-list@redhat.com"> <label class="hidden" for="q">Search the site</label> <input class="submittext" type="text" id="q" name="q" placeholder="Search libvir-list"> <input class="submitbutton" name="submit" type="image" src="/submit.png" alt="Submit"> </form> <div class="nav margintop" id="nav" role="navigation"> <ul class="icons font16"> <li class="icons-home"><a href="/">The Mail Archive home</a></li> <li class="icons-list"><a href="/libvir-list@redhat.com/">libvir-list - all messages</a></li> <li class="icons-about"><a href="/libvir-list@redhat.com/info.html">libvir-list - about the list</a></li> <li class="icons-expand"><a href="/search?l=libvir-list@redhat.com&q=subject:%22Re%5C%3A+%5C%5Blibvirt%5C%5D+%5C%5BPATCHv3+1%5C%2F4%5C%5D+xml%5C%3A+Add+element+%3Ctitle%3E+to+allow+short+description+of+domains%22&o=newest&f=1" title="e" id="e">Expand</a></li> <li class="icons-prev"><a href="msg51475.html" title="p">Previous message</a></li> <li class="icons-next"><a href="msg51460.html" title="n">Next message</a></li> </ul> </div> <div class="listlogo margintopdouble"> </div> <div class="margintopdouble"> </div> </div> </div> <div class="footer" role="contentinfo"> <ul> <li><a href="/">The Mail Archive home</a></li> <li><a href="/faq.html#newlist">Add your mailing list</a></li> <li><a href="/faq.html">FAQ</a></li> <li><a href="/faq.html#support">Support</a></li> <li><a href="/faq.html#privacy">Privacy</a></li> <li class="darkgray">20120202130150.GE2619@redhat.com</li> </ul> </div> </body> </html>