Skip to content

Commit 3c6c143

Browse files
authored
feat(rdb): database engine upgrade (#225)
1 parent 03ba02d commit 3c6c143

File tree

3 files changed

+47
-6
lines changed

3 files changed

+47
-6
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -431,8 +431,8 @@ export class RdbV1GenAPI extends API {
431431
)
432432

433433
/**
434-
* Upgrade your current `node_type` or enable high availability on your
435-
* standalone database instance.
434+
* Upgrade your current instance specifications like node type, high
435+
* availability, volume, or db engine version.
436436
*
437437
* @param request - The request {@link UpgradeInstanceRequest}
438438
* @returns A Promise of Instance

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ import type {
8383
UpdateInstanceRequest,
8484
UpdateSnapshotRequest,
8585
UpdateUserRequest,
86+
UpgradableVersion,
8687
UpgradeInstanceRequest,
8788
User,
8889
Volume,
@@ -290,6 +291,21 @@ export const unmarshalReadReplica = (data: unknown) => {
290291
} as ReadReplica
291292
}
292293

294+
const unmarshalUpgradableVersion = (data: unknown) => {
295+
if (!isJSONObject(data)) {
296+
throw new TypeError(
297+
`Unmarshalling the type 'UpgradableVersion' failed as data isn't a dictionary.`,
298+
)
299+
}
300+
301+
return {
302+
id: data.id,
303+
minorVersion: data.minor_version,
304+
name: data.name,
305+
version: data.version,
306+
} as UpgradableVersion
307+
}
308+
293309
const unmarshalVolume = (data: unknown) => {
294310
if (!isJSONObject(data)) {
295311
throw new TypeError(
@@ -413,6 +429,10 @@ export const unmarshalInstance = (data: unknown) => {
413429
settings: unmarshalArrayOfObject(data.settings, unmarshalInstanceSetting),
414430
status: data.status,
415431
tags: data.tags,
432+
upgradableVersion: unmarshalArrayOfObject(
433+
data.upgradable_version,
434+
unmarshalUpgradableVersion,
435+
),
416436
volume: data.volume ? unmarshalVolume(data.volume) : undefined,
417437
} as Instance
418438
}
@@ -1118,5 +1138,9 @@ export const marshalUpgradeInstanceRequest = (
11181138
param: 'volume_type',
11191139
value: request.volumeType,
11201140
},
1141+
{
1142+
param: 'upgradable_version_id',
1143+
value: request.upgradableVersionId,
1144+
},
11211145
]),
11221146
})

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

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,8 @@ export interface Instance {
368368
status: InstanceStatus
369369
/** Database engine of the database (PostgreSQL, MySQL, ...) */
370370
engine: string
371+
/** Available database engine versions for upgrade */
372+
upgradableVersion: Array<UpgradableVersion>
371373
/** @deprecated Endpoint of the instance */
372374
endpoint?: Endpoint
373375
/** List of tags applied to the instance */
@@ -679,6 +681,13 @@ export interface Snapshot {
679681
region: Region
680682
}
681683

684+
export interface UpgradableVersion {
685+
id: string
686+
name: string
687+
version: string
688+
minorVersion: string
689+
}
690+
682691
/** User */
683692
export interface User {
684693
/**
@@ -805,30 +814,38 @@ export type UpgradeInstanceRequest = {
805814
* Node type of the instance you want to upgrade to.
806815
*
807816
* One-of ('upgradeTarget'): at most one of 'nodeType', 'enableHa',
808-
* 'volumeSize', 'volumeType' could be set.
817+
* 'volumeSize', 'volumeType', 'upgradableVersionId' could be set.
809818
*/
810819
nodeType?: string
811820
/**
812821
* Set to true to enable high availability on your instance.
813822
*
814823
* One-of ('upgradeTarget'): at most one of 'nodeType', 'enableHa',
815-
* 'volumeSize', 'volumeType' could be set.
824+
* 'volumeSize', 'volumeType', 'upgradableVersionId' could be set.
816825
*/
817826
enableHa?: boolean
818827
/**
819828
* Increase your block storage volume size.
820829
*
821830
* One-of ('upgradeTarget'): at most one of 'nodeType', 'enableHa',
822-
* 'volumeSize', 'volumeType' could be set.
831+
* 'volumeSize', 'volumeType', 'upgradableVersionId' could be set.
823832
*/
824833
volumeSize?: number
825834
/**
826835
* Change your instance storage type.
827836
*
828837
* One-of ('upgradeTarget'): at most one of 'nodeType', 'enableHa',
829-
* 'volumeSize', 'volumeType' could be set.
838+
* 'volumeSize', 'volumeType', 'upgradableVersionId' could be set.
830839
*/
831840
volumeType?: VolumeType
841+
/**
842+
* This will create a new Database Instance with same instance specification
843+
* as the current one and perform a Database Engine upgrade.
844+
*
845+
* One-of ('upgradeTarget'): at most one of 'nodeType', 'enableHa',
846+
* 'volumeSize', 'volumeType', 'upgradableVersionId' could be set.
847+
*/
848+
upgradableVersionId?: string
832849
}
833850

834851
export type ListInstancesRequest = {

0 commit comments

Comments
 (0)