Salome HOME
updated copyright message
[modules/kernel.git] / src / Container / SALOME_ContainerPy.py
index cbe887ff97a26a40a6875304a48a5b62f2635945..815616a6f5fb698937eb8444c7bb81c6e33248c2 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/env python3
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #
 import os
 import sys
-import string
+import importlib
 
 from omniORB import CORBA, PortableServer
-import SALOMEDS 
+import SALOMEDS
 import Engines, Engines__POA
+import salome_psutil
 from SALOME_NamingServicePy import *
+from SALOME_Embedded_NamingService import SALOME_Embedded_NamingService
 from SALOME_ComponentPy import *
 
 from SALOME_utilities import *
@@ -54,6 +56,7 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
     _poa = None
     _numInstance = 0
     _listInstances_map = {}
+    _script = ""
 
     #-------------------------------------------------------------------------
 
@@ -61,6 +64,7 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
         MESSAGE( "SALOME_ContainerPy_i::__init__" )
         self._orb = orb
         self._poa = poa
+        self._load_script = None
         myMachine=getShortHostName()
         Container_path = "/Containers/" + myMachine + "/" + containerName
         self._containerName = Container_path
@@ -73,7 +77,7 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
         self._numInstance = self._numInstance +1
         instanceName = nameToRegister + "_inst_" + repr(self._numInstance)
 
-        component=__import__(componentName)
+        component=importlib.import_module(componentName)
         factory=getattr(component,componentName)
         comp_i=factory(self._orb, self._poa, self._this(), self._containerName,
                        instanceName, nameToRegister)
@@ -96,16 +100,16 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
         exec(the_command)
         comp_o = comp_i._this()
         return comp_o
-    
+
     #-------------------------------------------------------------------------
-    
+
     def import_component(self, componentName):
         MESSAGE( "SALOME_Container_i::import_component" )
         reason = ""
         try:
             if verbose(): print("try import %s" % componentName)
             # try import component
-            module=__import__(componentName)
+            module=importlib.import_module(componentName)
             if verbose(): print("import %s is done successfully" % componentName)
             # if import successfully, check that component is loadable
             if not hasattr(module, componentName):
@@ -113,7 +117,7 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
                 print(reason)
                 pass
             pass
-        except:
+        except Exception:
             import traceback
             print("cannot import %s" % componentName)
             traceback.print_exc()
@@ -129,7 +133,7 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
         interfaceName = componentName
         reason = self.import_component(componentName)
         return reason == "", reason
-    
+
     #-------------------------------------------------------------------------
 
     def create_component_instance_env(self, componentName, env):
@@ -141,7 +145,7 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
         instanceName = componentName + "_inst_" + repr(self._numInstance)
         comp_iors=""
         try:
-            component=__import__(componentName)
+            component=importlib.import_module(componentName)
             factory=getattr(component,componentName)
             comp_i=factory(self._orb,
                            self._poa,
@@ -149,11 +153,11 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
                            self._containerName,
                            instanceName,
                            componentName)
-            
+
             MESSAGE( "SALOME_Container_i::create_component_instance : OK")
             comp_o = comp_i._this()
             self._listInstances_map[instanceName] = comp_i
-        except:
+        except Exception:
             import traceback
             traceback.print_exc()
             MESSAGE( "SALOME_Container_i::create_component_instance : NOT OK")
@@ -168,13 +172,13 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
                 anEngine = self._listInstances_map[instance]
                 return anEngine._this()
         return anEngine
-        
+
 
     #-------------------------------------------------------------------------
 
     def create_python_service_instance(self, CompName):
         return self.create_component_instance(CompName)
-      
+
     #-------------------------------------------------------------------------
 
     def remove_impl(self, component):
@@ -204,6 +208,41 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
 
     #-------------------------------------------------------------------------
 
+    def getNumberOfCPUCores(self):
+        return salome_psutil.getNumberOfCPUCores()
+
+    #-------------------------------------------------------------------------
+
+    def loadOfCPUCores(self):
+        return salome_psutil.loadOfCPUCores(self._load_script)
+
+    #-------------------------------------------------------------------------
+
+    def setPyScriptForCPULoad(self, script):
+        self._load_script = script
+
+    #-------------------------------------------------------------------------
+
+    def resetScriptForCPULoad(self):
+        self._load_script = None
+
+    #-------------------------------------------------------------------------
+
+    def getTotalPhysicalMemory(self):
+        return salome_psutil.getTotalPhysicalMemory()
+
+    #-------------------------------------------------------------------------
+
+    def getTotalPhysicalMemoryInUse(self):
+        return salome_psutil.getTotalPhysicalMemoryInUse()
+
+    #-------------------------------------------------------------------------
+
+    def getTotalPhysicalMemoryInUseByMe(self):
+        return salome_psutil.getTotalPhysicalMemoryInUseByMe()
+
+    #-------------------------------------------------------------------------
+
     def _get_name(self):
         MESSAGE( "SALOME_ContainerPy_i::_get_name" )
         return self._containerName
@@ -216,7 +255,7 @@ class SALOME_ContainerPy_Gen_i(Engines__POA.Container):
         return self._machineName
 
     #-------------------------------------------------------------------------
-    
+
     def _get_machineName(self):
         MESSAGE( "SALOME_ContainerPy_i::_get_MachineName" )
         self._machineName = "localhost"
@@ -249,7 +288,7 @@ class SALOME_ContainerPy_i(SALOME_ContainerPy_Gen_i):
         self._naming_service = naming_service
         MESSAGE( str(Container_path) )
         naming_service.Register(self._this(), Container_path)
-    
+
     #-------------------------------------------------------------------------
 
     def start_impl(self, ContainerName):
@@ -285,15 +324,15 @@ class SALOME_ContainerPy_i(SALOME_ContainerPy_Gen_i):
                 break
             num += 1
             pass
-        
+
         shstr += " > "
         shstr += fileName
         shstr += " 2>&1 &"
-        
+
         #shstr += " > /tmp/"
         #shstr += ContainerName
         #shstr += ".log 2>&1 &"
-        
+
         MESSAGE(  "SALOME_ContainerPy_i::start_impl " + "os.system(" + str(shstr) + ")" )
         os.system( shstr )
         count = 21
@@ -317,6 +356,18 @@ class SALOME_ContainerPy_i(SALOME_ContainerPy_Gen_i):
 
     pass
 
+class SALOME_ContainerPy_SSL_i(SALOME_ContainerPy_Gen_i):
+    """
+    Implementation with naming_service server
+    """
+    def __init__(self, orb, poa, containerName):
+        SALOME_ContainerPy_Gen_i.__init__(self, orb, poa, containerName)
+        naming_service = SALOME_Embedded_NamingService()
+        self._naming_service = naming_service._this()
+
+    def get_embedded_NS_if_ssl(self):
+        return self._naming_service
+
 if __name__ == "__main__":
   # change the stdout buffering to line buffering (same as C++ cout buffering)
   sys.stdout=os.fdopen(1,"w",1)
@@ -331,7 +382,7 @@ if __name__ == "__main__":
   MESSAGE( str(sys.argv) )
   containerName = sys.argv[1]
   cpy_i = SALOME_ContainerPy_i(orb, poa, containerName)
-  if verbose():print("SALOME_ContainerPy_i instance created ",cpy_i) 
+  if verbose():print("SALOME_ContainerPy_i instance created ",cpy_i)
   cpy_o = cpy_i._this()
   if verbose():print("SALOME_ContainerPy_i instance activated ",cpy_o)
   sys.stdout.flush()