]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
WIP
authorAnthony Geay <anthony.geay@edf.fr>
Thu, 14 Sep 2023 13:32:01 +0000 (15:32 +0200)
committerAnthony Geay <anthony.geay@edf.fr>
Thu, 14 Sep 2023 13:32:01 +0000 (15:32 +0200)
src/GenericObj/SALOME_GenericObj_i.cc
src/Launcher/KernelLauncher.cxx
src/Launcher/KernelLauncher.hxx
src/Launcher/KernelLauncher.i
src/Launcher/SALOME_Launcher.hxx
src/Launcher_SWIG/Launcher.i

index 5d14412b6d4c88fbc489b3ff051c31fe182c5787..5a5c7d88800a1a3dd3effe85ee6b62240051c2c5 100644 (file)
@@ -73,8 +73,6 @@ namespace SALOME
   */
   GenericObj_i::GenericObj_i(PortableServer::POA_ptr thePOA): myRefCounter(1)
   {
-    MESSAGE("GenericObj_i::GenericObj_i() - this = " << this <<
-           "; CORBA::is_nil(thePOA) = " << CORBA::is_nil(thePOA));
 
     if(CORBA::is_nil(thePOA)) {
 #ifndef WIN32
@@ -86,8 +84,6 @@ namespace SALOME
     else {
       myPOA = PortableServer::POA::_duplicate(thePOA);
     }
-
-    MESSAGE("GenericObj_i::GenericObj_i thePOA: " << thePOA << " myPOA: " << myPOA);
   }
 
   /*!
@@ -100,7 +96,6 @@ namespace SALOME
   */
   PortableServer::POA_ptr GenericObj_i::_default_POA()
   {
-    MESSAGE("GenericObj_i::_default_POA: " << myPOA);
     return PortableServer::POA::_duplicate(myPOA);
   }
 
index d66cb99de94a77df1fa15fcfe20ea1a755aaf3d7..5ed46f83c114bc953b5f6de202692ef3bc58d0b0 100644 (file)
 #include "SALOME_CPythonHelper.hxx"
 
 #include <cstring>
+#include <sstream>
+
+std::string RetrieveInternalInstanceOfLocalCppResourcesManager()
+{
+  SALOME_Launcher *launcher = KERNEL::getLauncherSA();
+  SALOME_ResourcesManager *rm(launcher->getResourcesManager());
+  if(rm)
+  {
+    std::shared_ptr<ResourcesManager_cpp> *ret1(new std::shared_ptr<ResourcesManager_cpp>(rm->GetImpl()));
+    std::ostringstream oss; oss << ret1;
+    return oss.str();
+  }
+  return std::string();
+}
 
 std::string GetContainerManagerInstance()
 {
index 9963f0bb30b979c612f1f17e5e8a1c958238c6ff..d7f8c880e2dd1f59db27216f10e8dd7845cdfefb 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <string>
 
+std::string RetrieveInternalInstanceOfLocalCppResourcesManager();
 std::string GetContainerManagerInstance();
 std::string GetResourcesManagerInstance();
 std::string GetExternalServerInstance();
index 2e40c1f5d94c15525e732c9573385a762e05dbba..7a97e9a1130bac29281f72f80f2cad4cf85abeda 100644 (file)
@@ -27,6 +27,7 @@
 
 %inline
 {
+  std::string RetrieveInternalInstanceOfLocalCppResourcesManager();
   std::string GetContainerManagerInstance();
   std::string GetResourcesManagerInstance();
   std::string GetExternalServerInstance();
index bcb0849534b414540c6f8622c0db5d751c28ac45..188cc5e3ee31164568a6dbbd9bbd515b3499b609 100644 (file)
@@ -80,6 +80,8 @@ public:
   
   void DeclareUsingSalomeSession();
 
+  SALOME_ResourcesManager *getResourcesManager() const { return _ResManager; }
+
   static const char *_LauncherNameInNS;
 
   static JobParameters_cpp
index 72913846d65f7c86f8b5a3f382a27cd1df896b25..b3c3401aa0ea910e5290a45e10fbc4a08590b9ba 100644 (file)
@@ -23,6 +23,8 @@
 #include "Launcher.hxx"
 #include "ResourcesManager.hxx"
 
+#include <sstream>
+
 struct ResourceDefinition_cpp
 {
 public:
@@ -44,6 +46,17 @@ public:
   bool can_run_containers;
   std::string working_directory;
 };
+
+std::shared_ptr<ResourcesManager_cpp> HandleToLocalInstance(const std::string& ptrInStringFrmt)
+{
+  std::istringstream iss(ptrInStringFrmt);
+  void *zePtr(nullptr);
+  iss >> zePtr;
+  std::shared_ptr<ResourcesManager_cpp> *effPtr = reinterpret_cast<std::shared_ptr<ResourcesManager_cpp> *>(zePtr);
+  std::shared_ptr<ResourcesManager_cpp> ret(*effPtr);
+  delete effPtr;
+  return ret;
+}
 %}
 
 %include "std_string.i"
@@ -159,6 +172,8 @@ class ResourcesManager_cpp
 public:
   ResourcesManager_cpp(const char *xmlFilePath);
   std::vector<std::string> GetFittingResources(const resourceParams& params);
+  void WriteInXmlFile(std::string xml_file);
+
 %extend
 {
   ResourceDefinition_cpp GetResourceDefinition(const std::string& name)
@@ -186,9 +201,56 @@ public:
 
     return swig_result;
   }
+
+  void DeleteResourceInCatalog(const std::string& name)
+  {
+    $self->DeleteResourceInCatalog(name.c_str());
+  }
+  
+  void AddResourceInCatalog (const ResourceDefinition_cpp& new_resource)
+  {
+    ParserResourcesType new_resource_cpp;
+    new_resource_cpp.Name = new_resource.name;
+    new_resource_cpp.HostName = new_resource.hostname;
+    new_resource_cpp.setResourceTypeStr( new_resource.type );
+    new_resource_cpp.setAccessProtocolTypeStr( new_resource.protocol );
+    new_resource_cpp.UserName = new_resource.username;
+    new_resource_cpp.AppliPath = new_resource.applipath;
+    new_resource_cpp.OS = new_resource.OS;
+    new_resource_cpp.DataForSort._memInMB = new_resource.mem_mb;
+    new_resource_cpp.DataForSort._CPUFreqMHz = new_resource.cpu_clock;
+    new_resource_cpp.DataForSort._nbOfNodes = new_resource.nb_node;
+    new_resource_cpp.DataForSort._nbOfProcPerNode = new_resource.nb_proc_per_node;
+    new_resource_cpp.setBatchTypeStr(new_resource.batch);
+    new_resource_cpp.setMpiImplTypeStr(new_resource.mpiImpl);
+    new_resource_cpp.setClusterInternalProtocolStr(new_resource.iprotocol);
+    new_resource_cpp.can_launch_batch_jobs = new_resource.can_launch_batch_jobs;
+    new_resource_cpp.can_run_containers = new_resource.can_run_containers;
+    new_resource_cpp.working_directory = new_resource.working_directory;
+    $self->AddResourceInCatalog(new_resource_cpp);
+  }
+  
+  void ParseXmlFiles()
+  {
+    $self->ParseXmlFiles();
+  }
+  
+  std::vector<std::string> GetListOfEntries() const
+  {
+    const MapOfParserResourcesType& allRes = $self->GetList();
+    std::vector<std::string> ret;
+    for(auto it : allRes)
+      ret.push_back(it.first);
+    return ret;
+  }
 }
 };
 
