63 variableScenarioDependencyNode.
append_attribute(
"name",
"ARMARX_SCENARIO_DEPENDENCY_CONFIG");
64 variableScenarioDependencyNode.
append_attribute(
"value",
"dependencies.cfg");
67 variablePackageConfigDir.
append_attribute(
"name",
"ARMARX_PACKAGE_CONFIG_DIR");
89 std::map<std::string, RapidXmlWriterNode> existingNodes;
91 for (
auto app : *scenario->getApplications())
93 if (!existingNodes.count(app->getEffectiveNodeName()))
97 existingNodes.insert(make_pair(app->getEffectiveNodeName(), node));
102 existingNodes.find(app->getEffectiveNodeName())->second.append_node(
"include");
103 if (app->getInstanceName().empty())
105 includeAppNode.
append_attribute(
"file",
"icegrid/" + app->getName() +
".icegrid.xml");
110 "icegrid/" + app->getName() +
"." +
111 app->getInstanceName() +
".icegrid.xml");
115 writer.
saveToFile(scenario->getFolder() +
"/" + scenario->getName() +
".icegrid.xml",
true);
136 "${ARMARX_SYNC_DIR}/share/" +
137 scenario->getPackage()->getName() +
"/scenarios/" +
138 scenario->getName());
141 variableScenarioDependencyNode.
append_attribute(
"name",
"ARMARX_SCENARIO_DEPENDENCY_CONFIG");
142 variableScenarioDependencyNode.
append_attribute(
"value",
"dependencies.remote.cfg");
145 variablePackageConfigDir.
append_attribute(
"name",
"ARMARX_PACKAGE_CONFIG_DIR");
147 "value",
"${ARMARX_SYNC_DIR}/share/" + scenario->getPackage()->getName() +
"/config");
166 std::map<std::string, RapidXmlWriterNode> existingNodes;
168 for (
auto app : *scenario->getApplications())
170 if (!existingNodes.count(app->getEffectiveNodeName()))
174 existingNodes.insert(make_pair(app->getEffectiveNodeName(), node));
179 existingNodes.find(app->getEffectiveNodeName())->second.append_node(
"include");
180 if (app->getInstanceName().empty())
182 includeAppNode.
append_attribute(
"file",
"icegrid/" + app->getName() +
".icegrid.xml");
187 "icegrid/" + app->getName() +
"." +
188 app->getInstanceName() +
".icegrid.xml");
192 writer.
saveToFile(scenario->getFolder() +
"/" + scenario->getName() +
".remote.icegrid.xml",
206 applicationNode.
append_attribute(
"componentExeDir",
"${" + app->getPackageName() +
"_BIN_DIR}");
209 std::string armarXConfigValue =
210 (app->getScenario()->isGlobalConfigFileexistent()
211 ? app->getScenario()->getGlobalConfigPath() +
","
213 (app->getInstanceName().empty() ?
"${ARMARX_SCENARIO_DIR}/config/" + app->getName() +
".cfg"
214 :
"${ARMARX_SCENARIO_DIR}/config/" + app->getName() +
"." +
215 app->getInstanceName() +
".cfg");
231 "ArmarXDependenciesConfig",
232 "${ARMARX_PACKAGE_CONFIG_DIR}/${ARMARX_SCENARIO_DEPENDENCY_CONFIG}");
233 applicationNode.
append_attribute(
"ArmarXLoggingGroup", app->getScenario()->getName());
235 std::filesystem::create_directory(app->getScenario()->getFolder() +
"/icegrid");
236 if (app->getInstanceName().empty())
239 app->getScenario()->getFolder() +
"/icegrid/" + app->getName() +
".icegrid.xml",
true);
243 writer.
saveToFile(app->getScenario()->getFolder() +
"/icegrid/" + app->getName() +
"." +
244 app->getInstanceName() +
".icegrid.xml",
249IceGrid::ApplicationDescriptor
251 const IceGrid::AdminPrx iceAdmin)
255 IceGrid::ApplicationDescriptor result;
256 result.name = scenario->getName();
258 IceGrid::StringStringDict variables;
260 variables[
"ARMARX_SCENARIO_DIR"] = scenario->getFolder();
261 variables[
"ARMARX_SCENARIO_DEPENDENCY_CONFIG"] =
"dependencies.cfg";
262 variables[
"ARMARX_PACKAGE_CONFIG_DIR"] = finder.
getConfigDir();
263 variables[
"ArmarX_LD_LIB_PATH"] =
"";
264 variables[
"ArmarX_PATH"] =
"";
265 variables[
"ARMARX_LOGGING_GROUP"] = scenario->getName();
271 variables[dep +
"_BIN_DIR"] = currentFinder.
getBinaryDir();
274 result.variables = variables;
276 IceGrid::ApplicationDescriptor defaultDesc = iceAdmin->getDefaultApplicationDescriptor();
277 result.serverTemplates = defaultDesc.serverTemplates;
278 auto v = IceGrid::ServerDescriptorPtr::dynamicCast(
279 result.serverTemplates[
"ArmarXComponentTemplate"].descriptor.get());
282 result.serviceTemplates = defaultDesc.serviceTemplates;
287IceGrid::ApplicationDescriptor
289 const IceGrid::AdminPrx iceAdmin)
291 IceGrid::ApplicationDescriptor result =
294 for (
auto app : *scenario->getApplications())
296 if (!app->getEnabled())
301 result.nodes[app->getEffectiveNodeName()].serverInstances.push_back(
308IceGrid::ApplicationDescriptor
310 const IceGrid::AdminPrx iceAdmin)
312 IceGrid::ApplicationDescriptor result;
313 result.name = scenario->getName();
315 IceGrid::StringStringDict variables;
317 variables[
"ARMARX_SCENARIO_DIR"] =
"${ARMARX_SYNC_DIR}/share/" +
318 scenario->getPackage()->getName() +
"/scenarios/" +
320 variables[
"ARMARX_SCENARIO_DEPENDENCY_CONFIG"] =
"dependencies.remote.cfg";
321 variables[
"ARMARX_PACKAGE_CONFIG_DIR"] =
322 "${ARMARX_SYNC_DIR}/share/" + scenario->getPackage()->getName() +
"/config";
323 variables[
"ArmarX_LD_LIB_PATH"] =
"${ARMARX_SYNC_DIR}/lib:${ARMARX_SYNC_DIR}/usr/lib";
324 variables[
"ArmarX_PATH"] =
"${ARMARX_SYNC_DIR}/bin:${ARMARX_SYNC_DIR}/usr/bin";
325 variables[
"ARMARX_LOGGING_GROUP"] = scenario->getName();
332 variables[dep +
"_BIN_DIR"] =
"${ARMARX_SYNC_DIR}/bin";
335 result.variables = variables;
337 IceGrid::ApplicationDescriptor defaultDesc = iceAdmin->getDefaultApplicationDescriptor();
338 result.serverTemplates = defaultDesc.serverTemplates;
339 auto v = IceGrid::ServerDescriptorPtr::dynamicCast(
340 result.serverTemplates[
"ArmarXComponentTemplate"].descriptor.get());
344 result.serviceTemplates = defaultDesc.serviceTemplates;
349IceGrid::ApplicationDescriptor
351 const IceGrid::AdminPrx iceAdmin)
355 IceGrid::ApplicationDescriptor result =
358 for (
auto app : *scenario->getApplications())
360 if (!app->getEnabled())
364 result.nodes[app->getEffectiveNodeName()].serverInstances.push_back(
371IceGrid::ServerInstanceDescriptor
374 IceGrid::ServerInstanceDescriptor result;
375 result._cpp_template =
"ArmarXComponentTemplate";
376 result.parameterValues[
"component"] = app->getName();
378 result.parameterValues[
"componentExeDir"] =
"${" + app->getPackageName() +
"_BIN_DIR}";
380 std::string armarXConfigValue =
381 (app->getScenario()->isGlobalConfigFileexistent()
382 ? app->getScenario()->getGlobalConfigPath() +
","
384 (app->getInstanceName().empty() ?
"${ARMARX_SCENARIO_DIR}/config/" + app->getName() +
".cfg"
385 :
"${ARMARX_SCENARIO_DIR}/config/" + app->getName() +
"." +
386 app->getInstanceName() +
".cfg");
388 result.parameterValues[
"configDomain"] = app->getConfigDomain();
389 result.parameterValues[
"ArmarXConfig"] = armarXConfigValue;
390 result.parameterValues[
"ArmarXDependenciesConfig"] =
391 "${ARMARX_PACKAGE_CONFIG_DIR}/${ARMARX_SCENARIO_DEPENDENCY_CONFIG}";
392 result.parameterValues[
"ArmarXLoggingGroup"] = app->getScenario()->getName();
393 result.parameterValues[
"activationTimeout"] =
"10";
400IceGridXmlGenerator::getSyncDirFromFile(std::string path)
410 ARMARX_DEBUG_S <<
"Your icegrid-sync-variables file is ill formatted (Error: "
411 << exception.what() <<
")";
429IceGrid::ApplicationUpdateDescriptor
432 IceGrid::ApplicationUpdateDescriptor result;
433 result.name = descriptor.name;
435 for (
auto nodes : descriptor.nodes)
437 IceGrid::NodeUpdateDescriptor nodeUpdate;
438 nodeUpdate.name = nodes.first;
439 nodeUpdate.serverInstances = nodes.second.serverInstances;
441 nodeUpdate.propertySets = nodes.second.propertySets;
442 nodeUpdate.serverInstances = nodes.second.serverInstances;
443 nodeUpdate.servers = nodes.second.servers;
444 nodeUpdate.variables = nodes.second.variables;
445 result.nodes.push_back(nodeUpdate);
448 result.serverTemplates = descriptor.serverTemplates;
449 result.serviceTemplates = descriptor.serviceTemplates;
450 result.variables = result.variables;
459 "/icegrid-sync-variables.icegrid.xml");
static std::string GetApplicationId(const ApplicationInstancePtr &application)
IceGrid::ApplicationDescriptor generateEmptyRemoteApplicationDescriptor(Data_Structure::ScenarioPtr scenario, const IceGrid::AdminPrx iceAdmin)
IceGrid::ApplicationDescriptor generateLocalApplicationDescriptor(Data_Structure::ScenarioPtr scenario, const IceGrid::AdminPrx iceAdmin)
IceGrid::ApplicationUpdateDescriptor generateUpdateDescriptor(IceGrid::ApplicationDescriptor descriptor)
void generateComponent(Data_Structure::ApplicationInstancePtr app)
void generateLocalApplication(Data_Structure::ScenarioPtr scenario)
void generateRemoteApplication(Data_Structure::ScenarioPtr scenario)
IceGrid::ApplicationDescriptor generateEmptyLocalApplicationDescriptor(Data_Structure::ScenarioPtr scenario, const IceGrid::AdminPrx iceAdmin)
IceGrid::ServerInstanceDescriptor generateComponentNode(Data_Structure::ApplicationInstancePtr app)
std::string getDefaultSyncFile()
void setDefaultSyncFileDir(std::string path)
IceGrid::ApplicationDescriptor generateRemoteApplicationDescriptor(Data_Structure::ScenarioPtr scenario, const IceGrid::AdminPrx iceAdmin)
static DependencyTree getDependencieTree(std::string packageName)
static std::string GetDefaultUserConfigPath()
The user config directory of ArmarX.
The CMakePackageFinder class provides an interface to the CMake Package finder capabilities.
std::string getBinaryDir() const
std::string getConfigDir() const
Returns the path needed to find this package with cmake, i.e.
RapidXmlReaderNode first_node(const char *name=nullptr) const
std::string attribute_value(const char *attrName) const
static RapidXmlReaderPtr FromFile(const std::string &path)
RapidXmlWriterNode append_node(const std::string &name)
RapidXmlWriterNode & append_attribute(const std::string &name, const std::string &value)
void saveToFile(const std::string &path, bool indent)
RapidXmlWriterNode createRootNode(const std::string &name)
#define ARMARX_CHECK_EXPRESSION(expression)
This macro evaluates the expression and if it turns out to be false it will throw an ExpressionExcept...
#define ARMARX_DEBUG_S
The logging level for output that is only interesting while debugging.
std::shared_ptr< Scenario > ScenarioPtr
std::shared_ptr< ApplicationInstance > ApplicationInstancePtr
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< RapidXmlReader > RapidXmlReaderPtr