another round of rework
[tests.git] / system / TestBox.py
index 63300ed..978344c 100644 (file)
@@ -1,36 +1,44 @@
 # $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
+from TestSsh import TestSsh
 
+# xxx this should probably inherit TestSsh
 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":
-            return utils.system(command)
-        else:
-            if self.key:
-                to_run="ssh -i %s.rsa %s %s"%(self.key,self.hostname,
-                                              utils.backslash_shell_specials(command))
-            else:
-                to_run="ssh %s %s"%(self.hostname,
-                                    utils.backslash_shell_specials(command))
-            return utils.system(to_run)
-        
-    def copy (self,local_file):
-        if self.hostname == "localhost":
-            return 0
-        else:
-            if self.key:
-                to_run="scp -i %s.rsa %s %s:"%(self.key,local_file,self.hostname)
-            else:
-                to_run="scp %s %s:"%(local_file,self.hostname)
-            return utils.system(to_run)
+        self.test_ssh=TestSsh(self.hostname_value,self.buildname,self.key)
         
+    def hostname (self):
+        return self.hostname_value
+
+    def is_local(self):
+        return self.test_ssh.is_local()
+    
+    def run_in_buildname (self,command,background=False):
+        utils.header("Running command %s on testbox %s"%(command,self.hostname()))
+        return self.test_ssh.run_in_buildname (command,background)
+
+    # xxx could/should use rsync instead
+    def copy (self,local_file,recursive=False):
+        return self.test_ssh.copy (local_file,recursive)
+
+    def clean_dir (self,dirname):
+        return self.test_ssh.clean_dir(dirname)
+
+    def mkdir (self,dirname):
+        return self.test_ssh.mkdir(dirname)
+
     def kill_all_qemus(self):
-        self.run("killall qemu")
+        self.run_in_buildname("template-qemu/qemu-kill-node")
+        return True
+
+    def list_all_qemus(self):
+        self.run_in_buildname("template-qemu/qemu-kill-node -l")
+        return True