import time
from datetime import datetime, timedelta
from string import ascii_lowercase, ascii_uppercase, digits, punctuation
+from typing import List, Optional, Sequence
import bcrypt
from mgr_module import CLICheckNonemptyFileInput, CLIReadCommand, CLIWriteCommand
# CLI dashboard access control scope commands
-@CLIWriteCommand('dashboard set-login-credentials',
- 'name=username,type=CephString')
+@CLIWriteCommand('dashboard set-login-credentials')
@CLICheckNonemptyFileInput
-def set_login_credentials_cmd(_, username, inbuf):
+def set_login_credentials_cmd(_, username: str, inbuf: str):
'''
Set the login credentials. Password read from -i <file>
'''
Username and password updated''', ''
-@CLIReadCommand('dashboard ac-role-show',
- 'name=rolename,type=CephString,req=false')
-def ac_role_show_cmd(_, rolename=None):
+@CLIReadCommand('dashboard ac-role-show')
+def ac_role_show_cmd(_, rolename: Optional[str] = None):
'''
Show role info
'''
return 0, json.dumps(role.to_dict()), ''
-@CLIWriteCommand('dashboard ac-role-create',
- 'name=rolename,type=CephString '
- 'name=description,type=CephString,req=false')
-def ac_role_create_cmd(_, rolename, description=None):
+@CLIWriteCommand('dashboard ac-role-create')
+def ac_role_create_cmd(_, rolename: str, description: Optional[str] = None):
'''
Create a new access control role
'''
return -errno.EEXIST, '', str(ex)
-@CLIWriteCommand('dashboard ac-role-delete',
- 'name=rolename,type=CephString')
-def ac_role_delete_cmd(_, rolename):
+@CLIWriteCommand('dashboard ac-role-delete')
+def ac_role_delete_cmd(_, rolename: str):
'''
Delete an access control role
'''
return -errno.EPERM, '', str(ex)
-@CLIWriteCommand('dashboard ac-role-add-scope-perms',
- 'name=rolename,type=CephString '
- 'name=scopename,type=CephString '
- 'name=permissions,type=CephString,n=N')
-def ac_role_add_scope_perms_cmd(_, rolename, scopename, permissions):
+@CLIWriteCommand('dashboard ac-role-add-scope-perms')
+def ac_role_add_scope_perms_cmd(_,
+ rolename: str,
+ scopename: str,
+ permissions: Sequence[str]):
'''
Add the scope permissions for a role
'''
.format(Permission.all_permissions())
-@CLIWriteCommand('dashboard ac-role-del-scope-perms',
- 'name=rolename,type=CephString '
- 'name=scopename,type=CephString')
-def ac_role_del_scope_perms_cmd(_, rolename, scopename):
+@CLIWriteCommand('dashboard ac-role-del-scope-perms')
+def ac_role_del_scope_perms_cmd(_, rolename: str, scopename: str):
'''
Delete the scope permissions for a role
'''
return -errno.ENOENT, '', str(ex)
-@CLIReadCommand('dashboard ac-user-show',
- 'name=username,type=CephString,req=false')
-def ac_user_show_cmd(_, username=None):
+@CLIReadCommand('dashboard ac-user-show')
+def ac_user_show_cmd(_, username: Optional[str] = None):
'''
Show user info
'''
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-create',
- 'name=username,type=CephString '
- 'name=rolename,type=CephString,req=false '
- 'name=name,type=CephString,req=false '
- 'name=email,type=CephString,req=false '
- 'name=enabled,type=CephBool,req=false '
- 'name=force_password,type=CephBool,req=false '
- 'name=pwd_expiration_date,type=CephInt,req=false '
- 'name=pwd_update_required,type=CephBool,req=false')
+@CLIWriteCommand('dashboard ac-user-create')
@CLICheckNonemptyFileInput
-def ac_user_create_cmd(_, username, inbuf, rolename=None, name=None,
- email=None, enabled=True, force_password=False,
- pwd_expiration_date=None, pwd_update_required=False):
+def ac_user_create_cmd(_, username: str, inbuf: str,
+ rolename: Optional[str] = None,
+ name: Optional[str] = None,
+ email: Optional[str] = None,
+ enabled: bool = True,
+ force_password: bool = False,
+ pwd_expiration_date: Optional[int] = None,
+ pwd_update_required: bool = False):
'''
Create a user. Password read from -i <file>
'''
return 0, json.dumps(user.to_dict()), ''
-@CLIWriteCommand('dashboard ac-user-enable',
- 'name=username,type=CephString')
-def ac_user_enable(_, username):
+@CLIWriteCommand('dashboard ac-user-enable')
+def ac_user_enable(_, username: str):
'''
Enable a user
'''
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-disable',
- 'name=username,type=CephString')
-def ac_user_disable(_, username):
+@CLIWriteCommand('dashboard ac-user-disable')
+def ac_user_disable(_, username: str):
'''
Disable a user
'''
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-delete',
- 'name=username,type=CephString')
-def ac_user_delete_cmd(_, username):
+@CLIWriteCommand('dashboard ac-user-delete')
+def ac_user_delete_cmd(_, username: str):
'''
Delete user
'''
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-set-roles',
- 'name=username,type=CephString '
- 'name=roles,type=CephString,n=N')
-def ac_user_set_roles_cmd(_, username, roles):
+@CLIWriteCommand('dashboard ac-user-set-roles')
+def ac_user_set_roles_cmd(_, username: str, roles: Sequence[str]):
'''
Set user roles
'''
rolesname = roles
- roles = []
+ roles: List[Role] = []
for rolename in rolesname:
try:
roles.append(mgr.ACCESS_CTRL_DB.get_role(rolename))
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-add-roles',
- 'name=username,type=CephString '
- 'name=roles,type=CephString,n=N')
-def ac_user_add_roles_cmd(_, username, roles):
+@CLIWriteCommand('dashboard ac-user-add-roles')
+def ac_user_add_roles_cmd(_, username: str, roles: Sequence[str]):
'''
Add roles to user
'''
rolesname = roles
- roles = []
+ roles: List[Role] = []
for rolename in rolesname:
try:
roles.append(mgr.ACCESS_CTRL_DB.get_role(rolename))
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-del-roles',
- 'name=username,type=CephString '
- 'name=roles,type=CephString,n=N')
-def ac_user_del_roles_cmd(_, username, roles):
+@CLIWriteCommand('dashboard ac-user-del-roles')
+def ac_user_del_roles_cmd(_, username: str, roles: Sequence[str]):
'''
Delete roles from user
'''
rolesname = roles
- roles = []
+ roles: List[Role] = []
for rolename in rolesname:
try:
roles.append(mgr.ACCESS_CTRL_DB.get_role(rolename))
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-set-password',
- 'name=username,type=CephString '
- 'name=force_password,type=CephBool,req=false')
+@CLIWriteCommand('dashboard ac-user-set-password')
@CLICheckNonemptyFileInput
-def ac_user_set_password(_, username, inbuf, force_password=False):
+def ac_user_set_password(_, username: str, inbuf: str,
+ force_password: bool = False):
'''
Set user password from -i <file>
'''
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-set-password-hash',
- 'name=username,type=CephString')
+@CLIWriteCommand('dashboard ac-user-set-password-hash')
@CLICheckNonemptyFileInput
-def ac_user_set_password_hash(_, username, inbuf):
+def ac_user_set_password_hash(_, username: str, inbuf: str):
'''
Set user password bcrypt hash from -i <file>
'''
return -errno.ENOENT, '', str(ex)
-@CLIWriteCommand('dashboard ac-user-set-info',
- 'name=username,type=CephString '
- 'name=name,type=CephString '
- 'name=email,type=CephString')
-def ac_user_set_info(_, username, name, email):
+@CLIWriteCommand('dashboard ac-user-set-info')
+def ac_user_set_info(_, username: str, name: str, email: str):
'''
Set user info
'''