Skip to content

Commit 08b2f01

Browse files
authored
feat(iam): new method to add group members (#181)
1 parent 3a8de8e commit 08b2f01

File tree

6 files changed

+140
-0
lines changed

6 files changed

+140
-0
lines changed

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

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
UpdateGroupRequest,
5454
SetGroupMembersRequest,
5555
AddGroupMemberRequest,
56+
AddGroupMembersRequest,
5657
RemoveGroupMemberRequest,
5758
CreatePolicyRequest,
5859
UpdatePolicyRequest,
@@ -62,6 +63,7 @@
6263
)
6364
from .marshalling import (
6465
marshal_AddGroupMemberRequest,
66+
marshal_AddGroupMembersRequest,
6567
marshal_CreateAPIKeyRequest,
6668
marshal_CreateApplicationRequest,
6769
marshal_CreateGroupRequest,
@@ -968,6 +970,45 @@ async def add_group_member(
968970
self._throw_on_error(res)
969971
return unmarshal_Group(res.json())
970972

973+
async def add_group_members(
974+
self,
975+
*,
976+
group_id: str,
977+
user_ids: Optional[List[str]] = None,
978+
application_ids: Optional[List[str]] = None,
979+
) -> Group:
980+
"""
981+
Add multiple users and applications to a group.
982+
Add multiple users and applications to a group in a single call. You can specify an array of `user_id`s and `application_id`s. Note that any existing users and applications in the group will remain. To add new users/applications and delete pre-existing ones, use the [Overwrite users and applications of a group](#path-groups-overwrite-users-and-applications-of-a-group) method.
983+
:param group_id: ID of the group.
984+
:param user_ids: IDs of the users to add.
985+
:param application_ids: IDs of the applications to add.
986+
:return: :class:`Group <Group>`
987+
988+
Usage:
989+
::
990+
991+
result = await api.add_group_members(group_id="example")
992+
"""
993+
994+
param_group_id = validate_path_param("group_id", group_id)
995+
996+
res = self._request(
997+
"POST",
998+
f"/iam/v1alpha1/groups/{param_group_id}/add-members",
999+
body=marshal_AddGroupMembersRequest(
1000+
AddGroupMembersRequest(
1001+
group_id=group_id,
1002+
user_ids=user_ids,
1003+
application_ids=application_ids,
1004+
),
1005+
self.client,
1006+
),
1007+
)
1008+
1009+
self._throw_on_error(res)
1010+
return unmarshal_Group(res.json())
1011+
9711012
async def remove_group_member(
9721013
self,
9731014
*,

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
UpdateGroupRequest,
4141
SetGroupMembersRequest,
4242
AddGroupMemberRequest,
43+
AddGroupMembersRequest,
4344
RemoveGroupMemberRequest,
4445
CreatePolicyRequest,
4546
UpdatePolicyRequest,
@@ -642,6 +643,16 @@ def marshal_AddGroupMemberRequest(
642643
}
643644

644645

646+
def marshal_AddGroupMembersRequest(
647+
request: AddGroupMembersRequest,
648+
defaults: ProfileDefaults,
649+
) -> Dict[str, Any]:
650+
return {
651+
"application_ids": request.application_ids,
652+
"user_ids": request.user_ids,
653+
}
654+
655+
645656
def marshal_CreateAPIKeyRequest(
646657
request: CreateAPIKeyRequest,
647658
defaults: ProfileDefaults,

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,6 +1199,24 @@ class AddGroupMemberRequest:
11991199
"""
12001200

12011201

1202+
@dataclass
1203+
class AddGroupMembersRequest:
1204+
group_id: str
1205+
"""
1206+
ID of the group.
1207+
"""
1208+
1209+
user_ids: Optional[List[str]]
1210+
"""
1211+
IDs of the users to add.
1212+
"""
1213+
1214+
application_ids: Optional[List[str]]
1215+
"""
1216+
IDs of the applications to add.
1217+
"""
1218+
1219+
12021220
@dataclass
12031221
class RemoveGroupMemberRequest:
12041222
group_id: str

scaleway/scaleway/iam/v1alpha1/api.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
UpdateGroupRequest,
5454
SetGroupMembersRequest,
5555
AddGroupMemberRequest,
56+
AddGroupMembersRequest,
5657
RemoveGroupMemberRequest,
5758
CreatePolicyRequest,
5859
UpdatePolicyRequest,
@@ -62,6 +63,7 @@
6263
)
6364
from .marshalling import (
6465
marshal_AddGroupMemberRequest,
66+
marshal_AddGroupMembersRequest,
6567
marshal_CreateAPIKeyRequest,
6668
marshal_CreateApplicationRequest,
6769
marshal_CreateGroupRequest,
@@ -968,6 +970,45 @@ def add_group_member(
968970
self._throw_on_error(res)
969971
return unmarshal_Group(res.json())
970972

973+
def add_group_members(
974+
self,
975+
*,
976+
group_id: str,
977+
user_ids: Optional[List[str]] = None,
978+
application_ids: Optional[List[str]] = None,
979+
) -> Group:
980+
"""
981+
Add multiple users and applications to a group.
982+
Add multiple users and applications to a group in a single call. You can specify an array of `user_id`s and `application_id`s. Note that any existing users and applications in the group will remain. To add new users/applications and delete pre-existing ones, use the [Overwrite users and applications of a group](#path-groups-overwrite-users-and-applications-of-a-group) method.
983+
:param group_id: ID of the group.
984+
:param user_ids: IDs of the users to add.
985+
:param application_ids: IDs of the applications to add.
986+
:return: :class:`Group <Group>`
987+
988+
Usage:
989+
::
990+
991+
result = api.add_group_members(group_id="example")
992+
"""
993+
994+
param_group_id = validate_path_param("group_id", group_id)
995+
996+
res = self._request(
997+
"POST",
998+
f"/iam/v1alpha1/groups/{param_group_id}/add-members",
999+
body=marshal_AddGroupMembersRequest(
1000+
AddGroupMembersRequest(
1001+
group_id=group_id,
1002+
user_ids=user_ids,
1003+
application_ids=application_ids,
1004+
),
1005+
self.client,
1006+
),
1007+
)
1008+
1009+
self._throw_on_error(res)
1010+
return unmarshal_Group(res.json())
1011+
9711012
def remove_group_member(
9721013
self,
9731014
*,

scaleway/scaleway/iam/v1alpha1/marshalling.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
UpdateGroupRequest,
4141
SetGroupMembersRequest,
4242
AddGroupMemberRequest,
43+
AddGroupMembersRequest,
4344
RemoveGroupMemberRequest,
4445
CreatePolicyRequest,
4546
UpdatePolicyRequest,
@@ -642,6 +643,16 @@ def marshal_AddGroupMemberRequest(
642643
}
643644

644645

646+
def marshal_AddGroupMembersRequest(
647+
request: AddGroupMembersRequest,
648+
defaults: ProfileDefaults,
649+
) -> Dict[str, Any]:
650+
return {
651+
"application_ids": request.application_ids,
652+
"user_ids": request.user_ids,
653+
}
654+
655+
645656
def marshal_CreateAPIKeyRequest(
646657
request: CreateAPIKeyRequest,
647658
defaults: ProfileDefaults,

scaleway/scaleway/iam/v1alpha1/types.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,6 +1199,24 @@ class AddGroupMemberRequest:
11991199
"""
12001200

12011201

1202+
@dataclass
1203+
class AddGroupMembersRequest:
1204+
group_id: str
1205+
"""
1206+
ID of the group.
1207+
"""
1208+
1209+
user_ids: Optional[List[str]]
1210+
"""
1211+
IDs of the users to add.
1212+
"""
1213+
1214+
application_ids: Optional[List[str]]
1215+
"""
1216+
IDs of the applications to add.
1217+
"""
1218+
1219+
12021220
@dataclass
12031221
class RemoveGroupMemberRequest:
12041222
group_id: str

0 commit comments

Comments
 (0)