# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

AUTHOR = "Chromium OS"
NAME = "Auto Update Host"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"

DOC = """
A test that reimages the assigned machines and checks for success.

Can only be used by test suites based on server.cros.dynamic_suite.Suite.
Assumes that a label including the image name has already been created.

@param image_url: the full URL in which to find the update payload.
@param image_name: the name of the image, used to label the device a.k.a. build
"""

from autotest_lib.server.cros.dynamic_suite import frontend_wrappers


def run(machine):
    host = hosts.create_host(machine, initialize=False)
    host.clear_cros_version_labels_and_job_repo_url()
    job.run_test('autoupdate', host=host, update_url=image_url)


job.parallel_simple(run, machines)
