Version: 8.3.0
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
SALOME_ContainerManager Class Reference
Inheritance diagram for SALOME_ContainerManager:
Inheritance graph

Public Member Functions

 SALOME_ContainerManager (CORBA::ORB_ptr orb, PortableServer::POA_var poa, SALOME_NamingService *ns)
 
 ~SALOME_ContainerManager ()
 
Engines::Container_ptr GiveContainer (const Engines::ContainerParameters &params)
 Give a suitable Container given constraints. More...
 
void ShutdownContainers ()
 Loop on all the containers listed in naming service, ask shutdown on each. More...
 
void Shutdown ()
 shutdown all the containers, then the ContainerManager servant More...
 

Static Public Member Functions

static char * GetenvThreadSafe (const char *name)
 
static std::string GetenvThreadSafeAsString (const char *name)
 
static int SystemThreadSafe (const char *command)
 
static void AddOmninamesParams (std::ostream &fileStream, SALOME_NamingService *ns)
 
static void MakeTheCommandToBeLaunchedASync (std::string &command)
 
static int GetTimeOutToLoaunchServer ()
 
static void SleepInSecond (int ellapseTimeInSecond)
 

Static Public Attributes

static const char * _ContainerManagerNameInNS
 

Protected Types

typedef std::vector< std::string > actual_launch_machine_t
 

Protected Member Functions

Engines::Container_ptr FindContainer (const Engines::ContainerParameters &params, const Engines::ResourceList &possibleResources)
 Find a container given constraints (params) on a list of machines (possibleComputers) agy : this method is ThreadSafe. More...
 
Engines::Container_ptr FindContainer (const Engines::ContainerParameters &params, const std::string &resource)
 Find a container given constraints (params) on a machine (theMachine) agy : this method is ThreadSafe. More...
 
std::string BuildCommandToLaunchRemoteContainer (const std::string &resource_name, const Engines::ContainerParameters &params, const std::string &container_exe="SALOME_Container") const
 
std::string BuildCommandToLaunchLocalContainer (const Engines::ContainerParameters &params, const std::string &machinesFile, const std::string &container_exe, std::string &tmpFileName) const
 
std::string BuildTempFileToLaunchRemoteContainer (const std::string &resource_name, const Engines::ContainerParameters &params, std::string &tmpFileName) const
 
void AddOmninamesParams (std::string &command) const
 
void AddOmninamesParams (std::ostream &fileStream) const
 
std::string GetMPIZeroNode (const std::string machine, const std::string machinesFile) const
 
std::string machinesFile (const int nbproc)
 
std::set< pid_t > getpidofprogram (const std::string program)
 
Engines::Container_ptr LaunchContainer (const Engines::ContainerParameters &params, const std::string &resource_selected, const std::string &hostname, const std::string &machFile, const std::string &containerNameInNS)
 
bool checkPaCOParameters (Engines::ContainerParameters &params, std::string resource_selected)
 
Engines::Container_ptr StartPaCOPPContainer (const Engines::ContainerParameters &params, std::string resource_selected)
 
std::string BuildCommandToLaunchPaCOProxyContainer (const Engines::ContainerParameters &params, std::string machine_file_name, std::string &proxy_hostname)
 
std::string BuildCommandToLaunchPaCONodeContainer (const Engines::ContainerParameters &params, const std::string &machine_file_name, SALOME_ContainerManager::actual_launch_machine_t &vect_machine, const std::string &proxy_hostname)
 
void LogConfiguration (const std::string &log_type, const std::string &exe_type, const std::string &container_name, const std::string &hostname, std::string &begin, std::string &end)
 
CORBA::Object_ptr LaunchPaCOProxyContainer (const std::string &command, const Engines::ContainerParameters &params, const std::string &hostname)
 
bool LaunchPaCONodeContainer (const std::string &command, const Engines::ContainerParameters &params, const std::string &name, SALOME_ContainerManager::actual_launch_machine_t &vect_machine)
 

Static Protected Member Functions

static void RmTmpFile (std::string &tmpFile)
 
static std::string BuildTemporaryFileName ()
 
static std::string getCommandToRunRemoteProcess (AccessProtocolType protocol, const std::string &hostname, const std::string &username)
 

Protected Attributes

CORBA::ORB_var _orb
 
PortableServer::POA_var _poa
 
SALOME_ResourcesManager_Client * _resManager
 
SALOME_NamingService_NS
 
bool _isAppliSalomeDefined
 different behaviour if $APPLI exists (SALOME Application) More...
 
int _nbprocUsed
 attribute that contains the number of processes used in batch mode by MPI containers More...
 
