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 "cmpiOpenDRIM_AccountAssociatedCapabilities.h"
33
#include "OpenDRIM_AccountAssociatedCapabilitiesAccess.h"
35
static const CMPIBroker * _broker;
38
#define Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderSetInstance Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderModifyInstance
41
int Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_init(const CMPIBroker* broker);
43
int Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_finalize();
45
/* ---------------------------------------------------------------------------*/
46
/* Instance Provider Interface */
47
/* ---------------------------------------------------------------------------*/
49
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderCleanup(CMPIInstanceMI * mi, const CMPIContext* ctx, CMPIBoolean terminate) {
51
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_finalize();
53
CMSetStatus(&rc, (CMPIrc) errorCode);
58
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderEnumInstanceNames(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref) {
60
CMPIStatus rc = {CMPI_RC_OK, NULL};
61
vector<OpenDRIM_AccountAssociatedCapabilities> instances;
64
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_retrieve(_broker, ctx, instances, NULL, errorMessage, "ein");
65
if (errorCode != OK) {
66
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
67
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
70
for (size_t i=0; i < instances.size(); i++) {
71
CMPIObjectPath* op = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCMPIObjectPath(_broker, instances[i]);
72
CMReturnObjectPath(rslt, op);
79
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderEnumInstances(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char** properties) {
81
CMPIStatus rc = {CMPI_RC_OK, NULL};
82
vector<OpenDRIM_AccountAssociatedCapabilities> instances;
85
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_retrieve(_broker, ctx, instances, properties, errorMessage, "ei");
86
if (errorCode != OK) {
87
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
88
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
91
for (size_t i=0; i < instances.size(); i++) {
92
CMPIInstance* ci = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCMPIInstance(_broker, instances[i]);
93
CMReturnInstance(rslt, ci);
100
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderGetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char** properties) {
102
CMPIStatus rc = {CMPI_RC_OK, NULL};
103
OpenDRIM_AccountAssociatedCapabilities instance;
104
Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCPP(_broker, cop, instance);
107
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_getInstance(_broker, ctx, instance, properties, errorMessage);
108
if (errorCode != OK) {
109
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
110
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
113
CMPIInstance* ci = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCMPIInstance(_broker, instance);
114
CMReturnInstance(rslt, ci);
120
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderSetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci, const char** properties) {
122
CMPIStatus rc = {CMPI_RC_OK, NULL};
123
OpenDRIM_AccountAssociatedCapabilities newInstance, oldInstance;
124
Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCPP(_broker, ci, newInstance);
125
Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCPP(_broker, cop, oldInstance);
128
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_getInstance(_broker, ctx, oldInstance, properties, errorMessage);
129
if (errorCode != OK) {
130
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
131
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
134
errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_setInstance(_broker, ctx, newInstance, oldInstance, properties, errorMessage);
135
if (errorCode != OK) {
136
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
137
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
145
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderCreateInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci) {
147
CMPIStatus rc = {CMPI_RC_OK, NULL};
148
OpenDRIM_AccountAssociatedCapabilities instance;
149
Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCPP(_broker, ci, instance);
152
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
153
if (errorCode != NOT_FOUND) {
155
errorCode = ALREADY_EXISTS;
156
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
157
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
160
errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_createInstance(_broker, ctx, instance, errorMessage);
161
if (errorCode != OK) {
162
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
163
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
166
errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
167
if (errorCode != OK) {
168
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
169
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
172
CMPIObjectPath* _cop = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCMPIObjectPath(_broker, instance);
173
CMReturnObjectPath(rslt, _cop);
179
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderDeleteInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop) {
181
CMPIStatus rc = {CMPI_RC_OK, NULL};
182
OpenDRIM_AccountAssociatedCapabilities instance;
183
Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCPP(_broker, cop, instance);
186
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
187
if (errorCode != OK) {
188
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
189
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
192
errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_deleteInstance(_broker, ctx, instance, errorMessage);
193
if (errorCode != OK) {
194
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
195
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
203
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderExecQuery(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char* lang, const char* query) {
205
CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
208
/* ---------------------------------------------------------------------------*/
209
/* End of Instance Provider Interface */
210
/* ---------------------------------------------------------------------------*/
212
/* ---------------------------------------------------------------------------*/
213
/* Association Provider Interface */
214
/* ---------------------------------------------------------------------------*/
216
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderAssociationCleanup(CMPIAssociationMI * mi, const CMPIContext* ctx, CMPIBoolean terminate) {
218
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_finalize();
220
CMSetStatus(&rc, (CMPIrc) errorCode);
225
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderAssociatorNames(CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char* assocClass, const char* resultClass, const char* role, const char* resultRole) {
227
CMPIStatus rc = {CMPI_RC_OK, NULL};
231
vector<Instance> associatedInstances;
233
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_associator(_broker, ctx, cop, known, assocClass, resultClass, role, resultRole, NULL, associatedInstances, leftToRight, errorMessage, "an");
234
if (errorCode != OK) {
235
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
236
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
240
for (size_t i=0; i < associatedInstances.size(); i++)
241
CMReturnObjectPath(rslt, associatedInstances[i].getObjectpath().getHdl());
247
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderAssociators(CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char* assocClass, const char* resultClass, const char* role, const char* resultRole, const char** properties) {
249
CMPIStatus rc = {CMPI_RC_OK, NULL};
253
vector<Instance> associatedInstances;
255
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_associator(_broker, ctx, cop, known, assocClass, resultClass, role, resultRole, properties, associatedInstances, leftToRight, errorMessage, "a");
256
if (errorCode != OK) {
257
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
258
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
262
for (size_t i=0; i < associatedInstances.size(); i++)
263
CMReturnInstance(rslt, associatedInstances[i].getHdl());
269
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderReferenceNames(CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char* assocClass, const char* role) {
271
CMPIStatus rc = {CMPI_RC_OK, NULL};
275
vector<Instance> associatedInstances;
277
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_associator(_broker, ctx, cop, known, assocClass, NULL, role, NULL, NULL, associatedInstances, leftToRight, errorMessage, "an");
278
if (errorCode != OK) {
279
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
280
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
284
vector<OpenDRIM_AccountAssociatedCapabilities> associationInstances;
286
errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_referenceCapabilitiesToManagedElement(_broker, ctx, known, associatedInstances, associationInstances, NULL, errorMessage, "rn");
288
errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_referenceManagedElementToCapabilities(_broker, ctx, known, associatedInstances, associationInstances, NULL, errorMessage, "rn");
289
if (errorCode != OK) {
290
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
291
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
295
for (size_t i=0; i < associationInstances.size(); i++) {
296
CMPIObjectPath* op = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCMPIObjectPath(_broker, associationInstances[i]);
297
CMReturnObjectPath(rslt, op);
303
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProviderReferences(CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char* assocClass, const char* role, const char** properties) {
305
CMPIStatus rc = {CMPI_RC_OK, NULL};
309
vector<Instance> associatedInstances;
311
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_associator(_broker, ctx, cop, known, assocClass, NULL, role, NULL, NULL, associatedInstances, leftToRight, errorMessage, "an");
312
if (errorCode != OK) {
313
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
314
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
318
vector<OpenDRIM_AccountAssociatedCapabilities> associationInstances;
320
errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_referenceCapabilitiesToManagedElement(_broker, ctx, known, associatedInstances, associationInstances, properties, errorMessage, "r");
322
errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_referenceManagedElementToCapabilities(_broker, ctx, known, associatedInstances, associationInstances, properties, errorMessage, "r");
323
if (errorCode != OK) {
324
errorMessage = (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
325
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
329
for (size_t i=0; i < associationInstances.size(); i++) {
330
CMPIInstance* inst = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_toCMPIInstance(_broker, associationInstances[i]);
331
CMReturnInstance(rslt, inst);
337
/* ---------------------------------------------------------------------------*/
338
/* End Of Association Provider Interface */
339
/* ---------------------------------------------------------------------------*/
341
/* ---------------------------------------------------------------------------*/
342
/* Provider Factory */
343
/* ---------------------------------------------------------------------------*/
345
int Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_init(const CMPIBroker* broker) {
348
static bool initialized = false;
351
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_load(broker, errorMessage);
352
if (errorCode != OK) {
353
errorMessage += "Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_init FAILED: " + (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
354
string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
364
int Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_finalize() {
366
static bool finalized = false;
369
int errorCode = Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_unload(errorMessage);
370
if (errorCode != OK) {
371
errorMessage += "Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_unload FAILED: " + (string) OpenDRIM_AccountAssociatedCapabilities_classnames[0] + ": " + errorMessage;
372
string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
382
#define Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_INIT if (Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_init(_broker) < 0) return NULL
384
CMInstanceMIStub(Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProvider, Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProvider, _broker, Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_INIT);
385
CMAssociationMIStub(Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProvider, Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilitiesProvider, _broker, Simple_Identity_Management_OpenDRIM_AccountAssociatedCapabilities_INIT);
387
/* ---------------------------------------------------------------------------*/
388
/* End of Provider Factory */
389
/* ---------------------------------------------------------------------------*/