From 56ba2f3107066b9a449b83eba64cab8e43cae9f0 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@fe.uni-lj.si>
Date: Mon, 16 May 2016 10:26:38 +0000
Subject: [PATCH] Added comment about psutil version

---
 python/trisurf/trisurf.py |   28 ++++++++++++++++++++--------
 1 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/python/trisurf/trisurf.py b/python/trisurf/trisurf.py
index c57de3e..ac8abaf 100644
--- a/python/trisurf/trisurf.py
+++ b/python/trisurf/trisurf.py
@@ -13,6 +13,7 @@
 import time
 import datetime
 import subprocess
+import shutil
 
 # Process status
 TS_NOLOCK=0 # lock file does not exist
@@ -286,7 +287,7 @@
 		version=root.find('trisurfversion')
 		self.tape=Tape()
 		self.tape.setTape(tapetxt.text)
-		
+
 	def getPID(self):
 		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
 		#self.Dir.makeifnotexist()
@@ -323,6 +324,7 @@
 			return TS_NOLOCK
 		if(psutil.pid_exists(int(pid))):
 			proc= psutil.Process(int(pid))
+			#psutil.__version__ == '3.4.2' requires name() and status(), some older versions reguire name, status
 			if proc.name()=="trisurf":
 				if proc.status()=="stopped":
 					return TS_STOPPED
@@ -335,6 +337,10 @@
 
 	def start(self):
 		if(self.getStatus()==0 or self.getStatus()==TS_COMPLETED):
+			#check if executable exists
+			if(shutil.which('trisurf')==None):
+				print("Error. Trisurf executable not found in PATH. Please install trisurf prior to running trisurf manager.")
+				exit(1)
 			self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
 #Symlinks tape file to the directory or create tape file from snapshot in the direcory...
 			if(self.Dir.makeifnotexist()):
@@ -347,7 +353,7 @@
 				else:
 					try:
 						with open (os.path.join(self.Dir.fullpath(),"tape"), "w") as myfile:
-							myfile.write("#This is automatically generated tape file from snapshot\n")
+							myfile.write("#This is automatically generated tape file from snapshot")
 							myfile.write(str(self.tape))
 					except:
 						print("Error -- cannot make tapefile  "+ os.path.join(self.Dir.fullpath(),"tape")+" from the snapshot in the running directory")
@@ -359,12 +365,12 @@
 		
 			#check if the simulation has been completed. in this case notify user and stop executing.
 			if(self.isCompleted() and ("--force-from-tape" not in self.runArgs) and ("--reset-iteration-count" not in self.runArgs)):
-				print("The simulation was completed. Not starting executable at localhost in "+self.Dir.fullpath()+"\n")
+				print("The simulation was completed. Not starting executable in "+self.Dir.fullpath())
 				return
 
 			cwd=Directory(maindir=os.getcwd())
 			self.Dir.goto()
-			print("Starting trisurf-ng executable at localhost in "+self.Dir.fullpath()+"\n")
+			print("Starting trisurf-ng executable in "+self.Dir.fullpath())
 			if(self.fromSnapshot==True):
 				params=["trisurf", "--restore-from-vtk",self.snapshotFile]+self.runArgs
 			else:
@@ -375,7 +381,7 @@
 			subprocess.Popen (params, stdout=subprocess.DEVNULL)
 			cwd.goto()
 		else:
-			print("Process already running. Not starting\n")
+			print("Process in "+self.Dir.fullpath()+" already running. Not starting.")
 		return
 
 	def stop(self):
@@ -400,22 +406,28 @@
 		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
 		self.statistics=Statistics(self.Dir.fullpath(), statfile)
 		self.Comment=FileContent(os.path.join(self.Dir.fullpath(),".comment"))
-		pid=self.getPID();
+		pid=self.getPID()
 		status=self.getStatus()
+		if(self.statistics.fileOK):
+			ETA=str(datetime.timedelta(microseconds=(int(self.tape.config['iterations'])-int(self.statistics.last))*self.statistics.dT)*1000000)
 		if(status==TS_NONEXISTANT or status==TS_NOLOCK):
 			statustxt="Not running"
 			pid=""
+			ETA=""
 		elif status==TS_STOPPED:
 			statustxt="Stopped"
+			ETA="N/A"
 		elif status==TS_COMPLETED:
 			statustxt="Completed"
+			pid=""
+			ETA=""
 		else:
 			statustxt="Running"
 
 		if(self.statistics.fileOK):
-			report=[time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(self.statistics.startDate))),str(datetime.timedelta(microseconds=(int(self.tape.config['iterations'])-int(self.statistics.last))*self.statistics.dT)*1000000), statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()]
+			report=[time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(self.statistics.startDate))),ETA, statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()]
 		else:
-			report=["N/A","N/A\t",statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()]
+			report=["N/A","N/A",statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()]
 		return report
 
 	def writeComment(self, data, mode='w'):

--
Gitblit v1.9.3