Skip to content

Commit 3f2e826

Browse files
authored
feat(k8s): method to change cluster type (#100)
1 parent 4532943 commit 3f2e826

File tree

6 files changed

+158
-4
lines changed

6 files changed

+158
-4
lines changed

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

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
CreateClusterRequest,
5151
UpdateClusterRequest,
5252
UpgradeClusterRequest,
53+
SetClusterTypeRequest,
5354
CreatePoolRequest,
5455
UpgradePoolRequest,
5556
UpdatePoolRequest,
@@ -62,6 +63,7 @@
6263
from .marshalling import (
6364
marshal_CreateClusterRequest,
6465
marshal_CreatePoolRequest,
66+
marshal_SetClusterTypeRequest,
6567
marshal_UpdateClusterRequest,
6668
marshal_UpdatePoolRequest,
6769
marshal_UpgradeClusterRequest,
@@ -492,7 +494,7 @@ async def upgrade_cluster(
492494
:param version: New Kubernetes version of the cluster.
493495
New Kubernetes version of the cluster. Note that the version shoud either be a higher patch version of the same minor version or the direct minor version after the current one.
494496
:param upgrade_pools: Enablement of the pools upgrade.
495-
This field makes the upgrade upgrades the pool once the Kubernetes master in upgrade.
497+
This field also trigger pools upgrade once the control plane is upgraded.
496498
:return: :class:`Cluster <Cluster>`
497499
498500
Usage:
@@ -527,6 +529,52 @@ async def upgrade_cluster(
527529
self._throw_on_error(res)
528530
return unmarshal_Cluster(res.json())
529531

532+
async def set_cluster_type(
533+
self,
534+
*,
535+
cluster_id: str,
536+
type_: str,
537+
region: Optional[Region] = None,
538+
) -> Cluster:
539+
"""
540+
Change type of a cluster.
541+
Change type of a specific Kubernetes cluster.
542+
:param region: Region to target. If none is passed will use default region from the config.
543+
:param cluster_id: ID of the cluster to migrate from one type to another.
544+
:param type_: Type of the cluster.
545+
Type of the cluster. Note that some migrations are not possible (please refer to product documentation).
546+
:return: :class:`Cluster <Cluster>`
547+
548+
Usage:
549+
::
550+
551+
result = await api.set_cluster_type(
552+
cluster_id="example",
553+
type_="example",
554+
)
555+
"""
556+
557+
param_region = validate_path_param(
558+
"region", region or self.client.default_region
559+
)
560+
param_cluster_id = validate_path_param("cluster_id", cluster_id)
561+
562+
res = self._request(
563+
"POST",
564+
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/set-type",
565+
body=marshal_SetClusterTypeRequest(
566+
SetClusterTypeRequest(
567+
cluster_id=cluster_id,
568+
type_=type_,
569+
region=region,
570+
),
571+
self.client,
572+
),
573+
)
574+
575+
self._throw_on_error(res)
576+
return unmarshal_Cluster(res.json())
577+
530578
async def list_cluster_available_versions(
531579
self,
532580
*,

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
CreateClusterRequest,
4646
UpdateClusterRequest,
4747
UpgradeClusterRequest,
48+
SetClusterTypeRequest,
4849
CreatePoolRequest,
4950
UpgradePoolRequest,
5051
UpdatePoolRequest,
@@ -791,6 +792,15 @@ def marshal_CreatePoolRequest(
791792
}
792793

793794

795+
def marshal_SetClusterTypeRequest(
796+
request: SetClusterTypeRequest,
797+
defaults: ProfileDefaults,
798+
) -> Dict[str, Any]:
799+
return {
800+
"type": request.type_,
801+
}
802+
803+
794804
def marshal_UpdateClusterRequest(
795805
request: UpdateClusterRequest,
796806
defaults: ProfileDefaults,

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1434,7 +1434,26 @@ class UpgradeClusterRequest:
14341434
upgrade_pools: bool
14351435
"""
14361436
Enablement of the pools upgrade.
1437-
This field makes the upgrade upgrades the pool once the Kubernetes master in upgrade.
1437+
This field also trigger pools upgrade once the control plane is upgraded.
1438+
"""
1439+
1440+
1441+
@dataclass
1442+
class SetClusterTypeRequest:
1443+
region: Optional[Region]
1444+
"""
1445+
Region to target. If none is passed will use default region from the config.
1446+
"""
1447+
1448+
cluster_id: str
1449+
"""
1450+
ID of the cluster to migrate from one type to another.
1451+
"""
1452+
1453+
type_: str
1454+
"""
1455+
Type of the cluster.
1456+
Type of the cluster. Note that some migrations are not possible (please refer to product documentation).
14381457
"""
14391458

14401459

scaleway/scaleway/k8s/v1/api.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
CreateClusterRequest,
5151
UpdateClusterRequest,
5252
UpgradeClusterRequest,
53+
SetClusterTypeRequest,
5354
CreatePoolRequest,
5455
UpgradePoolRequest,
5556
UpdatePoolRequest,
@@ -62,6 +63,7 @@
6263
from .marshalling import (
6364
marshal_CreateClusterRequest,
6465
marshal_CreatePoolRequest,
66+
marshal_SetClusterTypeRequest,
6567
marshal_UpdateClusterRequest,
6668
marshal_UpdatePoolRequest,
6769
marshal_UpgradeClusterRequest,
@@ -492,7 +494,7 @@ def upgrade_cluster(
492494
:param version: New Kubernetes version of the cluster.
493495
New Kubernetes version of the cluster. Note that the version shoud either be a higher patch version of the same minor version or the direct minor version after the current one.
494496
:param upgrade_pools: Enablement of the pools upgrade.
495-
This field makes the upgrade upgrades the pool once the Kubernetes master in upgrade.
497+
This field also trigger pools upgrade once the control plane is upgraded.
496498
:return: :class:`Cluster <Cluster>`
497499
498500
Usage:
@@ -527,6 +529,52 @@ def upgrade_cluster(
527529
self._throw_on_error(res)
528530
return unmarshal_Cluster(res.json())
529531

532+
def set_cluster_type(
533+
self,
534+
*,
535+
cluster_id: str,
536+
type_: str,
537+
region: Optional[Region] = None,
538+
) -> Cluster:
539+
"""
540+
Change type of a cluster.
541+
Change type of a specific Kubernetes cluster.
542+
:param region: Region to target. If none is passed will use default region from the config.
543+
:param cluster_id: ID of the cluster to migrate from one type to another.
544+
:param type_: Type of the cluster.
545+
Type of the cluster. Note that some migrations are not possible (please refer to product documentation).
546+
:return: :class:`Cluster <Cluster>`
547+
548+
Usage:
549+
::
550+
551+
result = api.set_cluster_type(
552+
cluster_id="example",
553+
type_="example",
554+
)
555+
"""
556+
557+
param_region = validate_path_param(
558+
"region", region or self.client.default_region
559+
)
560+
param_cluster_id = validate_path_param("cluster_id", cluster_id)
561+
562+
res = self._request(
563+
"POST",
564+
f"/k8s/v1/regions/{param_region}/clusters/{param_cluster_id}/set-type",
565+
body=marshal_SetClusterTypeRequest(
566+
SetClusterTypeRequest(
567+
cluster_id=cluster_id,
568+
type_=type_,
569+
region=region,
570+
),
571+
self.client,
572+
),
573+
)
574+
575+
self._throw_on_error(res)
576+
return unmarshal_Cluster(res.json())
577+
530578
def list_cluster_available_versions(
531579
self,
532580
*,

scaleway/scaleway/k8s/v1/marshalling.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
CreateClusterRequest,
4646
UpdateClusterRequest,
4747
UpgradeClusterRequest,
48+
SetClusterTypeRequest,
4849
CreatePoolRequest,
4950
UpgradePoolRequest,
5051
UpdatePoolRequest,
@@ -791,6 +792,15 @@ def marshal_CreatePoolRequest(
791792
}
792793

793794

795+
def marshal_SetClusterTypeRequest(
796+
request: SetClusterTypeRequest,
797+
defaults: ProfileDefaults,
798+
) -> Dict[str, Any]:
799+
return {
800+
"type": request.type_,
801+
}
802+
803+
794804
def marshal_UpdateClusterRequest(
795805
request: UpdateClusterRequest,
796806
defaults: ProfileDefaults,

scaleway/scaleway/k8s/v1/types.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1434,7 +1434,26 @@ class UpgradeClusterRequest:
14341434
upgrade_pools: bool
14351435
"""
14361436
Enablement of the pools upgrade.
1437-
This field makes the upgrade upgrades the pool once the Kubernetes master in upgrade.
1437+
This field also trigger pools upgrade once the control plane is upgraded.
1438+
"""
1439+
1440+
1441+
@dataclass
1442+
class SetClusterTypeRequest:
1443+
region: Optional[Region]
1444+
"""
1445+
Region to target. If none is passed will use default region from the config.
1446+
"""
1447+
1448+
cluster_id: str
1449+
"""
1450+
ID of the cluster to migrate from one type to another.
1451+
"""
1452+
1453+
type_: str
1454+
"""
1455+
Type of the cluster.
1456+
Type of the cluster. Note that some migrations are not possible (please refer to product documentation).
14381457
"""
14391458

14401459

0 commit comments

Comments
 (0)