# HG changeset patch
# User Kaitlin Rupert <karupert(a)us.ibm.com>
# Date 1250813784 25200
# Node ID 0243aa0574431112f0946354d4bbad62bb2c2f7b
# Parent 7efea1d379a1b4de6c4d7583b456a0a00f80ad3b
Be sure to check to see if the UUID is in use in both the DefineSystem()...
and ModifySystemSettings() calls.
Signed-off-by: Kaitlin Rupert <karupert(a)us.ibm.com>
diff -r 7efea1d379a1 -r 0243aa057443 src/Virt_VirtualSystemManagementService.c
--- a/src/Virt_VirtualSystemManagementService.c Wed Aug 19 22:47:17 2009 -0700
+++ b/src/Virt_VirtualSystemManagementService.c Thu Aug 20 17:16:24 2009 -0700
@@ -71,6 +71,37 @@
RESOURCE_MOD,
};
+static CMPIStatus check_uuid_in_use(const CMPIObjectPath *ref,
+ struct domain *domain)
+{
+ CMPIStatus s = {CMPI_RC_OK, NULL};
+ virConnectPtr conn = NULL;
+ virDomainPtr dom = NULL;
+
+ conn = connect_by_classname(_BROKER, CLASSNAME(ref), &s);
+ if (conn == NULL) {
+ cu_statusf(_BROKER, &s,
+ CMPI_RC_ERR_FAILED,
+ "Error connecting to libvirt");
+ goto out;
+ }
+
+ dom = virDomainLookupByUUIDString(conn, domain->uuid);
+ if (dom != NULL) {
+ cu_statusf(_BROKER, &s,
+ CMPI_RC_ERR_FAILED,
+ "Guest '%s' is already defined with UUID
%s",
+ virDomainGetName(dom),
+ domain->uuid);
+ }
+
+ out:
+ virDomainFree(dom);
+ virConnectClose(conn);
+
+ return s;
+}
+
static CMPIStatus define_system_parse_args(const CMPIArgs *argsin,
CMPIInstance **sys,
const char *ns,
@@ -1402,26 +1433,10 @@
goto out;
}
- if (domain->uuid != NULL) {
- conn = connect_by_classname(_BROKER, CLASSNAME(ref), s);
- if (conn == NULL) {
- cu_statusf(_BROKER, s,
- CMPI_RC_ERR_FAILED,
- "Error connecting to libvirt");
- goto out;
- }
-
- dom = virDomainLookupByUUIDString(conn, domain->uuid);
- if (dom != NULL) {
- cu_statusf(_BROKER, s,
- CMPI_RC_ERR_FAILED,
- "Guest '%s' is already defined with UUID
%s",
- virDomainGetName(dom),
- domain->uuid);
- goto out;
- }
- }
-
+ *s = check_uuid_in_use(ref, domain);
+ if (s->rc != CMPI_RC_OK)
+ goto out;
+
msg = classify_resources(resources, NAMESPACE(ref), domain);
if (msg != NULL) {
CU_DEBUG("Failed to classify resources: %s", msg);
@@ -1644,6 +1659,10 @@
goto out;
}
+ s = check_uuid_in_use(ref, dominfo);
+ if (s.rc != CMPI_RC_OK)
+ goto out;
+
xml = system_to_xml(dominfo);
if (xml != NULL) {
CU_DEBUG("New XML is:\n%s", xml);