Utils_Mutex _giveContainerMutex1
 attributes to allow concurrency for // GiveContainer More...
 
pid_t _pid_mpiServer
 

Static Protected Attributes

static omni_mutex _numInstanceMutex
 

Constructor & Destructor Documentation

SALOME_ContainerManager::SALOME_ContainerManager ( CORBA::ORB_ptr  orb,
PortableServer::POA_var  poa,
SALOME_NamingService ns 
)

Constructor

Parameters
orbDefine a CORBA single thread policy for the server, which avoid to deal with non thread-safe usage like Change_Directory in SALOME naming service
SALOME_ContainerManager::~SALOME_ContainerManager ( )

destructor

Member Function Documentation

Engines::Container_ptr SALOME_ContainerManager::GiveContainer ( const Engines::ContainerParameters params)

Give a suitable Container given constraints.

CORBA Method:

Parameters
paramsContainer Parameters required for the container
Returns
the container or nil
void SALOME_ContainerManager::ShutdownContainers ( )

Loop on all the containers listed in naming service, ask shutdown on each.

CORBA Method:

void SALOME_ContainerManager::Shutdown ( )

shutdown all the containers, then the ContainerManager servant

CORBA method:

Engines::Container_ptr SALOME_ContainerManager::FindContainer ( const Engines::ContainerParameters params,
const Engines::ResourceList possibleResources 
)
protected

Find a container given constraints (params) on a list of machines (possibleComputers) agy : this method is ThreadSafe.

Engines::Container_ptr SALOME_ContainerManager::FindContainer ( const Engines::ContainerParameters params,
const std::string &  resource 
)
protected

Find a container given constraints (params) on a machine (theMachine) agy : this method is ThreadSafe.

std::string SALOME_ContainerManager::BuildCommandToLaunchRemoteContainer ( const std::string &  resource_name,
const Engines::ContainerParameters params,
const std::string &  container_exe = "SALOME_Container" 
) const
protected

Builds the script to be launched

If SALOME Application not defined ($APPLI), see BuildTempFileToLaunchRemoteContainer()

Else rely on distant configuration. Command is under the form (example): ssh user distantPath/runRemote.sh hostNS portNS WORKINGDIR workingdir \ SALOME_Container containerName &"

  • where user is ommited if not specified in CatalogResources,
  • where distant path is always relative to user $HOME, and equal to $APPLI if not specified in CatalogResources,
  • where hostNS is the hostname of CORBA naming server (set by scripts to use to launch SALOME and servers in $APPLI: runAppli.sh, runRemote.sh)
  • where portNS is the port used by CORBA naming server (set by scripts to use to launch SALOME and servers in $APPLI: runAppli.sh, runRemote.sh)
  • where workingdir is the requested working directory for the container. If WORKINGDIR (and workingdir) is not present the working dir will be $HOME
std::string SALOME_ContainerManager::BuildCommandToLaunchLocalContainer ( const Engines::ContainerParameters params,
const std::string &  machinesFile,
const std::string &  container_exe,
std::string &  tmpFileName 
) const
protected

builds the command to be launched.

std::string SALOME_ContainerManager::BuildTempFileToLaunchRemoteContainer ( const std::string &  resource_name,
const Engines::ContainerParameters params,
std::string &  tmpFileName 
) const
protected

Builds in a temporary file the script to be launched.

Used if SALOME Application ($APPLI) is not defined. The command is build with data from CatalogResources, in which every path used on remote computer must be defined.

void SALOME_ContainerManager::RmTmpFile ( std::string &  tmpFileName)
staticprotected

removes the generated temporary file in case of a remote launch. This method is thread safe

void SALOME_ContainerManager::AddOmninamesParams ( std::string &  command) const
protected

add to command all options relative to naming service.

void SALOME_ContainerManager::AddOmninamesParams ( std::ostream &  fileStream) const
protected

add to command all options relative to naming service.

std::string SALOME_ContainerManager::BuildTemporaryFileName ( )
staticprotected

generate a file name in /tmp directory

void SALOME_ContainerManager::AddOmninamesParams ( std::ostream &  fileStream,
SALOME_NamingService ns 
)
static

add to command all options relative to naming service.

Field Documentation

const char * SALOME_ContainerManager::_ContainerManagerNameInNS
static
Initial value:
=
"/ContainerManager"
bool SALOME_ContainerManager::_isAppliSalomeDefined
protected

different behaviour if $APPLI exists (SALOME Application)

int SALOME_ContainerManager::_nbprocUsed
protected

attribute that contains the number of processes used in batch mode by MPI containers

Utils_Mutex SALOME_ContainerManager::_giveContainerMutex1
protected

attributes to allow concurrency for // GiveContainer