Dan Smith wrote:
# HG changeset patch
# User Dan Smith <danms(a)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(a)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(a)linux.vnet.ibm.com