Convert all our uses of directoy SSHHost construction over to use
hosts.create_host instead. Also, fix up a bunch of test references
that use SSHHost when they really just need to run against the
abstract RemoteHost class, and fix some tests using the MockSSHHost
class to just use the mock framework instead.

Risk: Low
Visibility: Gets rid of almost all direct references to SSHHost.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2010 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/server/autotest_unittest.py b/server/autotest_unittest.py
index 573e19f..dde7e2c 100644
--- a/server/autotest_unittest.py
+++ b/server/autotest_unittest.py
@@ -4,11 +4,10 @@
 
 import unittest, os, tempfile
 import common
-from autotest_lib.server import autotest, utils
-from autotest_lib.server.hosts import ssh_host
+from autotest_lib.server import autotest, utils, hosts
 from autotest_lib.client.common_lib import utils as client_utils, packages
 from autotest_lib.client.common_lib.test_utils import mock
-import pdb
+
 
 class TestBaseAutotest(unittest.TestCase):
     def setUp(self):
@@ -16,7 +15,7 @@
         self.god = mock.mock_god()
 
         # create mock host object
-        self.host = self.god.create_mock_class(ssh_host.SSHHost, "host")
+        self.host = self.god.create_mock_class(hosts.RemoteHost, "host")
         self.host.hostname = "hostname"
 
         # stubs
diff --git a/server/control_segments/repair b/server/control_segments/repair
index 259b652..21e0c7c 100644
--- a/server/control_segments/repair
+++ b/server/control_segments/repair
@@ -39,11 +39,11 @@
         print "Host is specified as 'Do not repair', skipping repair stage"
     elif level == protection.REPAIR_FILESYSTEM_ONLY:
         print "Attempting filesystem-only repair"
-        host = hosts.SSHHost(machine, initialize=False)
+        host = hosts.create_host(machine, initialize=False)
         repair_filesystem_only(host)
     elif level == protection.NO_PROTECTION:
         print "Attempting full repair"
-        host = hosts.SSHHost(machine, initialize=False)
+        host = hosts.create_host(machine, initialize=False)
         repair_full(host)
 
 
diff --git a/server/control_segments/verify b/server/control_segments/verify
index c2b9336..42593b0 100644
--- a/server/control_segments/verify
+++ b/server/control_segments/verify
@@ -10,7 +10,7 @@
 # This needs more stuff in it. Check for diskspace, etc. But it's a start.
 def verify(machine):
 	print 'Initializing host ' + machine
-	host = hosts.SSHHost(machine, initialize=False)
+	host = hosts.create_host(machine, initialize=False)
 	print 'Pinging host ' + machine
 	sys.stdout.flush()
 	host.ssh_ping()
diff --git a/server/hosts/bootloader_unittest.py b/server/hosts/bootloader_unittest.py
index a6f6756..8dc18a9 100644
--- a/server/hosts/bootloader_unittest.py
+++ b/server/hosts/bootloader_unittest.py
@@ -5,8 +5,8 @@
 
 from autotest_lib.client.common_lib.test_utils import mock
 from autotest_lib.client.common_lib import error, utils as common_utils
-from autotest_lib.server import utils
-from autotest_lib.server.hosts import bootloader, ssh_host
+from autotest_lib.server import utils, hosts
+from autotest_lib.server.hosts import bootloader
 
 
 class test_bootloader_install(unittest.TestCase):
@@ -21,9 +21,9 @@
         self.god.unstub_all()
 
 
-    def create_mock_sshhost(self):
-        # useful for building disposable SSHHost mocks
-        return self.god.create_mock_class(ssh_host.SSHHost, "SSHHost")
+    def create_mock_host(self):
+        # useful for building disposable RemoteHost mocks
+        return self.god.create_mock_class(hosts.RemoteHost, "host")
 
 
     def create_install_boottool_mock(self, loader, dst_dir):
@@ -37,7 +37,7 @@
 
 
     def test_install_fails_without_host(self):
-        host = self.create_mock_sshhost()
+        host = self.create_mock_host()
         loader = bootloader.Bootloader(host)
         del host
         self.assertRaises(error.AutoservError, loader.install_boottool)
