Skip to content

Commit 79c7152

Browse files
authored
feat(k8s): add cluster types compatibility (#249)
1 parent b6051f2 commit 79c7152

File tree

8 files changed

+176
-0
lines changed

8 files changed

+176
-0
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from .types import CreateClusterRequestPoolConfigUpgradePolicy
2727
from .types import CreatePoolRequestUpgradePolicy
2828
from .types import ExternalNode
29+
from .types import ListClusterAvailableTypesResponse
2930
from .types import ListClusterAvailableVersionsResponse
3031
from .types import ListClusterTypesResponse
3132
from .types import ListClustersResponse
@@ -73,6 +74,7 @@
7374
"CreateClusterRequestPoolConfigUpgradePolicy",
7475
"CreatePoolRequestUpgradePolicy",
7576
"ExternalNode",
77+
"ListClusterAvailableTypesResponse",
7678
"ListClusterAvailableVersionsResponse",
7779
"ListClusterTypesResponse",
7880
"ListClustersResponse",

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
CreateClusterRequestPoolConfig,
3737
CreatePoolRequestUpgradePolicy,
3838
ExternalNode,
39+
ListClusterAvailableTypesResponse,
3940
ListClusterAvailableVersionsResponse,
4041
ListClusterTypesResponse,
4142
ListClustersResponse,
@@ -77,6 +78,7 @@
7778
unmarshal_Pool,
7879
unmarshal_Version,
7980
unmarshal_ExternalNode,
81+
unmarshal_ListClusterAvailableTypesResponse,
8082
unmarshal_ListClusterAvailableVersionsResponse,
8183
unmarshal_ListClusterTypesResponse,
8284
unmarshal_ListClustersResponse,
@@ -605,6 +607,38 @@ async def list_cluster_available_versions(
605607
self._throw_on_error(res)
606608
return unmarshal_ListClusterAvailableVersionsResponse(res.json())
607609

610+
async def list_cluster_available_types(
611+
self,
612+
*,
613+
cluster_id: str,
614+
region: Optional[Region] = None,
615+
) -> ListClusterAvailableTypesResponse:
616+
"""
617+
List available cluster types for a cluster.
618+
List the cluster types that a specific Kubernetes cluster is allowed to switch to.
619+
:param region: Region to target. If none is passed will use default region from the config.
620+
:param cluster_id: Cluster ID for which the available Kubernetes types will be listed.
621+
:return: :class:`ListClusterAvailableTypesResponse <ListClusterAvailableTypesResponse>`
622+
623+
Usage:
624+
::
625+
626+
result = await api.list_cluster_available_types(cluster_id="example")
627+
"""
628+
629+
param_region = validate_path_param(
630+
"region", region or self.client.default_region
631+
)
632+
param_cluster_id = validate_path_param("cluster_id", cluster_id)
633+
634+
res = self._request(
635+
"GET",
636+
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/available-types",
637+
)
638+
639+
self._throw_on_error(res)
640+
return unmarshal_ListClusterAvailableTypesResponse(res.json())
641+
608642
async def _get_cluster_kube_config(
609643
self,
610644
*,

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
CreateClusterRequestPoolConfigUpgradePolicy,
3030
CreatePoolRequestUpgradePolicy,
3131
ExternalNode,
32+
ListClusterAvailableTypesResponse,
3233
ListClusterAvailableVersionsResponse,
3334
ListClusterTypesResponse,
3435
ListClustersResponse,
@@ -501,6 +502,27 @@ def unmarshal_ExternalNode(data: Any) -> ExternalNode:
501502
return ExternalNode(**args)
502503

503504

505+
def unmarshal_ListClusterAvailableTypesResponse(
506+
data: Any,
507+
) -> ListClusterAvailableTypesResponse:
508+
if type(data) is not dict:
509+
raise TypeError(
510+
f"Unmarshalling the type 'ListClusterAvailableTypesResponse' failed as data isn't a dictionary."
511+
)
512+
513+
args: Dict[str, Any] = {}
514+
515+
field = data.get("cluster_types", None)
516+
args["cluster_types"] = (
517+
[unmarshal_ClusterType(v) for v in field] if field is not None else None
518+
)
519+
520+
field = data.get("total_count", None)
521+
args["total_count"] = field
522+
523+
return ListClusterAvailableTypesResponse(**args)
524+
525+
504526
def unmarshal_ListClusterAvailableVersionsResponse(
505527
data: Any,
506528
) -> ListClusterAvailableVersionsResponse:

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,23 @@ class ExternalNode:
707707
external_ip: str
708708

709709

710+
@dataclass
711+
class ListClusterAvailableTypesResponse:
712+
"""
713+
List cluster available types response.
714+
"""
715+
716+
cluster_types: List[ClusterType]
717+
"""
718+
Available cluster types for the cluster.
719+
"""
720+
721+
total_count: int
722+
"""
723+
Total number of types.
724+
"""
725+
726+
710727
@dataclass
711728
class ListClusterAvailableVersionsResponse:
712729
"""
@@ -1499,6 +1516,19 @@ class ListClusterAvailableVersionsRequest:
14991516
"""
15001517

15011518

1519+
@dataclass
1520+
class ListClusterAvailableTypesRequest:
1521+
region: Optional[Region]
1522+
"""
1523+
Region to target. If none is passed will use default region from the config.
1524+
"""
1525+
1526+
cluster_id: str
1527+
"""
1528+
Cluster ID for which the available Kubernetes types will be listed.
1529+
"""
1530+
1531+
15021532
@dataclass
15031533
class ResetClusterAdminTokenRequest:
15041534
region: Optional[Region]

scaleway/scaleway/k8s/v1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from .types import CreateClusterRequestPoolConfigUpgradePolicy
2727
from .types import CreatePoolRequestUpgradePolicy
2828
from .types import ExternalNode
29+
from .types import ListClusterAvailableTypesResponse
2930
from .types import ListClusterAvailableVersionsResponse
3031
from .types import ListClusterTypesResponse
3132
from .types import ListClustersResponse
@@ -73,6 +74,7 @@
7374
"CreateClusterRequestPoolConfigUpgradePolicy",
7475
"CreatePoolRequestUpgradePolicy",
7576
"ExternalNode",
77+
"ListClusterAvailableTypesResponse",
7678
"ListClusterAvailableVersionsResponse",
7779
"ListClusterTypesResponse",
7880
"ListClustersResponse",

scaleway/scaleway/k8s/v1/api.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
CreateClusterRequestPoolConfig,
3737
CreatePoolRequestUpgradePolicy,
3838
ExternalNode,
39+
ListClusterAvailableTypesResponse,
3940
ListClusterAvailableVersionsResponse,
4041
ListClusterTypesResponse,
4142
ListClustersResponse,
@@ -77,6 +78,7 @@
7778
unmarshal_Pool,
7879
unmarshal_Version,
7980
unmarshal_ExternalNode,
81+
unmarshal_ListClusterAvailableTypesResponse,
8082
unmarshal_ListClusterAvailableVersionsResponse,
8183
unmarshal_ListClusterTypesResponse,
8284
unmarshal_ListClustersResponse,
@@ -605,6 +607,38 @@ def list_cluster_available_versions(
605607
self._throw_on_error(res)
606608
return unmarshal_ListClusterAvailableVersionsResponse(res.json())
607609

610+
def list_cluster_available_types(
611+
self,
612+
*,
613+
cluster_id: str,
614+
region: Optional[Region] = None,
615+
) -> ListClusterAvailableTypesResponse:
616+
"""
617+
List available cluster types for a cluster.
618+
List the cluster types that a specific Kubernetes cluster is allowed to switch to.
619+
:param region: Region to target. If none is passed will use default region from the config.
620+
:param cluster_id: Cluster ID for which the available Kubernetes types will be listed.
621+
:return: :class:`ListClusterAvailableTypesResponse <ListClusterAvailableTypesResponse>`
622+
623+
Usage:
624+
::
625+
626+
result = api.list_cluster_available_types(cluster_id="example")
627+
"""
628+
629+
param_region = validate_path_param(
630+
"region", region or self.client.default_region
631+
)
632+
param_cluster_id = validate_path_param("cluster_id", cluster_id)
633+
634+
res = self._request(
635+
"GET",
636+
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/available-types",
637+
)
638+
639+
self._throw_on_error(res)
640+
return unmarshal_ListClusterAvailableTypesResponse(res.json())
641+
608642
def _get_cluster_kube_config(
609643
self,
610644
*,

scaleway/scaleway/k8s/v1/marshalling.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
CreateClusterRequestPoolConfigUpgradePolicy,
3030
CreatePoolRequestUpgradePolicy,
3131
ExternalNode,
32+
ListClusterAvailableTypesResponse,
3233
ListClusterAvailableVersionsResponse,
3334
ListClusterTypesResponse,
3435
ListClustersResponse,
@@ -501,6 +502,27 @@ def unmarshal_ExternalNode(data: Any) -> ExternalNode:
501502
return ExternalNode(**args)
502503

503504

505+
def unmarshal_ListClusterAvailableTypesResponse(
506+
data: Any,
507+
) -> ListClusterAvailableTypesResponse:
508+
if type(data) is not dict:
509+
raise TypeError(
510+
f"Unmarshalling the type 'ListClusterAvailableTypesResponse' failed as data isn't a dictionary."
511+
)
512+
513+
args: Dict[str, Any] = {}
514+
515+
field = data.get("cluster_types", None)
516+
args["cluster_types"] = (
517+
[unmarshal_ClusterType(v) for v in field] if field is not None else None
518+
)
519+
520+
field = data.get("total_count", None)
521+
args["total_count"] = field
522+
523+
return ListClusterAvailableTypesResponse(**args)
524+
525+
504526
def unmarshal_ListClusterAvailableVersionsResponse(
505527
data: Any,
506528
) -> ListClusterAvailableVersionsResponse:

scaleway/scaleway/k8s/v1/types.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,23 @@ class ExternalNode:
707707
external_ip: str
708708

709709

710+
@dataclass
711+
class ListClusterAvailableTypesResponse:
712+
"""
713+
List cluster available types response.
714+
"""
715+
716+
cluster_types: List[ClusterType]
717+
"""
718+
Available cluster types for the cluster.
719+
"""
720+
721+
total_count: int
722+
"""
723+
Total number of types.
724+
"""
725+
726+
710727
@dataclass
711728
class ListClusterAvailableVersionsResponse:
712729
"""
@@ -1499,6 +1516,19 @@ class ListClusterAvailableVersionsRequest:
14991516
"""
15001517

15011518

1519+
@dataclass
1520+
class ListClusterAvailableTypesRequest:
1521+
region: Optional[Region]
1522+
"""
1523+
Region to target. If none is passed will use default region from the config.
1524+
"""
1525+
1526+
cluster_id: str
1527+
"""
1528+
Cluster ID for which the available Kubernetes types will be listed.
1529+
"""
1530+
1531+
15021532
@dataclass
15031533
class ResetClusterAdminTokenRequest:
15041534
region: Optional[Region]

0 commit comments

Comments
 (0)