diff --git a/packages/clients/src/api/k8s/v1/api.gen.ts b/packages/clients/src/api/k8s/v1/api.gen.ts index 59abb1a5d..63744c4fd 100644 --- a/packages/clients/src/api/k8s/v1/api.gen.ts +++ b/packages/clients/src/api/k8s/v1/api.gen.ts @@ -21,6 +21,7 @@ import { marshalUpgradeClusterRequest, marshalUpgradePoolRequest, unmarshalCluster, + unmarshalExternalNode, unmarshalListClusterAvailableVersionsResponse, unmarshalListClustersResponse, unmarshalListNodesResponse, @@ -33,10 +34,12 @@ import { import type { Cluster, CreateClusterRequest, + CreateExternalNodeRequest, CreatePoolRequest, DeleteClusterRequest, DeleteNodeRequest, DeletePoolRequest, + ExternalNode, GetClusterRequest, GetNodeRequest, GetPoolRequest, @@ -472,6 +475,27 @@ export class API extends ParentAPI { unmarshalPool, ) + /** + * This method returns metadata about a Kosmos node, it is not intended to be + * directly called by end users, rather by kapsule-node-agent. + * + * @param request - The request {@link CreateExternalNodeRequest} + * @returns A Promise of ExternalNode + */ + createExternalNode = (request: Readonly) => + this.client.fetch( + { + body: '{}', + headers: jsonContentHeaders, + method: 'POST', + path: `/k8s/v1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/pools/${validatePathParam('poolId', request.poolId)}/external-nodes`, + }, + unmarshalExternalNode, + ) + protected pageOfListNodes = (request: Readonly) => this.client.fetch( { diff --git a/packages/clients/src/api/k8s/v1/index.gen.ts b/packages/clients/src/api/k8s/v1/index.gen.ts index 9b4c954a4..dc849ff80 100644 --- a/packages/clients/src/api/k8s/v1/index.gen.ts +++ b/packages/clients/src/api/k8s/v1/index.gen.ts @@ -17,11 +17,13 @@ export type { CreateClusterRequestOpenIDConnectConfig, CreateClusterRequestPoolConfig, CreateClusterRequestPoolConfigUpgradePolicy, + CreateExternalNodeRequest, CreatePoolRequest, CreatePoolRequestUpgradePolicy, DeleteClusterRequest, DeleteNodeRequest, DeletePoolRequest, + ExternalNode, GetClusterRequest, GetNodeRequest, GetPoolRequest, diff --git a/packages/clients/src/api/k8s/v1/marshalling.gen.ts b/packages/clients/src/api/k8s/v1/marshalling.gen.ts index cc0fd9c4c..ccd70b16d 100644 --- a/packages/clients/src/api/k8s/v1/marshalling.gen.ts +++ b/packages/clients/src/api/k8s/v1/marshalling.gen.ts @@ -21,6 +21,7 @@ import type { CreateClusterRequestPoolConfigUpgradePolicy, CreatePoolRequest, CreatePoolRequestUpgradePolicy, + ExternalNode, ListClusterAvailableVersionsResponse, ListClustersResponse, ListNodesResponse, @@ -238,6 +239,24 @@ export const unmarshalVersion = (data: unknown) => { } as Version } +export const unmarshalExternalNode = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'ExternalNode' failed as data isn't a dictionary.`, + ) + } + + return { + clusterCa: data.cluster_ca, + clusterUrl: data.cluster_url, + clusterVersion: data.cluster_version, + id: data.id, + kubeletConfig: data.kubelet_config, + kubeToken: data.kube_token, + name: data.name, + } as ExternalNode +} + export const unmarshalListClusterAvailableVersionsResponse = ( data: unknown, ) => { diff --git a/packages/clients/src/api/k8s/v1/types.gen.ts b/packages/clients/src/api/k8s/v1/types.gen.ts index 63d2db8a1..2984dff4e 100644 --- a/packages/clients/src/api/k8s/v1/types.gen.ts +++ b/packages/clients/src/api/k8s/v1/types.gen.ts @@ -413,6 +413,16 @@ export interface CreatePoolRequestUpgradePolicy { maxSurge?: number } +export interface ExternalNode { + id: string + name: string + clusterUrl: string + clusterVersion: string + clusterCa: string + kubeToken: string + kubeletConfig: string +} + /** List cluster available versions response */ export interface ListClusterAvailableVersionsResponse { /** The available Kubernetes version for the cluster */ @@ -1003,6 +1013,12 @@ export type DeletePoolRequest = { poolId: string } +export type CreateExternalNodeRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + poolId: string +} + export type ListNodesRequest = { /** Region to target. If none is passed will use default region from the config */ region?: Region