@@ -50,7 +50,7 @@
         BOOTTOOL_SRC = os.path.abspath(BOOTTOOL_SRC)
         BOOTTOOL_DST = os.path.join(TMPDIR, "boottool")
         # set up the recording
-        host = self.create_mock_sshhost()
+        host = self.create_mock_host()
         host.get_tmp_dir.expect_call().and_return(TMPDIR)
         utils.get_server_dir.expect_call().and_return(SERVERDIR)
         host.send_file.expect_call(BOOTTOOL_SRC, TMPDIR)
@@ -65,7 +65,7 @@
 
     def test_get_path_automatically_installs(self):
         BOOTTOOL_DST = "/unittest/tmp/boottool"
-        host = self.create_mock_sshhost()
+        host = self.create_mock_host()
         loader = bootloader.Bootloader(host)
         # mock out loader.install_boottool
         mock_install = \
@@ -79,7 +79,7 @@
 
     def test_install_is_only_called_once(self):
         BOOTTOOL_DST = "/unittest/tmp/boottool"
-        host = self.create_mock_sshhost()
+        host = self.create_mock_host()
         loader = bootloader.Bootloader(host)
         # mock out loader.install_boottool
         mock_install = \
@@ -96,8 +96,7 @@
 class test_bootloader_methods(unittest.TestCase):
     def setUp(self):
         self.god = mock.mock_god()
-        self.host = self.god.create_mock_class(ssh_host.SSHHost,
-                                               "SSHHost")
+        self.host = self.god.create_mock_class(hosts.RemoteHost, "host")
         # creates a bootloader with _run_boottool mocked out
         self.loader = bootloader.Bootloader(self.host)
         self.god.stub_function(self.loader, "_run_boottool")
diff --git a/server/hosts/guest.py b/server/hosts/guest.py
index 8fe6bc2..812f673 100644
--- a/server/hosts/guest.py
+++ b/server/hosts/guest.py
@@ -18,7 +18,7 @@
 """
 
 
-import ssh_host
+from autotest_lib.server.hosts import ssh_host
 
 
 class Guest(ssh_host.SSHHost):
@@ -39,7 +39,7 @@
     controlling_hypervisor = None
 
 
-    def __init__(self, controlling_hypervisor):
+    def __init__(self, controlling_hypervisor, *args, **dargs):
         """
         Construct a Guest object
 
