Skip to content

Commit 62eab56

Browse files
authored
feat(iam/v1alpha1): add method to create a user (#264)
1 parent 32ad9a2 commit 62eab56

File tree

6 files changed

+120
-0
lines changed

6 files changed

+120
-0
lines changed

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
User,
4848
CreateSSHKeyRequest,
4949
UpdateSSHKeyRequest,
50+
CreateUserRequest,
5051
CreateApplicationRequest,
5152
UpdateApplicationRequest,
5253
CreateGroupRequest,
@@ -69,6 +70,7 @@
6970
marshal_CreateGroupRequest,
7071
marshal_CreatePolicyRequest,
7172
marshal_CreateSSHKeyRequest,
73+
marshal_CreateUserRequest,
7274
marshal_RemoveGroupMemberRequest,
7375
marshal_SetGroupMembersRequest,
7476
marshal_SetRulesRequest,
@@ -464,6 +466,40 @@ async def delete_user(
464466
self._throw_on_error(res)
465467
return None
466468

469+
async def create_user(
470+
self,
471+
*,
472+
email: str,
473+
organization_id: Optional[str] = None,
474+
) -> User:
475+
"""
476+
Create a new user.
477+
Create a new user. You must define the `organization_id` and the `email` in your request.
478+
:param organization_id: ID of the Organization.
479+
:param email: Email of the user.
480+
:return: :class:`User <User>`
481+
482+
Usage:
483+
::
484+
485+
result = await api.create_user(email="example")
486+
"""
487+
488+
res = self._request(
489+
"POST",
490+
f"/iam/v1alpha1/users",
491+
body=marshal_CreateUserRequest(
492+
CreateUserRequest(
493+
email=email,
494+
organization_id=organization_id,
495+
),
496+
self.client,
497+
),
498+
)
499+
500+
self._throw_on_error(res)
501+
return unmarshal_User(res.json())
502+
467503
async def list_applications(
468504
self,
469505
*,

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
User,
3535
CreateSSHKeyRequest,
3636
UpdateSSHKeyRequest,
37+
CreateUserRequest,
3738
CreateApplicationRequest,
3839
UpdateApplicationRequest,
3940
CreateGroupRequest,
@@ -753,6 +754,16 @@ def marshal_CreateSSHKeyRequest(
753754
}
754755

755756

757+
def marshal_CreateUserRequest(
758+
request: CreateUserRequest,
759+
defaults: ProfileDefaults,
760+
) -> Dict[str, Any]:
761+
return {
762+
"email": request.email,
763+
"organization_id": request.organization_id or defaults.default_organization_id,
764+
}
765+
766+
756767
def marshal_RemoveGroupMemberRequest(
757768
request: RemoveGroupMemberRequest,
758769
defaults: ProfileDefaults,

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -991,6 +991,19 @@ class DeleteUserRequest:
991991
"""
992992

993993

994+
@dataclass
995+
class CreateUserRequest:
996+
organization_id: Optional[str]
997+
"""
998+
ID of the Organization.
999+
"""
1000+
1001+
email: str
1002+
"""
1003+
Email of the user.
1004+
"""
1005+
1006+
9941007
@dataclass
9951008
class ListApplicationsRequest:
9961009
order_by: Optional[ListApplicationsRequestOrderBy]

scaleway/scaleway/iam/v1alpha1/api.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
User,
4848
CreateSSHKeyRequest,
4949
UpdateSSHKeyRequest,
50+
CreateUserRequest,
5051
CreateApplicationRequest,
5152
UpdateApplicationRequest,
5253
CreateGroupRequest,
@@ -69,6 +70,7 @@
6970
marshal_CreateGroupRequest,
7071
marshal_CreatePolicyRequest,
7172
marshal_CreateSSHKeyRequest,
73+
marshal_CreateUserRequest,
7274
marshal_RemoveGroupMemberRequest,
7375
marshal_SetGroupMembersRequest,
7476
marshal_SetRulesRequest,
@@ -464,6 +466,40 @@ def delete_user(
464466
self._throw_on_error(res)
465467
return None
466468

469+
def create_user(
470+
self,
471+
*,
472+
email: str,
473+
organization_id: Optional[str] = None,
474+
) -> User:
475+
"""
476+
Create a new user.
477+
Create a new user. You must define the `organization_id` and the `email` in your request.
478+
:param organization_id: ID of the Organization.
479+
:param email: Email of the user.
480+
:return: :class:`User <User>`
481+
482+
Usage:
483+
::
484+
485+
result = api.create_user(email="example")
486+
"""
487+
488+
res = self._request(
489+
"POST",
490+
f"/iam/v1alpha1/users",
491+
body=marshal_CreateUserRequest(
492+
CreateUserRequest(
493+
email=email,
494+
organization_id=organization_id,
495+
),
496+
self.client,
497+
),
498+
)
499+
500+
self._throw_on_error(res)
501+
return unmarshal_User(res.json())
502+
467503
def list_applications(
468504
self,
469505
*,

scaleway/scaleway/iam/v1alpha1/marshalling.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
User,
3535
CreateSSHKeyRequest,
3636
UpdateSSHKeyRequest,
37+
CreateUserRequest,
3738
CreateApplicationRequest,
3839
UpdateApplicationRequest,
3940
CreateGroupRequest,
@@ -753,6 +754,16 @@ def marshal_CreateSSHKeyRequest(
753754
}
754755

755756

757+
def marshal_CreateUserRequest(
758+
request: CreateUserRequest,
759+
defaults: ProfileDefaults,
760+
) -> Dict[str, Any]:
761+
return {
762+
"email": request.email,
763+
"organization_id": request.organization_id or defaults.default_organization_id,
764+
}
765+
766+
756767
def marshal_RemoveGroupMemberRequest(
757768
request: RemoveGroupMemberRequest,
758769
defaults: ProfileDefaults,

scaleway/scaleway/iam/v1alpha1/types.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -991,6 +991,19 @@ class DeleteUserRequest:
991991
"""
992992

993993

994+
@dataclass
995+
class CreateUserRequest:
996+
organization_id: Optional[str]
997+
"""
998+
ID of the Organization.
999+
"""
1000+
1001+
email: str
1002+
"""
1003+
Email of the user.
1004+
"""
1005+
1006+
9941007
@dataclass
9951008
class ListApplicationsRequest:
9961009
order_by: Optional[ListApplicationsRequestOrderBy]

0 commit comments

Comments
 (0)