import salome
import SALOME_Embedded_NamingService_ClientPy
import NamingService
-from SALOME_PyNode import FileDeleter
+from SALOME_PyNode import FileDeleter,FileHolder
import signal
import os
try:
ns = SALOME_Embedded_NamingService_ClientPy.SALOME_Embedded_NamingService_ClientPy( NamingService.NamingService.LoadIORInFile( ior_file.filename ) )
del ior_file
+ ior_file = None # to avoid raises in __main__ function
cm = ns.Resolve(salome.CM_NAME_IN_NS)
cm.ShutdownContainersNow()
except:
pass
os.kill( proc.pid, signal.SIGKILL )
-if __name__ == "__main__":
+def generateCmdForInternal():
import sys
import tempfile
+ global ior_file
+ args, _ = driver_internal.parseArgs()
+ iorNS = args[ driver_internal.IORKeyInARGS ]
+ firstPart = ["python3",driver_internal.__file__]
+ lastPart = [elt for elt in sys.argv[1:] if elt != ""]
+ middlePart = []
+ #
+ if not iorNS:
+ with tempfile.NamedTemporaryFile(prefix="ior_driver_",suffix=".ior") as f:
+ ior_file = FileDeleter( f.name )
+ middlePart = [ "{}={}".format( driver_internal.IOREntryInCMD, ior_file.filename) ]
+ else:
+ ior_file = FileHolder( iorNS )
+ print(100*"*")
+ print( firstPart + middlePart + lastPart )
+ return firstPart + middlePart + lastPart
+
+if __name__ == "__main__":
signal.signal(signal.SIGINT, handler)
signal.signal(signal.SIGTERM, handler)
- with tempfile.NamedTemporaryFile(prefix="ior_driver_",suffix=".ior") as f:
- ior_file = FileDeleter( f.name )
- iorStuff = "{}={}".format( driver_internal.IOREntryInCMD, ior_file.filename)
- argv = [elt for elt in sys.argv[1:] if elt != ""]
- cmd = ["python3",driver_internal.__file__] + [ iorStuff ] + argv
+ cmd = generateCmdForInternal()
proc = sp.Popen( cmd )
proc.communicate()
del ior_file
parser.add_argument("--options_from_json", dest = "options_from_json", type=str, default ="", help="Json file of options. If defined options in json will override those specified in command line.")
return parser
-def mainRun( args, iorNS, xmlFileName):
+def mainRun( args, xmlFileName):
"""
Args:
-----
global my_ior_ns
from salome_utils import positionVerbosityOfLoggerRegardingState,setVerboseLevel,setVerbose
#
+ iorNS = args[IORKeyInARGS]
+ #
if iorNS:
my_ior_ns = iorNS
- # change key of args from entryCMD to KeyInARGS
- args = {key:args[EntryFromCoarseEntry(entry)] for entry,key in KeyValnARGS}
#
if args[VerboseKeyInARGS]:
setVerbose( args[ KernelTraceKeyInARGS ] )
#
destroyElementsGeneratedByExecutionOfGraph( proc, args[ShutdownKeyInARGS] )
+def parseArgs():
+ """
+ Returns
+ -------
-if __name__ == "__main__":
+ - args (dict) : dictionnary containing all args taken into account. If json, the params in json will override entries
+ - xmlFileName (str) : XML YACS schema
+
+ """
import json
parser = getArgumentParser()
args = parser.parse_args()
with open( optionFromJSon ) as f:
opts_from_json = json.load( f )
for k,v in opts_from_json.items():
- args[k] = v
- mainRun( args, iorNS, xmlFileName)
+ if k != EntryFromCoarseEntry(IOREntryInCMD) or v:# for IOR if v is null -> do not override
+ args[k] = v
+ # change key of args from entryCMD to KeyInARGS
+ args = {key:args[EntryFromCoarseEntry(entry)] for entry,key in KeyValnARGS}
+ return args, xmlFileName
+
+if __name__ == "__main__":
+ args, xmlFileName = parseArgs()
+ mainRun( args, xmlFileName)