# HG changeset patch
# User Heidi Eckhart <heidieck(a)linux.vnet.ibm.com>
# Date 1196340080 -3600
# Node ID 0f6cf316d454a485c3cc965305dd353664873d1f
# Parent 8a75970ed83c888e50b7b83360078c8ab32316db
HS: Adoption of changes to std_assoc struct in std_association
This is the follow up patch to the API changes made in
std_association. The struct std_assoc does now take lists
for source, target and assoc classnames.
Signed-off-by: Heidi Eckhart <heidieck(a)linux.vnet.ibm.com>
diff -r 8a75970ed83c -r 0f6cf316d454 src/Virt_HostedService.c
--- a/src/Virt_HostedService.c Thu Nov 29 13:33:17 2007 +0100
+++ b/src/Virt_HostedService.c Thu Nov 29 13:41:20 2007 +0100
@@ -81,16 +81,17 @@ static CMPIInstance *make_ref(const CMPI
struct std_assoc_info *info,
struct std_assoc *assoc)
{
+ CMPIStatus s = {CMPI_RC_OK, NULL};
CMPIInstance *refinst = NULL;
- char *base;
+ virConnectPtr conn = NULL;
- base = class_base_name(assoc->assoc_class);
- if (base == NULL)
- goto out;
+ conn = connect_by_classname(_BROKER, CLASSNAME(ref), &s);
+ if (conn == NULL)
+ return NULL;
refinst = get_typed_instance(_BROKER,
- CLASSNAME(ref),
- base,
+ pfx_from_conn(conn),
+ "HostedService",
NAMESPACE(ref));
if (refinst != NULL) {
@@ -101,67 +102,58 @@ static CMPIInstance *make_ref(const CMPI
set_reference(assoc, refinst, ref, instop);
}
-out:
+ virConnectClose(conn);
+
return refinst;
}
-static struct std_assoc xen_host_to_service = {
- .source_class = "Xen_HostSystem",
+char* antecedent[] = {
+ "Xen_HostSystem",
+ "KVM_HostSystem",
+ NULL
+};
+
+char* dependent[] = {
+ "Xen_VirtualSystemManagementService",
+ "KVM_VirtualSystemManagementService",
+ NULL
+};
+
+char* assoc_classname[] = {
+ "Xen_HostedService",
+ "KVM_HostedService",
+ NULL
+};
+
+static struct std_assoc _host_to_service = {
+ .source_class = (char**)&antecedent,
.source_prop = "Antecedent",
- .target_class = "CIM_ManagedElement",
+ .target_class = (char**)&dependent,
.target_prop = "Dependent",
- .assoc_class = "CIM_HostedService",
+ .assoc_class = (char**)&assoc_classname,
.handler = host_to_service,
.make_ref = make_ref
};
-static struct std_assoc xen_service_to_host = {
- .source_class = "CIM_Service",
+static struct std_assoc _service_to_host = {
+ .source_class = (char**)&dependent,
.source_prop = "Dependent",
-
- .target_class = "CIM_ManagedElement",
+
+ .target_class = (char**)&antecedent,
.target_prop = "Antecedent",
- .assoc_class = "CIM_HostedService",
-
- .handler = service_to_host,
- .make_ref = make_ref
-};
-
-static struct std_assoc kvm_host_to_service = {
- .source_class = "KVM_HostSystem",
- .source_prop = "Antecedent",
-
- .target_class = "CIM_Service",
- .target_prop = "Dependent",
-
- .assoc_class = "CIM_HostedService",
-
- .handler = host_to_service,
- .make_ref = make_ref
-};
-
-static struct std_assoc kvm_service_to_host = {
- .source_class = "CIM_Service",
- .source_prop = "Dependent",
-
- .target_class = "KVM_ComputerSystem",
- .target_prop = "Antecedent",
-
- .assoc_class = "CIM_HostedService",
-
+ .assoc_class = (char**)&assoc_classname,
+
.handler = service_to_host,
.make_ref = make_ref
};
static struct std_assoc *handlers[] = {
- &xen_host_to_service,
- &xen_service_to_host,
- &kvm_host_to_service,
- &kvm_service_to_host,
+ &_host_to_service,
+ &_service_to_host,
NULL
};