Python wrapper for running instances of trisurf-ng
Samo Penic
2017-01-20 52e871dbc7bf5b61003718cd3342b5ce5d882c6a
Fix in trisurf.py in getLastVTU not returning the result if directory does not exist or is empty.
3 files modified
73 ■■■■ changed files
trisurf/Remote.py 44 ●●●●● patch | view | raw | blame | history
trisurf/trisurf.py 7 ●●●● patch | view | raw | blame | history
trisurf/tsmgr.py 22 ●●●●● patch | view | raw | blame | history
trisurf/Remote.py
@@ -20,23 +20,20 @@
    
    def connect(self, Timeout=5):
        if(not self.connected):
            try:
                print("Trying to connect to: "+self.username+"@"+self.hostname+":"+str(self.port)+".")
                self.ssh.connect(self.hostname, username=self.username, password=self.password, port=self.port, timeout=Timeout)
                self.connected=True
            except:
                print("Error establishing connection with "+self.username+"@"+self.hostname+":"+str(self.port)+".")
                exit(1)
#            try:
            print("Trying to connect to: "+self.username+"@"+self.hostname+":"+str(self.port)+".")
            self.ssh.connect(self.hostname, username=self.username, password=self.password, port=self.port, timeout=Timeout)
            self.connected=True
#            except:
#                print("Error establishing connection with "+self.username+"@"+self.hostname+":"+str(self.port)+".")
#                exit(1)
        else:
            print("Already connected!")
        return
    def disconnect(self):
        if(self.connected):
            try:
                self.ssh.close()
            except:
                print("Cannot disconect. Unknown error.")
            self.ssh.close()
        else:
            print("Cannot disconect. Already disconnected.")
        self.connected=False
@@ -55,14 +52,16 @@
            print("Cannot execute remote commands. Connect first.")
    def send_file(self, local, remote):
        sftp=self.ssh.open_sftp()
        sftp.put(local,remote)
        sftp.close()
        pass
#        sftp=self.ssh.open_sftp()
#        sftp.put(local,remote)
#        sftp.close()
    def receive_file(self,remote,local):
        sftp=self.ssh.open_sftp()
        sftp.get(remote,local)
        sftp.close()
        pass
#        sftp=self.ssh.open_sftp()
#        sftp.get(remote,local)
#        sftp.close()
    def mkdir_remote(self,directory):
        sftp=self.ssh.open_sftp()
@@ -89,13 +88,4 @@
        return True
    
    def send_multiple_files_in_directory(self,local_files,directory):
        sftp=self.ssh.open_sftp()
#        try:
#            sftp.chdir(directory)  # Test if remote_path exists
#        except (IOError,FileNotFoundError):
#            sftp.mkdir(directory)  # Create remote_path
#            sftp.chdir(directory)
        self.mkdir_p(sftp, directory)
        for f in set(local_files):
            sftp.put(f, f)
        sftp.close()
        pass
trisurf/trisurf.py
@@ -528,8 +528,11 @@
        for file in os.listdir(self.Dir.fullpath()):
            if file.endswith(".vtu"):
                flist.append(file)
        flist.sort()
        return(flist[-1])
        flist.sort()
        if(len(flist)==0):
            return -1
        else:
            return(flist[-1])
    def __str__(self):
        if(self.getStatus()==0):
trisurf/tsmgr.py
@@ -18,7 +18,7 @@
    
#import io
from IPython import embed
#from IPython import embed
import __main__ as main
@@ -94,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']
@@ -131,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))
@@ -314,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 --originating-host ' +socket.gethostname()+" "+" ".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()