| # Copyright 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Common library methods used by both coordinator and task machines.""" |
| |
| import argparse |
| import logging |
| import os |
| import socket |
| import xmlrpclib |
| |
| LOGGING_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'WARN', 'ERROR'] |
| MY_IP = socket.gethostbyname(socket.gethostname()) |
| SERVER_ADDRESS = '' |
| SERVER_PORT = 31710 |
| DEFAULT_TIMEOUT_SECS = 20 * 60 # 30 minutes |
| THIS_DIR = os.path.dirname(os.path.abspath(__file__)) |
| SWARMING_DIR = os.path.join(THIS_DIR, '..', '..', 'tools', 'swarming_client') |
| |
| |
| def InitLogging(): |
| """Initialize the logging module. |
| |
| Raises: |
| argparse.ArgumentError if the --verbosity arg is incorrect. |
| """ |
| parser = argparse.ArgumentParser() |
| logging_action = parser.add_argument('--verbosity', default='INFO') |
| args, _ = parser.parse_known_args() |
| if args.verbosity not in LOGGING_LEVELS: |
| raise argparse.ArgumentError( |
| logging_action, 'Only levels %s supported' % str(LOGGING_LEVELS)) |
| logging.basicConfig( |
| format='%(asctime)s %(filename)s:%(lineno)s %(levelname)s] %(message)s', |
| datefmt='%H:%M:%S', level=args.verbosity) |
| |
| |
| def ConnectToServer(server): |
| """Connect to an RPC server.""" |
| addr = 'http://%s:%d' % (server, SERVER_PORT) |
| logging.debug('Connecting to RPC server at %s', addr) |
| return xmlrpclib.Server(addr, allow_none=True) |