Version: 9.16.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 ()
 
virtual std::string getProperty (const std::string &name) const =0
 
virtual void setProperty (const std::string &name, const std::string &value)=0
 
virtual const std::map< std::string, std::string > & getProperties () const =0
 
virtual std::map< std::string, std::string > getResourceProperties (const std::string &name) const =0
 
virtual void clearProperties ()=0
 
virtual void addToComponentList (const std::string &name)=0
 
virtual void addToResourceList (const std::string &name)=0
 
virtual Engines::ContainerParameters getParameters () const =0
 
virtual void setContainerName (const std::string &name)=0
 
virtual std::string getHostName () const =0
 
virtual std::string getNotNullContainerName (const Container *contPtr, const Task *askingNode, bool &isEmpty) const =0
 
virtual std::string getContainerName () const =0
 
virtual int getNumberOfCoresPerWorker () const =0
 

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: