Salome HOME
venv directory is configured in config_appli.xml file
[modules/kernel.git] / src / KERNEL_PY / __init__.py
index 0f7bee48c518b70738e7c6cfcfee834e8800ede9..2aa01975bdc5ba6dd057e731dc61fe403a3f316e 100644 (file)
@@ -136,7 +136,7 @@ if not flags:
         # dl module can be unavailable
         import dl
         flags = dl.RTLD_NOW | dl.RTLD_GLOBAL
-    except:
+    except Exception:
         pass
     pass
 if not flags:
@@ -144,7 +144,7 @@ if not flags:
         # DLFCN module can be unavailable
         import DLFCN
         flags = DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL
-    except:
+    except Exception:
         pass
     pass
 if not flags:
@@ -152,7 +152,7 @@ if not flags:
         # ctypes module can be unavailable
         import ctypes
         flags = ctypes.RTLD_GLOBAL
-    except:
+    except Exception:
         pass
     pass
 
@@ -182,9 +182,9 @@ def salome_init(path=None, embedded=False):
     #
     if KernelBasis.getSSLMode():
         if KernelBasis.getIOROfEmbeddedNS() == "":
-            salome_init_without_session()
+            salome_init_without_session(path, embedded)
         else:
-            salome_init_without_session_attached()
+            salome_init_without_session_attached(path, embedded)
     else:
         salome_init_with_session(path, embedded)
 
@@ -208,7 +208,21 @@ class StandAloneLifecyle:
     def getResourcesManager(self):
       return self._rm
 
-def salome_init_without_session_common():
+def salome_init_without_session_common(path=None, embedded=False):
+    from ORBConfigFile import writeORBConfigFileSSL
+    OMNIORB_USER_PATH = "OMNIORB_USER_PATH"
+    def RemoveOmniorbConfigFile():
+        import os
+        if "OMNIORB_CONFIG" in os.environ:
+            fileToRemove = os.environ["OMNIORB_CONFIG"]
+            if os.path.exists(fileToRemove):
+                os.unlink(fileToRemove)
+
+    if OMNIORB_USER_PATH in os.environ:
+        import atexit
+        writeORBConfigFileSSL(os.environ[OMNIORB_USER_PATH],kwargs={"with_pid":True})
+        atexit.register(RemoveOmniorbConfigFile)
+
     global lcc,naming_service,myStudy,orb,modulcat,sg
     import KernelBasis
     KernelBasis.setSSLMode(True)
@@ -224,14 +238,15 @@ def salome_init_without_session_common():
     poa = orb.resolve_initial_references("RootPOA")
     poaManager = poa._get_the_POAManager()
     poaManager.activate()
-    sg = SalomeOutsideGUI()
-    salome_study_init_without_session()
+    #
+    sg = salome_iapp_init(embedded)
+    salome_study_init_without_session(path)
     #
     from NamingService import NamingService
     naming_service = NamingService()
 
-def salome_init_without_session():
-    salome_init_without_session_common()
+def salome_init_without_session(path=None, embedded=False):
+    salome_init_without_session_common(path,embedded)
     global lcc,cm,dsm,esm
     import KernelLauncher
     cm = KernelLauncher.myContainerManager()
@@ -248,12 +263,12 @@ def salome_init_without_session():
     # esm inherits also from SALOME_ResourcesManager creation/initialization (concerning SingleThreadPOA POA) when KernelLauncher.GetContainerManager() has been called
     esm = KernelLauncher.GetExternalServer()
     
-def salome_init_without_session_attached():
+def salome_init_without_session_attached(path=None, embedded=False):
     """
     Configuration SSL inside a python interpretor launched in the SALOME_Container_No_NS_Serv.
     In this configuration, 
     """
-    salome_init_without_session_common()
+    salome_init_without_session_common(path,embedded)
     global lcc,cm,dsm,esm
     import CORBA
     orb=CORBA.ORB_init([''])
@@ -261,11 +276,21 @@ def salome_init_without_session_attached():
     import KernelBasis
     nsAbroad = orb.string_to_object( KernelBasis.getIOROfEmbeddedNS() )
     import SALOME
-    cm = orb.string_to_object( nsAbroad.Resolve("/ContainerManager").decode() )
-    rm = orb.string_to_object( nsAbroad.Resolve("/ResourcesManager").decode() )
+    CM_NAME_IN_NS = "/ContainerManager"
+    cm = orb.string_to_object( nsAbroad.Resolve(CM_NAME_IN_NS).decode() )
+    naming_service.Register(cm,CM_NAME_IN_NS)
+    RM_NAME_IN_NS = "/ResourcesManager"
+    rm = orb.string_to_object( nsAbroad.Resolve(RM_NAME_IN_NS).decode() )
+    naming_service.Register(rm,RM_NAME_IN_NS)
+    #
+    DSM_NAME_IN_NS = "/DataServerManager"
     lcc = StandAloneLifecyle(cm,rm)
-    dsm = orb.string_to_object( nsAbroad.Resolve("/DataServerManager").decode() )
-    esm = orb.string_to_object( nsAbroad.Resolve("/ExternalServers").decode() )
+    dsm = orb.string_to_object( nsAbroad.Resolve(DSM_NAME_IN_NS).decode() )
+    naming_service.Register(dsm,DSM_NAME_IN_NS)
+    #
+    ESM_NAME_IN_NS = "/ExternalServers"
+    esm = orb.string_to_object( nsAbroad.Resolve(ESM_NAME_IN_NS).decode() )
+    naming_service.Register(esm,ESM_NAME_IN_NS)
 
 def salome_init_with_session(path=None, embedded=False):
     """
@@ -316,14 +341,14 @@ def salome_close():
     try:
         # study can be clear either from GUI or directly with salome.myStudy.Clear()
         myStudy.Clear()
-    except:
+    except Exception:
         pass
     salome_initial=True
     salome_iapp_close()
     salome_study_close()
     myStudy, myStudyName = None, None
     import KernelBasis
-    if KernelBasis.getSSLMode():
+    if KernelBasis.getSSLMode() and not KernelBasis.getGUIMode():
         import KernelDS
         KernelDS.KillGlobalSessionInstance()
         import KernelSDS
@@ -359,7 +384,7 @@ def salome_walk_on_containers(ns,root):
         pass
     pass
 
-def salome_shutdown_containers():
+def salome_shutdown_containers_with_session():
     salome_init()
     ns=salome_NS()
     li = [elt for elt in salome_walk_on_containers(ns,[""])]
@@ -367,11 +392,27 @@ def salome_shutdown_containers():
     for cont,(root,cont_name) in li:
         try:
             cont.Shutdown()
-        except:
+        except Exception:
             pass
         ref_in_ns = "/".join(root+[cont_name])
         naming_service.Destroy_Name(ref_in_ns)
     print("Number of containers in NS after clean : {}".format( len( list(salome_walk_on_containers(ns,[""])) )))
+    
+def salome_shutdown_containers_without_session():
+    containersEntries = [elt for elt in naming_service.repr() if "/Containers/" == elt[:12]]
+    for containerEntry in containersEntries:
+        cont = naming_service.Resolve(containerEntry)
+        try:
+            cont.Shutdown()
+        except:
+            pass
+
+def salome_shutdown_containers():
+    import KernelBasis
+    if KernelBasis.getSSLMode():
+        salome_shutdown_containers_without_session()
+    else:
+        salome_shutdown_containers_with_session()
 
 class SessionContextManager:
     def __enter__(self):