import click from mgrctl.apps.dci6.auth import __version__ from mgrctl.api.dci6 import AuthAPI from mgrctl.utils.api_users import UserAPI user_cursor = UserAPI(callback_class=AuthAPI) @click.group(help='auth cmd for auth in DCImanager 6') @click.version_option( version=__version__, package_name='mgrctl.apps.dci6.auth', message=__version__ ) def cli(): pass @cli.group(help='Manage users') def user(): pass @user.command(help='List users') @click.option( '--all', is_flag=True, required=False, help='Show all users' ) @click.option( '--admins', is_flag=True, required=False, help='Show all active admins', ) def ls(all, admins): if all: users = user_cursor.get_users(role='all') elif admins: users = user_cursor.get_users(role='admin') else: users = user_cursor.get_users(role='all') # print users: user_cursor.echo_users(users) @user.command( help='Generate an access key and return auth link(s)', no_args_is_help=True ) @click.option( '--id', '_id', required=False, type=int, help='User id' ) @click.option( '--count', required=False, type=int, help='Number of access keys generated', ) @click.option( '--random', is_flag=True, required=False, help='Generate access key for the first available admin' ) @click.option( '--interactive', is_flag=True, required=False, help='Interactive mode, ignores other keys' ) def access(_id, count, interactive, random): if _id and not count: keys = user_cursor.get_access_keys(user=_id, count=1) elif _id and count: keys = user_cursor.get_access_keys(user=_id, count=count) elif random: admin = user_cursor.get_first_random_admin() keys = user_cursor.get_access_keys(user=admin.get('id', 3)) elif interactive: user_cursor.gen_access_links_interactive() return # exit from func else: pass links = user_cursor.gen_access_links(keys) user_cursor.echo_access_links(links) @user.command(help='Generate API token for mgrctl user') def token(): token = user_cursor.gen_api_token() user_cursor.echo_api_token(token)