+%inline
+{
+  std::shared_ptr<ResourcesManager_cpp> HandleToLocalInstance(const std::string& ptrInStringFrmt);
+}
+
 %exception
 {
   try
@@ -229,3 +291,54 @@ public:
   long createJobWithFile(std::string xmlExecuteFile, std::string clusterName);
   void SetResourcesManager(std::shared_ptr<ResourcesManager_cpp>& rm );
 };
+
+%pythoncode %{
+def CreateSSHContainerResource(hostname,applipath,nbOfNodes=1):
+  return CreateContainerResource(hostname,applipath,"ssh",nbOfNodes)
+
+def CreateSRUNContainerResource(hostname,applipath,nbOfNodes=1):
+  return CreateContainerResource(hostname,applipath,"srun",nbOfNodes)
+
+def CreateContainerResource(hostname,applipath,protocol,nbOfNodes=1):
+  import getpass
+  ret = ResourceDefinition_cpp()
+  ret.name = hostname.split(".")[0]
+  ret.hostname = ret.name
+  ret.protocol = protocol
+  ret.applipath = applipath
+  ret.nb_node = nbOfNodes
+  ret.nb_proc_per_node = 1
+  ret.can_run_containers = True
+  ret.can_launch_batch_jobs = False
+  ret.mpiImpl = "no mpi"
+  ret.iprotocol = protocol
+  ret.type = "single_machine"
+  ret.username = getpass.getuser()
+  return ret
+
+def ResourceDefinition_cpp_repr(self):
+  pat0 = "{} = {}"
+  pat1 = "{} = \"{}\""
+  data = [("name","name",pat0),
+  ("hostname","hostname",pat0),
+  ("type","type",pat0),
+  ("protocol","protocol",pat0),
+  ("userName","username",pat0),
+  ("appliPath","applipath",pat1),
+  ("mpi","mpiImpl",pat0),
+  ("nbOfNodes","nb_node",pat0),
+  ("nbOfProcPerNode","nb_proc_per_node",pat0),
+  ("canRunContainer","can_run_containers",pat0)
+  ]
+  ret = [c.format(a,getattr(self,b)) for a,b,c in data]
+  return "\n".join( ret )
+
+def ResourcesManager_cpp_GetList(self):
+  return {name:self.GetResourceDefinition(name) for name in self.GetListOfEntries()}
+
+
+ResourceDefinition_cpp.repr = ResourceDefinition_cpp_repr
+ResourceDefinition_cpp.__repr__ = ResourceDefinition_cpp_repr
+ResourcesManager_cpp.GetList = ResourcesManager_cpp_GetList
+
+%}