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_AccountCapabilities.h"
33
#include "OpenDRIM_AccountCapabilitiesAccess.h"
35
static const CMPIBroker * _broker;
38
#define Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderSetInstance Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderModifyInstance
41
int Simple_Identity_Management_OpenDRIM_AccountCapabilities_init(const CMPIBroker* broker);
43
int Simple_Identity_Management_OpenDRIM_AccountCapabilities_finalize();
45
/* ---------------------------------------------------------------------------*/
46
/* Instance Provider Interface */
47
/* ---------------------------------------------------------------------------*/
49
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderCleanup(CMPIInstanceMI * mi, const CMPIContext* ctx, CMPIBoolean terminate) {
51
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_finalize();
53
CMSetStatus(&rc, (CMPIrc) errorCode);
58
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderEnumInstanceNames(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref) {
60
CMPIStatus rc = {CMPI_RC_OK, NULL};
61
vector<OpenDRIM_AccountCapabilities> instances;
64
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_retrieve(_broker, ctx, instances, NULL, errorMessage, "ein");
65
if (errorCode != OK) {
66
errorMessage = (string) OpenDRIM_AccountCapabilities_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_AccountCapabilities_toCMPIObjectPath(_broker, instances[i]);
72
CMReturnObjectPath(rslt, op);
79
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderEnumInstances(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char** properties) {
81
CMPIStatus rc = {CMPI_RC_OK, NULL};
82
vector<OpenDRIM_AccountCapabilities> instances;
85
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_retrieve(_broker, ctx, instances, properties, errorMessage, "ei");
86
if (errorCode != OK) {
87
errorMessage = (string) OpenDRIM_AccountCapabilities_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_AccountCapabilities_toCMPIInstance(_broker, instances[i]);
93
CMReturnInstance(rslt, ci);
100
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderGetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char** properties) {
102
CMPIStatus rc = {CMPI_RC_OK, NULL};
103
OpenDRIM_AccountCapabilities instance;
104
Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, cop, instance);
107
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, properties, errorMessage);
108
if (errorCode != OK) {
109
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
110
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
113
CMPIInstance* ci = Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCMPIInstance(_broker, instance);
114
CMReturnInstance(rslt, ci);
120
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderSetInstance(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_AccountCapabilities newInstance, oldInstance;
124
Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, ci, newInstance);
125
Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, cop, oldInstance);
128
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, oldInstance, properties, errorMessage);
129
if (errorCode != OK) {
130
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
131
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
134
errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_setInstance(_broker, ctx, newInstance, oldInstance, properties, errorMessage);
135
if (errorCode != OK) {
136
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
137
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
145
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderCreateInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci) {
147
CMPIStatus rc = {CMPI_RC_OK, NULL};
148
OpenDRIM_AccountCapabilities instance;
149
Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, ci, instance);
152
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
153
if (errorCode != NOT_FOUND) {
155
errorCode = ALREADY_EXISTS;
156
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
157
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
160
errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_createInstance(_broker, ctx, instance, errorMessage);
161
if (errorCode != OK) {
162
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
163
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
166
errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
167
if (errorCode != OK) {
168
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
169
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
172
CMPIObjectPath* _cop = Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCMPIObjectPath(_broker, instance);
173
CMReturnObjectPath(rslt, _cop);
179
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderDeleteInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop) {
181
CMPIStatus rc = {CMPI_RC_OK, NULL};
182
OpenDRIM_AccountCapabilities instance;
183
Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, cop, instance);
186
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
187
if (errorCode != OK) {
188
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
189
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
192
errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_deleteInstance(_broker, ctx, instance, errorMessage);
193
if (errorCode != OK) {
194
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
195
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
203
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderExecQuery(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
/* Method Provider Interface */
214
/* ---------------------------------------------------------------------------*/
216
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderMethodCleanup(CMPIMethodMI * mi, const CMPIContext * ctx, CMPIBoolean terminate) {
218
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_finalize();
220
CMSetStatus(&rc, (CMPIrc) errorCode);
225
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderInvokeMethod(CMPIMethodMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char* methodName, const CMPIArgs* in, CMPIArgs* out) {
227
CMPIStatus rc = {CMPI_RC_OK, NULL};
228
OpenDRIM_AccountCapabilities instance;
229
Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, ref, instance);
232
const char* properties[] = {"InstanceID"};
233
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, properties, errorMessage);
234
if (errorCode != OK) {
235
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
236
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
240
if ((string) methodName =="CreateGoalSettings") {
241
unsigned short returnValue;
242
OpenDRIM_AccountCapabilities_CreateGoalSettings_In inArgs;
243
Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, in, inArgs);
244
OpenDRIM_AccountCapabilities_CreateGoalSettings_Out outArgs;
246
errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_CreateGoalSettings(_broker, ctx, instance, returnValue, inArgs, outArgs, errorMessage);
247
if (errorCode != OK) {
248
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
249
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
252
Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCMPIArg(_broker, out, outArgs);
254
CMPIValue value = CT_toCMPI(returnValue);
255
CMReturnData(rslt, &value.uint16, CMPI_uint16);
258
errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + "The requested method (" + (string) methodName +") was not found.";
259
CMSetStatusWithChars(_broker, &rc, (CMPIrc) NOT_SUPPORTED, errorMessage.c_str());
264
CMReturn(CMPI_RC_OK);
267
/* ---------------------------------------------------------------------------*/
268
/* End of Method Provider Interface */
269
/* ---------------------------------------------------------------------------*/
271
/* ---------------------------------------------------------------------------*/
272
/* Provider Factory */
273
/* ---------------------------------------------------------------------------*/
275
int Simple_Identity_Management_OpenDRIM_AccountCapabilities_init(const CMPIBroker* broker) {
278
static bool initialized = false;
281
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_load(broker, errorMessage);
282
if (errorCode != OK) {
283
errorMessage += "Simple_Identity_Management_OpenDRIM_AccountCapabilities_init FAILED: " + (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
284
string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
294
int Simple_Identity_Management_OpenDRIM_AccountCapabilities_finalize() {
296
static bool finalized = false;
299
int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_unload(errorMessage);
300
if (errorCode != OK) {
301
errorMessage += "Simple_Identity_Management_OpenDRIM_AccountCapabilities_unload FAILED: " + (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
302
string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
312
#define Simple_Identity_Management_OpenDRIM_AccountCapabilities_INIT if (Simple_Identity_Management_OpenDRIM_AccountCapabilities_init(_broker) < 0) return NULL
314
CMInstanceMIStub(Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProvider, Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProvider, _broker, Simple_Identity_Management_OpenDRIM_AccountCapabilities_INIT);
315
CMMethodMIStub(Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProvider, Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProvider, _broker, Simple_Identity_Management_OpenDRIM_AccountCapabilities_INIT);
317
/* ---------------------------------------------------------------------------*/
318
/* End of Provider Factory */
319
/* ---------------------------------------------------------------------------*/