def list_user(client, group_id, user_type, user_status, limit): try: users = user_lib.list_user( client=client, group_id=group_id, user_type=user_type, user_status=user_status, limit=limit, ) utils.check(users) number = 1 # must start from 1 (as user data) results = [] for user in users: data = { "No": number, "User": user["userId"], "Name": user["fullName"], "Email": user["emailAddr"], "Address": user["address1"], "City": user["city"], "Status": user["active"], } number += 1 results.append(data) click.secho(tabulate.tabulate(results, headers="keys", tablefmt="grid")) except Exception as exc: click.secho(f"Users fetching failed. \n{exc}", fg="yellow", bold=True, err=True)
def create(client, user_id, group_id): try: credentials = cred_lib.create(client, user_id, group_id) utils.check(credentials) click.secho(f"Credentials created", fg="green") except Exception as exc: click.secho( f"Credential creation failed. \n{exc}", fg="yellow", bold=True, err=True )
def rm(client, access_key): try: credentials = cred_lib.rm(client, access_key) utils.check(credentials) click.secho(f"Credentials removed", fg="green") except Exception as exc: click.secho( f"Credential removal failed. \n{exc}", fg="yellow", bold=True, err=True )
def status(client, access_key, status): try: status = cred_lib.status(client, access_key, status) utils.check(status) click.secho(f"Credentials status changed", fg="green") except Exception as exc: click.secho( f"Credentials fetching failed. \n{exc}", fg="yellow", bold=True, err=True )
def remove(client, user_id, group_id): try: response = user_lib.remove(client, user_id=user_id, group_id=group_id) utils.check(response) click.secho(f"User removed successfully", fg="green") except Exception as exc: click.secho(f"User removal failed. \n{exc}", fg="yellow", bold=True, err=True)
def rm(client, user_id, group_id): try: qos = qos_lib.rm(client, user_id=user_id, group_id=group_id) utils.check(qos) click.secho("Storage limit removed", fg="green") except Exception as exc: click.secho(f"Storage limit removal failed. \n{exc}", fg="yellow", bold=True, err=True)
def create(client): try: data = user_profile.prompt_user_profile() response = user_lib.create(client, utils.user_sanitize(data)) utils.check(response) click.secho(f"User created successfully", fg="green") except Exception as exc: click.secho(f"User creation failed. \n{exc}", fg="yellow", bold=True, err=True)
def du(client, user_id, group_id): try: usage = admin_lib.usage(client, user_id, group_id) utils.check(usage) # earliest result must be first element (0) value = usage[0]["value"] prefixed_value = bitmath.Byte(int(value)).best_prefix() click.secho(f"Storage usage: {prefixed_value}") except Exception as exc: click.secho(f"Storage fetching failed. \n{exc}", fg="yellow", bold=True, err=True)
def set(client, user_id, group_id, limit): try: qos = qos_lib.set(client, user_id=user_id, group_id=group_id, limit=limit) utils.check(qos) click.secho("Storage limit changed", fg="green") except Exception as exc: click.secho(f"Storage limit change failed. \n{exc}", fg="yellow", bold=True, err=True)
def info(client, user_id, group_id): try: qos = qos_lib.info(client, user_id=user_id, group_id=group_id) utils.check(qos) qos_limit = get_limit_kbytes(qos) msg = (f"Group ID: {qos['groupId']}\n" f"User ID: {qos['userId']}\n" f"Storage Limit: {qos_limit}") click.secho(msg) except Exception as exc: click.secho(f"Storage limit fetching failed. \n{exc}", fg="yellow", bold=True, err=True)
def list(client, user_id, group_id): try: credentials = cred_lib.list(client, user_id, group_id) utils.check(credentials) for credential in credentials: human_date = utils.human_date(credential["createDate"]) result = ( f"Access Key: {credential['accessKey']}\n" f"Secret Key: {credential['secretKey']}\n" f"Created: {human_date}\n" f"Active: {credential['active']}" ) click.secho(result) except Exception as exc: click.secho( f"Credentials listing failed. \n{exc}", fg="yellow", bold=True, err=True )
def info(client, user_id, group_id): try: user = user_lib.info(client=client, user_id=user_id, group_id=group_id) utils.check(user) result = (f"ID: {user['userId']}\n" f"Name: {user['fullName']}\n" f"Email: {user['emailAddr']}\n" f"Address: {user['address1']}\n" f"City: {user['city']}\n" f"Group ID: {user['groupId']}\n" f"Canonical ID: {user['canonicalUserId']}\n" f"Active: {user['active']}") click.secho(result) except Exception as exc: click.secho(f"User info fetching failed. \n{exc}", fg="yellow", bold=True, err=True)
def suspend(client, user_id, group_id, status): try: user_info = user_lib.info(client=client, user_id=user_id, group_id=group_id) message = "suspended" if status is True else "unsuspended" data = { key: val for key, val in user_info.items() if "canonical" not in key } data["active"] = not status response = user_lib.update(client, data) utils.check(response) click.secho(f"User {message} successfully", fg="green") except Exception as exc: click.secho(f"User suspension failed. \n{exc}", fg="yellow", bold=True, err=True)
def test_check(): response = {"reason": "nonsense", "status_code": "valid", "url": ".net"} with pytest.raises(ValueError, match=(f"nonsense")): utils.check(response)