Skip to content

Commit 371a2bb

Browse files
authored
feat(k8s): create external node (#461)
1 parent a7da4e2 commit 371a2bb

File tree

4 files changed

+61
-0
lines changed

4 files changed

+61
-0
lines changed

packages/clients/src/api/k8s/v1/api.gen.ts

+24
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
marshalUpgradeClusterRequest,
2222
marshalUpgradePoolRequest,
2323
unmarshalCluster,
24+
unmarshalExternalNode,
2425
unmarshalListClusterAvailableVersionsResponse,
2526
unmarshalListClustersResponse,
2627
unmarshalListNodesResponse,
@@ -33,10 +34,12 @@ import {
3334
import type {
3435
Cluster,
3536
CreateClusterRequest,
37+
CreateExternalNodeRequest,
3638
CreatePoolRequest,
3739
DeleteClusterRequest,
3840
DeleteNodeRequest,
3941
DeletePoolRequest,
42+
ExternalNode,
4043
GetClusterRequest,
4144
GetNodeRequest,
4245
GetPoolRequest,
@@ -472,6 +475,27 @@ export class API extends ParentAPI {
472475
unmarshalPool,
473476
)
474477

478+
/**
479+
* This method returns metadata about a Kosmos node, it is not intended to be
480+
* directly called by end users, rather by kapsule-node-agent.
481+
*
482+
* @param request - The request {@link CreateExternalNodeRequest}
483+
* @returns A Promise of ExternalNode
484+
*/
485+
createExternalNode = (request: Readonly<CreateExternalNodeRequest>) =>
486+
this.client.fetch<ExternalNode>(
487+
{
488+
body: '{}',
489+
headers: jsonContentHeaders,
490+
method: 'POST',
491+
path: `/k8s/v1/regions/${validatePathParam(
492+
'region',
493+
request.region ?? this.client.settings.defaultRegion,
494+
)}/pools/${validatePathParam('poolId', request.poolId)}/external-nodes`,
495+
},
496+
unmarshalExternalNode,
497+
)
498+
475499
protected pageOfListNodes = (request: Readonly<ListNodesRequest>) =>
476500
this.client.fetch<ListNodesResponse>(
477501
{

packages/clients/src/api/k8s/v1/index.gen.ts

+2
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ export type {
1717
CreateClusterRequestOpenIDConnectConfig,
1818
CreateClusterRequestPoolConfig,
1919
CreateClusterRequestPoolConfigUpgradePolicy,
20+
CreateExternalNodeRequest,
2021
CreatePoolRequest,
2122
CreatePoolRequestUpgradePolicy,
2223
DeleteClusterRequest,
2324
DeleteNodeRequest,
2425
DeletePoolRequest,
26+
ExternalNode,
2527
GetClusterRequest,
2628
GetNodeRequest,
2729
GetPoolRequest,

packages/clients/src/api/k8s/v1/marshalling.gen.ts

+19
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import type {
2121
CreateClusterRequestPoolConfigUpgradePolicy,
2222
CreatePoolRequest,
2323
CreatePoolRequestUpgradePolicy,
24+
ExternalNode,
2425
ListClusterAvailableVersionsResponse,
2526
ListClustersResponse,
2627
ListNodesResponse,
@@ -238,6 +239,24 @@ export const unmarshalVersion = (data: unknown) => {
238239
} as Version
239240
}
240241

242+
export const unmarshalExternalNode = (data: unknown) => {
243+
if (!isJSONObject(data)) {
244+
throw new TypeError(
245+
`Unmarshalling the type 'ExternalNode' failed as data isn't a dictionary.`,
246+
)
247+
}
248+
249+
return {
250+
clusterCa: data.cluster_ca,
251+
clusterUrl: data.cluster_url,
252+
clusterVersion: data.cluster_version,
253+
id: data.id,
254+
kubeletConfig: data.kubelet_config,
255+
kubeToken: data.kube_token,
256+
name: data.name,
257+
} as ExternalNode
258+
}
259+
241260
export const unmarshalListClusterAvailableVersionsResponse = (
242261
data: unknown,
243262
) => {

packages/clients/src/api/k8s/v1/types.gen.ts

+16
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,16 @@ export interface CreatePoolRequestUpgradePolicy {
413413
maxSurge?: number
414414
}
415415

416+
export interface ExternalNode {
417+
id: string
418+
name: string
419+
clusterUrl: string
420+
clusterVersion: string
421+
clusterCa: string
422+
kubeToken: string
423+
kubeletConfig: string
424+
}
425+
416426
/** List cluster available versions response */
417427
export interface ListClusterAvailableVersionsResponse {
418428
/** The available Kubernetes version for the cluster */
@@ -1003,6 +1013,12 @@ export type DeletePoolRequest = {
10031013
poolId: string
10041014
}
10051015

1016+
export type CreateExternalNodeRequest = {
1017+
/** Region to target. If none is passed will use default region from the config */
1018+
region?: Region
1019+
poolId: string
1020+
}
1021+
10061022
export type ListNodesRequest = {
10071023
/** Region to target. If none is passed will use default region from the config */
10081024
region?: Region

0 commit comments

Comments
 (0)