#!/usr/bin/python
#
# Copyright 2015 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.

import logging

from contextlib import closing

from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros import dev_server
from autotest_lib.server import hosts

# Url to server-side package staged on devserver.
ssp_url = None
# Error message raised by stage_server_side_package call.
error_msg = None
# Only need to stage server side package once.
for machine in machines:
    try:
        with closing(hosts.create_host(machine)) as host:
            ssp_url = host.stage_server_side_package(image)
        break
    except (error.AutoservError, dev_server.DevServerException) as e:
        error_msg = str(e)
        logging.error('Stage server-side package failed. %s', e)
