Hi,
Virsh domname <uuid> command for shut-off domain fails on xen-3.0.4.
I think that xm_internal.c shoud be modified.
But, it seems that xm_internal's structure isn't for xen-3.0.4,
and shut-off domain's information is got from xend.
I make a patch for xend_internal.c
The attached patch resolve this issue in the following way:
1) If the domain's name can't be pulled out from
the running domains list by uuid, request xend by
"/xend/domains/<uuid>".
2) If the domain's data can be teken from xend, pull out
the domain's name.
Signed-off-by: Tatsuro Enokura <fj7716hz(a)aa.jp.fujitsu.com>
Thanks,
Tatsuro Enokura.
Index: src/xend_internal.c (libvirt-0.2.0)
===================================================================
--- xend_internal.c 2007-02-15 01:16:16.000000000 +0900
+++ xend_internal.c.new 2007-02-23 21:13:22.000000000 +0900
@@ -2759,6 +2759,8 @@ xenDaemonLookupByUUID(virConnectPtr conn
char **tmp;
unsigned char ident[VIR_UUID_BUFLEN];
int id = -1;
+ struct sexpr *root = NULL;
+ char *domname = NULL;
names = xenDaemonListDomainsOld(conn);
tmp = names;
@@ -2779,6 +2781,26 @@ xenDaemonLookupByUUID(virConnectPtr conn
}
free(names);
+ if (name == NULL) {
+ char uuidstr[VIR_UUID_STRING_BUFLEN];
+ memset(uuidstr, '\0', VIR_UUID_STRING_BUFLEN);
+
+ snprintf(uuidstr, VIR_UUID_STRING_BUFLEN,
+
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+ uuid[0], uuid[1], uuid[2], uuid[3],
+ uuid[4], uuid[5], uuid[6], uuid[7],
+ uuid[8], uuid[9], uuid[10], uuid[11],
+ uuid[12], uuid[13], uuid[14], uuid[15]);
+ root = sexpr_get(conn, "/xend/domain/%s?detail=1", uuidstr);
+ if (root == NULL)
+ goto error;
+ domname = (char*)sexpr_node(root, "domain/name");
+ if (domname == NULL)
+ goto error;
+ name = strdup(domname);
+ id = -1;
+ }
+
if (name == NULL)
goto error;
@@ -2793,6 +2815,8 @@ xenDaemonLookupByUUID(virConnectPtr conn
return (ret);
error:
+ if (root != NULL)
+ sexpr_free(root);
if (name != NULL)
free(name);
return (NULL);
===================================================================