Skip to content

feat(iam): add LockUser and UnlockUser method #728

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Nov 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions scaleway-async/scaleway_async/iam/v1alpha1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,12 @@
from .types import ListSSHKeysResponse
from .types import ListUsersRequest
from .types import ListUsersResponse
from .types import LockUserRequest
from .types import RemoveGroupMemberRequest
from .types import SetGroupMembersRequest
from .types import SetRulesRequest
from .types import SetRulesResponse
from .types import UnlockUserRequest
from .types import UpdateAPIKeyRequest
from .types import UpdateApplicationRequest
from .types import UpdateGroupRequest
Expand Down Expand Up @@ -170,10 +172,12 @@
"ListSSHKeysResponse",
"ListUsersRequest",
"ListUsersResponse",
"LockUserRequest",
"RemoveGroupMemberRequest",
"SetGroupMembersRequest",
"SetRulesRequest",
"SetRulesResponse",
"UnlockUserRequest",
"UpdateAPIKeyRequest",
"UpdateApplicationRequest",
"UpdateGroupRequest",
Expand Down
59 changes: 59 additions & 0 deletions scaleway-async/scaleway_async/iam/v1alpha1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,65 @@ async def update_user_password(
self._throw_on_error(res)
return unmarshal_User(res.json())

async def lock_user(
self,
*,
user_id: str,
) -> User:
"""
Lock a user.
Lock a user. Note that a locked user cannot log in or use API keys until the locked status is removed.
:param user_id:
:return: :class:`User <User>`

Usage:
::

result = await api.lock_user(
user_id="example",
)
"""

param_user_id = validate_path_param("user_id", user_id)

res = self._request(
"POST",
f"/iam/v1alpha1/users/{param_user_id}/lock",
body={},
)

self._throw_on_error(res)
return unmarshal_User(res.json())

async def unlock_user(
self,
*,
user_id: str,
) -> User:
"""
Unlock a user.
:param user_id:
:return: :class:`User <User>`

Usage:
::

result = await api.unlock_user(
user_id="example",
)
"""

param_user_id = validate_path_param("user_id", user_id)

res = self._request(
"POST",
f"/iam/v1alpha1/users/{param_user_id}/unlock",
body={},
)

self._throw_on_error(res)
return unmarshal_User(res.json())

async def list_applications(
self,
*,
Expand Down
10 changes: 10 additions & 0 deletions scaleway-async/scaleway_async/iam/v1alpha1/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -1691,6 +1691,11 @@ class ListUsersResponse:
"""


@dataclass
class LockUserRequest:
user_id: str


@dataclass
class RemoveGroupMemberRequest:
group_id: str
Expand Down Expand Up @@ -1733,6 +1738,11 @@ class SetRulesResponse:
"""


@dataclass
class UnlockUserRequest:
user_id: str


@dataclass
class UpdateAPIKeyRequest:
access_key: str
Expand Down
4 changes: 4 additions & 0 deletions scaleway/scaleway/iam/v1alpha1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,12 @@
from .types import ListSSHKeysResponse
from .types import ListUsersRequest
from .types import ListUsersResponse
from .types import LockUserRequest
from .types import RemoveGroupMemberRequest
from .types import SetGroupMembersRequest
from .types import SetRulesRequest
from .types import SetRulesResponse
from .types import UnlockUserRequest
from .types import UpdateAPIKeyRequest
from .types import UpdateApplicationRequest
from .types import UpdateGroupRequest
Expand Down Expand Up @@ -170,10 +172,12 @@
"ListSSHKeysResponse",
"ListUsersRequest",
"ListUsersResponse",
"LockUserRequest",
"RemoveGroupMemberRequest",
"SetGroupMembersRequest",
"SetRulesRequest",
"SetRulesResponse",
"UnlockUserRequest",
"UpdateAPIKeyRequest",
"UpdateApplicationRequest",
"UpdateGroupRequest",
Expand Down
59 changes: 59 additions & 0 deletions scaleway/scaleway/iam/v1alpha1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,65 @@ def update_user_password(
self._throw_on_error(res)
return unmarshal_User(res.json())

def lock_user(
self,
*,
user_id: str,
) -> User:
"""
Lock a user.
Lock a user. Note that a locked user cannot log in or use API keys until the locked status is removed.
:param user_id:
:return: :class:`User <User>`

Usage:
::

result = api.lock_user(
user_id="example",
)
"""

param_user_id = validate_path_param("user_id", user_id)

res = self._request(
"POST",
f"/iam/v1alpha1/users/{param_user_id}/lock",
body={},
)

self._throw_on_error(res)
return unmarshal_User(res.json())

def unlock_user(
self,
*,
user_id: str,
) -> User:
"""
Unlock a user.
:param user_id:
:return: :class:`User <User>`

Usage:
::

result = api.unlock_user(
user_id="example",
)
"""

param_user_id = validate_path_param("user_id", user_id)

res = self._request(
"POST",
f"/iam/v1alpha1/users/{param_user_id}/unlock",
body={},
)

self._throw_on_error(res)
return unmarshal_User(res.json())

def list_applications(
self,
*,
Expand Down
10 changes: 10 additions & 0 deletions scaleway/scaleway/iam/v1alpha1/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -1691,6 +1691,11 @@ class ListUsersResponse:
"""


@dataclass
class LockUserRequest:
user_id: str


@dataclass
class RemoveGroupMemberRequest:
group_id: str
Expand Down Expand Up @@ -1733,6 +1738,11 @@ class SetRulesResponse:
"""


@dataclass
class UnlockUserRequest:
user_id: str


@dataclass
class UpdateAPIKeyRequest:
access_key: str
Expand Down