From 4e6b885e743538debd7e216ebb76ebfcc57cb2af Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Sat, 07 Jan 2017 21:25:19 +0000
Subject: [PATCH] Fixing running the remote simulations

---
 trisurf/tsmgr.py |   44 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/trisurf/tsmgr.py b/trisurf/tsmgr.py
index ca590c4..518c6a1 100644
--- a/trisurf/tsmgr.py
+++ b/trisurf/tsmgr.py
@@ -74,6 +74,15 @@
 
 def copyConfigAndConnect(hosts):
 	print("Connecting to remote hosts and copying config files, tapes and snapshots")
+	#create a list of files to be copied across all the remote hosts
+	file_list=[]
+	for h in hosts:
+		for r in h['runs']:
+			if(r.isFromSnapshot):
+				file_list.append(r.snapshotFilename)
+			else:
+				file_list.append(r.tapeFilename)
+	file_list.append(main.__file__)
 	for host in hosts:
 		if(host['name'] !=socket.gethostname()): #if I am not the computer named in host name
 			try:
@@ -87,16 +96,21 @@
 			rm=Remote.Connection(hostname=host['address'],username=username, port=port)
 			rm.connect()
 #			print ("Sendind file:"+main.__file__)
-			rm.send_file(main.__file__,'remote_control.py')
-			for run in host['runs']:
-				try:
-					rm.send_file(run.tapeFile,run.tapeFile)
-				except:
-					pass
-				try:
-					rm.send_file(run.snapshotFile,run.snapshotFile)
-				except:
-					pass
+			if('remotebasepath' in host):
+				remote_dir=host['remotebasepath']
+			else:
+				remote_dir='trisurf_simulations'
+			rm.send_multiple_files_in_directory(file_list,remote_dir)
+#			rm.send_file(main.__file__,'remote_control.py')
+#			for run in host['runs']:
+#				try:
+#					rm.send_file(run.tapeFile,run.tapeFile)
+#				except:
+#					pass
+#				try:
+#					rm.send_file(run.snapshotFile,run.snapshotFile)
+#				except:
+#					pass
 			host['_conn']= rm
 	# we are connected to all hosts...
 	return hosts
@@ -287,7 +301,15 @@
 				print("Host "+bcolors.WARNING+host['name']+bcolors.ENDC+" reports:")
 			perform_action(args,host, analyses=analyses, hosts=hosts)
 		elif not args['local_only']:
-			output=host['_conn'].execute('python3 ./remote_control.py -x '+" ".join(argv))
+			if('remotebasepath' in host):
+				remote_dir=host['remotebasepath']
+			else:
+				remote_dir='trisurf_simulations'
+			#output=host['_conn'].execute('cd '+remote_dir)
+			#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',''))
 

--
Gitblit v1.9.3