Version: 9.15.0
YACS::ENGINE::SalomeContainerTools Class Reference

#include <SalomeContainerTools.hxx>

Inheritance diagram for YACS::ENGINE::SalomeContainerTools:
Collaboration diagram for YACS::ENGINE::SalomeContainerTools:

Public Member Functions

 SalomeContainerTools ()
 
 SalomeContainerTools (const SalomeContainerTools &other)
 
 ~SalomeContainerTools ()
 
std::string getProperty (const std::string &name) const override
 
void setProperty (const std::string &name, const std::string &value) override
 
const std::map< std::string, std::string > & getProperties () const override
 
std::map< std::string, std::string > getResourceProperties (const std::string &name) const override
 
void clearProperties () override
 
void addToComponentList (const std::string &name) override
 
void addToResourceList (const std::string &name) override
 
Engines::ContainerParameters getParameters () const override
 
void setContainerName (const std::string &name) override
 
std::string getHostName () const override
 
std::string getNotNullContainerName (const Container *contPtr, const Task *askingNode, bool &isEmpty) const override
 
std::string getContainerName () const override
 
int getNumberOfCoresPerWorker () const override
 
- Public Member Functions inherited from YACS::ENGINE::SalomeContainerToolsBase
virtual ~SalomeContainerToolsBase ()
 

Private Attributes

std::map< std::string, std::string > _propertyMap
 
Engines::ContainerParameters _params
 

Additional Inherited Members

- Static Public Member Functions inherited from YACS::ENGINE::SalomeContainerToolsBase
static void SetContainerNameOf (Engines::ContainerParameters &params, const std::string &name)
 
static void Start (const std::vector< std::string > &compoNames, SalomeContainerHelper *schelp, SalomeContainerToolsBase &sct, int &shutdownLevel, const Container *cont, const Task *askingNode)
 
static CORBA::Object_ptr LoadComponent (SalomeContainerHelper *launchModeType, Container *cont, Task *askingNode)
 
static CORBA::Object_ptr CreateComponentInstance (Container *cont, Engines::Container_ptr contPtr, const ComponentInstance *inst)
 
static std::string GetPlacementId (const SalomeContainerHelper *launchModeType, const Container *cont, const Task *askingNode)
 
static std::string GetFullPlacementId (const SalomeContainerHelper *launchModeType, const Container *cont, const Task *askingNode)
 

Detailed Description

Definition at line 66 of file SalomeContainerTools.hxx.

Constructor & Destructor Documentation

◆ SalomeContainerTools() [1/2]

SalomeContainerTools::SalomeContainerTools ( )

Definition at line 47 of file SalomeContainerTools.cxx.

48 {
49  /* Init ContainerParameters */
50  SALOME_LifeCycleCORBA::preSet(_params);
51 }
Engines::ContainerParameters _params

References _params.

◆ SalomeContainerTools() [2/2]

SalomeContainerTools::SalomeContainerTools ( const SalomeContainerTools other)

Definition at line 53 of file SalomeContainerTools.cxx.

54 {
55 }
std::map< std::string, std::string > _propertyMap

◆ ~SalomeContainerTools()

YACS::ENGINE::SalomeContainerTools::~SalomeContainerTools ( )
inline

Definition at line 71 of file SalomeContainerTools.hxx.

71 { }

Member Function Documentation

◆ addToComponentList()

void SalomeContainerTools::addToComponentList ( const std::string &  name)
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 200 of file SalomeContainerTools.cxx.

201 {
202  // Search if name is already in the list
203  for (CORBA::ULong i = 0; i < _params.resource_params.componentList.length(); i++)
204  {
205  std::string component_name = _params.resource_params.componentList[i].in();
206  if (component_name == name)
207  return;
208  }
209  // Add name to list
210  CORBA::ULong lgth = _params.resource_params.componentList.length();
211  _params.resource_params.componentList.length(lgth + 1);
212  _params.resource_params.componentList[lgth] = CORBA::string_dup(name.c_str());
213 }

References _params, and yacsorb.CORBAEngineTest::i.

