Skip to content

Commit 440dbf6

Browse files
authored
feat(k8s): migrate kosmos route in v1 API (#52)
1 parent 7fd1b2d commit 440dbf6

File tree

8 files changed

+190
-0
lines changed

8 files changed

+190
-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
@@ -23,6 +23,7 @@
2323
from .types import CreateClusterRequestPoolConfig
2424
from .types import CreateClusterRequestPoolConfigUpgradePolicy
2525
from .types import CreatePoolRequestUpgradePolicy
26+
from .types import ExternalNode
2627
from .types import ListClusterAvailableVersionsResponse
2728
from .types import ListClustersResponse
2829
from .types import ListNodesResponse
@@ -66,6 +67,7 @@
6667
"CreateClusterRequestPoolConfig",
6768
"CreateClusterRequestPoolConfigUpgradePolicy",
6869
"CreatePoolRequestUpgradePolicy",
70+
"ExternalNode",
6971
"ListClusterAvailableVersionsResponse",
7072
"ListClustersResponse",
7173
"ListNodesResponse",

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
CreateClusterRequestOpenIDConnectConfig,
3535
CreateClusterRequestPoolConfig,
3636
CreatePoolRequestUpgradePolicy,
37+
ExternalNode,
3738
ListClusterAvailableVersionsResponse,
3839
ListClustersResponse,
3940
ListNodesResponse,
@@ -69,6 +70,7 @@
6970
unmarshal_Node,
7071
unmarshal_Pool,
7172
unmarshal_Version,
73+
unmarshal_ExternalNode,
7274
unmarshal_ListClusterAvailableVersionsResponse,
7375
unmarshal_ListClustersResponse,
7476
unmarshal_ListNodesResponse,
@@ -992,6 +994,37 @@ async def delete_pool(
992994
self._throw_on_error(res)
993995
return unmarshal_Pool(res.json())
994996

997+
async def create_external_node(
998+
self,
999+
*,
1000+
pool_id: str,
1001+
region: Optional[Region] = None,
1002+
) -> ExternalNode:
1003+
"""
1004+
This method returns metadata about a Kosmos node, it is not intended to be directly called by end users, rather by kapsule-node-agent.
1005+
:param region: Region to target. If none is passed will use default region from the config
1006+
:param pool_id:
1007+
:return: :class:`ExternalNode <ExternalNode>`
1008+
1009+
Usage:
1010+
::
1011+
1012+
result = await api.create_external_node(pool_id="example")
1013+
"""
1014+
1015+
param_region = validate_path_param(
1016+
"region", region or self.client.default_region
1017+
)
1018+
param_pool_id = validate_path_param("pool_id", pool_id)
1019+
1020+
res = self._request(
1021+
"POST",
1022+
f"/k8s/v1/regions/{param_region}/pools/{param_pool_id}/external-nodes",
1023+
)
1024+
1025+
self._throw_on_error(res)
1026+
return unmarshal_ExternalNode(res.json())
1027+
9951028
async def list_nodes(
9961029
self,
9971030
*,

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
CreateClusterRequestPoolConfig,
2828
CreateClusterRequestPoolConfigUpgradePolicy,
2929
CreatePoolRequestUpgradePolicy,
30+
ExternalNode,
3031
ListClusterAvailableVersionsResponse,
3132
ListClustersResponse,
3233
ListNodesResponse,
@@ -432,6 +433,38 @@ def unmarshal_Version(data: Any) -> Version:
432433
return Version(**args)
433434

434435

436+
def unmarshal_ExternalNode(data: Any) -> ExternalNode:
437+
if type(data) is not dict:
438+
raise TypeError(
439+
f"Unmarshalling the type 'ExternalNode' failed as data isn't a dictionary."
440+
)
441+
442+
args: Dict[str, Any] = {}
443+
444+
field = data.get("cluster_ca")
445+
args["cluster_ca"] = field
446+
447+
field = data.get("cluster_url")
448+
args["cluster_url"] = field
449+
450+
field = data.get("cluster_version")
451+
args["cluster_version"] = field
452+
453+
field = data.get("id")
454+
args["id"] = field
455+
456+
field = data.get("kube_token")
457+
args["kube_token"] = field
458+
459+
field = data.get("kubelet_config")
460+
args["kubelet_config"] = field
461+
462+
field = data.get("name")
463+
args["name"] = field
464+
465+
return ExternalNode(**args)
466+
467+
435468
def unmarshal_ListClusterAvailableVersionsResponse(
436469
data: Any,
437470
) -> ListClusterAvailableVersionsResponse:

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,23 @@ class CreatePoolRequestUpgradePolicy:
658658
max_surge: Optional[int]
659659

660660

661+
@dataclass
662+
class ExternalNode:
663+
id: str
664+
665+
name: str
666+
667+
cluster_url: str
668+
669+
cluster_version: str
670+
671+
cluster_ca: str
672+
673+
kube_token: str
674+
675+
kubelet_config: str
676+
677+
661678
@dataclass
662679
class ListClusterAvailableVersionsResponse:
663680
"""
@@ -1663,6 +1680,16 @@ class DeletePoolRequest:
16631680
"""
16641681

16651682

1683+
@dataclass
1684+
class CreateExternalNodeRequest:
1685+
region: Optional[Region]
1686+
"""
1687+
Region to target. If none is passed will use default region from the config
1688+
"""
1689+
1690+
pool_id: str
1691+
1692+
16661693
@dataclass
16671694
class ListNodesRequest:
16681695
region: Optional[Region]

scaleway/scaleway/k8s/v1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from .types import CreateClusterRequestPoolConfig
2424
from .types import CreateClusterRequestPoolConfigUpgradePolicy
2525
from .types import CreatePoolRequestUpgradePolicy
26+
from .types import ExternalNode
2627
from .types import ListClusterAvailableVersionsResponse
2728
from .types import ListClustersResponse
2829
from .types import ListNodesResponse
@@ -66,6 +67,7 @@
6667
"CreateClusterRequestPoolConfig",
6768
"CreateClusterRequestPoolConfigUpgradePolicy",
6869
"CreatePoolRequestUpgradePolicy",
70+
"ExternalNode",
6971
"ListClusterAvailableVersionsResponse",
7072
"ListClustersResponse",
7173
"ListNodesResponse",

scaleway/scaleway/k8s/v1/api.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
CreateClusterRequestOpenIDConnectConfig,
3535
CreateClusterRequestPoolConfig,
3636
CreatePoolRequestUpgradePolicy,
37+
ExternalNode,
3738
ListClusterAvailableVersionsResponse,
3839
ListClustersResponse,
3940
ListNodesResponse,
@@ -69,6 +70,7 @@
6970
unmarshal_Node,
7071
unmarshal_Pool,
7172
unmarshal_Version,
73+
unmarshal_ExternalNode,
7274
unmarshal_ListClusterAvailableVersionsResponse,
7375
unmarshal_ListClustersResponse,
7476
unmarshal_ListNodesResponse,
@@ -992,6 +994,37 @@ def delete_pool(
992994
self._throw_on_error(res)
993995
return unmarshal_Pool(res.json())
994996

997+
def create_external_node(
998+
self,
999+
*,
1000+
pool_id: str,
1001+
region: Optional[Region] = None,
1002+
) -> ExternalNode:
1003+
"""
1004+
This method returns metadata about a Kosmos node, it is not intended to be directly called by end users, rather by kapsule-node-agent.
1005+
:param region: Region to target. If none is passed will use default region from the config
1006+
:param pool_id:
1007+
:return: :class:`ExternalNode <ExternalNode>`
1008+
1009+
Usage:
1010+
::
1011+
1012+
result = api.create_external_node(pool_id="example")
1013+
"""
1014+
1015+
param_region = validate_path_param(
1016+
"region", region or self.client.default_region
1017+
)
1018+
param_pool_id = validate_path_param("pool_id", pool_id)
1019+
1020+
res = self._request(
1021+
"POST",
1022+
f"/k8s/v1/regions/{param_region}/pools/{param_pool_id}/external-nodes",
1023+
)
1024+
1025+
self._throw_on_error(res)
1026+
return unmarshal_ExternalNode(res.json())
1027+
9951028
def list_nodes(
9961029
self,
9971030
*,

scaleway/scaleway/k8s/v1/marshalling.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
CreateClusterRequestPoolConfig,
2828
CreateClusterRequestPoolConfigUpgradePolicy,
2929
CreatePoolRequestUpgradePolicy,
30+
ExternalNode,
3031
ListClusterAvailableVersionsResponse,
3132
ListClustersResponse,
3233
ListNodesResponse,
@@ -432,6 +433,38 @@ def unmarshal_Version(data: Any) -> Version:
432433
return Version(**args)
433434

434435

436+
def unmarshal_ExternalNode(data: Any) -> ExternalNode:
437+
if type(data) is not dict:
438+
raise TypeError(
439+
f"Unmarshalling the type 'ExternalNode' failed as data isn't a dictionary."
440+
)
441+
442+
args: Dict[str, Any] = {}
443+
444+
field = data.get("cluster_ca")
445+
args["cluster_ca"] = field
446+
447+
field = data.get("cluster_url")
448+
args["cluster_url"] = field
449+
450+
field = data.get("cluster_version")
451+
args["cluster_version"] = field
452+
453+
field = data.get("id")
454+
args["id"] = field
455+
456+
field = data.get("kube_token")
457+
args["kube_token"] = field
458+
459+
field = data.get("kubelet_config")
460+
args["kubelet_config"] = field
461+
462+
field = data.get("name")
463+
args["name"] = field
464+
465+
return ExternalNode(**args)
466+
467+
435468
def unmarshal_ListClusterAvailableVersionsResponse(
436469
data: Any,
437470
) -> ListClusterAvailableVersionsResponse:

scaleway/scaleway/k8s/v1/types.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,23 @@ class CreatePoolRequestUpgradePolicy:
658658
max_surge: Optional[int]
659659

660660

661+
@dataclass
662+
class ExternalNode:
663+
id: str
664+
665+
name: str
666+
667+
cluster_url: str
668+
669+
cluster_version: str
670+
671+
cluster_ca: str
672+
673+
kube_token: str
674+
675+
kubelet_config: str
676+
677+
661678
@dataclass
662679
class ListClusterAvailableVersionsResponse:
663680
"""
@@ -1663,6 +1680,16 @@ class DeletePoolRequest:
16631680
"""
16641681

16651682

1683+
@dataclass
1684+
class CreateExternalNodeRequest:
1685+
region: Optional[Region]
1686+
"""
1687+
Region to target. If none is passed will use default region from the config
1688+
"""
1689+
1690+
pool_id: str
1691+
1692+
16661693
@dataclass
16671694
class ListNodesRequest:
16681695
region: Optional[Region]

0 commit comments

Comments
 (0)