# HG changeset patch
# User Jim Fehlig <jfehlig(a)novell.com>
# Date 1249688466 21600
# Node ID cca9b991128c170d03177e33b88e1b5bac930bd6
# Parent 8c9cb3efdbad40890a5408267bc6a0d7b4b3de6e
Add LibvirtVersion to VSMS
I've had users ask for libvirt version available through libvirt-cim.
This patch add LibvirtVersion property to VSMS, which is a proxy for
libvirt and seems the most appropriate place to add the property.
I consider VSMSC, but that class describes what the associated service
is capable of as opposed to version information about the service.
Signed-off-by: Jim Fehlig <jfehlig(a)novell.com>
diff -r 8c9cb3efdbad -r cca9b991128c schema/VirtualSystemManagementService.mof
--- a/schema/VirtualSystemManagementService.mof Wed Aug 05 14:07:00 2009 -0300
+++ b/schema/VirtualSystemManagementService.mof Fri Aug 07 17:41:06 2009 -0600
@@ -11,6 +11,9 @@
[Description("Package Version")]
string Release;
+
+ [Description("libvirt Version")]
+ string LibvirtVersion;
};
[Provider("cmpi::Virt_VirtualSystemManagementService")]
@@ -24,6 +27,9 @@
[Description("Package Version")]
string Release;
+
+ [Description("libvirt Version")]
+ string LibvirtVersion;
};
[Provider("cmpi::Virt_VirtualSystemManagementService")]
@@ -37,4 +43,7 @@
[Description("Package Version")]
string Release;
+
+ [Description("libvirt Version")]
+ string LibvirtVersion;
};
diff -r 8c9cb3efdbad -r cca9b991128c src/Virt_VirtualSystemManagementService.c
--- a/src/Virt_VirtualSystemManagementService.c Wed Aug 05 14:07:00 2009 -0300
+++ b/src/Virt_VirtualSystemManagementService.c Fri Aug 07 17:41:06 2009 -0600
@@ -2418,8 +2418,10 @@
const char *ccname = NULL;
virConnectPtr conn = NULL;
unsigned long hv_version = 0;
+ unsigned long lv_version = 0;
const char * hv_type = NULL;
char *caption = NULL;
+ char *lv_version_string = NULL;
CMPIArray *array;
uint16_t op_status;
@@ -2483,6 +2485,25 @@
CMSetProperty(inst, "Caption",
(CMPIValue *)"Unknown Hypervisor", CMPI_chars);
+ if (virGetVersion(&lv_version, hv_type, &hv_version) < 0) {
+ CU_DEBUG("Unable to get libvirt version");
+ lv_version= 0;
+ hv_version= 0;
+ }
+
+ if (asprintf(&lv_version_string, "%lu.%lu.%lu",
+ lv_version / 1000000,
+ (lv_version % 1000000) / 1000,
+ (lv_version % 1000000) % 1000) == -1)
+ lv_version_string = NULL;
+
+ if (lv_version_string != NULL)
+ CMSetProperty(inst, "LibvirtVersion",
+ (CMPIValue *)lv_version_string, CMPI_chars);
+ else
+ CMSetProperty(inst, "LibvirtVersion",
+ (CMPIValue *)"Unknown libvirt", CMPI_chars);
+
CMSetProperty(inst, "Name",
(CMPIValue *)"Management Service", CMPI_chars);
@@ -2522,6 +2543,7 @@
"");
out:
free(caption);
+ free(lv_version_string);
virConnectClose(conn);
*_inst = inst;