
Dan Smith wrote:
# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1209053161 25200 # Node ID b0cbe4e6fd7d1b2f072d2a3b3c3e3ee99b45ef0f # Parent c84430202e2e416c183f186a37a0c80d2fcb4896 Add the HostSystem-to-AC link with EC
This happens as part of the existing HostSystem->*Capabilities code, but we also insert the Characteristics array into the Reference instance. As far as I can tell, this is okay to be 2=Default for all those references. Also, only do this for the MemoryAC at the moment, since only that profile specifies this behavior.
The reverse direction replaces the unsupported AC-to-pool code with bits to return the HostSystem.
Signed-off-by: Dan Smith <danms@us.ibm.com>
diff -r c84430202e2e -r b0cbe4e6fd7d src/Virt_ElementCapabilities.c --- a/src/Virt_ElementCapabilities.c Thu Apr 24 08:47:26 2008 -0700 +++ b/src/Virt_ElementCapabilities.c Thu Apr 24 09:06:01 2008 -0700 @@ -41,6 +41,8 @@ #include "Virt_VSMigrationCapabilities.h" #include "Virt_AllocationCapabilities.h"
+#include "svpc_types.h" + /* Associate an XXX_Capabilities to the proper XXX_ManagedElement. * * -- or -- @@ -143,6 +145,11 @@ static CMPIStatus sys_to_cap(const CMPIO if (s.rc == CMPI_RC_OK) inst_list_add(list, inst);
+ s = enum_alloc_cap_instances(_BROKER, ref, NULL, NULL, list); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Failed to enum AC: %s", + CMGetCharPtr(s.msg)); + } out: return s; } @@ -260,8 +267,32 @@ static CMPIStatus alloc_to_pool(const CM struct std_assoc_info *info, struct inst_list *list)
Can you add a comment here that this function handles AC --> HS AC --> pool The function name is confusing (or confused me at least =)
+ +static CMPIInstance *make_ref_default(const CMPIObjectPath *source_ref, + const CMPIInstance *target_inst, + struct std_assoc_info *info, + struct std_assoc *assoc) +{ + CMPIInstance *ref_inst = NULL; + CMPIArray *array = NULL; + CMPIStatus s; + uint16_t val = CIM_EC_CHAR_DEFAULT; + + ref_inst = make_reference(_BROKER, + source_ref, + target_inst, + info, + assoc); + + array = CMNewArray(_BROKER, 1, CMPI_uint16, &s); + if ((array == NULL) || (s.rc != CMPI_RC_OK)) { + CU_DEBUG("Unable to allocate Characteristics array"); + goto out; + } + + CMSetArrayElementAt(array, 0, &val, CMPI_uint16); + + CMSetProperty(ref_inst, "Characteristics", + (CMPIValue *)&array, CMPI_uint16A);
It looks like the Characteristics value gets set even for the AC -> Pool case. Is this expected?
+ + out: + return ref_inst; }
-- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com