[Libvirt-cim] [PATCH] Add logic to delete storage pools
Richard Maciel
rmaciel at linux.vnet.ibm.com
Tue Apr 14 20:59:25 UTC 2009
+1
Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert <karupert at us.ibm.com>
> # Date 1239296847 25200
> # Node ID cdf4fa212c15f1b22b0b4b1d1535e1716e1e52d2
> # Parent 3b7ba02cd34a4b91903e4d412fc7d5dd75779598
> Add logic to delete storage pools.
>
> Older versions of libvirt don't support storage pool creation / deletion. So
> the pool deletion logic needs to return a different error message in the case
> of older versions.
>
> Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>
>
> diff -r 3b7ba02cd34a -r cdf4fa212c15 libxkutil/pool_parsing.c
> --- a/libxkutil/pool_parsing.c Tue Apr 07 21:54:43 2009 -0300
> +++ b/libxkutil/pool_parsing.c Thu Apr 09 10:07:27 2009 -0700
> @@ -138,9 +138,32 @@
>
> err1:
> virNetworkFree(ptr);
> +
> + } else if (res_type == CIM_RES_TYPE_DISK) {
> +#if VIR_USE_LIBVIRT_STORAGE
> + virStoragePoolPtr ptr = virStoragePoolLookupByName(conn, name);
> + if (ptr == NULL) {
> + CU_DEBUG("Storage pool %s is not defined", name);
> + return 0;
> + }
> +
> + if (virStoragePoolDestroy(ptr) != 0) {
> + CU_DEBUG("Unable to destroy storage pool");
> + goto err2;
> + }
> +
> + if (virStoragePoolUndefine(ptr) != 0) {
> + CU_DEBUG("Unable to undefine storage pool");
> + goto err2;
> + }
> +
> + ret = 1;
> +
> + err2:
> + virStoragePoolFree(ptr);
> +#endif
> }
>
> -
> return ret;
> }
>
> diff -r 3b7ba02cd34a -r cdf4fa212c15 src/Virt_ResourcePoolConfigurationService.c
> --- a/src/Virt_ResourcePoolConfigurationService.c Tue Apr 07 21:54:43 2009 -0300
> +++ b/src/Virt_ResourcePoolConfigurationService.c Thu Apr 09 10:07:27 2009 -0700
> @@ -139,6 +139,18 @@
> return msg;
>
> }
> +
> +static const char *_delete_pool(virConnectPtr conn,
> + const char *pool_name,
> + uint16_t type)
> +{
> + const char *msg = NULL;
> +
> + if (destroy_pool(conn, pool_name, type) == 0)
> + msg = "Unable to destroy resource pool";
> +
> + return msg;
> +}
> #else
> static const char *disk_rasd_to_pool(CMPIInstance *inst,
> struct virt_pool *pool,
> @@ -146,6 +158,13 @@
> {
> return "Storage pool creation not supported in this version of libvirt";
> }
> +
> +static const char *_delete_pool(virConnectPtr conn,
> + const char *pool_name,
> + uint16_t type)
> +{
> + return "Storage pool deletion not supported in this version of libvirt";
> +}
> #endif
>
> static const char *rasd_to_vpool(CMPIInstance *inst,
> @@ -379,6 +398,7 @@
> CMPIObjectPath *pool = NULL;
> virConnectPtr conn = NULL;
> const char *poolid = NULL;
> + const char *msg = NULL;
> char *pool_name = NULL;
> uint16_t type;
>
> @@ -432,10 +452,12 @@
> goto out;
> }
>
> - if (destroy_pool(conn, pool_name, type) == 0) {
> + msg = _delete_pool(conn, pool_name, type);
> + if (msg != NULL) {
> cu_statusf(_BROKER, &s,
> CMPI_RC_ERR_FAILED,
> - "Unable to destroy resource pool");
> + "Storage pool deletion error: %s", msg);
> +
> goto out;
> }
>
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
--
Richard Maciel, MSc
IBM Linux Technology Center
rmaciel at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list