#
# Copyright 2007 Google Inc. Released under the GPL v2

"""This is a convenience module to import all available types of hosts.

Implementation details:
You should 'import hosts' instead of importing every available host module.
"""

try:
    # host abstract classes
    from autotest_lib.server.hosts.base_classes import Host
    from autotest_lib.server.hosts.remote import RemoteHost

    # host implementation classes
    from autotest_lib.server.hosts.ssh_host import SSHHost
    from autotest_lib.server.hosts.cros_host import CrosHost
    from autotest_lib.server.hosts.chameleon_host import ChameleonHost
    from autotest_lib.server.hosts.servo_host import ServoHost
    from autotest_lib.server.hosts.labstation_host import LabstationHost

    # factory function
    from autotest_lib.server.hosts.factory import create_host
    from autotest_lib.server.hosts.factory import create_target_machine
except ImportError:
    # host abstract classes
    from base_classes import Host
    from remote import RemoteHost

    # host implementation classes
    from ssh_host import SSHHost
    from cros_host import CrosHost
    from chameleon_host import ChameleonHost
    from servo_host import ServoHost
    from labstation_host import LabstationHost

    # factory function
    from factory import create_host
    from factory import create_target_machine
