
# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1195491890 28800 # Node ID 59abf0e63644d8c306492645f9291718c35e40d5 # Parent 7a114401c8ede2268fb291d713c0b1e4715b0b8d Make DevicePool use connect_by_classname() Signed-off-by: Dan Smith <danms@us.ibm.com> diff -r 7a114401c8ed -r 59abf0e63644 src/Virt_DevicePool.c --- a/src/Virt_DevicePool.c Mon Nov 19 08:59:59 2007 -0800 +++ b/src/Virt_DevicePool.c Mon Nov 19 09:04:50 2007 -0800 @@ -148,7 +148,9 @@ static char *_diskpool_member_of(const c return pool; } -static char *diskpool_member_of(const CMPIBroker *broker, char *rasd_id) +static char *diskpool_member_of(const CMPIBroker *broker, + const char *rasd_id, + const char *refcn) { char *host = NULL; char *dev = NULL; @@ -165,7 +167,7 @@ static char *diskpool_member_of(const CM if (!ret) goto out; - conn = lv_connect(broker, &s); + conn = connect_by_classname(broker, refcn, &s); if (conn == NULL) goto out; @@ -194,7 +196,9 @@ static char *diskpool_member_of(const CM return pool; } -static char *netpool_member_of(const CMPIBroker *broker, char *rasd_id) +static char *netpool_member_of(const CMPIBroker *broker, + const char *rasd_id, + const char *refcn) { char *host = NULL; char *dev = NULL; @@ -211,7 +215,7 @@ static char *netpool_member_of(const CMP if (!ret) goto out; - conn = lv_connect(broker, &s); + conn = connect_by_classname(broker, refcn, &s); if (conn == NULL) goto out; @@ -243,7 +247,10 @@ static char *netpool_member_of(const CMP return result; } -char *pool_member_of(const CMPIBroker *broker, uint16_t type, char *id) +char *pool_member_of(const CMPIBroker *broker, + const char *refcn, + uint16_t type, + const char *id) { char *poolid = NULL; @@ -252,9 +259,9 @@ char *pool_member_of(const CMPIBroker *b else if (type == CIM_RASD_TYPE_MEM) poolid = strdup("MemoryPool/0"); else if (type == CIM_RASD_TYPE_NET) - poolid = netpool_member_of(broker, id); + poolid = netpool_member_of(broker, id, refcn); else if (type == CIM_RASD_TYPE_DISK) - poolid = diskpool_member_of(broker, id); + poolid = diskpool_member_of(broker, id, refcn); else return NULL; @@ -630,7 +637,7 @@ static CMPIStatus return_pool(const CMPI inst_list_init(&list); - conn = lv_connect(_BROKER, &s); + conn = connect_by_classname(_BROKER, CLASSNAME(ref), &s); if (conn == NULL) goto out; @@ -691,7 +698,7 @@ static CMPIStatus GetInstance(CMPIInstan goto out; } - conn = lv_connect(_BROKER, &s); + conn = connect_by_classname(_BROKER, CLASSNAME(reference), &s); if (conn == NULL) goto out; diff -r 7a114401c8ed -r 59abf0e63644 src/Virt_DevicePool.h --- a/src/Virt_DevicePool.h Mon Nov 19 08:59:59 2007 -0800 +++ b/src/Virt_DevicePool.h Mon Nov 19 09:04:50 2007 -0800 @@ -39,7 +39,21 @@ CMPIInstance *get_pool_by_id(const CMPIB const char *id, const char *ns); -char *pool_member_of(const CMPIBroker *broker, uint16_t type, char *id); + +/** + * Get the InstanceID of a pool that a given RASD id (for type) is in + * + * @param broker The current Broker + * @param refcn A reference classname to be used for libvirt + * connections. This can be anything as long as the + * prefix is correct. + * @param type The ResourceType of the RASD + * @param id The InstanceID of the RASD + */ +char *pool_member_of(const CMPIBroker *broker, + const char *refcn, + uint16_t type, + const char *id); #endif diff -r 7a114401c8ed -r 59abf0e63644 src/Virt_ElementAllocatedFromPool.c --- a/src/Virt_ElementAllocatedFromPool.c Mon Nov 19 08:59:59 2007 -0800 +++ b/src/Virt_ElementAllocatedFromPool.c Mon Nov 19 09:04:50 2007 -0800 @@ -84,7 +84,7 @@ static CMPIStatus vdev_to_pool(const CMP goto out; } - poolid = pool_member_of(_BROKER, type, id); + poolid = pool_member_of(_BROKER, CLASSNAME(ref), type, id); if (poolid == NULL) { cu_statusf(_BROKER, &s, CMPI_RC_ERR_FAILED, @@ -120,21 +120,27 @@ static int filter_by_pool(struct inst_li const char *_poolid) { int i; - char *dev_id = NULL; char *poolid = NULL; for (i = 0; i < src->cur; i++) { CMPIInstance *inst = src->list[i]; - + char *cn = NULL; + char *dev_id = NULL; + + cu_get_str_prop(inst, "CreationClassName", &cn); cu_get_str_prop(inst, "DeviceID", &dev_id); + if ((dev_id == NULL) || (cn == NULL)) + goto end; + printf("Device %hhi:%s", type, dev_id); - poolid = pool_member_of(_BROKER, type, dev_id); + poolid = pool_member_of(_BROKER, cn, type, dev_id); if (poolid && STREQ(poolid, _poolid)) inst_list_add(dest, inst); - + end: free(dev_id); + free(cn); } return dest->cur; diff -r 7a114401c8ed -r 59abf0e63644 src/Virt_ResourceAllocationFromPool.c --- a/src/Virt_ResourceAllocationFromPool.c Mon Nov 19 08:59:59 2007 -0800 +++ b/src/Virt_ResourceAllocationFromPool.c Mon Nov 19 09:04:50 2007 -0800 @@ -66,7 +66,7 @@ static CMPIStatus rasd_to_pool(const CMP goto out; } - poolid = pool_member_of(_BROKER, type, id); + poolid = pool_member_of(_BROKER, CLASSNAME(ref), type, id); if (poolid == NULL) { cu_statusf(_BROKER, &s, CMPI_RC_ERR_FAILED, @@ -123,7 +123,7 @@ static int filter_by_pool(struct inst_li cu_get_str_prop(inst, "InstanceID", &rasd_id); - poolid = pool_member_of(_BROKER, type, rasd_id); + poolid = pool_member_of(_BROKER, CLASSNAME(op), type, rasd_id); if (STREQ(poolid, _poolid)) inst_list_add(dest, inst);