Skip to content

Commit 3e9e7a4

Browse files
authored
feat(iam): add UpdateUser (#410)
1 parent 8ad8ff7 commit 3e9e7a4

File tree

6 files changed

+128
-0
lines changed

6 files changed

+128
-0
lines changed

scaleway-async/scaleway_async/iam/v1alpha1/api.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
User,
5353
CreateSSHKeyRequest,
5454
UpdateSSHKeyRequest,
55+
UpdateUserRequest,
5556
CreateUserRequest,
5657
CreateApplicationRequest,
5758
UpdateApplicationRequest,
@@ -84,6 +85,7 @@
8485
marshal_UpdateGroupRequest,
8586
marshal_UpdatePolicyRequest,
8687
marshal_UpdateSSHKeyRequest,
88+
marshal_UpdateUserRequest,
8789
unmarshal_APIKey,
8890
unmarshal_Application,
8991
unmarshal_Group,
@@ -453,6 +455,42 @@ async def get_user(
453455
self._throw_on_error(res)
454456
return unmarshal_User(res.json())
455457

458+
async def update_user(
459+
self,
460+
*,
461+
user_id: str,
462+
tags: Optional[List[str]] = None,
463+
) -> User:
464+
"""
465+
Update a user.
466+
Update the parameters of a user, including `tags`.
467+
:param user_id: ID of the user to update.
468+
:param tags: New tags for the user (maximum of 10 tags).
469+
:return: :class:`User <User>`
470+
471+
Usage:
472+
::
473+
474+
result = await api.update_user(user_id="example")
475+
"""
476+
477+
param_user_id = validate_path_param("user_id", user_id)
478+
479+
res = self._request(
480+
"PATCH",
481+
f"/iam/v1alpha1/users/{param_user_id}",
482+
body=marshal_UpdateUserRequest(
483+
UpdateUserRequest(
484+
user_id=user_id,
485+
tags=tags,
486+
),
487+
self.client,
488+
),
489+
)
490+
491+
self._throw_on_error(res)
492+
return unmarshal_User(res.json())
493+
456494
async def delete_user(
457495
self,
458496
*,

scaleway-async/scaleway_async/iam/v1alpha1/marshalling.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
User,
3737
CreateSSHKeyRequest,
3838
UpdateSSHKeyRequest,
39+
UpdateUserRequest,
3940
CreateUserRequest,
4041
CreateApplicationRequest,
4142
UpdateApplicationRequest,
@@ -1069,3 +1070,15 @@ def marshal_UpdateSSHKeyRequest(
10691070
output["name"] = request.name
10701071

10711072
return output
1073+
1074+
1075+
def marshal_UpdateUserRequest(
1076+
request: UpdateUserRequest,
1077+
defaults: ProfileDefaults,
1078+
) -> Dict[str, Any]:
1079+
output: Dict[str, Any] = {}
1080+
1081+
if request.tags is not None:
1082+
output["tags"] = request.tags
1083+
1084+
return output

scaleway-async/scaleway_async/iam/v1alpha1/types.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,19 @@ class GetUserRequest:
11111111
"""
11121112

11131113

1114+
@dataclass
1115+
class UpdateUserRequest:
1116+
user_id: str
1117+
"""
1118+
ID of the user to update.
1119+
"""
1120+
1121+
tags: Optional[List[str]]
1122+
"""
1123+
New tags for the user (maximum of 10 tags).
1124+
"""
1125+
1126+
11141127
@dataclass
11151128
class DeleteUserRequest:
11161129
user_id: str

scaleway/scaleway/iam/v1alpha1/api.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
User,
5353
CreateSSHKeyRequest,
5454
UpdateSSHKeyRequest,
55+
UpdateUserRequest,
5556
CreateUserRequest,
5657
CreateApplicationRequest,
5758
UpdateApplicationRequest,
@@ -84,6 +85,7 @@
8485
marshal_UpdateGroupRequest,
8586
marshal_UpdatePolicyRequest,
8687
marshal_UpdateSSHKeyRequest,
88+
marshal_UpdateUserRequest,
8789
unmarshal_APIKey,
8890
unmarshal_Application,
8991
unmarshal_Group,
@@ -453,6 +455,42 @@ def get_user(
453455
self._throw_on_error(res)
454456
return unmarshal_User(res.json())
455457

458+
def update_user(
459+
self,
460+
*,
461+
user_id: str,
462+
tags: Optional[List[str]] = None,
463+
) -> User:
464+
"""
465+
Update a user.
466+
Update the parameters of a user, including `tags`.
467+
:param user_id: ID of the user to update.
468+
:param tags: New tags for the user (maximum of 10 tags).
469+
:return: :class:`User <User>`
470+
471+
Usage:
472+
::
473+
474+
result = api.update_user(user_id="example")
475+
"""
476+
477+
param_user_id = validate_path_param("user_id", user_id)
478+
479+
res = self._request(
480+
"PATCH",
481+
f"/iam/v1alpha1/users/{param_user_id}",
482+
body=marshal_UpdateUserRequest(
483+
UpdateUserRequest(
484+
user_id=user_id,
485+
tags=tags,
486+
),
487+
self.client,
488+
),
489+
)
490+
491+
self._throw_on_error(res)
492+
return unmarshal_User(res.json())
493+
456494
def delete_user(
457495
self,
458496
*,

scaleway/scaleway/iam/v1alpha1/marshalling.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
User,
3737
CreateSSHKeyRequest,
3838
UpdateSSHKeyRequest,
39+
UpdateUserRequest,
3940
CreateUserRequest,
4041
CreateApplicationRequest,
4142
UpdateApplicationRequest,
@@ -1069,3 +1070,15 @@ def marshal_UpdateSSHKeyRequest(
10691070
output["name"] = request.name
10701071

10711072
return output
1073+
1074+
1075+
def marshal_UpdateUserRequest(
1076+
request: UpdateUserRequest,
1077+
defaults: ProfileDefaults,
1078+
) -> Dict[str, Any]:
1079+
output: Dict[str, Any] = {}
1080+
1081+
if request.tags is not None:
1082+
output["tags"] = request.tags
1083+
1084+
return output

scaleway/scaleway/iam/v1alpha1/types.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,19 @@ class GetUserRequest:
11111111
"""
11121112

11131113

1114+
@dataclass
1115+
class UpdateUserRequest:
1116+
user_id: str
1117+
"""
1118+
ID of the user to update.
1119+
"""
1120+
1121+
tags: Optional[List[str]]
1122+
"""
1123+
New tags for the user (maximum of 10 tags).
1124+
"""
1125+
1126+
11141127
@dataclass
11151128
class DeleteUserRequest:
11161129
user_id: str

0 commit comments

Comments
 (0)