1
/*################################################################################
2
# Linux Management Providers (LMP), Simple Identity Management provider package
3
# Copyright (C) 2007 Frederic Desmons, ETRI <desmons@etri.re.kr, desmons_frederic@yahoo.fr>
5
# This program is being developed under the "OpenDRIM" project.
6
# The "OpenDRIM" project web page: http://opendrim.sourceforge.net
7
# The "OpenDRIM" project mailing list: opendrim@googlegroups.com
9
# This program is free software; you can redistribute it and/or
10
# modify it under the terms of the GNU General Public License
11
# as published by the Free Software Foundation; version 2
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
19
# You should have received a copy of the GNU General Public License
20
# along with this program; if not, write to the Free Software
21
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22
#################################################################################
24
#################################################################################
25
# To contributors, please leave your contact information in this section
26
# AND comment your changes in the source code.
28
# Modified by 2009 Khahramon NURIDDINOV, TUIT <qahramon0786@gmail.com>
29
# Modified by 2009 Guillaume BOTTEX, ETRI <guillaumebottex@etri.re.kr>
30
################################################################################*/
32
#include "assocOpenDRIM_GroupAssignedIdentity.h"
34
int Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_associatorFilter(const CMPIBroker* broker, const CMPIContext* ctx, const CMPIObjectPath* cop, Instance& knownInstance, const char* assocClass, const char* resultClass, const char* role, const char* resultRole, bool& leftToRight, string& errorMessage) {
36
string _assocClass, _resultClass, _resultRole, _role;
37
assocClass == NULL ? _assocClass = "null" : _assocClass = assocClass;
38
resultClass == NULL ? _resultClass = "null" : _resultClass = resultClass;
39
resultRole == NULL ? _resultRole = "null" : _resultRole = resultRole;
40
role == NULL ? _role = "null" : _role = role;
42
for (unsigned int i=0; i<sizeof(OpenDRIM_GroupAssignedIdentity_classnames)/sizeof(char*); i++) {
43
if (CF_strCmpNoCase(_assocClass, OpenDRIM_GroupAssignedIdentity_classnames[i])) {
44
_assocClass=OpenDRIM_GroupAssignedIdentity_classnames[0];
48
if (!CF_strCmpNoCase(_assocClass, "null") && !CF_strCmpNoCase(_assocClass, OpenDRIM_GroupAssignedIdentity_classnames[0]))
51
Objectpath known(broker, (CMPIObjectPath*) cop);
52
int errorCode = CA_associatorResolveDirection(broker, IdentityInfo_classnames, ManagedElement_classnames, IdentityInfo_NAMESPACE, ManagedElement_NAMESPACE, IdentityInfo_role, ManagedElement_role, known, _resultClass, _role, _resultRole, leftToRight);
57
CF_assert(Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_getIdentityInfo(broker, ctx, known, knownInstance, NULL, errorMessage));
59
CF_assert(Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_getManagedElement(broker, ctx, known, knownInstance, NULL, errorMessage));
65
int Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_associator(const CMPIBroker* broker, const CMPIContext* ctx, const CMPIObjectPath* cop, Instance& knownInstance, const char* assocClass, const char* resultClass, const char* role, const char* resultRole, const char** properties, vector<Instance>& associatedInstances, bool& leftToRight, string& errorMessage, const string& dicriminant) {
67
int errorCode = Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_associatorFilter(broker, ctx, cop, knownInstance, assocClass, resultClass, role, resultRole, leftToRight, errorMessage);
74
if (role != NULL && strcasecmp(role, "IdentityInfo") != 0) return OK;
75
if (resultRole != NULL && strcasecmp(resultRole, "ManagedElement") != 0) return OK;
76
CF_assert(Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_associatorIdentityInfoToManagedElement(broker, ctx, knownInstance, properties, associatedInstances, errorMessage, dicriminant));
78
if (role != NULL && strcasecmp(role, "ManagedElement") != 0) return OK;
79
if (resultRole != NULL && strcasecmp(resultRole, "IdentityInfo") != 0) return OK;
80
CF_assert(Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_associatorManagedElementToIdentityInfo(broker, ctx, knownInstance, properties, associatedInstances, errorMessage, dicriminant));
86
int Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_enumerateIdentityInfos(const CMPIBroker* broker, const CMPIContext* ctx, vector<Instance>& instances, const char** properties, bool onlyNames, string& errorMessage) {
92
vector<Objectpath> objectpaths;
93
CF_assert(CB_enumerateInstanceNames(broker, ctx, IdentityInfo_NAMESPACE, IdentityInfo_classnames[0], objectpaths, errorMessage));
94
for (size_t i=0; i<objectpaths.size(); i++)
95
instances.push_back(Instance(broker, objectpaths[i]));
97
CF_assert(CB_enumerateInstances(broker,ctx, IdentityInfo_NAMESPACE, IdentityInfo_classnames[0], properties, instances, errorMessage));
100
* Direct Invocation version
103
vector<CIM_Identity> _instances;
105
CF_assert(Simple_Identity_Management_CIM_Identity_retrieve(broker, ctx, _instances, properties, errorMessage, "ein"));
107
CF_assert(Simple_Identity_Management_CIM_Identity_retrieve(broker, ctx, _instances, properties, errorMessage, "ei"));
110
for (size_t i=0; i<_instances.size(); i++)
111
instances.push_back(Instance(broker, Simple_Identity_Management_CIM_Identity_toCMPIInstance(broker, _instances[i])));
117
int Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_getIdentityInfo(const CMPIBroker* broker, const CMPIContext* ctx, const Objectpath& objectpath, Instance& instance, const char** properties, string& errorMessage) {
119
if (!CF_strCmpNoCase(objectpath.getClassname(), IdentityInfo_classnames[0]))
120
return INVALID_CLASS;
121
//if (!CF_strCmpNoCase(objectpath.getNamespace(), IdentityInfo_NAMESPACE))
122
// return INVALID_NAMESPACE;
124
* CMPI broker version
126
CF_assert(CB_getInstance(broker, ctx, objectpath, properties, instance, errorMessage));
129
* Direct Invocation version
132
CIM_Identity _instance;
133
Simple_Identity_Management_CIM_Identity_toCPP(broker, objectpath.getHdl(), _instance);
134
CF_assert(Simple_Identity_Management_CIM_Identity_getInstance(broker, ctx, _instance, properties, errorMessage));
135
instance = Instance(broker, Simple_Identity_Management_CIM_Identity_toCMPIInstance(broker, _instance));
141
int Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_enumerateManagedElements(const CMPIBroker* broker, const CMPIContext* ctx, vector<Instance>& instances, const char** properties, bool onlyNames, string& errorMessage) {
144
* CMPI broker version
147
vector<Objectpath> objectpaths;
148
CF_assert(CB_enumerateInstanceNames(broker, ctx, ManagedElement_NAMESPACE, ManagedElement_classnames[0], objectpaths, errorMessage));
149
for (size_t i=0; i<objectpaths.size(); i++)
150
instances.push_back(Instance(broker, objectpaths[i]));
152
CF_assert(CB_enumerateInstances(broker,ctx, ManagedElement_NAMESPACE, ManagedElement_classnames[0], properties, instances, errorMessage));
155
* Direct Invocation version
158
vector<CIM_ManagedElement> _instances;
160
CF_assert(Simple_Identity_Management_CIM_ManagedElement_retrieve(broker, ctx, _instances, properties, errorMessage, "ein"));
162
CF_assert(Simple_Identity_Management_CIM_ManagedElement_retrieve(broker, ctx, _instances, properties, errorMessage, "ei"));
165
for (size_t i=0; i<_instances.size(); i++)
166
instances.push_back(Instance(broker, Simple_Identity_Management_CIM_ManagedElement_toCMPIInstance(broker, _instances[i])));
172
int Simple_Identity_Management_OpenDRIM_GroupAssignedIdentity_getManagedElement(const CMPIBroker* broker, const CMPIContext* ctx, const Objectpath& objectpath, Instance& instance, const char** properties, string& errorMessage) {
174
if (!CF_strCmpNoCase(objectpath.getClassname(), ManagedElement_classnames[0]))
175
return INVALID_CLASS;
176
//if (!CF_strCmpNoCase(objectpath.getNamespace(), ManagedElement_NAMESPACE))
177
// return INVALID_NAMESPACE;
179
* CMPI broker version
181
CF_assert(CB_getInstance(broker, ctx, objectpath, properties, instance, errorMessage));
184
* Direct Invocation version
187
CIM_ManagedElement _instance;
188
Simple_Identity_Management_CIM_ManagedElement_toCPP(broker, objectpath.getHdl(), _instance);
189
CF_assert(Simple_Identity_Management_CIM_ManagedElement_getInstance(broker, ctx, _instance, properties, errorMessage));
190
instance = Instance(broker, Simple_Identity_Management_CIM_ManagedElement_toCMPIInstance(broker, _instance));