Skip to content
Snippets Groups Projects
Commit 11b6ffed authored by Andrea Michelotti's avatar Andrea Michelotti
Browse files

driver CCALT optional

parent 2e1ba089
No related branches found
No related tags found
No related merge requests found
......@@ -40,7 +40,7 @@ CDWUniquePtr UpdateProperty::execute(CDWUniquePtr api_data) {
CHECK_CDW_THROW_AND_LOG(api_data, N_UP_ERR, -1, "No parameter found")
CHECK_KEY_THROW_AND_LOG(api_data, NodeDefinitionKey::NODE_UNIQUE_ID, N_UP_ERR, -2, "The node unique id is mandatory")
CHECK_KEY_THROW_AND_LOG(api_data, "property", N_UP_ERR, -3, "Property update pack is mandatory")
N_UP_DBG<<"UpdateProperty:"<<api_data->getJSONString();
//get the data access
GET_DATA_ACCESS(NodeDataAccess, n_da, -4)
......
......@@ -8,7 +8,10 @@
#include <ChaosMetadataService/api/node/NodeGetDescription.h>
#include <ChaosMetadataService/api/node/NodeSearch.h>
#include <ChaosMetadataService/api/node/NodeNewDelete.h>
#include <ChaosMetadataService/api/node/UpdateProperty.h>
#include <ChaosMetadataService/api/unit_server/GetSetFullUnitServer.h>
#include <ChaosMetadataService/api/unit_server/ManageCUType.h>
#include <ChaosMetadataService/api/agent/GetAgentForNode.h>
......@@ -17,6 +20,9 @@
#include <ChaosMetadataService/api/service/RemoveVariable.h>
#include <ChaosMetadataService/api/control_unit/GetFullDescription.h>
#include <ChaosMetadataService/api/control_unit/SetInstanceDescription.h>
#include <ChaosMetadataService/api/control_unit/DeleteInstance.h>
#include <ChaosMetadataService/api/control_unit/Delete.h>
#include <chaos_service_common/DriverPoolManager.h>
......@@ -127,6 +133,89 @@ chaos::common::data::VectorCDWShrdPtr ChaosManager::getLiveChannel(const std::ve
return results;
}
/**** NODES *////
chaos::common::data::CDWUniquePtr ChaosManager::updateProperty(const std::string& uid,const chaos::common::data::CDataWrapper& value){
CDWUniquePtr res;
if(!value.hasKey("properties")|| !!value.isVectorValue("properties")){
DBGETERR << "Missing properties vector key";
return res;
}
if (persistence_driver) {
UpdateProperty node;
CALC_EXEC_START;
ChaosUniquePtr<chaos::common::data::CDataWrapper> message(new CDataWrapper());
message->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, uid);
ChaosSharedPtr<CMultiTypeDataArrayWrapper> dw = value.getVectorValue("properties");
for (int idx = 0; idx < dw->size(); idx++) {
if (dw->isCDataWrapperElementAtIndex(idx)) {
}
}
message->addCSDataValue("property", value);
res = node.execute(MOVE(message));
CALC_EXEC_END
}
return res;
}
chaos::common::data::CDWUniquePtr ChaosManager::manageCUType(const std::string& uid,const std::string& control_unit_type){
CDWUniquePtr res;
if (persistence_driver) {
ManageCUType node;
CALC_EXEC_START;
ChaosUniquePtr<chaos::common::data::CDataWrapper> message(new CDataWrapper());
message->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, uid);
message->addStringValue(UnitServerNodeDefinitionKey::UNIT_SERVER_HOSTED_CONTROL_UNIT_CLASS, control_unit_type);
res = node.execute(MOVE(message));
CALC_EXEC_END
}
return res;
}
chaos::common::data::CDWUniquePtr ChaosManager::deleteInstance(const std::string& uid,const std::string&parent){
CDWUniquePtr res;
if (persistence_driver) {
DeleteInstance node;
Delete node2;
CALC_EXEC_START;
ChaosUniquePtr<chaos::common::data::CDataWrapper> message(new CDataWrapper());
message->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, uid);
if(parent.size()){
message->addStringValue(NodeDefinitionKey::NODE_PARENT, parent);
res = node.execute(MOVE(message));
}
res = node2.execute(MOVE(message));
CALC_EXEC_END
}
return res;
}
chaos::common::data::CDWUniquePtr ChaosManager::setInstanceDescription(const std::string& uid,const chaos::common::data::CDataWrapper& instance_description){
CDWUniquePtr res;
if (persistence_driver) {
SetInstanceDescription node;
CALC_EXEC_START;
ChaosUniquePtr<chaos::common::data::CDataWrapper> message(new CDataWrapper());
message->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, uid);
if(instance_description.hasKey(chaos::NodeDefinitionKey::NODE_TYPE)){
message->addStringValue(chaos::NodeDefinitionKey::NODE_TYPE, instance_description.getStringValue(chaos::NodeDefinitionKey::NODE_TYPE));
} else {
message->addStringValue(chaos::NodeDefinitionKey::NODE_TYPE, chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
}
message->addCSDataValue("instance_description", instance_description);
res = node.execute(MOVE(message));
CALC_EXEC_END
}
return res;
}
CDWUniquePtr ChaosManager::nodeGetDescription(const std::string& uid) {
CDWUniquePtr res;
if (persistence_driver) {
......
......@@ -78,6 +78,10 @@ chaos::common::data::CDWUniquePtr nodeNew(const std::string& uid,const chaos::co
chaos::common::data::CDWUniquePtr getFullUnitServer(const std::string& uid);
chaos::common::data::CDWUniquePtr setFullUnitServer(const std::string& uid,const chaos::common::data::CDataWrapper& value);
chaos::common::data::CDWUniquePtr getAgentForNode(const std::string& uid);
chaos::common::data::CDWUniquePtr updateProperty(const std::string& uid,const chaos::common::data::CDataWrapper& value);
chaos::common::data::CDWUniquePtr manageCUType(const std::string& uid,const std::string& implname);
chaos::common::data::CDWUniquePtr setInstanceDescription(const std::string& uid,const chaos::common::data::CDataWrapper& value);
chaos::common::data::CDWUniquePtr deleteInstance(const std::string& uid,const std::string&parent);
};
} // namespace service_common
......
......@@ -53,6 +53,7 @@ option(CHAOS_ADDRESS_SANITIZER "sanitize address" "OFF")
option(CHAOS_THREAD_SANITIZER "sanitize threads" "OFF")
option(CDSLIB "Chaos CDS LIBRARY" ON)
option(CHAOS_DRIVER_MISC "Driver Misc" "ON")
option(CHAOS_DRIVER_CCALT "Driver CCALT" "ON")
option(GPUFIT "Fast Fitting libraries (needs CUDA toolkit)" OFF)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment