]> xenbits.xensource.com Git - libvirt.git/commitdiff
Add canonical machine name to capabilities output
authorMark McLoughlin <markmc@redhat.com>
Thu, 23 Jul 2009 17:31:35 +0000 (18:31 +0100)
committerMark McLoughlin <markmc@redhat.com>
Mon, 27 Jul 2009 14:30:17 +0000 (15:30 +0100)
e.g. <machine canonical='pc'>pc-0.11</machine>

* src/capabilities.c: output the canonical machine names in the
  capabilities output, if available

* docs/schemas/capabilities.rng: add the new attribute

docs/schemas/capability.rng
src/capabilities.c

index f085e550fe24e5928c2e4c1020e25a822f19d625..775bbdb5e946cf54820b3576fafd9aa24d6a0eee 100644 (file)
 
   <define name='machine'>
     <element name='machine'>
+      <optional>
+        <attribute name='canonical'>
+          <text/>
+        </attribute>
+      </optional>
       <text/>
     </element>
   </define>
index afe4d388bbd2d45b0dd3a9118cf1051218c6f267..d1869615a59377c5fdfa42bf1d46248dfb2bd6d8 100644 (file)
@@ -692,8 +692,11 @@ virCapabilitiesFormatXML(virCapsPtr caps)
                                   caps->guests[i]->arch.defaultInfo.loader);
 
         for (j = 0 ; j < caps->guests[i]->arch.defaultInfo.nmachines ; j++) {
-            virBufferVSprintf(&xml, "      <machine>%s</machine>\n",
-                              caps->guests[i]->arch.defaultInfo.machines[j]->name);
+            virCapsGuestMachinePtr machine = caps->guests[i]->arch.defaultInfo.machines[j];
+            virBufferAddLit(&xml, "      <machine");
+            if (machine->canonical)
+                virBufferVSprintf(&xml, " canonical='%s'", machine->canonical);
+            virBufferVSprintf(&xml, ">%s</machine>\n", machine->name);
         }
 
         for (j = 0 ; j < caps->guests[i]->arch.ndomains ; j++) {
@@ -707,8 +710,11 @@ virCapabilitiesFormatXML(virCapsPtr caps)
                                   caps->guests[i]->arch.domains[j]->info.loader);
 
             for (k = 0 ; k < caps->guests[i]->arch.domains[j]->info.nmachines ; k++) {
-                virBufferVSprintf(&xml, "        <machine>%s</machine>\n",
-                                  caps->guests[i]->arch.domains[j]->info.machines[k]->name);
+                virCapsGuestMachinePtr machine = caps->guests[i]->arch.domains[j]->info.machines[k];
+                virBufferAddLit(&xml, "      <machine");
+                if (machine->canonical)
+                    virBufferVSprintf(&xml, " canonical='%s'", machine->canonical);
+                virBufferVSprintf(&xml, ">%s</machine>\n", machine->name);
             }
             virBufferAddLit(&xml, "      </domain>\n");
         }