Skip to content

feat(k8s): expose ACL routes in SDK #726

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Nov 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions scaleway-async/scaleway_async/k8s/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
from .types import ClusterAutoscalerConfig
from .types import ClusterOpenIDConnectConfig
from .types import Pool
from .types import ACLRuleRequest
from .types import ACLRule
from .types import CreateClusterRequestAutoUpgrade
from .types import CreateClusterRequestAutoscalerConfig
from .types import CreateClusterRequestOpenIDConnectConfig
Expand All @@ -39,10 +41,13 @@
from .types import UpdateClusterRequestAutoscalerConfig
from .types import UpdateClusterRequestOpenIDConnectConfig
from .types import UpdatePoolRequestUpgradePolicy
from .types import AddClusterACLRulesRequest
from .types import AddClusterACLRulesResponse
from .types import AuthExternalNodeRequest
from .types import CreateClusterRequest
from .types import CreateExternalNodeRequest
from .types import CreatePoolRequest
from .types import DeleteACLRuleRequest
from .types import DeleteClusterRequest
from .types import DeleteNodeRequest
from .types import DeletePoolRequest
Expand All @@ -54,6 +59,8 @@
from .types import GetNodeRequest
from .types import GetPoolRequest
from .types import GetVersionRequest
from .types import ListClusterACLRulesRequest
from .types import ListClusterACLRulesResponse
from .types import ListClusterAvailableTypesRequest
from .types import ListClusterAvailableTypesResponse
from .types import ListClusterAvailableVersionsRequest
Expand All @@ -73,6 +80,8 @@
from .types import RebootNodeRequest
from .types import ReplaceNodeRequest
from .types import ResetClusterAdminTokenRequest
from .types import SetClusterACLRulesRequest
from .types import SetClusterACLRulesResponse
from .types import SetClusterTypeRequest
from .types import UpdateClusterRequest
from .types import UpdatePoolRequest
Expand Down Expand Up @@ -105,6 +114,8 @@
"ClusterAutoscalerConfig",
"ClusterOpenIDConnectConfig",
"Pool",
"ACLRuleRequest",
"ACLRule",
"CreateClusterRequestAutoUpgrade",
"CreateClusterRequestAutoscalerConfig",
"CreateClusterRequestOpenIDConnectConfig",
Expand All @@ -120,10 +131,13 @@
"UpdateClusterRequestAutoscalerConfig",
"UpdateClusterRequestOpenIDConnectConfig",
"UpdatePoolRequestUpgradePolicy",
"AddClusterACLRulesRequest",
"AddClusterACLRulesResponse",
"AuthExternalNodeRequest",
"CreateClusterRequest",
"CreateExternalNodeRequest",
"CreatePoolRequest",
"DeleteACLRuleRequest",
"DeleteClusterRequest",
"DeleteNodeRequest",
"DeletePoolRequest",
Expand All @@ -135,6 +149,8 @@
"GetNodeRequest",
"GetPoolRequest",
"GetVersionRequest",
"ListClusterACLRulesRequest",
"ListClusterACLRulesResponse",
"ListClusterAvailableTypesRequest",
"ListClusterAvailableTypesResponse",
"ListClusterAvailableVersionsRequest",
Expand All @@ -154,6 +170,8 @@
"RebootNodeRequest",
"ReplaceNodeRequest",
"ResetClusterAdminTokenRequest",
"SetClusterACLRulesRequest",
"SetClusterACLRulesResponse",
"SetClusterTypeRequest",
"UpdateClusterRequest",
"UpdatePoolRequest",
Expand Down
210 changes: 210 additions & 0 deletions scaleway-async/scaleway_async/k8s/v1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@
PoolStatus,
PoolVolumeType,
Runtime,
ACLRule,
ACLRuleRequest,
AddClusterACLRulesRequest,
AddClusterACLRulesResponse,
Cluster,
ClusterType,
CreateClusterRequest,
Expand All @@ -38,6 +42,7 @@
CreatePoolRequestUpgradePolicy,
ExternalNode,
ExternalNodeAuth,
ListClusterACLRulesResponse,
ListClusterAvailableTypesResponse,
ListClusterAvailableVersionsResponse,
ListClusterTypesResponse,
Expand All @@ -48,6 +53,8 @@
Node,
NodeMetadata,
Pool,
SetClusterACLRulesRequest,
SetClusterACLRulesResponse,
SetClusterTypeRequest,
UpdateClusterRequest,
UpdateClusterRequestAutoUpgrade,
Expand All @@ -69,8 +76,10 @@
unmarshal_Version,
unmarshal_Cluster,
unmarshal_Node,
unmarshal_AddClusterACLRulesResponse,
unmarshal_ExternalNode,
unmarshal_ExternalNodeAuth,
unmarshal_ListClusterACLRulesResponse,
unmarshal_ListClusterAvailableTypesResponse,
unmarshal_ListClusterAvailableVersionsResponse,
unmarshal_ListClusterTypesResponse,
Expand All @@ -79,8 +88,11 @@
unmarshal_ListPoolsResponse,
unmarshal_ListVersionsResponse,
unmarshal_NodeMetadata,
unmarshal_SetClusterACLRulesResponse,
marshal_AddClusterACLRulesRequest,
marshal_CreateClusterRequest,
marshal_CreatePoolRequest,
marshal_SetClusterACLRulesRequest,
marshal_SetClusterTypeRequest,
marshal_UpdateClusterRequest,
marshal_UpdatePoolRequest,
Expand Down Expand Up @@ -749,6 +761,204 @@ async def migrate_cluster_to_sbscsi(
self._throw_on_error(res)
return unmarshal_Cluster(res.json())

async def list_cluster_acl_rules(
self,
*,
cluster_id: str,
region: Optional[Region] = None,
page: Optional[int] = None,
page_size: Optional[int] = None,
) -> ListClusterACLRulesResponse:
"""
List ACLs.
List ACLs for a specific cluster.
:param cluster_id: ID of the cluster whose ACLs will be listed.
:param region: Region to target. If none is passed will use default region from the config.
:param page: Page number for the returned ACLs.
:param page_size: Maximum number of ACLs per page.
:return: :class:`ListClusterACLRulesResponse <ListClusterACLRulesResponse>`

Usage:
::

result = await api.list_cluster_acl_rules(
cluster_id="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_cluster_id = validate_path_param("cluster_id", cluster_id)

res = self._request(
"GET",
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/acls",
params={
"page": page,
"page_size": page_size or self.client.default_page_size,
},
)

self._throw_on_error(res)
return unmarshal_ListClusterACLRulesResponse(res.json())

async def list_cluster_acl_rules_all(
self,
*,
cluster_id: str,
region: Optional[Region] = None,
page: Optional[int] = None,
page_size: Optional[int] = None,
) -> List[ACLRule]:
"""
List ACLs.
List ACLs for a specific cluster.
:param cluster_id: ID of the cluster whose ACLs will be listed.
:param region: Region to target. If none is passed will use default region from the config.
:param page: Page number for the returned ACLs.
:param page_size: Maximum number of ACLs per page.
:return: :class:`List[ACLRule] <List[ACLRule]>`

Usage:
::

result = await api.list_cluster_acl_rules_all(
cluster_id="example",
)
"""

return await fetch_all_pages_async(
type=ListClusterACLRulesResponse,
key="rules",
fetcher=self.list_cluster_acl_rules,
args={
"cluster_id": cluster_id,
"region": region,
"page": page,
"page_size": page_size,
},
)

async def add_cluster_acl_rules(
self,
*,
cluster_id: str,
region: Optional[Region] = None,
acls: Optional[List[ACLRuleRequest]] = None,
) -> AddClusterACLRulesResponse:
"""
Add new ACLs.
Add new ACL rules for a specific cluster.
:param cluster_id: ID of the cluster whose ACLs will be added.
:param region: Region to target. If none is passed will use default region from the config.
:param acls: ACLs to add.
:return: :class:`AddClusterACLRulesResponse <AddClusterACLRulesResponse>`

Usage:
::

result = await api.add_cluster_acl_rules(
cluster_id="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_cluster_id = validate_path_param("cluster_id", cluster_id)

res = self._request(
"POST",
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/acls",
body=marshal_AddClusterACLRulesRequest(
AddClusterACLRulesRequest(
cluster_id=cluster_id,
region=region,
acls=acls,
),
self.client,
),
)

self._throw_on_error(res)
return unmarshal_AddClusterACLRulesResponse(res.json())

async def set_cluster_acl_rules(
self,
*,
cluster_id: str,
region: Optional[Region] = None,
acls: Optional[List[ACLRuleRequest]] = None,
) -> SetClusterACLRulesResponse:
"""
Set new ACLs.
Set new ACL rules for a specific cluster.
:param cluster_id: ID of the cluster whose ACLs will be set.
:param region: Region to target. If none is passed will use default region from the config.
:param acls: ACLs to set.
:return: :class:`SetClusterACLRulesResponse <SetClusterACLRulesResponse>`

Usage:
::

result = await api.set_cluster_acl_rules(
cluster_id="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_cluster_id = validate_path_param("cluster_id", cluster_id)

res = self._request(
"PUT",
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/acls",
body=marshal_SetClusterACLRulesRequest(
SetClusterACLRulesRequest(
cluster_id=cluster_id,
region=region,
acls=acls,
),
self.client,
),
)

self._throw_on_error(res)
return unmarshal_SetClusterACLRulesResponse(res.json())

async def delete_acl_rule(
self,
*,
acl_id: str,
region: Optional[Region] = None,
) -> None:
"""
Delete an existing ACL.
:param acl_id: ID of the ACL rule to delete.
:param region: Region to target. If none is passed will use default region from the config.

Usage:
::

result = await api.delete_acl_rule(
acl_id="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_acl_id = validate_path_param("acl_id", acl_id)

res = self._request(
"DELETE",
f"/k8s/v1/regions/{param_region}/acls/{param_acl_id}",
)

self._throw_on_error(res)

async def list_pools(
self,
*,
Expand Down
Loading