# HG changeset patch
# User Heidi Eckhart <heidieck(a)linux.vnet.ibm.com>
# Date 1205488995 -3600
# Node ID 59f38ff0007af1489c4946672f6caa5b5fe196ce
# Parent a16bf3b5d0b964739a92ddbba418ab02709be59b
ECTP: adopt interface changes of RegisteredProfile
wbemain -ac CIM_ElementConformsToProfile
'http://localhost/root/virt:KVM_HostSystem.CreationClassName="KVM_HostSystem",Name="wrong"'
is returning
localhost:5988/root/virt:KVM_RegisteredProfile.InstanceID="CIM:DSP1042-SystemVirtualization-1.0.0"
instead of NOT_FOUND
Signed-off-by: Heidi Eckhart <heidieck(a)linux.vnet.ibm.com>
diff -r a16bf3b5d0b9 -r 59f38ff0007a src/Virt_ElementConformsToProfile.c
--- a/src/Virt_ElementConformsToProfile.c Fri Mar 14 11:02:13 2008 +0100
+++ b/src/Virt_ElementConformsToProfile.c Fri Mar 14 11:03:15 2008 +0100
@@ -60,7 +60,7 @@ static CMPIStatus elem_instances(const C
char *classname;
classname = get_typed_class(pfx_from_conn(conn),
- profile->provider_name);
+ profile->scoping_class);
if (classname == NULL) {
cu_statusf(_BROKER, &s,
CMPI_RC_ERR_FAILED,
@@ -72,7 +72,7 @@ static CMPIStatus elem_instances(const C
if ((s.rc != CMPI_RC_OK) || CMIsNullObject(op))
goto out;
- en = CBEnumInstances(_BROKER, info->context , op, NULL, &s);
+ en = CBEnumInstances(_BROKER, info->context , op, info->properties,
&s);
if (en == NULL) {
cu_statusf(_BROKER, &s,
CMPI_RC_ERR_FAILED,
@@ -103,12 +103,17 @@ static CMPIStatus prof_to_elem(const CMP
struct inst_list *list)
{
CMPIStatus s = {CMPI_RC_OK, NULL};
+ CMPIInstance *instance = NULL;
virConnectPtr conn = NULL;
const char *id;
int i;
if (!match_hypervisor_prefix(ref, info))
return s;
+
+ s = get_profile_by_ref(_BROKER, ref, info->properties, &instance);
+ if (s.rc != CMPI_RC_OK)
+ goto out;
conn = connect_by_classname(_BROKER, CLASSNAME(ref), &s);
if (conn == NULL)
@@ -122,11 +127,12 @@ static CMPIStatus prof_to_elem(const CMP
}
for (i = 0; profiles[i] != NULL; i++) {
- if (STREQ(id, profiles[i]->reg_id)) {
- s = elem_instances(ref, info, list,
- profiles[i], conn);
- if ((s.rc != CMPI_RC_OK))
- goto out;
+ if (STREQC(id, profiles[i]->reg_id)) {
+ s = elem_instances(ref,
+ info,
+ list,
+ profiles[i],
+ conn);
break;
}
}
@@ -142,13 +148,20 @@ static CMPIStatus elem_to_prof(const CMP
struct inst_list *list)
{
CMPIStatus s = {CMPI_RC_OK, NULL};
- CMPIInstance *instance;
+ CMPIInstance *instance = NULL;
virConnectPtr conn = NULL;
char *classname;
- struct reg_prof *candidate;
int i;
if (!match_hypervisor_prefix(ref, info))
+ return s;
+
+ instance = CBGetInstance(_BROKER,
+ info->context,
+ ref,
+ NULL,
+ &s);
+ if (s.rc != CMPI_RC_OK)
return s;
conn = connect_by_classname(_BROKER, CLASSNAME(ref), &s);
@@ -164,22 +177,18 @@ static CMPIStatus elem_to_prof(const CMP
}
for (i = 0; profiles[i] != NULL; i++) {
- candidate = profiles[i];
- if (!STREQC(candidate->provider_name, classname))
+ if (!STREQC(profiles[i]->scoping_class, classname))
continue;
- instance = reg_prof_instance(_BROKER,
- "root/interop",
- NULL,
- conn,
- candidate);
- if (instance == NULL) {
- cu_statusf(_BROKER, &s,
- CMPI_RC_ERR_FAILED,
- "Can't create profile instance");
+ s = get_profile(_BROKER,
+ ref,
+ info->properties,
+ pfx_from_conn(conn),
+ profiles[i],
+ &instance);
+ if (s.rc != CMPI_RC_OK)
goto out;
- }
-
+
inst_list_add(list, instance);
}