# HG changeset patch
# User Dan Smith <danms(a)us.ibm.com>
# Date 1196465546 28800
# Node ID e6be7823c8e90c1f4b722ce1b33d6d15db123029
# Parent 41b88691861933c0fa5b0ead6f27bd1b9730985d
Make ElementCapabilities not assume a devid-style InstanceID
For the cap_to_sys case, grab the host_cs and use cu_compare_ref()
instead of inspecting the InstanceID directly.
Signed-off-by: Dan Smith <danms(a)us.ibm.com>
diff -r 41b886918619 -r e6be7823c8e9 src/Virt_ElementCapabilities.c
--- a/src/Virt_ElementCapabilities.c Fri Nov 30 15:26:49 2007 -0800
+++ b/src/Virt_ElementCapabilities.c Fri Nov 30 15:32:26 2007 -0800
@@ -52,34 +52,22 @@ static CMPIStatus sys_to_cap(const CMPIO
struct inst_list *list)
{
CMPIInstance *inst;
- CMPIrc host_rc;
- const char *host_name = NULL;
- const char *sys_name = NULL;
- CMPIStatus s = {CMPI_RC_OK, NULL};
+ CMPIStatus s = {CMPI_RC_OK, NULL};
+ const char *prop;
s = get_host_cs(_BROKER, ref, &inst);
if (s.rc != CMPI_RC_OK)
goto out;
- host_rc = cu_get_str_prop(inst, "Name", &host_name);
- if (host_rc != CMPI_RC_OK)
- goto out;
-
- if (cu_get_str_path(ref, "Name", &sys_name) != CMPI_RC_OK) {
+ prop = cu_compare_ref(ref, inst);
+ if (prop != NULL) {
cu_statusf(_BROKER, &s,
CMPI_RC_ERR_FAILED,
- "Missing `Name' property");
- goto out;
- }
-
- if (!STREQ(sys_name, host_name)) {
- cu_statusf(_BROKER, &s,
- CMPI_RC_ERR_FAILED,
- "System '%s' is not a host system",
sys_name);
- goto out;
- }
-
- s = get_vsm_cap(_BROKER, ref, sys_name, &inst);
+ "No such HostSystem (%s)", prop);
+ goto out;
+ }
+
+ s = get_vsm_cap(_BROKER, ref, &inst);
if (s.rc == CMPI_RC_OK)
inst_list_add(list, inst);
out:
@@ -90,44 +78,16 @@ static CMPIStatus cap_to_sys(const CMPIO
struct std_assoc_info *info,
struct inst_list *list)
{
- const char *inst_id;
- char *host;
- char *device;
- const char *host_name;
- CMPIrc host_rc;
- CMPIInstance *inst;
- CMPIStatus s = {CMPI_RC_OK, NULL};
-
- if (cu_get_str_path(ref, "InstanceID", &inst_id) != CMPI_RC_OK) {
- cu_statusf(_BROKER, &s,
- CMPI_RC_ERR_FAILED,
- "Could not get InstanceID");
- goto out;
- }
-
- if (!parse_fq_devid(inst_id, &host, &device)) {
- cu_statusf(_BROKER, &s,
- CMPI_RC_ERR_FAILED,
- "Could not get system name");
- goto out;
- }
+ CMPIInstance *inst;
+ CMPIStatus s = {CMPI_RC_OK, NULL};
s = get_host_cs(_BROKER, ref, &inst);
if (s.rc != CMPI_RC_OK)
goto out;
- host_rc = cu_get_str_prop(inst, "Name", &host_name);
- if (host_rc != CMPI_RC_OK)
- goto out;
-
- if (!STREQ(host_name, host))
- goto out;
-
inst_list_add(list, inst);
out:
- free(host);
- free(device);
return s;
}