X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FContainer%2FSALOME_ContainerManager.hxx;h=59ceee4e833200fd8086b086896902328ca47a7d;hb=033997a343242f8a6a21ff245bfc07a627bb9aa0;hp=7b1f26eab23e6d971d7fb4603b2a22758ac68b00;hpb=7d2fe213bdf5bf962ce11e253020c9d3e0bc1cce;p=modules%2Fkernel.git diff --git a/src/Container/SALOME_ContainerManager.hxx b/src/Container/SALOME_ContainerManager.hxx index 7b1f26eab..59ceee4e8 100644 --- a/src/Container/SALOME_ContainerManager.hxx +++ b/src/Container/SALOME_ContainerManager.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + #ifndef __SALOME_CONTAINERMANAGER_HXX__ #define __SALOME_CONTAINERMANAGER_HXX__ @@ -42,87 +43,57 @@ public: SALOME_ContainerManager(CORBA::ORB_ptr orb, PortableServer::POA_var poa, SALOME_ResourcesManager *rm, SALOME_NamingService *ns); ~SALOME_ContainerManager(); + // Corba Methods Engines::Container_ptr - FindOrStartContainer(const Engines::MachineParameters& params, - const Engines::MachineList& possibleComputer); - - Engines::Container_ptr - StartContainer(const Engines::MachineParameters& params, - const Engines::MachineList& possibleComputer, - Engines::ResPolicy policy, - const std::string& container_exe="SALOME_Container"); + GiveContainer(const Engines::ContainerParameters& params); - Engines::Container_ptr - StartContainer(const Engines::MachineParameters& params, - Engines::ResPolicy policy, - const Engines::CompoList& componentList); - - Engines::Container_ptr - GiveContainer(const Engines::MachineParameters& params, - Engines::ResPolicy policy, - const Engines::CompoList& componentList); + void ShutdownContainers(); + // C++ Methods void Shutdown(); - void ShutdownContainers(); static const char *_ContainerManagerNameInNS; - // Parallel extension - Engines::Container_ptr - FindOrStartParallelContainer(const Engines::MachineParameters& params, - const Engines::MachineList& possibleComputer); protected: + // C++ methods Engines::Container_ptr - FindContainer(const Engines::MachineParameters& params, - const Engines::MachineList& possibleComputers); + FindContainer(const Engines::ContainerParameters& params, + const Engines::ResourceList& possibleResources); Engines::Container_ptr - FindContainer(const Engines::MachineParameters& params, - const char *theMachine); - - // Parallel extension - CORBA::Object_ptr - LaunchParallelContainer(const std::string& command, - const Engines::MachineParameters& params, - const std::string& name); - - void fillBatchLaunchedContainers(); - - long GetIdForContainer(void); + FindContainer(const Engines::ContainerParameters& params, + const std::string& resource); - std::string BuildCommandToLaunchRemoteContainer(const std::string& machine, - const Engines::MachineParameters& params, const long id, - const std::string& container_exe="SALOME_Container"); + std::string BuildCommandToLaunchRemoteContainer(const std::string & resource_name, + const Engines::ContainerParameters& params, + const std::string& container_exe="SALOME_Container"); - std::string BuildCommandToLaunchLocalContainer(const Engines::MachineParameters& params, const long id, + std::string BuildCommandToLaunchLocalContainer(const Engines::ContainerParameters& params, + const std::string& machinesFile, const std::string& container_exe="SALOME_Container"); - std::string BuildTempFileToLaunchRemoteContainer(const std::string& machine, - const Engines::MachineParameters& params) throw(SALOME_Exception); + std::string BuildTempFileToLaunchRemoteContainer(const std::string& resource_name, + const Engines::ContainerParameters& params) throw(SALOME_Exception); - void RmTmpFile(); + void RmTmpFile(std::string& tmpFile); void AddOmninamesParams(std::string& command) const; + void AddOmninamesParams(std::ostringstream& oss) const; + void AddOmninamesParams(std::ofstream& fileStream) const; std::string BuildTemporaryFileName() const; - // Parallel extension - std::string BuildCommandToLaunchLocalParallelContainer(const std::string& exe_name, - const Engines::MachineParameters& params, - const std::string& log = "default"); - void startMPI(); - bool _MpiStarted; + std::string GetMPIZeroNode(const std::string machine, const std::string machinesFile); + + std::string machinesFile(const int nbproc); - long _id; CORBA::ORB_var _orb; PortableServer::POA_var _poa; SALOME_ResourcesManager *_ResManager; SALOME_NamingService *_NS; - static std::vector _batchLaunchedContainers; - static std::vector::iterator _batchLaunchedContainersIter; //! attribute that contains current tmp files generated std::string _TmpFileName; @@ -134,5 +105,47 @@ protected: //! different behaviour if $APPLI exists (SALOME Application) bool _isAppliSalomeDefined; + //! attribute that contains the number of processes used in batch mode by MPI containers + int _nbprocUsed; + + static omni_mutex _numInstanceMutex ; // lib and instance protection + + // Begin of PacO++ Parallel extension + typedef std::vector actual_launch_machine_t; + + 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); + // End of PaCO++ Parallel extension }; #endif