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_Group.h"
33
#include "OpenDRIM_GroupAccess.h"
35
static const CMPIBroker * _broker;
38
#define Simple_Identity_Management_OpenDRIM_GroupProviderSetInstance Simple_Identity_Management_OpenDRIM_GroupProviderModifyInstance
41
int Simple_Identity_Management_OpenDRIM_Group_init(const CMPIBroker* broker);
43
int Simple_Identity_Management_OpenDRIM_Group_finalize();
45
/* ---------------------------------------------------------------------------*/
46
/* Instance Provider Interface */
47
/* ---------------------------------------------------------------------------*/
49
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderCleanup(CMPIInstanceMI * mi, const CMPIContext* ctx, CMPIBoolean terminate) {
51
int errorCode = Simple_Identity_Management_OpenDRIM_Group_finalize();
53
CMSetStatus(&rc, (CMPIrc) errorCode);
58
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderEnumInstanceNames(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref) {
60
CMPIStatus rc = {CMPI_RC_OK, NULL};
61
vector<OpenDRIM_Group> instances;
64
int errorCode = Simple_Identity_Management_OpenDRIM_Group_retrieve(_broker, ctx, instances, NULL, errorMessage, "ein");
65
if (errorCode != OK) {
66
errorMessage = (string) OpenDRIM_Group_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_Group_toCMPIObjectPath(_broker, instances[i]);
72
CMReturnObjectPath(rslt, op);
79
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderEnumInstances(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char** properties) {
81
CMPIStatus rc = {CMPI_RC_OK, NULL};
82
vector<OpenDRIM_Group> instances;
85
int errorCode = Simple_Identity_Management_OpenDRIM_Group_retrieve(_broker, ctx, instances, properties, errorMessage, "ei");
86
if (errorCode != OK) {
87
errorMessage = (string) OpenDRIM_Group_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_Group_toCMPIInstance(_broker, instances[i]);
93
CMReturnInstance(rslt, ci);
100
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderGetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char** properties) {
102
CMPIStatus rc = {CMPI_RC_OK, NULL};
103
OpenDRIM_Group instance;
104
Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, cop, instance);
107
int errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, instance, properties, errorMessage);
108
if (errorCode != OK) {
109
errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
110
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
113
CMPIInstance* ci = Simple_Identity_Management_OpenDRIM_Group_toCMPIInstance(_broker, instance);
114
CMReturnInstance(rslt, ci);
120
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderSetInstance(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_Group newInstance, oldInstance;
124
Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, ci, newInstance);
125
Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, cop, oldInstance);
128
int errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, oldInstance, properties, errorMessage);
129
if (errorCode != OK) {
130
errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
131
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
134
errorCode = Simple_Identity_Management_OpenDRIM_Group_setInstance(_broker, ctx, newInstance, oldInstance, properties, errorMessage);
135
if (errorCode != OK) {
136
errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
137
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
145
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderCreateInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci) {
147
CMPIStatus rc = {CMPI_RC_OK, NULL};
148
OpenDRIM_Group instance;
149
Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, ci, instance);
152
int errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, instance, NULL, errorMessage);
153
if (errorCode != NOT_FOUND) {
155
errorCode = ALREADY_EXISTS;
156
errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
157
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
160
errorCode = Simple_Identity_Management_OpenDRIM_Group_createInstance(_broker, ctx, instance, errorMessage);
161
if (errorCode != OK) {
162
errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
163
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
166
errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, instance, NULL, errorMessage);
167
if (errorCode != OK) {
168
errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
169
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
172
CMPIObjectPath* _cop = Simple_Identity_Management_OpenDRIM_Group_toCMPIObjectPath(_broker, instance);
173
CMReturnObjectPath(rslt, _cop);
179
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderDeleteInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop) {
181
CMPIStatus rc = {CMPI_RC_OK, NULL};
182
OpenDRIM_Group instance;
183
Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, cop, instance);
186
int errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, instance, NULL, errorMessage);
187
if (errorCode != OK) {
188
errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
189
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
192
errorCode = Simple_Identity_Management_OpenDRIM_Group_deleteInstance(_broker, ctx, instance, errorMessage);
193
if (errorCode != OK) {
194
errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
195
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
203
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderExecQuery(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
/* Provider Factory */
214
/* ---------------------------------------------------------------------------*/
216
int Simple_Identity_Management_OpenDRIM_Group_init(const CMPIBroker* broker) {
219
static bool initialized = false;
222
int errorCode = Simple_Identity_Management_OpenDRIM_Group_load(broker, errorMessage);
223
if (errorCode != OK) {
224
errorMessage += "Simple_Identity_Management_OpenDRIM_Group_init FAILED: " + (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
225
string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
235
int Simple_Identity_Management_OpenDRIM_Group_finalize() {
237
static bool finalized = false;
240
int errorCode = Simple_Identity_Management_OpenDRIM_Group_unload(errorMessage);
241
if (errorCode != OK) {
242
errorMessage += "Simple_Identity_Management_OpenDRIM_Group_unload FAILED: " + (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
243
string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
253
#define Simple_Identity_Management_OpenDRIM_Group_INIT if (Simple_Identity_Management_OpenDRIM_Group_init(_broker) < 0) return NULL
255
CMInstanceMIStub(Simple_Identity_Management_OpenDRIM_GroupProvider, Simple_Identity_Management_OpenDRIM_GroupProvider, _broker, Simple_Identity_Management_OpenDRIM_Group_INIT);
257
/* ---------------------------------------------------------------------------*/
258
/* End of Provider Factory */
259
/* ---------------------------------------------------------------------------*/