Skip to content

feat(k8s): add cluster types compatibility #749

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions packages/clients/src/api/k8s/v1/api.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
marshalUpgradePoolRequest,
unmarshalCluster,
unmarshalExternalNode,
unmarshalListClusterAvailableTypesResponse,
unmarshalListClusterAvailableVersionsResponse,
unmarshalListClusterTypesResponse,
unmarshalListClustersResponse,
Expand All @@ -47,6 +48,8 @@ import type {
GetNodeRequest,
GetPoolRequest,
GetVersionRequest,
ListClusterAvailableTypesRequest,
ListClusterAvailableTypesResponse,
ListClusterAvailableVersionsRequest,
ListClusterAvailableVersionsResponse,
ListClusterTypesRequest,
Expand Down Expand Up @@ -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<ListClusterAvailableTypesRequest>,
) =>
this.client.fetch<ListClusterAvailableTypesResponse>(
{
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<GetClusterKubeConfigRequest>,
) =>
Expand Down
2 changes: 2 additions & 0 deletions packages/clients/src/api/k8s/v1/index.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ export type {
GetPoolRequest,
GetVersionRequest,
Ingress,
ListClusterAvailableTypesRequest,
ListClusterAvailableTypesResponse,
ListClusterAvailableVersionsRequest,
ListClusterAvailableVersionsResponse,
ListClusterTypesRequest,
Expand Down
17 changes: 17 additions & 0 deletions packages/clients/src/api/k8s/v1/marshalling.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import type {
CreatePoolRequest,
CreatePoolRequestUpgradePolicy,
ExternalNode,
ListClusterAvailableTypesResponse,
ListClusterAvailableVersionsResponse,
ListClusterTypesResponse,
ListClustersResponse,
Expand Down Expand Up @@ -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,
) => {
Expand Down
18 changes: 18 additions & 0 deletions packages/clients/src/api/k8s/v1/types.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down Expand Up @@ -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
Expand Down