diff --git a/packages_generated/k8s/src/v1/api.gen.ts b/packages_generated/k8s/src/v1/api.gen.ts index 52fb6aa71..3ccbc6807 100644 --- a/packages_generated/k8s/src/v1/api.gen.ts +++ b/packages_generated/k8s/src/v1/api.gen.ts @@ -17,6 +17,7 @@ import { marshalAddClusterACLRulesRequest, marshalCreateClusterRequest, marshalCreatePoolRequest, + marshalMigratePoolsToNewImagesRequest, marshalSetClusterACLRulesRequest, marshalSetClusterTypeRequest, marshalUpdateClusterRequest, @@ -77,6 +78,7 @@ import type { ListPoolsResponse, ListVersionsRequest, ListVersionsResponse, + MigratePoolsToNewImagesRequest, Node, NodeMetadata, Pool, @@ -545,6 +547,23 @@ This will drain and replace the nodes in that pool. unmarshalPool, ) + /** + * Migrate specific pools or all pools of a cluster to new images.. If no pool is specified, all pools of the cluster will be migrated to new images. + * + * @param request - The request {@link MigratePoolsToNewImagesRequest} + */ + migratePoolsToNewImages = ( + request: Readonly, + ) => + this.client.fetch({ + body: JSON.stringify( + marshalMigratePoolsToNewImagesRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'POST', + path: `/k8s/v1/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/clusters/${validatePathParam('clusterId', request.clusterId)}/migrate-pools-to-new-images`, + }) + /** * Fetch node metadata. Rerieve metadata to instantiate a Kapsule/Kosmos node. This method is not intended to be called by end users but rather programmatically by the node-installer. * diff --git a/packages_generated/k8s/src/v1/index.gen.ts b/packages_generated/k8s/src/v1/index.gen.ts index dac365bc0..8832edda5 100644 --- a/packages_generated/k8s/src/v1/index.gen.ts +++ b/packages_generated/k8s/src/v1/index.gen.ts @@ -63,6 +63,7 @@ export type { ListVersionsResponse, MaintenanceWindow, MaintenanceWindowDayOfTheWeek, + MigratePoolsToNewImagesRequest, Node, NodeMetadata, NodeMetadataCoreV1Taint, diff --git a/packages_generated/k8s/src/v1/marshalling.gen.ts b/packages_generated/k8s/src/v1/marshalling.gen.ts index 6ab431584..38f03bb35 100644 --- a/packages_generated/k8s/src/v1/marshalling.gen.ts +++ b/packages_generated/k8s/src/v1/marshalling.gen.ts @@ -38,6 +38,7 @@ import type { ListPoolsResponse, ListVersionsResponse, MaintenanceWindow, + MigratePoolsToNewImagesRequest, Node, NodeMetadata, NodeMetadataCoreV1Taint, @@ -88,6 +89,7 @@ export const unmarshalPool = (data: unknown): Pool => { maxSize: data.max_size, minSize: data.min_size, name: data.name, + newImagesEnabled: data.new_images_enabled, nodeType: data.node_type, placementGroupId: data.placement_group_id, publicIpDisabled: data.public_ip_disabled, @@ -223,6 +225,7 @@ export const unmarshalCluster = (data: unknown): Cluster => { iamNodesGroupId: data.iam_nodes_group_id, id: data.id, name: data.name, + newImagesEnabled: data.new_images_enabled, openIdConnectConfig: data.open_id_connect_config ? unmarshalClusterOpenIDConnectConfig(data.open_id_connect_config) : undefined, @@ -741,6 +744,13 @@ export const marshalCreatePoolRequest = ( zone: request.zone ?? defaults.defaultZone, }) +export const marshalMigratePoolsToNewImagesRequest = ( + request: MigratePoolsToNewImagesRequest, + defaults: DefaultValues, +): Record => ({ + pool_ids: request.poolIds, +}) + export const marshalSetClusterACLRulesRequest = ( request: SetClusterACLRulesRequest, defaults: DefaultValues, diff --git a/packages_generated/k8s/src/v1/types.gen.ts b/packages_generated/k8s/src/v1/types.gen.ts index e18ff466e..9a9947c9f 100644 --- a/packages_generated/k8s/src/v1/types.gen.ts +++ b/packages_generated/k8s/src/v1/types.gen.ts @@ -321,6 +321,10 @@ export interface Pool { * Defines if the public IP should be removed from Nodes. To use this feature, your Cluster must have an attached Private Network set up with a Public Gateway. */ publicIpDisabled: boolean + /** + * @deprecated Defines whether the pool is migrated to new images. + */ + newImagesEnabled?: boolean /** * Cluster region of the pool. */ @@ -718,6 +722,10 @@ export interface Cluster { * IAM group that nodes are members of (this field might be empty during early stage of cluster creation). */ iamNodesGroupId: string + /** + * @deprecated Defines whether all pools are migrated to new images. + */ + newImagesEnabled?: boolean } export interface Node { @@ -1461,6 +1469,15 @@ export interface ListVersionsResponse { versions: Version[] } +export type MigratePoolsToNewImagesRequest = { + /** + * Region to target. If none is passed will use default region from the config. + */ + region?: ScwRegion + clusterId: string + poolIds?: string[] +} + export interface NodeMetadata { id: string name: string