diff --git a/packages/clients/src/api/k8s/v1/api.gen.ts b/packages/clients/src/api/k8s/v1/api.gen.ts index d75e9fc4f..832825bba 100644 --- a/packages/clients/src/api/k8s/v1/api.gen.ts +++ b/packages/clients/src/api/k8s/v1/api.gen.ts @@ -24,6 +24,7 @@ import { marshalUpgradePoolRequest, unmarshalCluster, unmarshalExternalNode, + unmarshalListClusterAvailableTypesResponse, unmarshalListClusterAvailableVersionsResponse, unmarshalListClusterTypesResponse, unmarshalListClustersResponse, @@ -47,6 +48,8 @@ import type { GetNodeRequest, GetPoolRequest, GetVersionRequest, + ListClusterAvailableTypesRequest, + ListClusterAvailableTypesResponse, ListClusterAvailableVersionsRequest, ListClusterAvailableVersionsResponse, ListClusterTypesRequest, @@ -305,6 +308,30 @@ export class API extends ParentAPI { unmarshalListClusterAvailableVersionsResponse, ) + /** + * List available cluster types for a cluster. List the cluster types that a + * specific Kubernetes cluster is allowed to switch to. + * + * @param request - The request {@link ListClusterAvailableTypesRequest} + * @returns A Promise of ListClusterAvailableTypesResponse + */ + listClusterAvailableTypes = ( + request: Readonly, + ) => + this.client.fetch( + { + method: 'GET', + path: `/k8s/v1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/clusters/${validatePathParam( + 'clusterId', + request.clusterId, + )}/available-types`, + }, + unmarshalListClusterAvailableTypesResponse, + ) + protected _getClusterKubeConfig = ( request: Readonly, ) => diff --git a/packages/clients/src/api/k8s/v1/index.gen.ts b/packages/clients/src/api/k8s/v1/index.gen.ts index 13f0807bf..1399f8c14 100644 --- a/packages/clients/src/api/k8s/v1/index.gen.ts +++ b/packages/clients/src/api/k8s/v1/index.gen.ts @@ -31,6 +31,8 @@ export type { GetPoolRequest, GetVersionRequest, Ingress, + ListClusterAvailableTypesRequest, + ListClusterAvailableTypesResponse, ListClusterAvailableVersionsRequest, ListClusterAvailableVersionsResponse, ListClusterTypesRequest, diff --git a/packages/clients/src/api/k8s/v1/marshalling.gen.ts b/packages/clients/src/api/k8s/v1/marshalling.gen.ts index 5cc1cf346..3b7d1851b 100644 --- a/packages/clients/src/api/k8s/v1/marshalling.gen.ts +++ b/packages/clients/src/api/k8s/v1/marshalling.gen.ts @@ -23,6 +23,7 @@ import type { CreatePoolRequest, CreatePoolRequestUpgradePolicy, ExternalNode, + ListClusterAvailableTypesResponse, ListClusterAvailableVersionsResponse, ListClusterTypesResponse, ListClustersResponse, @@ -279,6 +280,22 @@ export const unmarshalExternalNode = (data: unknown) => { } as ExternalNode } +export const unmarshalListClusterAvailableTypesResponse = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'ListClusterAvailableTypesResponse' failed as data isn't a dictionary.`, + ) + } + + return { + clusterTypes: unmarshalArrayOfObject( + data.cluster_types, + unmarshalClusterType, + ), + totalCount: data.total_count, + } as ListClusterAvailableTypesResponse +} + 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 1ef935bc6..27b73ec7e 100644 --- a/packages/clients/src/api/k8s/v1/types.gen.ts +++ b/packages/clients/src/api/k8s/v1/types.gen.ts @@ -443,6 +443,14 @@ export interface ExternalNode { externalIp: string } +/** List cluster available types response. */ +export interface ListClusterAvailableTypesResponse { + /** Available cluster types for the cluster. */ + clusterTypes: ClusterType[] + /** Total number of types. */ + totalCount: number +} + /** List cluster available versions response. */ export interface ListClusterAvailableVersionsResponse { /** Available Kubernetes versions for the cluster. */ @@ -943,6 +951,16 @@ export type ListClusterAvailableVersionsRequest = { clusterId: string } +export type ListClusterAvailableTypesRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** Cluster ID for which the available Kubernetes types will be listed. */ + clusterId: string +} + export type ResetClusterAdminTokenRequest = { /** * Region to target. If none is passed will use default region from the