Python wrapper for running instances of trisurf-ng
Samo Penic
2017-01-20 282bdafd491d8ce286fe13c40fbbc9379123f0d5
trisurf/tsmgr.py
@@ -15,10 +15,10 @@
else:
   from urlparse import urlparse
   from vtk import *
   from . import VTKRendering
#import io
from IPython import embed
#from IPython import embed
import __main__ as main
@@ -55,6 +55,7 @@
   parser.add_argument('-n', nargs='+', metavar='PROC_NO', type=int, help='OBSOLETE. Specifies process numbers.')
   parser.add_argument('-R','--raw',help='print status and the rest of the information in raw format', action="store_true")
   parser.add_argument('-x','--local-only',help='do not attempt to contact remote hosts. Run all operations only on local machine',action='store_true')
   parser.add_argument('--originating-host',nargs=1,help='specify which host started the remote connections. Useful mainly fo internal functionaly of tsmgr and analyses.')
   args = parser.parse_args(arguments)
   return args
@@ -79,7 +80,7 @@
   for h in hosts:
      for r in h['runs']:
         if(r.isFromSnapshot):
            file_list.append(r.snapshotFilename)
            file_list.append(r.snapshotFile)
         else:
            file_list.append(r.tapeFilename)
   file_list.append(main.__file__)
@@ -93,8 +94,12 @@
            port=host['port']
         except:
            port=22 #default ssh port
         rm=Remote.Connection(hostname=host['address'],username=username, port=port)
         rm.connect()
         try:
            rm=Remote.Connection(hostname=host['address'],username=username, port=port)
            rm.connect()
         except:
            host['_conn']=None
            continue
#         print ("Sendind file:"+main.__file__)
         if('remotebasepath' in host):
            remote_dir=host['remotebasepath']
@@ -130,6 +135,7 @@
def status_processes(args,host):
   print("in status processes")
   target_runs=getTargetRunIdxList(args)
   if target_runs==None:
      target_runs=list(range(1,len(host['runs'])+1))
@@ -255,12 +261,16 @@
def preview_vtu(args,host):
   #only for localhost at the moment
   if sys.version_info>=(3,0):
      print("Preview works only with python 2.7")
      exit(1)
   from . import VTKRendering
   target_runs=getTargetRunIdxList(args)
   if target_runs==None:
      target_runs=list(range(1,len(host['runs'])+1))
   if host['name'] == socket.gethostname():
      VTKRendering.Renderer(args,host)
      for i in target_runs:
         VTKRendering.Renderer(args,host,host['runs'][i-1])
   else:
      print("VTK rendering currently works on localhost only!")
def getListOfHostConfigurationByHostname(hosts,host):
   rhost=[]
@@ -309,16 +319,19 @@
         #print(remote_dir)
         #print(main.__file__)
         #print('python3 '+main.__file__+' -x '+" ".join(argv))
         output=host['_conn'].execute('cd '+remote_dir+ '; python3 '+main.__file__+' -x '+" ".join(argv))
         for line in output:
            print(line.replace('\n',''))
         if(host['_conn']!=None):
#            print("was here, "+'cd '+remote_dir+ '; python3 '+main.__file__+' -x --originating-host ' +socket.gethostname()+" "+" ".join(argv))
            output=host['_conn'].execute('cd '+remote_dir+ '; python3 '+main.__file__+' -x --originating-host ' +socket.gethostname()+" "+" ".join(argv))
            for line in output:
               print(line.replace('\n',''))
   if not args['local_only']:
      print("Closing connections to remote hosts")
      for host in hosts:
         if(host['name'] !=socket.gethostname()):
            host['_conn'].disconnect()
            if(host['_conn']):
               host['_conn'].disconnect()