Skip to content

Commit 323accf

Browse files
feat(k8s): expose ACL routes in SDK (#726)
Co-authored-by: Laure-di <[email protected]>
1 parent ac2d32b commit 323accf

File tree

8 files changed

+998
-0
lines changed

8 files changed

+998
-0
lines changed

scaleway-async/scaleway_async/k8s/v1/__init__.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
from .types import ClusterAutoscalerConfig
2525
from .types import ClusterOpenIDConnectConfig
2626
from .types import Pool
27+
from .types import ACLRuleRequest
28+
from .types import ACLRule
2729
from .types import CreateClusterRequestAutoUpgrade
2830
from .types import CreateClusterRequestAutoscalerConfig
2931
from .types import CreateClusterRequestOpenIDConnectConfig
@@ -39,10 +41,13 @@
3941
from .types import UpdateClusterRequestAutoscalerConfig
4042
from .types import UpdateClusterRequestOpenIDConnectConfig
4143
from .types import UpdatePoolRequestUpgradePolicy
44+
from .types import AddClusterACLRulesRequest
45+
from .types import AddClusterACLRulesResponse
4246
from .types import AuthExternalNodeRequest
4347
from .types import CreateClusterRequest
4448
from .types import CreateExternalNodeRequest
4549
from .types import CreatePoolRequest
50+
from .types import DeleteACLRuleRequest
4651
from .types import DeleteClusterRequest
4752
from .types import DeleteNodeRequest
4853
from .types import DeletePoolRequest
@@ -54,6 +59,8 @@
5459
from .types import GetNodeRequest
5560
from .types import GetPoolRequest
5661
from .types import GetVersionRequest
62+
from .types import ListClusterACLRulesRequest
63+
from .types import ListClusterACLRulesResponse
5764
from .types import ListClusterAvailableTypesRequest
5865
from .types import ListClusterAvailableTypesResponse
5966
from .types import ListClusterAvailableVersionsRequest
@@ -73,6 +80,8 @@
7380
from .types import RebootNodeRequest
7481
from .types import ReplaceNodeRequest
7582
from .types import ResetClusterAdminTokenRequest
83+
from .types import SetClusterACLRulesRequest
84+
from .types import SetClusterACLRulesResponse
7685
from .types import SetClusterTypeRequest
7786
from .types import UpdateClusterRequest
7887
from .types import UpdatePoolRequest
@@ -105,6 +114,8 @@
105114
"ClusterAutoscalerConfig",
106115
"ClusterOpenIDConnectConfig",
107116
"Pool",
117+
"ACLRuleRequest",
118+
"ACLRule",
108119
"CreateClusterRequestAutoUpgrade",
109120
"CreateClusterRequestAutoscalerConfig",
110121
"CreateClusterRequestOpenIDConnectConfig",
@@ -120,10 +131,13 @@
120131
"UpdateClusterRequestAutoscalerConfig",
121132
"UpdateClusterRequestOpenIDConnectConfig",
122133
"UpdatePoolRequestUpgradePolicy",
134+
"AddClusterACLRulesRequest",
135+
"AddClusterACLRulesResponse",
123136
"AuthExternalNodeRequest",
124137
"CreateClusterRequest",
125138
"CreateExternalNodeRequest",
126139
"CreatePoolRequest",
140+
"DeleteACLRuleRequest",
127141
"DeleteClusterRequest",
128142
"DeleteNodeRequest",
129143
"DeletePoolRequest",
@@ -135,6 +149,8 @@
135149
"GetNodeRequest",
136150
"GetPoolRequest",
137151
"GetVersionRequest",
152+
"ListClusterACLRulesRequest",
153+
"ListClusterACLRulesResponse",
138154
"ListClusterAvailableTypesRequest",
139155
"ListClusterAvailableTypesResponse",
140156
"ListClusterAvailableVersionsRequest",
@@ -154,6 +170,8 @@
154170
"RebootNodeRequest",
155171
"ReplaceNodeRequest",
156172
"ResetClusterAdminTokenRequest",
173+
"SetClusterACLRulesRequest",
174+
"SetClusterACLRulesResponse",
157175
"SetClusterTypeRequest",
158176
"UpdateClusterRequest",
159177
"UpdatePoolRequest",

scaleway-async/scaleway_async/k8s/v1/api.py

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@
2727
PoolStatus,
2828
PoolVolumeType,
2929
Runtime,
30+
ACLRule,
31+
ACLRuleRequest,
32+
AddClusterACLRulesRequest,
33+
AddClusterACLRulesResponse,
3034
Cluster,
3135
ClusterType,
3236
CreateClusterRequest,
@@ -38,6 +42,7 @@
3842
CreatePoolRequestUpgradePolicy,
3943
ExternalNode,
4044
ExternalNodeAuth,
45+
ListClusterACLRulesResponse,
4146
ListClusterAvailableTypesResponse,
4247
ListClusterAvailableVersionsResponse,
4348
ListClusterTypesResponse,
@@ -48,6 +53,8 @@
4853
Node,
4954
NodeMetadata,
5055
Pool,
56+
SetClusterACLRulesRequest,
57+
SetClusterACLRulesResponse,
5158
SetClusterTypeRequest,
5259
UpdateClusterRequest,
5360
UpdateClusterRequestAutoUpgrade,
@@ -69,8 +76,10 @@
6976
unmarshal_Version,
7077
unmarshal_Cluster,
7178
unmarshal_Node,
79+
unmarshal_AddClusterACLRulesResponse,
7280
unmarshal_ExternalNode,
7381
unmarshal_ExternalNodeAuth,
82+
unmarshal_ListClusterACLRulesResponse,
7483
unmarshal_ListClusterAvailableTypesResponse,
7584
unmarshal_ListClusterAvailableVersionsResponse,
7685
unmarshal_ListClusterTypesResponse,
@@ -79,8 +88,11 @@
7988
unmarshal_ListPoolsResponse,
8089
unmarshal_ListVersionsResponse,
8190
unmarshal_NodeMetadata,
91+
unmarshal_SetClusterACLRulesResponse,
92+
marshal_AddClusterACLRulesRequest,
8293
marshal_CreateClusterRequest,
8394
marshal_CreatePoolRequest,
95+
marshal_SetClusterACLRulesRequest,
8496
marshal_SetClusterTypeRequest,
8597
marshal_UpdateClusterRequest,
8698
marshal_UpdatePoolRequest,
@@ -749,6 +761,204 @@ async def migrate_cluster_to_sbscsi(
749761
self._throw_on_error(res)
750762
return unmarshal_Cluster(res.json())
751763

764+
async def list_cluster_acl_rules(
765+
self,
766+
*,
767+
cluster_id: str,
768+
region: Optional[Region] = None,
769+
page: Optional[int] = None,
770+
page_size: Optional[int] = None,
771+
) -> ListClusterACLRulesResponse:
772+
"""
773+
List ACLs.
774+
List ACLs for a specific cluster.
775+
:param cluster_id: ID of the cluster whose ACLs will be listed.
776+
:param region: Region to target. If none is passed will use default region from the config.
777+
:param page: Page number for the returned ACLs.
778+
:param page_size: Maximum number of ACLs per page.
779+
:return: :class:`ListClusterACLRulesResponse <ListClusterACLRulesResponse>`
780+
781+
Usage:
782+
::
783+
784+
result = await api.list_cluster_acl_rules(
785+
cluster_id="example",
786+
)
787+
"""
788+
789+
param_region = validate_path_param(
790+
"region", region or self.client.default_region
791+
)
792+
param_cluster_id = validate_path_param("cluster_id", cluster_id)
793+
794+
res = self._request(
795+
"GET",
796+
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/acls",
797+
params={
798+
"page": page,
799+
"page_size": page_size or self.client.default_page_size,
800+
},
801+
)
802+
803+
self._throw_on_error(res)
804+
return unmarshal_ListClusterACLRulesResponse(res.json())
805+
806+
async def list_cluster_acl_rules_all(
807+
self,
808+
*,
809+
cluster_id: str,
810+
region: Optional[Region] = None,
811+
page: Optional[int] = None,
812+
page_size: Optional[int] = None,
813+
) -> List[ACLRule]:
814+
"""
815+
List ACLs.
816+
List ACLs for a specific cluster.
817+
:param cluster_id: ID of the cluster whose ACLs will be listed.
818+
:param region: Region to target. If none is passed will use default region from the config.
819+
:param page: Page number for the returned ACLs.
820+
:param page_size: Maximum number of ACLs per page.
821+
:return: :class:`List[ACLRule] <List[ACLRule]>`
822+
823+
Usage:
824+
::
825+
826+
result = await api.list_cluster_acl_rules_all(
827+
cluster_id="example",
828+
)
829+
"""
830+
831+
return await fetch_all_pages_async(
832+
type=ListClusterACLRulesResponse,
833+
key="rules",
834+
fetcher=self.list_cluster_acl_rules,
835+
args={
836+
"cluster_id": cluster_id,
837+
"region": region,
838+
"page": page,
839+
"page_size": page_size,
840+
},
841+
)
842+
843+
async def add_cluster_acl_rules(
844+
self,
845+
*,
846+
cluster_id: str,
847+
region: Optional[Region] = None,
848+
acls: Optional[List[ACLRuleRequest]] = None,
849+
) -> AddClusterACLRulesResponse:
850+
"""
851+
Add new ACLs.
852+
Add new ACL rules for a specific cluster.
853+
:param cluster_id: ID of the cluster whose ACLs will be added.
854+
:param region: Region to target. If none is passed will use default region from the config.
855+
:param acls: ACLs to add.
856+
:return: :class:`AddClusterACLRulesResponse <AddClusterACLRulesResponse>`
857+
858+
Usage:
859+
::
860+
861+
result = await api.add_cluster_acl_rules(
862+
cluster_id="example",
863+
)
864+
"""
865+
866+
param_region = validate_path_param(
867+
"region", region or self.client.default_region
868+
)
869+
param_cluster_id = validate_path_param("cluster_id", cluster_id)
870+
871+
res = self._request(
872+
"POST",
873+
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/acls",
874+
body=marshal_AddClusterACLRulesRequest(
875+
AddClusterACLRulesRequest(
876+
cluster_id=cluster_id,
877+
region=region,
878+
acls=acls,
879+
),
880+
self.client,
881+
),
882+
)
883+
884+
self._throw_on_error(res)
885+
return unmarshal_AddClusterACLRulesResponse(res.json())
886+
887+
async def set_cluster_acl_rules(
888+
self,
889+
*,
890+
cluster_id: str,
891+
region: Optional[Region] = None,
892+
acls: Optional[List[ACLRuleRequest]] = None,
893+
) -> SetClusterACLRulesResponse:
894+
"""
895+
Set new ACLs.
896+
Set new ACL rules for a specific cluster.
897+
:param cluster_id: ID of the cluster whose ACLs will be set.
898+
:param region: Region to target. If none is passed will use default region from the config.
899+
:param acls: ACLs to set.
900+
:return: :class:`SetClusterACLRulesResponse <SetClusterACLRulesResponse>`
901+
902+
Usage:
903+
::
904+
905+
result = await api.set_cluster_acl_rules(
906+
cluster_id="example",
907+
)
908+
"""
909+
910+
param_region = validate_path_param(
911+
"region", region or self.client.default_region
912+
)
913+
param_cluster_id = validate_path_param("cluster_id", cluster_id)
914+
915+
res = self._request(
916+
"PUT",
917+
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/acls",
918+
body=marshal_SetClusterACLRulesRequest(
919+
SetClusterACLRulesRequest(
920+
cluster_id=cluster_id,
921+
region=region,
922+
acls=acls,
923+
),
924+
self.client,
925+
),
926+
)
927+
928+
self._throw_on_error(res)
929+
return unmarshal_SetClusterACLRulesResponse(res.json())
930+
931+
async def delete_acl_rule(
932+
self,
933+
*,
934+
acl_id: str,
935+
region: Optional[Region] = None,
936+
) -> None:
937+
"""
938+
Delete an existing ACL.
939+
:param acl_id: ID of the ACL rule to delete.
940+
:param region: Region to target. If none is passed will use default region from the config.
941+
942+
Usage:
943+
::
944+
945+
result = await api.delete_acl_rule(
946+
acl_id="example",
947+
)
948+
"""
949+
950+
param_region = validate_path_param(
951+
"region", region or self.client.default_region
952+
)
953+
param_acl_id = validate_path_param("acl_id", acl_id)
954+
955+
res = self._request(
956+
"DELETE",
957+
f"/k8s/v1/regions/{param_region}/acls/{param_acl_id}",
958+
)
959+
960+
self._throw_on_error(res)
961+
752962
async def list_pools(
753963
self,
754964
*,

0 commit comments

Comments
 (0)