This one is as posted before. Not really necessary, but makes things look
nicer.
-- Guido
---
src/domain_conf.c | 9 +++++++++
src/domain_conf.h | 2 ++
src/libvirt_private.syms | 2 ++
src/qemu_conf.c | 12 ++++++++----
4 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/src/domain_conf.c b/src/domain_conf.c
index 94196e8..8deb992 100644
--- a/src/domain_conf.c
+++ b/src/domain_conf.c
@@ -142,6 +142,15 @@ VIR_ENUM_IMPL(virDomainHostdevSubsys,
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST,
"usb",
"pci")
+VIR_ENUM_IMPL(virDomainState, VIR_DOMAIN_CRASHED+1,
+ "nostate",
+ "running",
+ "blocked",
+ "paused",
+ "shutdown",
+ "shutoff",
+ "crashed")
+
#define virDomainReportError(conn, code, fmt...) \
virReportErrorHelper(conn, VIR_FROM_DOMAIN, code, __FILE__, \
__FUNCTION__, __LINE__, fmt)
diff --git a/src/domain_conf.h b/src/domain_conf.h
index 1e5c103..45b3e10 100644
--- a/src/domain_conf.h
+++ b/src/domain_conf.h
@@ -625,5 +625,7 @@ VIR_ENUM_DECL(virDomainHostdevSubsys)
VIR_ENUM_DECL(virDomainInput)
VIR_ENUM_DECL(virDomainInputBus)
VIR_ENUM_DECL(virDomainGraphics)
+/* from libvirt.h */
+VIR_ENUM_DECL(virDomainState)
#endif /* __DOMAIN_CONF_H */
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index c76b6c2..3f83a07 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -94,6 +94,8 @@ virDomainVirtTypeToString;
virDomainFSDefFree;
virDomainObjLock;
virDomainObjUnlock;
+virDomainStateTypeToString;
+virDomainStateTypeFromString;
# domain_event.h
diff --git a/src/qemu_conf.c b/src/qemu_conf.c
index faf1e12..45108f3 100644
--- a/src/qemu_conf.c
+++ b/src/qemu_conf.c
@@ -1375,12 +1375,14 @@ qemudDomainStatusParseFile(virConnectPtr conn,
}
ctxt->node = root;
- if((virXPathLong(conn, "string(./@state)", ctxt, &val)) < 0) {
+ if(!(tmp = virXPathString(conn, "string(./@state)", ctxt))) {
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
"%s", _("invalid domain state"));
goto error;
- } else
- status->state = (int)val;
+ } else {
+ status->state = virDomainStateTypeFromString(tmp);
+ VIR_FREE(tmp);
+ }
if((virXPathLong(conn, "string(./@pid)", ctxt, &val)) < 0) {
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
@@ -1433,7 +1435,9 @@ qemudDomainStatusFormat(virConnectPtr conn,
char *config_xml = NULL, *xml = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- virBufferVSprintf(&buf, "<domstatus state='%d'
pid='%d'>\n", vm->state, vm->pid);
+ virBufferVSprintf(&buf, "<domstatus state='%s'
pid='%d'>\n",
+ virDomainStateTypeToString(vm->state),
+ vm->pid);
virBufferEscapeString(&buf, " <monitor path='%s'/>\n",
vm->monitorpath);
if (!(config_xml = virDomainDefFormat(conn,
--
1.6.0.6