[Libvirt-cim] [PATCH 2 of 2] Make ElementCapabilities not assume a devid-style InstanceID

Dan Smith danms at us.ibm.com
Fri Nov 30 22:35:50 UTC 2007


# HG changeset patch
# User Dan Smith <danms at 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 at 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;
 }
 




More information about the Libvirt-cim mailing list