[PATCH] Verify specified UUID is not in use by existing guest

# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1245863542 25200 # Node ID 7417f62e29eb8b37acb66e616e49f51901f610c6 # Parent 76be9533b5bab87a55c14ab68640c82cfd400b7b Verify specified UUID is not in use by existing guest Before generating the XML needed to define a guest, make sure a guest with the same UUID is not already defined. Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com> diff -r 76be9533b5ba -r 7417f62e29eb src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Wed Jun 24 09:06:46 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 24 10:12:22 2009 -0700 @@ -1243,6 +1243,8 @@ CMPIInstance *inst = NULL; char *xml = NULL; const char *msg = NULL; + virConnectPtr conn = NULL; + virDomainPtr dom = NULL; struct domain *domain = NULL; @@ -1268,6 +1270,26 @@ goto out; } + if (domain->uuid != NULL) { + conn = connect_by_classname(_BROKER, CLASSNAME(ref), NULL); + 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; + } + } + msg = classify_resources(resources, NAMESPACE(ref), domain); if (msg != NULL) { CU_DEBUG("Failed to classify resources: %s", msg); @@ -1295,6 +1317,8 @@ out: cleanup_dominfo(&domain); free(xml); + virDomainFree(dom); + virConnectClose(conn); return inst; }

+1 Kaitlin Rupert wrote:
# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1245863542 25200 # Node ID 7417f62e29eb8b37acb66e616e49f51901f610c6 # Parent 76be9533b5bab87a55c14ab68640c82cfd400b7b Verify specified UUID is not in use by existing guest
Before generating the XML needed to define a guest, make sure a guest with the same UUID is not already defined.
Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com>
diff -r 76be9533b5ba -r 7417f62e29eb src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Wed Jun 24 09:06:46 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 24 10:12:22 2009 -0700 @@ -1243,6 +1243,8 @@ CMPIInstance *inst = NULL; char *xml = NULL; const char *msg = NULL; + virConnectPtr conn = NULL; + virDomainPtr dom = NULL;
struct domain *domain = NULL;
@@ -1268,6 +1270,26 @@ goto out; }
+ if (domain->uuid != NULL) { + conn = connect_by_classname(_BROKER, CLASSNAME(ref), NULL); + 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; + } + } + msg = classify_resources(resources, NAMESPACE(ref), domain); if (msg != NULL) { CU_DEBUG("Failed to classify resources: %s", msg); @@ -1295,6 +1317,8 @@ out: cleanup_dominfo(&domain); free(xml); + virDomainFree(dom); + virConnectClose(conn);
return inst; }
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim
-- Richard Maciel, MSc IBM Linux Technology Center rmaciel@linux.vnet.ibm.com
participants (2)
-
Kaitlin Rupert
-
Richard Maciel