1
/*###############################################################################
2
# Linux Management Providers (LMP), SSH provider package
3
# Copyright (C) 2010 Feng Zhanlei, REDFLAG <fengzhanlei@redflag-linux.com>
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 Guillaume BOTTEX <guillaumebottex@uxsystem.net>, UXSystem, 2010
29
###############################################################################*/
31
#include "cmpiOpenDRIM_SSHServiceAccessBySAP.h"
32
#include "OpenDRIM_SSHServiceAccessBySAPAccess.h"
34
static const CMPIBroker * _broker;
37
#define SSH_OpenDRIM_SSHServiceAccessBySAPProviderSetInstance SSH_OpenDRIM_SSHServiceAccessBySAPProviderModifyInstance
40
int SSH_OpenDRIM_SSHServiceAccessBySAP_init(const CMPIBroker* broker);
42
int SSH_OpenDRIM_SSHServiceAccessBySAP_finalize();
44
/* ---------------------------------------------------------------------------*/
45
/* Instance Provider Interface */
46
/* ---------------------------------------------------------------------------*/
48
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderCleanup(CMPIInstanceMI * mi, const CMPIContext* ctx, CMPIBoolean terminate) {
50
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_finalize();
52
CMSetStatus(&rc, (CMPIrc) errorCode);
57
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderEnumInstanceNames(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref) {
59
CMPIStatus rc = {CMPI_RC_OK, NULL};
60
vector<OpenDRIM_SSHServiceAccessBySAP> instances;
63
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_retrieve(_broker, ctx, instances, NULL, errorMessage, "ein");
64
if (errorCode != OK) {
65
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
66
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
69
for (size_t i=0; i < instances.size(); i++) {
70
CMPIObjectPath* op = SSH_OpenDRIM_SSHServiceAccessBySAP_toCMPIObjectPath(_broker, instances[i]);
71
CMReturnObjectPath(rslt, op);
78
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderEnumInstances(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char** properties) {
80
CMPIStatus rc = {CMPI_RC_OK, NULL};
81
vector<OpenDRIM_SSHServiceAccessBySAP> instances;
84
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_retrieve(_broker, ctx, instances, properties, errorMessage, "ei");
85
if (errorCode != OK) {
86
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
87
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
90
for (size_t i=0; i < instances.size(); i++) {
91
CMPIInstance* ci = SSH_OpenDRIM_SSHServiceAccessBySAP_toCMPIInstance(_broker, instances[i]);
92
CMReturnInstance(rslt, ci);
99
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderGetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char** properties) {
101
CMPIStatus rc = {CMPI_RC_OK, NULL};
102
OpenDRIM_SSHServiceAccessBySAP instance;
103
SSH_OpenDRIM_SSHServiceAccessBySAP_toCPP(_broker, cop, instance);
106
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_getInstance(_broker, ctx, instance, properties, errorMessage);
107
if (errorCode != OK) {
108
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
109
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
112
CMPIInstance* ci = SSH_OpenDRIM_SSHServiceAccessBySAP_toCMPIInstance(_broker, instance);
113
CMReturnInstance(rslt, ci);
119
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderSetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci, const char** properties) {
121
CMPIStatus rc = {CMPI_RC_OK, NULL};
122
OpenDRIM_SSHServiceAccessBySAP newInstance, oldInstance;
123
SSH_OpenDRIM_SSHServiceAccessBySAP_toCPP(_broker, ci, newInstance);
124
SSH_OpenDRIM_SSHServiceAccessBySAP_toCPP(_broker, cop, oldInstance);
127
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_getInstance(_broker, ctx, oldInstance, properties, errorMessage);
128
if (errorCode != OK) {
129
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
130
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
133
errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_setInstance(_broker, ctx, newInstance, oldInstance, properties, errorMessage);
134
if (errorCode != OK) {
135
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
136
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
144
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderCreateInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci) {
146
CMPIStatus rc = {CMPI_RC_OK, NULL};
147
OpenDRIM_SSHServiceAccessBySAP instance;
148
SSH_OpenDRIM_SSHServiceAccessBySAP_toCPP(_broker, ci, instance);
151
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_getInstance(_broker, ctx, instance, NULL, errorMessage);
152
if (errorCode != NOT_FOUND) {
154
errorCode = ALREADY_EXISTS;
155
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
156
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
159
errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_createInstance(_broker, ctx, instance, errorMessage);
160
if (errorCode != OK) {
161
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
162
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
165
errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_getInstance(_broker, ctx, instance, NULL, errorMessage);
166
if (errorCode != OK) {
167
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
168
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
171
CMPIObjectPath* _cop = SSH_OpenDRIM_SSHServiceAccessBySAP_toCMPIObjectPath(_broker, instance);
172
CMReturnObjectPath(rslt, _cop);
178
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderDeleteInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop) {
180
CMPIStatus rc = {CMPI_RC_OK, NULL};
181
OpenDRIM_SSHServiceAccessBySAP instance;
182
SSH_OpenDRIM_SSHServiceAccessBySAP_toCPP(_broker, cop, instance);
185
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_getInstance(_broker, ctx, instance, NULL, errorMessage);
186
if (errorCode != OK) {
187
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
188
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
191
errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_deleteInstance(_broker, ctx, instance, errorMessage);
192
if (errorCode != OK) {
193
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
194
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
202
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderExecQuery(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char* lang, const char* query) {
204
CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
207
/* ---------------------------------------------------------------------------*/
208
/* End of Instance Provider Interface */
209
/* ---------------------------------------------------------------------------*/
211
/* ---------------------------------------------------------------------------*/
212
/* Association Provider Interface */
213
/* ---------------------------------------------------------------------------*/
215
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderAssociationCleanup(CMPIAssociationMI * mi, const CMPIContext* ctx, CMPIBoolean terminate) {
217
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_finalize();
219
CMSetStatus(&rc, (CMPIrc) errorCode);
224
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderAssociatorNames(CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char* assocClass, const char* resultClass, const char* role, const char* resultRole) {
226
CMPIStatus rc = {CMPI_RC_OK, NULL};
230
vector<Instance> associatedInstances;
232
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_associator(_broker, ctx, cop, known, assocClass, resultClass, role, resultRole, NULL, associatedInstances, leftToRight, errorMessage, "an");
233
if (errorCode != OK) {
234
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
235
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
239
for (size_t i=0; i < associatedInstances.size(); i++)
240
CMReturnObjectPath(rslt, associatedInstances[i].getObjectpath().getHdl());
246
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderAssociators(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) {
248
CMPIStatus rc = {CMPI_RC_OK, NULL};
252
vector<Instance> associatedInstances;
254
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_associator(_broker, ctx, cop, known, assocClass, resultClass, role, resultRole, properties, associatedInstances, leftToRight, errorMessage, "a");
255
if (errorCode != OK) {
256
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
257
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
261
for (size_t i=0; i < associatedInstances.size(); i++)
262
CMReturnInstance(rslt, associatedInstances[i].getHdl());
268
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderReferenceNames(CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char* assocClass, const char* role) {
270
CMPIStatus rc = {CMPI_RC_OK, NULL};
274
vector<Instance> associatedInstances;
276
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_associator(_broker, ctx, cop, known, assocClass, NULL, role, NULL, NULL, associatedInstances, leftToRight, errorMessage, "an");
277
if (errorCode != OK) {
278
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
279
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
283
vector<OpenDRIM_SSHServiceAccessBySAP> associationInstances;
285
errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_referenceAntecedentToDependent(_broker, ctx, known, associatedInstances, associationInstances, NULL, errorMessage, "rn");
287
errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_referenceDependentToAntecedent(_broker, ctx, known, associatedInstances, associationInstances, NULL, errorMessage, "rn");
288
if (errorCode != OK) {
289
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
290
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
294
for (size_t i=0; i < associationInstances.size(); i++) {
295
CMPIObjectPath* op = SSH_OpenDRIM_SSHServiceAccessBySAP_toCMPIObjectPath(_broker, associationInstances[i]);
296
CMReturnObjectPath(rslt, op);
302
CMPIStatus SSH_OpenDRIM_SSHServiceAccessBySAPProviderReferences(CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char* assocClass, const char* role, const char** properties) {
304
CMPIStatus rc = {CMPI_RC_OK, NULL};
308
vector<Instance> associatedInstances;
310
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_associator(_broker, ctx, cop, known, assocClass, NULL, role, NULL, NULL, associatedInstances, leftToRight, errorMessage, "an");
311
if (errorCode != OK) {
312
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
313
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
317
vector<OpenDRIM_SSHServiceAccessBySAP> associationInstances;
319
errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_referenceAntecedentToDependent(_broker, ctx, known, associatedInstances, associationInstances, properties, errorMessage, "r");
321
errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_referenceDependentToAntecedent(_broker, ctx, known, associatedInstances, associationInstances, properties, errorMessage, "r");
322
if (errorCode != OK) {
323
errorMessage = (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
324
CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
328
for (size_t i=0; i < associationInstances.size(); i++) {
329
CMPIInstance* inst = SSH_OpenDRIM_SSHServiceAccessBySAP_toCMPIInstance(_broker, associationInstances[i]);
330
CMReturnInstance(rslt, inst);
336
/* ---------------------------------------------------------------------------*/
337
/* End Of Association Provider Interface */
338
/* ---------------------------------------------------------------------------*/
340
/* ---------------------------------------------------------------------------*/
341
/* Provider Factory */
342
/* ---------------------------------------------------------------------------*/
344
int SSH_OpenDRIM_SSHServiceAccessBySAP_init(const CMPIBroker* broker) {
347
static bool initialized = false;
350
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_load(broker, errorMessage);
351
if (errorCode != OK) {
352
errorMessage += "SSH_OpenDRIM_SSHServiceAccessBySAP_init FAILED: " + (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
353
string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
363
int SSH_OpenDRIM_SSHServiceAccessBySAP_finalize() {
365
static bool finalized = false;
368
int errorCode = SSH_OpenDRIM_SSHServiceAccessBySAP_unload(errorMessage);
369
if (errorCode != OK) {
370
errorMessage += "SSH_OpenDRIM_SSHServiceAccessBySAP_unload FAILED: " + (string) OpenDRIM_SSHServiceAccessBySAP_classnames[0] + ": " + errorMessage;
371
string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
381
#define SSH_OpenDRIM_SSHServiceAccessBySAP_INIT if (SSH_OpenDRIM_SSHServiceAccessBySAP_init(_broker) < 0) return NULL
383
CMInstanceMIStub(SSH_OpenDRIM_SSHServiceAccessBySAPProvider, SSH_OpenDRIM_SSHServiceAccessBySAPProvider, _broker, SSH_OpenDRIM_SSHServiceAccessBySAP_INIT);
384
CMAssociationMIStub(SSH_OpenDRIM_SSHServiceAccessBySAPProvider, SSH_OpenDRIM_SSHServiceAccessBySAPProvider, _broker, SSH_OpenDRIM_SSHServiceAccessBySAP_INIT);
386
/* ---------------------------------------------------------------------------*/
387
/* End of Provider Factory */
388
/* ---------------------------------------------------------------------------*/