def main(): args = docopt(__doc__, version='Repokid {version}'.format(version=__version__)) if args.get('config'): config_filename = args.get('<config_filename>') _generate_default_config(filename=config_filename) sys.exit(0) account_number = args.get('<account_number>') if not CONFIG: config = _generate_default_config() else: config = CONFIG LOGGER.debug('Repokid cli called with args {}'.format(args)) hooks = _get_hooks(config.get('hooks', ['repokid.hooks.loggers'])) dynamo_table = dynamo_get_or_create_table(**config['dynamo_db']) if args.get('update_role_cache'): return update_role_cache(account_number, dynamo_table, config, hooks) if args.get('display_role_cache'): inactive = args.get('--inactive') return display_roles(account_number, dynamo_table, inactive=inactive) if args.get('find_roles_with_permission'): return find_roles_with_permission(args.get('<permission>'), dynamo_table) if args.get('display_role'): role_name = args.get('<role_name>') return display_role(account_number, role_name, dynamo_table, config, hooks) if args.get('repo_role'): role_name = args.get('<role_name>') commit = args.get('--commit') return repo_role(account_number, role_name, dynamo_table, config, hooks, commit=commit) if args.get('rollback_role'): role_name = args.get('<role_name>') commit = args.get('--commit') selection = args.get('--selection') return rollback_role(account_number, role_name, dynamo_table, config, hooks, selection=selection, commit=commit) if args.get('repo_all_roles'): LOGGER.info('Updating role data') update_role_cache(account_number, dynamo_table, config, hooks) LOGGER.info('Repoing all roles') commit = args.get('--commit') return repo_all_roles(account_number, dynamo_table, config, hooks, commit=commit, scheduled=False) if args.get('schedule_repo'): LOGGER.info('Updating role data') update_role_cache(account_number, dynamo_table, config, hooks) return schedule_repo(account_number, dynamo_table, config, hooks) if args.get('show_scheduled_roles'): LOGGER.info('Showing scheduled roles') return show_scheduled_roles(account_number, dynamo_table) if args.get('cancel_scheduled_repo'): role_name = args.get('--role') is_all = args.get('--all') if not is_all: LOGGER.info('Cancelling scheduled repo for role: {} in account {}'.format(role_name, account_number)) else: LOGGER.info('Cancelling scheduled repo for all roles in account {}'.format(account_number)) return cancel_scheduled_repo(account_number, dynamo_table, role_name=role_name, is_all=is_all) if args.get('repo_scheduled_roles'): update_role_cache(account_number, dynamo_table, config, hooks) LOGGER.info('Repoing scheduled roles') commit = args.get('--commit') return repo_all_roles(account_number, dynamo_table, config, hooks, commit=commit, scheduled=True) if args.get('repo_stats'): output_file = args.get('<output_filename>') account_number = args.get('--account') return repo_stats(output_file, dynamo_table, account_number=account_number)
from collections import namedtuple import datetime import time from repokid import CONFIG from repokid import _get_hooks import repokid.cli.repokid_cli as cli import repokid.utils.dynamo as dynamo import repokid.utils.roledata as roledata ResponderReturn = namedtuple('ResponderReturn', 'successful, return_message') if CONFIG: hooks = _get_hooks(CONFIG.get('hooks', ['repokid.hooks.loggers'])) else: hooks = ['repokid.hooks.loggers'] def implements_command(command): def _implements_command(func): if not hasattr(func, "_implements_command"): func._implements_command = command return func return _implements_command @implements_command('list_repoable_services') def list_repoable_services(dynamo_table, message): role_id = dynamo.find_role_in_cache(dynamo_table, message.account, message.role_name)
from collections import namedtuple import datetime import time from repokid import _get_hooks from repokid import CONFIG import repokid.cli.repokid_cli as cli import repokid.utils.dynamo as dynamo import repokid.utils.roledata as roledata ResponderReturn = namedtuple("ResponderReturn", "successful, return_message") if CONFIG: hooks = _get_hooks(CONFIG.get("hooks", ["repokid.hooks.loggers"])) else: hooks = ["repokid.hooks.loggers"] def implements_command(command): def _implements_command(func): if not hasattr(func, "_implements_command"): func._implements_command = command return func return _implements_command @implements_command("list_repoable_services") def list_repoable_services(dynamo_table, message): role_id = dynamo.find_role_in_cache(dynamo_table, message.account, message.role_name)