Skip to content

Commit 39d9dc8

Browse files
scaleway-botMia-CrossremyleoneLaure-di
authored
feat(iam/v1alpha1): add ParseSamlMetadata (#1322)
Co-authored-by: Mia-Cross <lmarabese@scaleway.com> Co-authored-by: Rémy Léone <rleone@scaleway.com> Co-authored-by: Laure-di <62625835+Laure-di@users.noreply.github.com>
1 parent a8d4664 commit 39d9dc8

File tree

8 files changed

+204
-0
lines changed

8 files changed

+204
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@
112112
from .types import MFAOTP
113113
from .types import Organization
114114
from .types import OrganizationSecuritySettings
115+
from .types import ParseSamlMetadataRequest
116+
from .types import ParseSamlMetadataResponse
115117
from .types import RemoveGroupMemberRequest
116118
from .types import RemoveUserConnectionRequest
117119
from .types import Saml
@@ -248,6 +250,8 @@
248250
"MFAOTP",
249251
"Organization",
250252
"OrganizationSecuritySettings",
253+
"ParseSamlMetadataRequest",
254+
"ParseSamlMetadataResponse",
251255
"RemoveGroupMemberRequest",
252256
"RemoveUserConnectionRequest",
253257
"Saml",

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
from typing import Optional
66

77
from scaleway_core.api import API
8+
from scaleway_core.bridge import (
9+
ScwFile,
10+
)
811
from scaleway_core.utils import (
912
OneOfPossibility,
1013
random_name,
@@ -64,6 +67,8 @@
6467
MFAOTP,
6568
Organization,
6669
OrganizationSecuritySettings,
70+
ParseSamlMetadataRequest,
71+
ParseSamlMetadataResponse,
6772
PermissionSet,
6873
Policy,
6974
Quotum,
@@ -123,6 +128,7 @@
123128
unmarshal_MFAOTP,
124129
unmarshal_Organization,
125130
unmarshal_OrganizationSecuritySettings,
131+
unmarshal_ParseSamlMetadataResponse,
126132
unmarshal_Saml,
127133
unmarshal_SetRulesResponse,
128134
unmarshal_ValidateUserMFAOTPResponse,
@@ -137,6 +143,7 @@
137143
marshal_CreateSSHKeyRequest,
138144
marshal_CreateUserRequest,
139145
marshal_JoinUserConnectionRequest,
146+
marshal_ParseSamlMetadataRequest,
140147
marshal_RemoveGroupMemberRequest,
141148
marshal_RemoveUserConnectionRequest,
142149
marshal_SetGroupMembersRequest,
@@ -3188,6 +3195,38 @@ async def delete_saml(
31883195

31893196
self._throw_on_error(res)
31903197

3198+
async def parse_saml_metadata(
3199+
self,
3200+
*,
3201+
file: ScwFile,
3202+
) -> ParseSamlMetadataResponse:
3203+
"""
3204+
Parse SAML xml metadata file.
3205+
:param file:
3206+
:return: :class:`ParseSamlMetadataResponse <ParseSamlMetadataResponse>`
3207+
3208+
Usage:
3209+
::
3210+
3211+
result = await api.parse_saml_metadata(
3212+
file=,
3213+
)
3214+
"""
3215+
3216+
res = self._request(
3217+
"POST",
3218+
"/iam/v1alpha1/parse-saml-metadata",
3219+
body=marshal_ParseSamlMetadataRequest(
3220+
ParseSamlMetadataRequest(
3221+
file=file,
3222+
),
3223+
self.client,
3224+
),
3225+
)
3226+
3227+
self._throw_on_error(res)
3228+
return unmarshal_ParseSamlMetadataResponse(res.json())
3229+
31913230
async def list_saml_certificates(
31923231
self,
31933232
*,

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

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
from dateutil import parser
66

77
from scaleway_core.profile import ProfileDefaults
8+
from scaleway_core.bridge import (
9+
marshal_ScwFile,
10+
)
811
from scaleway_core.utils import (
912
OneOfPossibility,
1013
resolve_one_of,
@@ -56,6 +59,7 @@
5659
MFAOTP,
5760
Organization,
5861
OrganizationSecuritySettings,
62+
ParseSamlMetadataResponse,
5963
SamlServiceProvider,
6064
Saml,
6165
SetRulesResponse,
@@ -73,6 +77,7 @@
7377
CreateUserRequestMember,
7478
CreateUserRequest,
7579
JoinUserConnectionRequest,
80+
ParseSamlMetadataRequest,
7681
RemoveGroupMemberRequest,
7782
RemoveUserConnectionRequest,
7883
SetGroupMembersRequest,
@@ -1601,6 +1606,35 @@ def unmarshal_OrganizationSecuritySettings(data: Any) -> OrganizationSecuritySet
16011606
return OrganizationSecuritySettings(**args)
16021607

16031608

1609+
def unmarshal_ParseSamlMetadataResponse(data: Any) -> ParseSamlMetadataResponse:
1610+
if not isinstance(data, dict):
1611+
raise TypeError(
1612+
"Unmarshalling the type 'ParseSamlMetadataResponse' failed as data isn't a dictionary."
1613+
)
1614+
1615+
args: dict[str, Any] = {}
1616+
1617+
field = data.get("single_sign_on_url", None)
1618+
if field is not None:
1619+
args["single_sign_on_url"] = field
1620+
else:
1621+
args["single_sign_on_url"] = None
1622+
1623+
field = data.get("entity_id", None)
1624+
if field is not None:
1625+
args["entity_id"] = field
1626+
else:
1627+
args["entity_id"] = None
1628+
1629+
field = data.get("signing_certificates", None)
1630+
if field is not None:
1631+
args["signing_certificates"] = field
1632+
else:
1633+
args["signing_certificates"] = None
1634+
1635+
return ParseSamlMetadataResponse(**args)
1636+
1637+
16041638
def unmarshal_SamlServiceProvider(data: Any) -> SamlServiceProvider:
16051639
if not isinstance(data, dict):
16061640
raise TypeError(
@@ -2020,6 +2054,18 @@ def marshal_JoinUserConnectionRequest(
20202054
return output
20212055

20222056

2057+
def marshal_ParseSamlMetadataRequest(
2058+
request: ParseSamlMetadataRequest,
2059+
defaults: ProfileDefaults,
2060+
) -> dict[str, Any]:
2061+
output: dict[str, Any] = {}
2062+
2063+
if request.file is not None:
2064+
output["file"] = marshal_ScwFile(request.file, defaults)
2065+
2066+
return output
2067+
2068+
20232069
def marshal_RemoveGroupMemberRequest(
20242070
request: RemoveGroupMemberRequest,
20252071
defaults: ProfileDefaults,

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from scaleway_core.bridge import (
1111
Region as ScwRegion,
12+
ScwFile,
1213
Zone as ScwZone,
1314
)
1415
from scaleway_core.utils import (
@@ -2139,6 +2140,18 @@ class OrganizationSecuritySettings:
21392140
"""
21402141

21412142

2143+
@dataclass
2144+
class ParseSamlMetadataRequest:
2145+
file: ScwFile
2146+
2147+
2148+
@dataclass
2149+
class ParseSamlMetadataResponse:
2150+
single_sign_on_url: str
2151+
entity_id: str
2152+
signing_certificates: list[str]
2153+
2154+
21422155
@dataclass
21432156
class RemoveGroupMemberRequest:
21442157
group_id: str

scaleway/scaleway/iam/v1alpha1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@
112112
from .types import MFAOTP
113113
from .types import Organization
114114
from .types import OrganizationSecuritySettings
115+
from .types import ParseSamlMetadataRequest
116+
from .types import ParseSamlMetadataResponse
115117
from .types import RemoveGroupMemberRequest
116118
from .types import RemoveUserConnectionRequest
117119
from .types import Saml
@@ -248,6 +250,8 @@
248250
"MFAOTP",
249251
"Organization",
250252
"OrganizationSecuritySettings",
253+
"ParseSamlMetadataRequest",
254+
"ParseSamlMetadataResponse",
251255
"RemoveGroupMemberRequest",
252256
"RemoveUserConnectionRequest",
253257
"Saml",

scaleway/scaleway/iam/v1alpha1/api.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
from typing import Optional
66

77
from scaleway_core.api import API
8+
from scaleway_core.bridge import (
9+
ScwFile,
10+
)
811
from scaleway_core.utils import (
912
OneOfPossibility,
1013
random_name,
@@ -64,6 +67,8 @@
6467
MFAOTP,
6568
Organization,
6669
OrganizationSecuritySettings,
70+
ParseSamlMetadataRequest,
71+
ParseSamlMetadataResponse,
6772
PermissionSet,
6873
Policy,
6974
Quotum,
@@ -123,6 +128,7 @@
123128
unmarshal_MFAOTP,
124129
unmarshal_Organization,
125130
unmarshal_OrganizationSecuritySettings,
131+
unmarshal_ParseSamlMetadataResponse,
126132
unmarshal_Saml,
127133
unmarshal_SetRulesResponse,
128134
unmarshal_ValidateUserMFAOTPResponse,
@@ -137,6 +143,7 @@
137143
marshal_CreateSSHKeyRequest,
138144
marshal_CreateUserRequest,
139145
marshal_JoinUserConnectionRequest,
146+
marshal_ParseSamlMetadataRequest,
140147
marshal_RemoveGroupMemberRequest,
141148
marshal_RemoveUserConnectionRequest,
142149
marshal_SetGroupMembersRequest,
@@ -3188,6 +3195,38 @@ def delete_saml(
31883195

31893196
self._throw_on_error(res)
31903197

3198+
def parse_saml_metadata(
3199+
self,
3200+
*,
3201+
file: ScwFile,
3202+
) -> ParseSamlMetadataResponse:
3203+
"""
3204+
Parse SAML xml metadata file.
3205+
:param file:
3206+
:return: :class:`ParseSamlMetadataResponse <ParseSamlMetadataResponse>`
3207+
3208+
Usage:
3209+
::
3210+
3211+
result = api.parse_saml_metadata(
3212+
file=,
3213+
)
3214+
"""
3215+
3216+
res = self._request(
3217+
"POST",
3218+
"/iam/v1alpha1/parse-saml-metadata",
3219+
body=marshal_ParseSamlMetadataRequest(
3220+
ParseSamlMetadataRequest(
3221+
file=file,
3222+
),
3223+
self.client,
3224+
),
3225+
)
3226+
3227+
self._throw_on_error(res)
3228+
return unmarshal_ParseSamlMetadataResponse(res.json())
3229+
31913230
def list_saml_certificates(
31923231
self,
31933232
*,

scaleway/scaleway/iam/v1alpha1/marshalling.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
from dateutil import parser
66

77
from scaleway_core.profile import ProfileDefaults
8+
from scaleway_core.bridge import (
9+
marshal_ScwFile,
10+
)
811
from scaleway_core.utils import (
912
OneOfPossibility,
1013
resolve_one_of,
@@ -56,6 +59,7 @@
5659
MFAOTP,
5760
Organization,
5861
OrganizationSecuritySettings,
62+
ParseSamlMetadataResponse,
5963
SamlServiceProvider,
6064
Saml,
6165
SetRulesResponse,
@@ -73,6 +77,7 @@
7377
CreateUserRequestMember,
7478
CreateUserRequest,
7579
JoinUserConnectionRequest,
80+
ParseSamlMetadataRequest,
7681
RemoveGroupMemberRequest,
7782
RemoveUserConnectionRequest,
7883
SetGroupMembersRequest,
@@ -1601,6 +1606,35 @@ def unmarshal_OrganizationSecuritySettings(data: Any) -> OrganizationSecuritySet
16011606
return OrganizationSecuritySettings(**args)
16021607

16031608

1609+
def unmarshal_ParseSamlMetadataResponse(data: Any) -> ParseSamlMetadataResponse:
1610+
if not isinstance(data, dict):
1611+
raise TypeError(
1612+
"Unmarshalling the type 'ParseSamlMetadataResponse' failed as data isn't a dictionary."
1613+
)
1614+
1615+
args: dict[str, Any] = {}
1616+
1617+
field = data.get("single_sign_on_url", None)
1618+
if field is not None:
1619+
args["single_sign_on_url"] = field
1620+
else:
1621+
args["single_sign_on_url"] = None
1622+
1623+
field = data.get("entity_id", None)
1624+
if field is not None:
1625+
args["entity_id"] = field
1626+
else:
1627+
args["entity_id"] = None
1628+
1629+
field = data.get("signing_certificates", None)
1630+
if field is not None:
1631+
args["signing_certificates"] = field
1632+
else:
1633+
args["signing_certificates"] = None
1634+
1635+
return ParseSamlMetadataResponse(**args)
1636+
1637+
16041638
def unmarshal_SamlServiceProvider(data: Any) -> SamlServiceProvider:
16051639
if not isinstance(data, dict):
16061640
raise TypeError(
@@ -2020,6 +2054,18 @@ def marshal_JoinUserConnectionRequest(
20202054
return output
20212055

20222056

2057+
def marshal_ParseSamlMetadataRequest(
2058+
request: ParseSamlMetadataRequest,
2059+
defaults: ProfileDefaults,
2060+
) -> dict[str, Any]:
2061+
output: dict[str, Any] = {}
2062+
2063+
if request.file is not None:
2064+
output["file"] = marshal_ScwFile(request.file, defaults)
2065+
2066+
return output
2067+
2068+
20232069
def marshal_RemoveGroupMemberRequest(
20242070
request: RemoveGroupMemberRequest,
20252071
defaults: ProfileDefaults,

scaleway/scaleway/iam/v1alpha1/types.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from scaleway_core.bridge import (
1111
Region as ScwRegion,
12+
ScwFile,
1213
Zone as ScwZone,
1314
)
1415
from scaleway_core.utils import (
@@ -2139,6 +2140,18 @@ class OrganizationSecuritySettings:
21392140
"""
21402141

21412142

2143+
@dataclass
2144+
class ParseSamlMetadataRequest:
2145+
file: ScwFile
2146+
2147+
2148+
@dataclass
2149+
class ParseSamlMetadataResponse:
2150+
single_sign_on_url: str
2151+
entity_id: str
2152+
signing_certificates: list[str]
2153+
2154+
21422155
@dataclass
21432156
class RemoveGroupMemberRequest:
21442157
group_id: str

0 commit comments

Comments
 (0)