Referenced by setProperty().

◆ addToResourceList()

void SalomeContainerTools::addToResourceList ( const std::string &  name)
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 215 of file SalomeContainerTools.cxx.

216 {
217  // Search if name is already in the list
218  for (CORBA::ULong i = 0; i < _params.resource_params.resList.length(); i++)
219  {
220  std::string component_name = _params.resource_params.resList[i].in();
221  if (component_name == name)
222  return;
223  }
224  // Add name to list
225  CORBA::ULong lgth = _params.resource_params.resList.length();
226  _params.resource_params.resList.length(lgth + 1);
227  _params.resource_params.resList[lgth] = CORBA::string_dup(name.c_str());
228 }

References _params, and yacsorb.CORBAEngineTest::i.

Referenced by YACS::ENGINE::SalomeContainer::addToResourceList(), and setProperty().

◆ clearProperties()

void SalomeContainerTools::clearProperties ( )
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 57 of file SalomeContainerTools.cxx.

58 {
59  _propertyMap.clear();
60  _params=Engines::ContainerParameters();
61 }

References _params, and _propertyMap.

Referenced by YACS::ENGINE::SalomeContainer::clearProperties(), and YACS::ENGINE::SalomeHPContainer::clearProperties().

◆ getContainerName()

std::string SalomeContainerTools::getContainerName ( ) const
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 230 of file SalomeContainerTools.cxx.

231 {
232  return std::string(_params.container_name);
233 }

References _params.

◆ getHostName()

std::string SalomeContainerTools::getHostName ( ) const
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 267 of file SalomeContainerTools.cxx.

268 {
269  return std::string(_params.resource_params.hostname);
270 }

References _params.

◆ getNotNullContainerName()

std::string SalomeContainerTools::getNotNullContainerName ( const Container contPtr,
const Task askingNode,
bool &  isEmpty 
) const
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 245 of file SalomeContainerTools.cxx.

246 {
247  isEmpty=true;
248  std::string name(_params.container_name);
249  if(!name.empty())
250  {
251  isEmpty=false;
252  return name;
253  }
254  else
255  {
256  //give a almost unique name to the container : Pid_Name_Addr
257  std::ostringstream stream;
258  stream << getpid();
259  stream << "_";
260  stream << contPtr->getName();
261  stream << "_";
262  stream << contPtr->getDiscreminantStrOfThis(askingNode);
263  return stream.str();
264  }
265 }
virtual std::string getDiscreminantStrOfThis(const Task *askingNode) const
Definition: Container.cxx:45
virtual std::string getName() const
Definition: Container.hxx:81

References _params, YACS::ENGINE::Container::getDiscreminantStrOfThis(), and YACS::ENGINE::Container::getName().

◆ getNumberOfCoresPerWorker()

int SalomeContainerTools::getNumberOfCoresPerWorker ( ) const
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 235 of file SalomeContainerTools.cxx.

236 {
237  return _params.resource_params.nb_proc_per_node;
238 }

References _params.

Referenced by YACS::ENGINE::SalomeHPContainer::getNumberOfCoresPerWorker().

◆ getParameters()

Engines::ContainerParameters YACS::ENGINE::SalomeContainerTools::getParameters ( ) const
inlineoverridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 79 of file SalomeContainerTools.hxx.

79 { return _params; }

◆ getProperties()

const std::map<std::string,std::string>& YACS::ENGINE::SalomeContainerTools::getProperties ( ) const
inlineoverridevirtual

◆ getProperty()

std::string SalomeContainerTools::getProperty ( const std::string &  name) const
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 63 of file SalomeContainerTools.cxx.

64 {
65  std::map<std::string,std::string>::const_iterator it(_propertyMap.find(name));
66  if(it!=_propertyMap.end())
67  return (*it).second;
68  else
69  return std::string();
70 }

References _propertyMap.

Referenced by YACS::ENGINE::SalomeContainer::getProperty(), and YACS::ENGINE::SalomeHPContainer::getProperty().

◆ getResourceProperties()

