Example #1
0
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)
Example #2
0
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)
Example #3
0
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)