#!/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 storing common utilities used by the deploy_autotest package. This python module is shared between the two programs in deploy_autotest. Specifically it contains shared constants and their shared arg parser. """ import argparse import logging def setup_logging(): """Setup basic logging with all logging info stripped.""" screen_handler = logging.StreamHandler() screen_handler.setFormatter(logging.Formatter('%(message)s')) logging.getLogger().addHandler(screen_handler) logging.getLogger().setLevel(logging.INFO) SYNC = 'sync' RESTART = 'restart' PRINT = 'print' VALID_COMMANDS = [SYNC, RESTART, PRINT] DEVS = 'devservers' DRONES = 'drones' SCHEDULER = 'scheduler' VALID_TARGETS = [DEVS, DRONES, SCHEDULER] def parse_args(argv): parser = argparse.ArgumentParser() parser.add_argument('operation', help='Operation to perform. Must be one of: %s' % ' '.join(VALID_COMMANDS)) parser.add_argument('servers', nargs='+', help='Any set of items from the list: %s' % ' '.join(VALID_TARGETS)) parsed_args = parser.parse_args(argv) # Some sanity checks. if not parsed_args.operation in VALID_COMMANDS: parser.error('Invalid operation specified. Must be one of: %s' % ' '.join(VALID_COMMANDS)) if not set(parsed_args.servers).issubset(set(VALID_TARGETS)): parser.error('All servers must be one of %s' % ' '.join(VALID_TARGETS)) return parsed_args