std::map< std::string, std::string > SalomeContainerTools::getResourceProperties ( const std::string &  name) const
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 277 of file SalomeContainerTools.cxx.

278 {
279  std::map<std::string,std::string> properties;
280 
282  CORBA::ORB_ptr orb = runTime->getOrb();
283  if (!orb) return properties;
284  SALOME_NamingService_Wrapper namingService(orb);
285  SALOME_LifeCycleCORBA lcc(&namingService);
286  CORBA::Object_var obj = namingService.Resolve(SALOME_ResourcesManager::_ResourcesManagerNameInNS);
287  if (CORBA::is_nil(obj))
288  return properties;
289  Engines::ResourcesManager_var resManager = Engines::ResourcesManager::_narrow(obj);
290  if (CORBA::is_nil(resManager))
291  return properties;
292 
293  std::ostringstream value;
294  Engines::ResourceDefinition_var resource_definition = resManager->GetResourceDefinition(name.c_str());
295  properties["hostname"]=resource_definition->hostname.in();
296  properties["OS"]=resource_definition->OS.in();
297  value.str(""); value << resource_definition->mem_mb;
298  properties["mem_mb"]=value.str();
299  value.str(""); value << resource_definition->cpu_clock;
300  properties["cpu_clock"]=value.str();
301  value.str(""); value << resource_definition->nb_node;
302  properties["nb_node"]=value.str();
303  value.str(""); value << resource_definition->nb_proc_per_node;
304  properties["nb_proc_per_node"]=value.str();
305  /*
306  properties["component_list"]="";
307  for(CORBA::ULong i=0; i < resource_definition->componentList.length(); i++)
308  {
309  if(i > 0)
310  properties["component_list"]=properties["component_list"]+",";
311  properties["component_list"]=properties["component_list"]+resource_definition->componentList[i].in();
312  }
313  */
314  return properties;
315 }
CORBA::ORB_ptr getOrb() const
YACSRUNTIMESALOME_EXPORT RuntimeSALOME * getSALOMERuntime()
CORBA::ORB_ptr orb
Definition: yacsSrv.cxx:39

References YACS::ENGINE::RuntimeSALOME::getOrb(), YACS::ENGINE::getSALOMERuntime(), orb, and SALOME_NamingService_Wrapper::Resolve().

Referenced by YACS::ENGINE::SalomeContainer::getResourceProperties(), and YACS::ENGINE::SalomeHPContainer::getResourceProperties().

◆ setContainerName()

void SalomeContainerTools::setContainerName ( const std::string &  name)
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 240 of file SalomeContainerTools.cxx.

241 {
243 }
static void SetContainerNameOf(Engines::ContainerParameters &params, const std::string &name)

References _params, and YACS::ENGINE::SalomeContainerToolsBase::SetContainerNameOf().

◆ setProperty()

void SalomeContainerTools::setProperty ( const std::string &  name,
const std::string &  value 
)
overridevirtual

Implements YACS::ENGINE::SalomeContainerToolsBase.

Definition at line 72 of file SalomeContainerTools.cxx.

