xl: use libxl_domain_info to get the uuid in printf_info
authorAndre Przywara <andre.przywara@amd.com>
Fri, 1 Oct 2010 14:42:46 +0000 (15:42 +0100)
committerAndre Przywara <andre.przywara@amd.com>
Fri, 1 Oct 2010 14:42:46 +0000 (15:42 +0100)
If there is no UUID specified in the config file, we generate one during
the _parsing_ process. Since xl list -l parses the config file again,
the UUID will be generated again in this case and the reported
version does probably not match the used one.
Fix this by retrieving the UUID from dominfo (like xl list -v does).

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

tools/libxl/xl_cmdimpl.c

index 8dbf860f792145bb2872701ffc9d6dc1f4d6e981..9aa4b78b2da9dea7133f7754a11318750966c12b 100644 (file)
@@ -469,6 +469,7 @@ static void printf_info(int domid,
                         libxl_device_model_info *dm_info)
 {
     int i;
+    libxl_dominfo info;
 
     libxl_domain_create_info *c_info = &d_config->c_info;
     libxl_domain_build_info *b_info = &d_config->b_info;
@@ -480,7 +481,16 @@ static void printf_info(int domid,
     printf("\t(oos %d)\n", c_info->oos);
     printf("\t(ssidref %d)\n", c_info->ssidref);
     printf("\t(name %s)\n", c_info->name);
-    printf("\t(uuid " LIBXL_UUID_FMT ")\n", LIBXL_UUID_BYTES(c_info->uuid));
+
+    /* retrieve the UUID from dominfo, since it is probably generated
+     * during parsing and thus does not match the real one
+     */
+    if (libxl_domain_info(&ctx, &info, domid) == 0) {
+        printf("\t(uuid " LIBXL_UUID_FMT ")\n", LIBXL_UUID_BYTES(info.uuid));
+    } else {
+        printf("\t(uuid <unknown>)\n");
+    }
+
     printf("\t(cpupool %s (%d))\n", c_info->poolname, c_info->poolid);
     if (c_info->xsdata)
         printf("\t(xsdata contains data)\n");