40 using namespace Generator;
56 "file", ArmarXDataPath::GetDefaultUserConfigPath() +
"/icegrid-sync-variables.icegrid.xml");
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));
100 generateComponent(app);
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);
131 "file", ArmarXDataPath::GetDefaultUserConfigPath() +
"/icegrid-sync-variables.icegrid.xml");
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));
177 generateComponent(app);
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",
249 IceGrid::ApplicationDescriptor
251 const IceGrid::AdminPrx iceAdmin)
255 IceGrid::ApplicationDescriptor result;
256 result.name = scenario->getName();
258 IceGrid::StringStringDict variables;
259 variables[
"ARMARX_SYNC_DIR"] = getDefaultSyncFile();
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;
287 IceGrid::ApplicationDescriptor
289 const IceGrid::AdminPrx iceAdmin)
291 IceGrid::ApplicationDescriptor result =
292 generateEmptyLocalApplicationDescriptor(scenario, iceAdmin);
294 for (
auto app : *scenario->getApplications())
296 if (!app->getEnabled())
301 result.nodes[app->getEffectiveNodeName()].serverInstances.push_back(
302 generateComponentNode(app));
308 IceGrid::ApplicationDescriptor
310 const IceGrid::AdminPrx iceAdmin)
312 IceGrid::ApplicationDescriptor result;
313 result.name = scenario->getName();
315 IceGrid::StringStringDict variables;
316 variables[
"ARMARX_SYNC_DIR"] = getDefaultSyncFile();
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;
349 IceGrid::ApplicationDescriptor
351 const IceGrid::AdminPrx iceAdmin)
355 IceGrid::ApplicationDescriptor result =
356 generateEmptyRemoteApplicationDescriptor(scenario, iceAdmin);
358 for (
auto app : *scenario->getApplications())
360 if (!app->getEnabled())
364 result.nodes[app->getEffectiveNodeName()].serverInstances.push_back(
365 generateComponentNode(app));
371 IceGrid::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";
400 IceGridXmlGenerator::getSyncDirFromFile(std::string path)
410 ARMARX_DEBUG_S <<
"Your icegrid-sync-variables file is ill formatted (Error: "
411 << exception.what() <<
")";
426 ArmarXDataPath::GetDefaultUserConfigPath() +
"/icegrid-sync-variables.icegrid.xml",
true);
429 IceGrid::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;
458 return getSyncDirFromFile(ArmarXDataPath::GetDefaultUserConfigPath() +
459 "/icegrid-sync-variables.icegrid.xml");