From fc577c48defa74731643196629ffa47fc3a9f71f Mon Sep 17 00:00:00 2001 From: Dajahi Wiley Date: Fri, 26 Apr 2024 11:02:40 -0400 Subject: [PATCH 1/4] Add disk_encryption field to Linode, Disk, RebuildRequest, and KubeNodePoolResponse interfaces --- packages/api-v4/src/kubernetes/types.ts | 3 +++ packages/api-v4/src/linodes/types.ts | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/api-v4/src/kubernetes/types.ts b/packages/api-v4/src/kubernetes/types.ts index 56db9687cc0..c8d25118e35 100644 --- a/packages/api-v4/src/kubernetes/types.ts +++ b/packages/api-v4/src/kubernetes/types.ts @@ -1,3 +1,5 @@ +import type { EncryptionStatus } from 'src/linodes'; + export interface KubernetesCluster { created: string; updated: string; @@ -16,6 +18,7 @@ export interface KubeNodePoolResponse { nodes: PoolNodeResponse[]; type: string; autoscaler: AutoscaleSettings; + disk_encryption?: EncryptionStatus; // @TODO LDE: remove optionality once LDE is fully rolled out } export interface PoolNodeResponse { diff --git a/packages/api-v4/src/linodes/types.ts b/packages/api-v4/src/linodes/types.ts index 55a76fd3359..fdd6fe0ae10 100644 --- a/packages/api-v4/src/linodes/types.ts +++ b/packages/api-v4/src/linodes/types.ts @@ -5,6 +5,8 @@ import type { PlacementGroupPayload } from '../placement-groups/types'; export type Hypervisor = 'kvm' | 'zen'; +export type EncryptionStatus = 'enabled' | 'disabled'; + export interface LinodeSpecs { disk: number; memory: number; @@ -18,6 +20,7 @@ export interface Linode { alerts: LinodeAlerts; backups: LinodeBackups; created: string; + disk_encryption?: EncryptionStatus; // @TODO LDE: Remove optionality once LDE is fully rolled out region: string; image: string | null; group: string; @@ -267,6 +270,7 @@ export interface Disk { filesystem: Filesystem; created: string; updated: string; + disk_encryption?: EncryptionStatus; // @TODO LDE: remove optionality once LDE is fully rolled out } export type DiskStatus = 'ready' | 'not ready' | 'deleting'; @@ -446,9 +450,14 @@ export interface CreateLinodeRequest { */ firewall_id?: number | null; /** - * An object that assigns this the Linode to a placment group upon creation. + * An object that assigns this the Linode to a placement group upon creation. */ placement_group?: CreateLinodePlacementGroupPayload; + /** + * A property with a string literal type indicating whether the Linode is encrypted or unencrypted. + * @default 'enabled' (if the region supports LDE) + */ + disk_encryption?: EncryptionStatus; } export interface MigrateLinodeRequest { @@ -484,6 +493,7 @@ export interface RebuildRequest { stackscript_id?: number; stackscript_data?: any; booted?: boolean; + disk_encryption?: EncryptionStatus; } export interface LinodeDiskCreationData { From 17d34d17035d2c9b72c623c86dbf7b0daa84d864 Mon Sep 17 00:00:00 2001 From: Dajahi Wiley Date: Fri, 26 Apr 2024 13:38:07 -0400 Subject: [PATCH 2/4] disk_encryption added to CreateLinodeSchema & RebuildLinodeSchema --- packages/validation/src/linodes.schema.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/validation/src/linodes.schema.ts b/packages/validation/src/linodes.schema.ts index 084155e5212..cf0089ea359 100644 --- a/packages/validation/src/linodes.schema.ts +++ b/packages/validation/src/linodes.schema.ts @@ -274,6 +274,13 @@ const PlacementGroupPayloadSchema = object({ id: number().notRequired().nullable(true), }); +const DiskEncryptionSchema = object({ + disk_encryption: string() + .oneOf(['enabled', 'disabled']) + .nullable() + .notRequired(), +}); + export const CreateLinodeSchema = object({ type: string().ensure().required('Plan is required.'), region: string().ensure().required('Region is required.'), @@ -309,6 +316,7 @@ export const CreateLinodeSchema = object({ metadata: MetadataSchema, firewall_id: number().nullable().notRequired(), placement_group: PlacementGroupPayloadSchema, + disk_encryption: DiskEncryptionSchema, }); const alerts = object({ @@ -389,6 +397,7 @@ export const RebuildLinodeSchema = object().shape({ stackscript_data, booted: boolean().notRequired(), metadata: MetadataSchema, + disk_encryption: DiskEncryptionSchema, }); export const RebuildLinodeFromStackScriptSchema = RebuildLinodeSchema.shape({ From da538aa311693865b895fe5e200c65e8a346a5db Mon Sep 17 00:00:00 2001 From: Dajahi Wiley Date: Fri, 26 Apr 2024 14:04:33 -0400 Subject: [PATCH 3/4] Added changeset: Add disk_encryption to Linode, Disk, CreateLinodeRequest, RebuildRequest, and KubeNodePoolResponse interfaces --- packages/api-v4/.changeset/pr-10413-changed-1714154673845.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/api-v4/.changeset/pr-10413-changed-1714154673845.md diff --git a/packages/api-v4/.changeset/pr-10413-changed-1714154673845.md b/packages/api-v4/.changeset/pr-10413-changed-1714154673845.md new file mode 100644 index 00000000000..892cc1dc8c5 --- /dev/null +++ b/packages/api-v4/.changeset/pr-10413-changed-1714154673845.md @@ -0,0 +1,5 @@ +--- +"@linode/api-v4": Changed +--- + +Add disk_encryption to Linode, Disk, CreateLinodeRequest, RebuildRequest, and KubeNodePoolResponse interfaces ([#10413](https://github.com/linode/manager/pull/10413)) From 736779dfa8aa09cbbf147df6e428d08ae61576f8 Mon Sep 17 00:00:00 2001 From: Dajahi Wiley Date: Fri, 26 Apr 2024 14:06:37 -0400 Subject: [PATCH 4/4] Added changeset: Include disk_encryption in CreateLinodeSchema and RebuildLinodeSchema --- .../validation/.changeset/pr-10413-changed-1714154797841.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/validation/.changeset/pr-10413-changed-1714154797841.md diff --git a/packages/validation/.changeset/pr-10413-changed-1714154797841.md b/packages/validation/.changeset/pr-10413-changed-1714154797841.md new file mode 100644 index 00000000000..adf2f7fe14b --- /dev/null +++ b/packages/validation/.changeset/pr-10413-changed-1714154797841.md @@ -0,0 +1,5 @@ +--- +"@linode/validation": Changed +--- + +Include disk_encryption in CreateLinodeSchema and RebuildLinodeSchema ([#10413](https://github.com/linode/manager/pull/10413))