@@ -48,15 +48,16 @@
                         responsible for the creation and management of
                         this guest
         """
-        hostname= controlling_hypervisor.new_guest()
-        super(Guest, self).__init__(hostname)
-        self.controlling_hypervisor= controlling_hypervisor
+        hostname = controlling_hypervisor.new_guest()
+        super(Guest, self).__init__(hostname, *args, **dargs)
+        self.controlling_hypervisor = controlling_hypervisor
 
 
     def __del__(self):
         """
         Destroy a Guest object
         """
+        super(Guest, self).__del__()
         self.controlling_hypervisor.delete_guest(self.hostname)
 
 
diff --git a/server/samples/autoserv_console.srv b/server/samples/autoserv_console.srv
index b0c69e6..04bf453 100755
--- a/server/samples/autoserv_console.srv
+++ b/server/samples/autoserv_console.srv
@@ -1,5 +1,5 @@
 # autoserv_console.srv - gives you an interactive interpreter within an autoserv
-# control file.  If you pass "-m hostname", an SSHHost will be available under
+# control file.  If you pass "-m hostname", a RemoteHost will be available under
 # the variable "host".
 
 # If you install IPython (http://ipython.scipy.org/, Ubuntu package "ipython"),
@@ -9,7 +9,7 @@
 # -Steve Howard (showard@google.com)
 
 if machines:
-    host = hosts.SSHHost(machines[0])
+    host = hosts.create_host(machines[0])
 
 try:
     import IPython
diff --git a/server/samples/boottool.srv b/server/samples/boottool.srv
index bb96f2d..b07806a 100644
--- a/server/samples/boottool.srv
+++ b/server/samples/boottool.srv
@@ -1,4 +1,4 @@
-rh= hosts.SSHHost("192.168.1.1")
+rh= hosts.create_host("192.168.1.1")
 
 print rh.bootloader.get_titles()
 default= rh.bootloader.get_default()
diff --git a/server/samples/continuous_reboot.srv b/server/samples/continuous_reboot.srv
index adbfc43..080e9e2 100644
--- a/server/samples/continuous_reboot.srv
+++ b/server/samples/continuous_reboot.srv
@@ -1,5 +1,5 @@
 def run(machine):
-    host = hosts.SSHHost(machine)
+    host = hosts.create_host(machine)
     while True:
         host.reboot()
 
diff --git a/server/samples/deb_kernel.srv b/server/samples/deb_kernel.srv
index 993e0de..05c9f34 100644
--- a/server/samples/deb_kernel.srv
+++ b/server/samples/deb_kernel.srv
@@ -1,4 +1,4 @@
-rh= hosts.SSHHost("192.168.1.1")
+rh= hosts.create_host("192.168.1.1")
 
 print rh.run("uname -a").stdout
 
diff --git a/server/samples/failtest.srv b/server/samples/failtest.srv
index a793e59..373635f 100644
--- a/server/samples/failtest.srv
+++ b/server/samples/failtest.srv
@@ -1,5 +1,5 @@
 def run(machine):
-    host = hosts.SSHHost(machine)
+    host = hosts.create_host(machine)
     at = autotest.Autotest(host)
     at.run_test('failtest')
 
diff --git a/server/samples/git_kernel.srv b/server/samples/git_kernel.srv
index 7c88bd3..f78f705 100644
--- a/server/samples/git_kernel.srv
+++ b/server/samples/git_kernel.srv
@@ -17,7 +17,7 @@
 kernel = git_kernel.GitKernel(repodir, giturl, weburl)
 
 # ssh to remote host
-h = hosts.SSHHost(myhostname)
+h = hosts.create_host(myhostname)
 
 # acquire git repo, make sure it is up-to-date, clone repo into tmp dir
 kernel.get(h)
diff --git a/server/samples/info.srv b/server/samples/info.srv
index a5d2350..5bdd2bf 100644
--- a/server/samples/info.srv
+++ b/server/samples/info.srv
@@ -1,5 +1,5 @@
 def run(machine):
-    host = hosts.SSHHost(machine, initialize = False)
+    host = hosts.create_host(machine, initialize = False)
     print 'Uptime:         ' + host.check_uptime()
     print 'Arch:           ' + host.get_arch()
     print 'Kernel ver:     ' + host.get_kernel_ver()
diff --git a/server/samples/kernbench.srv b/server/samples/kernbench.srv
index a8d84e3..50e4439 100644
--- a/server/samples/kernbench.srv
+++ b/server/samples/kernbench.srv
@@ -1,5 +1,5 @@
 def run(machine):
-    host = hosts.SSHHost(machine)
+    host = hosts.create_host(machine)
     at = autotest.Autotest(host)
     at.run_test('kernbench', iterations=2, threads=5)
 
diff --git a/server/samples/kvm.srv b/server/samples/kvm.srv
index 4fdbef8..608edee 100644
--- a/server/samples/kvm.srv
+++ b/server/samples/kvm.srv
@@ -1,8 +1,8 @@
 print "XXXX start of control file"
 
 
-print "XXXX creating SSHHost object"
-remote_host= hosts.SSHHost("192.168.1.1")
+print "XXXX creating RemoteHost object"
+remote_host= hosts.create_host("192.168.1.1")
 
 
 print "XXXX installing KVM"
diff --git a/server/samples/kvm_from_git.srv b/server/samples/kvm_from_git.srv
index 7742e52..27c4f26 100644
--- a/server/samples/kvm_from_git.srv
+++ b/server/samples/kvm_from_git.srv
@@ -1,6 +1,6 @@
 print "XXXX start of control file"
-print "XXXX creating SSHHost object"
-remote_host= hosts.SSHHost("myhost")
+print "XXXX creating RemoteHost object"
+remote_host= hosts.create_host("myhost")
 
 print "XXXX installing KVM"
 kvm_on_remote_host= kvm.KVM(remote_host)
diff --git a/server/samples/netperf-guest-to-host-far.srv b/server/samples/netperf-guest-to-host-far.srv
index 10ac8c7..2d89dff 100644
--- a/server/samples/netperf-guest-to-host-far.srv
+++ b/server/samples/netperf-guest-to-host-far.srv
@@ -17,9 +17,9 @@
             "%(var_name)s.install(addresses)\n" % {"var_name": kvm_on_host_var_name})
 
 
-print "XXXX creating SSHHost objects"
-remote_host1= hosts.SSHHost("192.168.1.1")
-remote_host2= hosts.SSHHost("192.168.1.2")
+print "XXXX creating RemoteHost objects"
+remote_host1= hosts.create_host("192.168.1.1")
+remote_host2= hosts.create_host("192.168.1.2")
 
 kernel= deb_kernel.DEBKernel()
 kernel.get("/home/foo/linux-2.6.21.3-3_2.6.21.3-3_amd64.deb")
diff --git a/server/samples/parallel.srv b/server/samples/parallel.srv
index 24dc1f0..b4be1d3 100644
--- a/server/samples/parallel.srv
+++ b/server/samples/parallel.srv
@@ -1,7 +1,7 @@
 at = autotest.Autotest()
 
 def run(machine):
-    host = hosts.SSHHost(machine)
+    host = hosts.create_host(machine)
     at.run_test('sleeptest', host = host)
 
 job.parallel_simple(run, machines)
diff --git a/server/samples/parallel_kvm.srv b/server/samples/parallel_kvm.srv
index 101b51d..fadf885 100644
--- a/server/samples/parallel_kvm.srv
+++ b/server/samples/parallel_kvm.srv
@@ -2,8 +2,8 @@
 
 print "XXXX start of control file"
 
-print "XXXX creating SSHHost object"
-remote_host= hosts.SSHHost("192.168.1.1")
+print "XXXX creating RemoteHost object"
+remote_host= hosts.create_host("192.168.1.1")
 
 
 print "XXXX installing KVM"
diff --git a/server/samples/parallel_sleeptest.srv b/server/samples/parallel_sleeptest.srv
index c46353e..bbc483e 100644
--- a/server/samples/parallel_sleeptest.srv
+++ b/server/samples/parallel_sleeptest.srv
@@ -44,7 +44,7 @@
     at.run(control_new, tag='%s' % tests[instance][1], parallel_flag=True)
 
 def main(machine_name, machine_num):
-    host = hosts.SSHHost(machine_name)
+    host = hosts.create_host(machine_name)
     at = autotest.Autotest(host)
     at.install()
 
diff --git a/server/samples/profilertest.srv b/server/samples/profilertest.srv
index 8854e3e..7f9721e 100644
--- a/server/samples/profilertest.srv
+++ b/server/samples/profilertest.srv
@@ -1,6 +1,6 @@
 import time
 
-ssh_hosts = [hosts.SSHHost(m, initialize=False) for m in machines]
+ssh_hosts = [hosts.create_host(m, initialize=False) for m in machines]
 at_hosts = [autotest.Autotest(h) for h in ssh_hosts]
 
 
diff --git a/server/samples/reboot.srv b/server/samples/reboot.srv
index 5837570..3f6445b 100644
--- a/server/samples/reboot.srv
+++ b/server/samples/reboot.srv
@@ -1,5 +1,5 @@
 def run(machine):
-    host = hosts.SSHHost(machine)
+    host = hosts.create_host(machine)
     print host.is_up()
     host.reboot()
 
diff --git a/server/samples/run_test.srv b/server/samples/run_test.srv
index e8b1f36..f0129de 100644
--- a/server/samples/run_test.srv
+++ b/server/samples/run_test.srv
@@ -8,7 +8,7 @@
     print "usage: -t <test name> -m <machines> -l <log dir>"
 
 def run(client):
-    m = hosts.SSHHost(client)
+    m = hosts.create_host(client)
     at = autotest.Autotest()
 
     results_dir = os.path.join(logdir, client)
diff --git a/server/samples/sleeptest.srv b/server/samples/sleeptest.srv
index 85cbf08..a0cbf30 100644
--- a/server/samples/sleeptest.srv
+++ b/server/samples/sleeptest.srv
@@ -1,5 +1,5 @@
 def run(machine):
-    host = hosts.SSHHost(machine)
+    host = hosts.create_host(machine)
     at = autotest.Autotest(host)
     at.run_test('sleeptest')
 
diff --git a/server/samples/uname.srv b/server/samples/uname.srv
index f67d626..008cba0 100644
--- a/server/samples/uname.srv
+++ b/server/samples/uname.srv
@@ -1,4 +1,4 @@
-hosts = [hosts.SSHHost(h, initialize=False) for h in machines]
+hosts = [hosts.create_host(h, initialize=False) for h in machines]
 
 for host in hosts:
     print host.hostname
diff --git a/server/self-test/machine b/server/self-test/machine
index e648bd3..e59d081 100644
--- a/server/self-test/machine
+++ b/server/self-test/machine
@@ -1,7 +1,7 @@
 import time
 
 print "Instantiating a machine object"
-m = hosts.SSHHost(machines[0])
+m = hosts.create_host(machines[0])
 print "Passed"
 
 print
diff --git a/server/self-test/remote_cmd b/server/self-test/remote_cmd
index a7c1eaf..76e6044 100644
--- a/server/self-test/remote_cmd
+++ b/server/self-test/remote_cmd
@@ -1,7 +1,7 @@
 import utils
 
 print "Instantiating a machine object"
-m = hosts.SSHHost(machines[0])
+m = hosts.create_host(machines[0])
 print "Passed"
 
 print
diff --git a/server/self-test/timed_test.srv b/server/self-test/timed_test.srv
index d3c4bfa..235bae3 100644
--- a/server/self-test/timed_test.srv
+++ b/server/self-test/timed_test.srv
@@ -1,5 +1,5 @@
 def run(machine):
-	host = hosts.SSHHost(machine)
+	host = hosts.create_host(machine)
         at = autotest.Autotest(host)
         at.run_timed_test('sleeptest', seconds=1, timeout=15) # no exception
 	try:
diff --git a/server/source_kernel_unittest.py b/server/source_kernel_unittest.py
index 6d05fae..6771b29 100644
--- a/server/source_kernel_unittest.py
+++ b/server/source_kernel_unittest.py
@@ -3,14 +3,13 @@
 import unittest
 import common
 from autotest_lib.client.common_lib.test_utils import mock
-from autotest_lib.server.hosts import SSHHost
-from autotest_lib.server import source_kernel, autotest
+from autotest_lib.server import source_kernel, autotest, hosts
 
 
 class TestSourceKernel(unittest.TestCase):
     def setUp(self):
         self.god = mock.mock_god()
-        self.host = self.god.create_mock_class(SSHHost, "host")
+        self.host = self.god.create_mock_class(hosts.RemoteHost, "host")
         self.god.stub_class(source_kernel.autotest, "Autotest")
         self.kernel_autotest = source_kernel.autotest.Autotest.expect_new()
         self.k = "kernel"
diff --git a/server/tests/iperf/control.srv b/server/tests/iperf/control.srv
index 0d9c823..0d43d84 100644
--- a/server/tests/iperf/control.srv
+++ b/server/tests/iperf/control.srv
@@ -25,8 +25,8 @@
 def run(pair):
     print "running on %s and %s\n" % (pair[0], pair[1])
     tagname = "%s_%s" % (pair[0], pair[1])
-    server = hosts.SSHHost(pair[0])
-    client = hosts.SSHHost(pair[1])
+    server = hosts.create_host(pair[0])
+    client = hosts.create_host(pair[1])
 
     server_at = autotest.Autotest(server)
     client_at = autotest.Autotest(client)
diff --git a/server/tests/netperf2/control.srv b/server/tests/netperf2/control.srv
index 558009a..80187ac 100644
--- a/server/tests/netperf2/control.srv
+++ b/server/tests/netperf2/control.srv
@@ -26,8 +26,8 @@
 
     print "running on %s and %s\n" % (pair[0], pair[1])
     tagname = "%s_%s" % (pair[0], pair[1])
-    server = hosts.SSHHost(pair[0])
-    client = hosts.SSHHost(pair[1])
+    server = hosts.create_host(pair[0])
+    client = hosts.create_host(pair[1])
 
     server_at = autotest.Autotest(server)
     client_at = autotest.Autotest(client)