def main(self): parser = Transport(self.argv, check_help=False) parser.catch_help = self.help() parser.catches_help() if util.build_is_triggered(): print( 'Build has been triggered via Github, will skip setting status' ) return print('Build has not been triggered via Github') print('Assuming manual job execution, will set status') required_env_vars = [ 'GITHUB_REPOSITORY', 'GITHUB_SHA', 'GITHUB_OAUTH_TOKEN', 'GITHUB_STATUS_CONTEXT', 'GITHUB_STATUS_STARTED', 'GITHUB_STATUS_SUCCESS', 'GITHUB_STATUS_FAILURE', 'GITHUB_STATUS_ERROR', 'GITHUB_STATUS_STATE', 'BUILD_URL' ] missing_envs = [] for env in required_env_vars: if not conf['env'].get(env): missing_envs.append(env) if missing_envs: print('Will skip setting status') print('Environment variable(s) required but not provided:') for env in missing_envs: print('\t ' + env) return self.update()
def main(self): parser = Transport(self.arguments, options=self.options, check_help=True) parser.catch_help = self._help parser.parse_args() parser.catches_help() branch = parser.get('--branch', 'master') user = parser.get('--user', 'vagrant') high_verbosity = '-vvvv' if parser.has('-vvvv') else '-v' if not parser.unknown_commands: log.error( "it is required to pass a host to deploy to, but none was provided" ) raise SystemExit(1) command = [ "ansible-playbook", "-i", "%s," % parser.unknown_commands[-1], high_verbosity, "-u", user, "--extra-vars", 'branch=%s' % branch, "deploy.yml", ] log.debug("Running command: %s" % ' '.join(command)) out, err, code = process.run(command, cwd=playbook_path) log.error(err) log.debug(out)
def main(self, argv): # Console Logger sh = logging.StreamHandler() sh.setFormatter(log.color_format()) sh.setLevel(logging.DEBUG) root_logger = logging.getLogger() root_logger.setLevel(logging.DEBUG) root_logger.addHandler(sh) self.api_credentials() # TODO: Need to implement `--filename` and make it available options = [['--log', '--logging']] parser = Transport(argv, mapper=self.mapper, options=options, check_help=False, check_version=False) parser.parse_args() chacractl.config['verbosity'] = parser.get('--log', 'info') parser.catch_help = self.help() parser.catch_version = chacractl.__version__ parser.mapper = self.mapper if len(argv) <= 1: return parser.print_help() parser.dispatch() parser.catches_help() parser.catches_version()
def main(self): options = ['--ignore'] config_ignores = ceph_medic.config.file.get_list('check', '--ignore') parser = Transport(self.argv, options=options, check_version=False) parser.catch_help = self._help() parser.parse_args() ignored_codes = as_list(parser.get('--ignore', '')) # fallback to the configuration if nothing is defined in the CLI if not ignored_codes: ignored_codes = config_ignores if len(self.argv) < 1: return parser.print_help() # populate the nodes metadata with the configured nodes for daemon in ceph_medic.config.nodes.keys(): ceph_medic.metadata['nodes'][daemon] = [] for daemon, nodes in ceph_medic.config.nodes.items(): for node in nodes: node_metadata = {'host': node['host']} if 'container' in node: node_metadata['container'] = node['container'] ceph_medic.metadata['nodes'][daemon].append(node_metadata) collector.collect() test = runner.Runner() test.ignore = ignored_codes results = test.run() runner.report(results) #XXX might want to make this configurable to not bark on warnings for # example, setting forcefully for now, but the results object doesn't # make a distinction between error and warning (!) if results.errors or results.warnings: sys.exit(1)
def main(self): options = ['--stdout'] parser = Transport(self.argv, options=options, check_version=False) parser.catch_help = self._help() parser.parse_args() if len(self.argv) == 1: raise SystemExit( "A monitor hostname or a ceph.conf file is required as an argument" ) node = self.argv[-1] inventory = {} with get_connection(node) as conn: report = get_mon_report(conn) try: mons = report['monmap']['mons'] except KeyError: raise SystemExit(report) inventory['mons'] = [i['name'] for i in mons] osds = report['osd_metadata'] inventory['osds'] = [i['hostname'] for i in osds] if not inventory: raise SystemExit( 'no hosts where found from remote monitor node: %s' % node) generate_inventory(inventory, to_stdout=parser.get('--stdout')) conn.exit() return
def main(self): options = ['--ignore'] parser = Transport(self.argv, options=options, check_version=False) parser.catch_help = self._help() parser.parse_args() if len(self.argv) < 1: return parser.print_help() # populate the nodes metadata with the configured nodes for daemon in ceph_medic.config.nodes.keys(): ceph_medic.metadata['nodes'][daemon] = [] for daemon, nodes in ceph_medic.config.nodes.items(): for node in nodes: ceph_medic.metadata['nodes'][daemon].append( {'host': node['host']}) collector.collect() test = runner.Runner() results = test.run() runner.report(results) #XXX might want to make this configurable to not bark on warnings for # example, setting forcefully for now, but the results object doesn't # make a distinction between error and warning (!) if results.errors or results.warnings: sys.exit(1)
def main(self, argv): # Console Logger sh = logging.StreamHandler() sh.setFormatter(log.color_format()) sh.setLevel(logging.DEBUG) root_logger = logging.getLogger() root_logger.setLevel(logging.DEBUG) root_logger.addHandler(sh) self.api_credentials() # TODO: Need to implement `--filename` and make it available options = [['--log', '--logging']] parser = Transport(argv, mapper=self.mapper, options=options, check_help=False, check_version=False) parser.parse_args() chacractl.config['verbosity'] = parser.get('--log', 'info') parser.catch_help = self.help() parser.catch_version = chacractl.__version__ parser.mapper = self.mapper if len(argv) <= 1: return parser.print_help() parser.dispatch() parser.catches_help() parser.catches_version()
def main(self, argv): options = [ '--cluster', '--ssh-config', '--inventory', '--config', ] parser = Transport(argv, options=options, check_help=False, check_version=False) parser.parse_args() self.config_path = parser.get('--config', configuration.location()) # load medic configuration loaded_config = configuration.load( path=parser.get('--config', self.config_path)) # this is the earliest we can have enough config to setup logging log.setup(loaded_config) # update the module-wide configuration object ceph_medic.config.update(configuration.get_overrides(loaded_config)) # SSH config ceph_medic.config['ssh_config'] = parser.get('--ssh-config') if ceph_medic.config['ssh_config']: ssh_config_path = ceph_medic.config['ssh_config'] if not os.path.exists(ssh_config_path): terminal.error("the given ssh config path does not exist: %s" % ssh_config_path) sys.exit() ceph_medic.config['cluster_name'] = parser.get('--cluster') ceph_medic.metadata['cluster_name'] = 'ceph' # Hosts file self.hosts_file = parser.get('--inventory', configuration.get_host_file()) # find the hosts files, by the CLI first, fallback to the configuration # file, and lastly if none of those are found or defined, try to load # from well known locations (cwd, and /etc/ansible/) loaded_hosts = configuration.load_hosts( parser.get('--inventory', ceph_medic.config.get('--inventory', self.hosts_file))) ceph_medic.config['nodes'] = loaded_hosts.nodes ceph_medic.config['hosts_file'] = loaded_hosts.filename self.hosts_file = loaded_hosts.filename parser.catch_version = ceph_medic.__version__ parser.mapper = self.mapper parser.catch_help = self.help(parser.subhelp()) if len(argv) <= 1: return parser.print_help() ceph_medic.config['config_path'] = self.config_path parser.dispatch() parser.catches_help() parser.catches_version()
def parse_args(self): options = ['--allowed'] parser = Transport(self.argv, options=options) parser.catch_help = self._help parser.parse_args() delgado.config['allowed'] = parser.get('--allowed') or [] engine = Engine(connection=self.connection) engine.run_forever()
def parse_args(self): parser = Transport(self.argv, options=['--socket-location']) parser.catch_help = self._help parser.parse_args() location = parser.get('--socket-location') or '/tmp/pytest.sock' delgado.config['allowed'] = ['py.test'] engine = Engine(socket_location=location) engine.run_forever()
def main(self, argv): parser = Transport(argv, mapper=self.mapper, check_help=False, check_version=False) parser.catch_help = self.help() parser.catch_version = github_status.__version__ parser.mapper = self.mapper if len(argv) <= 1: return parser.print_help() parser.dispatch(with_exit=True) parser.catches_help() parser.catches_version()
def parse_args(self, argv=None): """ pass argv during testing """ if argv is None: argv = self.argv options = [['--output', '-o']] parser = Transport(argv, options=options) parser.catch_help = self.help() parser.parse_args() self.source = util.infer_path(parser.unknown_commands) self.output = parser.get('--output', self.source + '-dvd.iso') self.check_dependency() self.make_iso() self.make_sha256sum()
def main(self, argv): parser = Transport(argv, mapper=self.mapper, options=[], check_help=False, check_version=False) parser.parse_args() parser.catch_help = self.help(parser.subhelp()) parser.catch_version = ceph_installer.__version__ parser.mapper = self.mapper if len(argv) <= 1: return parser.print_help() parser.dispatch() parser.catches_help() parser.catches_version()
def parse_args(self): transport = Transport(self.argv, check_help=False) transport.catch_help = self.__doc__ if len(self.argv) <= 1: transport.print_help() transport.parse_args() for action in self.actions: if transport.has(action): return self.actions.get(action)() # If nothing matches, print the help transport.print_help()
def main(self, argv): options = [] parser = Transport(argv, mapper=self.mapper, options=options, check_help=False, check_version=False) parser.parse_args() parser.catch_help = self.help() parser.catch_version = rhcephpkg.__version__ parser.mapper = self.mapper if len(argv) <= 1: return parser.print_help() parser.dispatch() parser.catches_help() parser.catches_version()
def main(self, argv): options = [] parser = Transport(argv, mapper=self.mapper, options=options, check_help=False, check_version=False) parser.parse_args() parser.catch_help = self.help() parser.catch_version = rhcephpkg.__version__ parser.mapper = self.mapper if len(argv) <= 1: return parser.print_help() parser.dispatch() parser.catches_help() parser.catches_version()
def main(self, argv): options = [['--log', '--logging']] parser = Transport(argv, mapper=self.mapper, options=options, check_help=False, check_version=False) parser.parse_args() merfi.config['verbosity'] = parser.get('--log', 'info') merfi.config['check'] = parser.has('--check') parser.catch_help = self.help() parser.catch_version = merfi.__version__ parser.mapper = self.mapper if len(argv) <= 1: return parser.print_help() parser.dispatch() parser.catches_help() parser.catches_version()
def parse_args(self, argv): """ Main method for parsing arguments, it uses whatever `argv` is although it should always be a list. Once it goes through the ``Transport`` class it tries to generate the help from the mapped classes and the current docstring for this module. If nothing matches it will return the help. """ self.get_extend_commands() transport = Transport(argv, self.mapper) transport.catch_help = "%s \n%s" % (__doc__, transport.subhelp()) transport.catch_version = "dozo version {0}".format(__version__) if len(self.argv) <= 1: transport.print_help() transport.dispatch()
def main(self, argv): parser = Transport(argv, mapper=self.mapper, check_help=False, check_version=False) parser.parse_args() parser.catch_help = self.help() parser.catch_version = wari.__version__ parser.mapper = self.mapper if len(argv) <= 1: return parser.print_help() # create the connection and set the collection conn = wari.db.get_connection() wari.db.connection = conn wari.db.collection = conn['wari'] parser.dispatch() parser.catches_help() parser.catches_version() conn.close()
def main(self): parser = Transport(self.arguments, options=self.options, check_help=True) parser.catch_help = self._help parser.parse_args() parser.catches_help() if not parser.unknown_commands: log.error("it is required to pass an identifer, but none was provided") raise SystemExit(1) self.identifier = parser.unknown_commands[-1] if parser.has('--poll'): return self.poll() for key in [ 'stdout', 'stderr', 'command', 'ended', 'started', 'succeeded', 'exit_code']: if parser.has(key): return self.get(key) # if nothing else matches, just try to give a generic, full summary self.summary()
def main(self): options = ['--ignore'] parser = Transport(self.argv, options=options, check_version=False) parser.catch_help = self._help() parser.parse_args() if len(self.argv) < 1: return parser.print_help() # populate the nodes metadata with the configured nodes for daemon in ceph_medic.config['nodes'].keys(): ceph_medic.metadata['nodes'][daemon] = [] for daemon, nodes in ceph_medic.config['nodes'].items(): for node in nodes: ceph_medic.metadata['nodes'][daemon].append( {'host': node['host']}) collector.collect() test = runner.Runner() results = test.run() runner.report(results)
def parse_args(self): options = ['create', 'update', 'generate', 'remove', 'get'] parser = Transport(self.argv, options=options) parser.catch_help = self._help parser.parse_args() if parser.has('create'): return self.create(parser.get('create')) if parser.has('update'): optional_args = ['key', 'step', 'secret', 'b32'] items = [i for i in parser.arguments if i in optional_args] return self.update(parser.get('update'), items) if parser.has('generate'): return self.generate() if parser.has('remove'): return self.remove(parser.get('remove')) if parser.has('get'): items = [i for i in parser.arguments if i in ['pin']] return self.get(parser.get('get'), items)
def main(self): parser = Transport(self.arguments, options=self.options, check_help=True) parser.catch_help = self._help parser.parse_args() parser.catches_help() branch = parser.get('--branch', 'master') user = parser.get('--user', 'vagrant') high_verbosity = '-vvvv' if parser.has('-vvvv') else '-v' if not parser.unknown_commands: log.error("it is required to pass a host to deploy to, but none was provided") raise SystemExit(1) command = [ "ansible-playbook", "-i", "%s," % parser.unknown_commands[-1], high_verbosity, "-u", user, "--extra-vars", 'branch=%s' % branch, "deploy.yml", ] log.debug("Running command: %s" % ' '.join(command)) out, err, code = process.run(command, cwd=playbook_path) log.error(err) log.debug(out)
def main(self): parser = Transport(self.arguments, options=self.options, check_help=True) parser.catch_help = self._help parser.parse_args() parser.catches_help() if not parser.unknown_commands: log.error( "it is required to pass an identifer, but none was provided") raise SystemExit(1) self.identifier = parser.unknown_commands[-1] if parser.has('--poll'): return self.poll() for key in [ 'stdout', 'stderr', 'command', 'ended', 'started', 'succeeded', 'exit_code' ]: if parser.has(key): return self.get(key) # if nothing else matches, just try to give a generic, full summary self.summary()
def main(self, argv): options = [ '--cluster', '--ssh-config', '--inventory', '--config', '--verbosity', ] parser = Transport(argv, options=options, check_help=False, check_version=False) parser.parse_args() self.config_path = parser.get('--config', configuration.location()) # load medic configuration loaded_config = configuration.load( path=parser.get('--config', self.config_path)) # this is the earliest we can have enough config to setup logging log.setup(loaded_config) ceph_medic.config.file = loaded_config global_options = dict(ceph_medic.config.file._sections['global']) # SSH config ceph_medic.config.ssh_config = parser.get( '--ssh-config', global_options.get('--ssh-config')) if ceph_medic.config.ssh_config: ssh_config_path = ceph_medic.config.ssh_config if not os.path.exists(ssh_config_path): terminal.error("the given ssh config path does not exist: %s" % ssh_config_path) sys.exit() ceph_medic.config.cluster_name = parser.get('--cluster', 'ceph') ceph_medic.metadata['cluster_name'] = 'ceph' # Deployment Type deployment_type = ceph_medic.config.file.get_safe( 'global', 'deployment_type', 'baremetal') if deployment_type in ['kubernetes', 'openshift', 'k8s', 'oc']: pod_hosts = hosts.container_platform(deployment_type) ceph_medic.config.nodes = pod_hosts ceph_medic.config.hosts_file = ':memory:' self.hosts_file = ':memory:' else: # Hosts file self.hosts_file = parser.get('--inventory', configuration.get_host_file()) # find the hosts files, by the CLI first, fallback to the configuration # file, and lastly if none of those are found or defined, try to load # from well known locations (cwd, and /etc/ansible/) loaded_hosts = configuration.load_hosts( parser.get('--inventory', global_options.get('--inventory', self.hosts_file))) ceph_medic.config.nodes = loaded_hosts.nodes ceph_medic.config.hosts_file = loaded_hosts.filename self.hosts_file = loaded_hosts.filename parser.catch_version = ceph_medic.__version__ parser.mapper = self.mapper parser.catch_help = self.help(parser.subhelp()) if len(argv) <= 1: return parser.print_help() ceph_medic.config.config_path = self.config_path parser.dispatch() parser.catches_help() parser.catches_version() # Verbosity verbosity = parser.get('--verbosity', 'debug') ceph_medic.config.verbosity = verbosity.lowercase()
def parse_args(self): options = ['create', 'update', 'generate'] parser = Transport(self.argv, options=options) parser.catch_help = self._help parser.parse_args()