普通文本  |  66行  |  2 KB

#!/usr/bin/python

# Copyright (c) 2013 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.

"""Module used sync and deploy infrastructure changes for the lab team.

This is the main utility for syncing and deploying changes to the autotest
infrastructure defined by the autotest config.

Usage:
  lab_deploy.py (sync,restart,print) (devservers, drones, scheduler)+.
"""
import logging
import os
import sys

import common
from autotest_lib.client.common_lib import global_config
from autotest_lib.client.common_lib import utils


import common_util

CONFIG = global_config.global_config

_AUTOTEST_PATH = '/usr/local/autotest'
_HELPER_PATH = 'site_utils/deploy_autotest'


def autotest_master():
    """Returns the autotest master that has the infrastructure configuration."""
    autotest_master = CONFIG.get_config_value('SERVER', 'hostname', type=str,
                                              default=None)
    return autotest_master


def autotest_user():
    """Returns the valid list of autotest users we can 'become' on the master.
    """
    autotest_user = CONFIG.get_config_value('CROS', 'infrastructure_user',
                                              type=str)
    return autotest_user


def main(argv):
    common_util.setup_logging()
    # We parse even though we don't use args here to ensure our args are valid
    # before we ssh anywhere.
    common_util.parse_args(argv)
    master = autotest_master()
    # Take the first user.
    main_user = autotest_user()
    remote_path = os.path.join(_AUTOTEST_PATH, _HELPER_PATH)
    command = ('ssh %(master)s -- become %(user)s -- '
               '%(remote_path)s/lab_deploy_helper.py %(argv)s' %
               dict(remote_path=remote_path, master=master,
                    user=main_user, argv=' '.join(argv)))
    logging.info('Running %s' % command)
    utils.run(command, stderr_tee=sys.stderr, stdout_tee=sys.stdout)


if __name__ == '__main__':
    main(sys.argv[1:])