73 {
74  //DEBUG_YACSTRACE("SalomeContainer::setProperty : " << name << " ; " << value);
75  // Container Part
76  if (name == "container_name")
77  _params.container_name = CORBA::string_dup(value.c_str());
78  else if (name == "workingdir")
79  _params.workingdir = CORBA::string_dup(value.c_str());
80  else if (name == "nb_parallel_procs")
81  {
82  std::istringstream iss(value);
83  if (!(iss >> _params.nb_proc))
84  throw Exception("salomecontainer::setproperty : params.nb_proc value not correct : " + value);
85  }
86  else if (name == "isMPI")
87  {
88  if (value == "true")
89  _params.isMPI = true;
90  else if (value == "false")
91  _params.isMPI = false;
92  else
93  throw Exception("SalomeContainer::setProperty : params.isMPI value not correct : " + value);
94  }
95  else if (name == "parallelLib")
96  _params.parallelLib = CORBA::string_dup(value.c_str());
97 
98  // Resource part
99  else if (name == "name")
100  _params.resource_params.name = CORBA::string_dup(value.c_str());
101  else if (name == "hostname")
102  _params.resource_params.hostname = CORBA::string_dup(value.c_str());
103  else if (name == "OS")
104  _params.resource_params.OS = CORBA::string_dup(value.c_str());
105  else if (name == "nb_resource_procs")
106  {
107  std::istringstream iss(value);
108  if (!(iss >> _params.resource_params.nb_proc))
109  throw Exception("salomecontainer::setproperty : params.resource_params.nb_proc value not correct : " + value);
110  }
111  else if (name == "mem_mb")
112  {
113  std::istringstream iss(value);
114  if (!(iss >> _params.resource_params.mem_mb))
115  throw Exception("salomecontainer::setproperty : params.resource_params.mem_mb value not correct : " + value);
116  }
117  else if (name == "cpu_clock")
118  {
119  std::istringstream iss(value);
120  if (!(iss >> _params.resource_params.cpu_clock))
121  throw Exception("salomecontainer::setproperty : params.resource_params.cpu_clock value not correct : " + value);
122  }
123  else if (name == "nb_node")
124  {
125  std::istringstream iss(value);
126  if (!(iss >> _params.resource_params.nb_node))
127  throw Exception("salomecontainer::setproperty : params.nb_node value not correct : " + value);
128  }
129  else if (name == "nb_proc_per_node")
130  {
131  std::istringstream iss(value);
132  if (!(iss >> _params.resource_params.nb_proc_per_node))
133  throw Exception("salomecontainer::setproperty : params.nb_proc_per_node value not correct : " + value);
134  }
135  else if (name == "policy")
136  _params.resource_params.policy = CORBA::string_dup(value.c_str());
137  else if (name == "component_list")
138  {
139  std::string clean_value(value);
140 
141  // Step 1: remove blanks
142  while(clean_value.find(" ") != std::string::npos)
143  clean_value = clean_value.erase(clean_value.find(" "), 1);
144 
145  // Step 2: get values
146  while(!clean_value.empty())
147  {
148  std::string result("");
149  std::string::size_type loc = clean_value.find(",", 0);
150  if (loc != std::string::npos)
151  {
152  result = clean_value.substr(0, loc);
153  clean_value = clean_value.erase(0, loc+1);
154  }
155  else
156  {
157  result = clean_value;
158  clean_value.erase();
159  }
160  if (result != "," && result != "")
161  {
162  addToComponentList(result);
163  }
164  }
165 
166  }
167  else if (name == "resource_list")
168  {
169  std::string clean_value(value);
170 
171  // Step 1: remove blanks
172  while(clean_value.find(" ") != std::string::npos)
173  clean_value = clean_value.erase(clean_value.find(" "), 1);
174 
175  // Step 2: get values
176  while(!clean_value.empty())
177  {
178  std::string result("");
179  std::string::size_type loc = clean_value.find(",", 0);
180  if (loc != std::string::npos)
181  {
182  result = clean_value.substr(0, loc);
183  clean_value = clean_value.erase(0, loc+1);
184  }
185  else
186  {
187  result = clean_value;
188  clean_value.erase();
189  }
190  if (result != "," && result != "")
191  {
192  addToResourceList(result);
193  }
194  }
195 
196  }
197  _propertyMap[name]=value;
198 }
void addToComponentList(const std::string &name) override
void addToResourceList(const std::string &name) override

References _params, _propertyMap, addToComponentList(), and addToResourceList().

Referenced by YACS::ENGINE::SalomeContainer::setProperty(), YACS::ENGINE::SalomeHPContainer::setProperty(), and YACS::ENGINE::SalomeContainer::start().

Member Data Documentation

◆ _params

Engines::ContainerParameters YACS::ENGINE::SalomeContainerTools::_params
private

◆ _propertyMap

std::map<std::string,std::string> YACS::ENGINE::SalomeContainerTools::_propertyMap
private

Definition at line 86 of file SalomeContainerTools.hxx.

Referenced by clearProperties(), getProperty(), and setProperty().


The documentation for this class was generated from the following files: