1
/*###############################################################################
2
# Linux Management Providers (LMP), System Memory provider package
3
# Copyright (C) 2008 Guillaume BOTTEX, ETRI <guillaumebottex@etri.re.kr, guillaumebottex@gmail.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 <Author(s)>, <Affiliation>, <Year>
29
###############################################################################*/
31
#include "OpenDRIM_MemoryCapabilitiesAccess.h"
33
int SystemMemory_OpenDRIM_MemoryCapabilities_load(const CMPIBroker* broker, string& errorMessage) {
36
* for Direct Invocation
39
CF_assert(SystemMemory_CIM_Capabilities_load(broker, errorMessage));
40
CF_assert(SystemMemory_CIM_ManagedElement_load(broker, errorMessage));
47
int SystemMemory_OpenDRIM_MemoryCapabilities_unload(string& errorMessage) {
50
* for Direct Invocation
53
CF_assert(SystemMemory_CIM_Capabilities_unload(errorMessage));
54
CF_assert(SystemMemory_CIM_ManagedElement_unload(errorMessage));
61
int SystemMemory_OpenDRIM_MemoryCapabilities_isAssociated(const Instance& Capabilities, const Instance& ManagedElement, bool& isAssociated, string& errorMessage) {
63
// TODO Determine if the association can be established or not
69
int SystemMemory_OpenDRIM_MemoryCapabilities_retrieve(const CMPIBroker* broker, const CMPIContext* ctx, vector<OpenDRIM_MemoryCapabilities>& result, const char** properties, string& errorMessage, const string& discriminant) {
72
* The following code has been generated for your convenience.
73
* Feel free to modify/delete.
75
vector<Instance> subjects;
76
// Only get the instance names
77
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_enumerateCapabilitiess(broker, ctx, subjects, NULL, true, errorMessage));
78
// OR get the full instances IF we need the content of the instance to evaluate the association condition OR to set the reference properties
79
// CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_enumerateCapabilitiess(broker, ctx, subjects, NULL, false, errorMessage));
80
vector<Instance>::iterator c = subjects.begin();
81
vector<Instance>::iterator end = subjects.end();
82
for (; c != end; ++c) {
83
bool leftToRight = true;
84
vector<Instance> associatedInstances;
85
SystemMemory_OpenDRIM_MemoryCapabilities_associator(broker, ctx,
86
(*c).getObjectpath().getHdl(), (*c),
87
Capabilities_classnames[0], ManagedElement_classnames[0],
88
Capabilities_role.c_str(), ManagedElement_role.c_str(), NULL,
89
associatedInstances, leftToRight, errorMessage, "an");
91
string ref_discriminant = discriminant == "ein" ? "rn" : "r";
92
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_referenceCapabilitiesToManagedElement(broker, ctx, (*c), associatedInstances, result, NULL, errorMessage, ref_discriminant));
98
int SystemMemory_OpenDRIM_MemoryCapabilities_getInstance(const CMPIBroker* broker, const CMPIContext* ctx, OpenDRIM_MemoryCapabilities& instance, const char** properties, string& errorMessage) {
101
* The following code has been generated for your convenience.
102
* Feel free to modify/delete.
104
Objectpath Capabilities_objectpath;
105
instance.getCapabilities(Capabilities_objectpath);
106
Instance Capabilities_instance;
107
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_getCapabilities(broker, ctx, Capabilities_objectpath, Capabilities_instance, NULL, errorMessage));
109
Objectpath ManagedElement_objectpath;
110
instance.getManagedElement(ManagedElement_objectpath);
111
Instance ManagedElement_instance;
112
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_getManagedElement(broker, ctx, ManagedElement_objectpath, ManagedElement_instance, NULL, errorMessage));
114
bool isAssociated = false;
115
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_isAssociated(Capabilities_instance, ManagedElement_instance, isAssociated, errorMessage));
118
if(errorMessage.empty())
119
errorMessage = "No instance";
123
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_populate(instance, errorMessage));
128
int SystemMemory_OpenDRIM_MemoryCapabilities_setInstance(const CMPIBroker* broker, const CMPIContext* ctx, const OpenDRIM_MemoryCapabilities& newInstance, const OpenDRIM_MemoryCapabilities& oldInstance, const char** properties, string& errorMessage) {
132
return NOT_SUPPORTED;
135
int SystemMemory_OpenDRIM_MemoryCapabilities_createInstance(const CMPIBroker* broker, const CMPIContext* ctx, const OpenDRIM_MemoryCapabilities& instance, string& errorMessage) {
139
return NOT_SUPPORTED;
142
int SystemMemory_OpenDRIM_MemoryCapabilities_deleteInstance(const CMPIBroker* broker, const CMPIContext* ctx, const OpenDRIM_MemoryCapabilities& instance, string& errorMessage) {
146
return NOT_SUPPORTED;
149
int SystemMemory_OpenDRIM_MemoryCapabilities_associatorCapabilitiesToManagedElement(const CMPIBroker* broker, const CMPIContext* ctx, const Instance& Capabilities_instance, const char** properties, vector<Instance>& ManagedElement_associatedInstances, string& errorMessage, const string& discriminant) {
152
* The following code has been generated for your convenience.
153
* Feel free to modify/delete.
155
vector<Instance> ManagedElement_instances;
156
if (discriminant=="a")
157
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_enumerateManagedElements(broker, ctx, ManagedElement_instances, properties, false, errorMessage));
158
if (discriminant=="an") {
159
// Only get the instance names
160
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_enumerateManagedElements(broker, ctx, ManagedElement_instances, properties, true, errorMessage));
161
// OR get the full instances IF we need the content of the instance to evaluate the association condition OR to set the reference properties
162
// CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_enumerateManagedElements(broker, ctx, ManagedElement_instances, properties, false, errorMessage));
165
for (size_t i=0; i<ManagedElement_instances.size(); i++) {
166
bool isAssociated = false;
167
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_isAssociated(Capabilities_instance, ManagedElement_instances[i], isAssociated, errorMessage));
169
ManagedElement_associatedInstances.push_back(ManagedElement_instances[i]);
175
int SystemMemory_OpenDRIM_MemoryCapabilities_associatorManagedElementToCapabilities(const CMPIBroker* broker, const CMPIContext* ctx, const Instance& ManagedElement_instance, const char** properties, vector<Instance>& Capabilities_associatedInstances, string& errorMessage, const string& discriminant) {
178
* The following code has been generated for your convenience.
179
* Feel free to modify/delete.
181
vector<Instance> Capabilities_instances;
182
if (discriminant=="a")
183
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_enumerateCapabilitiess(broker, ctx, Capabilities_instances, properties, false, errorMessage));
184
if (discriminant=="an") {
185
// Only get the instance names
186
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_enumerateCapabilitiess(broker, ctx, Capabilities_instances, properties, true, errorMessage));
187
// OR get the full instances IF we need the content of the instance to evaluate the association condition OR to set the reference properties
188
// CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_enumerateCapabilitiess(broker, ctx, Capabilities_instances, properties, false, errorMessage));
191
for (size_t i=0; i<Capabilities_instances.size(); i++) {
192
bool isAssociated = false;
193
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_isAssociated(Capabilities_instances[i], ManagedElement_instance, isAssociated, errorMessage));
195
Capabilities_associatedInstances.push_back(Capabilities_instances[i]);
201
int SystemMemory_OpenDRIM_MemoryCapabilities_referenceCapabilitiesToManagedElement(const CMPIBroker* broker, const CMPIContext* ctx, const Instance& Capabilities_instance, const vector<Instance>& ManagedElement_instances, vector<OpenDRIM_MemoryCapabilities>& OpenDRIM_MemoryCapabilities_instances, const char** properties, string& errorMessage, const string& discriminant) {
204
* The following code has been generated for your convenience.
205
* Feel free to modify/delete.
207
for (size_t i=0; i < ManagedElement_instances.size(); i++) {
208
OpenDRIM_MemoryCapabilities instance;
209
instance.setCapabilities(((Instance) Capabilities_instance).getObjectpath());
210
instance.setManagedElement(((Instance) ManagedElement_instances[i]).getObjectpath());
212
if (discriminant == "r") {
213
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_populate(instance, errorMessage));
216
OpenDRIM_MemoryCapabilities_instances.push_back(instance);
222
int SystemMemory_OpenDRIM_MemoryCapabilities_referenceManagedElementToCapabilities(const CMPIBroker* broker, const CMPIContext* ctx, const Instance& ManagedElement_instance, const vector<Instance>& Capabilities_instances, vector<OpenDRIM_MemoryCapabilities>& OpenDRIM_MemoryCapabilities_instances, const char** properties, string& errorMessage, const string& discriminant) {
225
* The following code has been generated for your convenience.
226
* Feel free to modify/delete.
228
for (size_t i=0; i < Capabilities_instances.size(); i++) {
229
OpenDRIM_MemoryCapabilities instance;
230
instance.setCapabilities(((Instance) Capabilities_instances[i]).getObjectpath());
231
instance.setManagedElement(((Instance) ManagedElement_instance).getObjectpath());
233
if (discriminant == "r") {
234
CF_assert(SystemMemory_OpenDRIM_MemoryCapabilities_populate(instance, errorMessage));
237
OpenDRIM_MemoryCapabilities_instances.push_back(instance);
243
int SystemMemory_OpenDRIM_MemoryCapabilities_populate(OpenDRIM_MemoryCapabilities& instance, string& errorMessage) {