def main(): """This function validates user arguments and data in configuration file. It calls auth class for authentication and autoscale to execute scaling policy """ parser = argparse.ArgumentParser() parser.add_argument('--as-group', required=False, help='The autoscale group config ID') parser.add_argument('--os-username', required=False, help='Rackspace Cloud user name') parser.add_argument('--os-password', required=False, help='Rackspace Cloud account API key') parser.add_argument('--config-file', required=False, default='config.json', help='The autoscale configuration .ini file' '(default: config.json)'), parser.add_argument('--os-region-name', required=False, help='The region to build the servers', choices=['SYD', 'HKG', 'DFW', 'ORD', 'IAD', 'LON']) parser.add_argument('--cluster', required=False, default=False, action='store_true') parser.add_argument('--version', action='version', help='Show version number', version=return_version()) parser.add_argument('--dry-run', required=False, default=False, action='store_true', help='Do not actually perform any scaling operations ' 'or call webhooks') parser.add_argument('--max-sample', required=False, default=10, type=int, help='Maximum number of servers to obtain monitoring ' 'samples from') args = vars(parser.parse_args()) # CONFIG.ini config_file = common.check_file(args['config_file']) if config_file is None: exit_with_error("Either file is missing or is not readable: '%s'" % args['config_file']) # Show Version logger.info(return_version()) for arg in args: logger.debug('argument provided by user ' + arg + ' : ' + str(args[arg])) # Get data from config.json config_data = common.get_config(config_file) if config_data is None: exit_with_error('Failed to read config file: ' + config_file) # Get group if not args['as_group']: if len(config_data['autoscale_groups'].keys()) == 1: as_group = config_data['autoscale_groups'].keys()[0] else: logger.debug("Getting system hostname") try: sysout = subprocess.Popen(['hostname'], stdout=subprocess.PIPE) hostname = (sysout.communicate()[0]).strip() if '-' in hostname: hostname = hostname.rsplit('-', 1)[0] group_value = config_data["autoscale_groups"][hostname] as_group = hostname except Exception, e: logger.debug("Failed to get hostname: %s" % str(e)) logger.warning("Multiple group found in config file, " "please use 'as-group' option") exit_with_error('Unable to identify targeted group')
import pyrax import argparse import time import os import sys import logging.config import random from colouredconsolehandler import ColouredConsoleHandler from auth import Auth import cloudmonitor import subprocess from version import return_version # CHECK logging.conf logging_config = common.check_file('logging.conf') if logging_config is None: logging.handlers.ColouredConsoleHandler = ColouredConsoleHandler logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) else: logging_conf_file = logging_config logging.handlers.ColouredConsoleHandler = ColouredConsoleHandler logging.config.fileConfig(logging_conf_file) logger = logging.getLogger(__name__) def exit_with_error(msg):
import common import pyrax import argparse import time import os import sys import logging.config import random from colouredconsolehandler import ColouredConsoleHandler from auth import Auth import cloudmonitor import subprocess from version import return_version # CHECK logging.conf logging_config = common.check_file('logging.conf') if logging_config is None: logging.handlers.ColouredConsoleHandler = ColouredConsoleHandler logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) else: logging_conf_file = logging_config logging.handlers.ColouredConsoleHandler = ColouredConsoleHandler logging.config.fileConfig(logging_conf_file) logger = logging.getLogger(__name__) def exit_with_error(msg):