'Run an autotest job on the remote machine.
:param control_file: An open file-like-obj of the control file.
:param results_dir: A str path where the results should be stored
on the local filesystem.
:param host: A Host instance on which the control file should
be run.
:param timeout: Maximum number of seconds to wait for the run or None.
:param tag: Tag name for the client side instance of autotest.
:param parallel_flag: Flag set when multiple jobs are run at the
same time.
:param background: Indicates that the client should be launched as
a background job; the code calling run will be responsible
for monitoring the client and collecting the results.
:param client_disconnect_timeout: Seconds to wait for the remote host
to come back after a reboot. Defaults to the host setting for
DEFAULT_REBOOT_TIMEOUT.
:raise AutotestRunError: If there is a problem executing
the control file.'

def run(self, control_file, results_dir='.', host=None, timeout=None, tag=None, parallel_flag=False, background=False, client_disconnect_timeout=None):

    host = self._get_host_and_setup(host)
    results_dir = os.path.abspath(results_dir)
    if (client_disconnect_timeout is None):
        client_disconnect_timeout = host.DEFAULT_REBOOT_TIMEOUT
    if tag:
        results_dir = os.path.join(results_dir, tag)
    atrun = _Run(host, results_dir, tag, parallel_flag, background)
    self._do_run(control_file, results_dir, host, atrun, timeout, client_disconnect_timeout)
