# $Id$
# this models a box that hosts qemu nodes
# could probably also be used for boxes that host plc instances
+import os.path
+
import utils
class TestBox:
- def __init__(self,hostname,key=None):
- self.hostname=hostname
+ def __init__(self,hostname,buildname,key=None):
+ self.hostname_value=hostname
+ self.buildname=buildname
self.key=key
- def run (self,command):
- if self.hostname == "localhost":
+ def hostname (self):
+ return self.hostname_value
+
+ def is_local(self):
+ return utils.is_local (self.hostname())
+
+ def tar_logs(self):
+ if os.path.isdir("nodeslogs"):
+ tar_command="tar cvf nodeslogs.tar nodeslogs/ && rm -rf nodeslogs"
+ self.run_in_buildname (tar_command)
+ return True
+ return False
+
+ def run_in_buildname (self,command):
+ if self.is_local():
return utils.system(command)
- else:
- if self.key:
- to_run="ssh -i %s.rsa %s %s"%(self.key,self.hostname,command)
- else:
- to_run="ssh %s %s"%(self.hostname,command)
- return utils.system(to_run)
+ ssh_comand="ssh "
+ if self.key:
+ ssh_comand += "-i %s.rsa "%(self.key)
+ ssh_command += "%s/%s"%(self.buildname,utils.backslash_shell_specials(command))
+ return utils.system(ssh_command)
+
+ # should use rsync instead
+ def copy (self,local_file,recursive=False):
+ if self.is_local():
+ return 0
+ command="scp "
+ if recursive: command += "-r "
+ if self.key:
+ command += "-i %s.rsa "
+ command +="%s %s:%s/%s"%(local_file,self.hostname(),self.buildname,
+ os.path.basename(local_file) or ".")
+ return utils.system(command)
+ def clean_dir (self):
+ if self.is_local():
+ return 0
+ return utils.system("rm -rf %s"%self.buildname)
+
+ def mkdir (self):
+ if self.is_local():
+ return 0
+ return utils.system("mkdir %s"%self.buildname)
+
def kill_all_qemus(self):
- self.run("killall qemu")
+ self.run_in_buildname("killall qemu")
+