Skip to content
2 changes: 1 addition & 1 deletion packages/api-v4/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## [2025-03-11] - v0.136.0
## [2025-03-17] - v0.136.0

### Changed:

Expand Down
7 changes: 5 additions & 2 deletions packages/manager/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).

## [2025-03-11] - v1.138.0
## [2025-03-17] - v1.138.0

### Added:

Expand All @@ -18,6 +18,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
- Allow Tags in Volume Create flow ([#11696](https://github.com/linode/manager/pull/11696))
- Update copy for LKE ACL section ([#11746](https://github.com/linode/manager/pull/11746))
- Update copy for LKE Recycle, Upgrade Version, and Delete Pool modals ([#11775](https://github.com/linode/manager/pull/11775))
- Account for `LA Disk Encryption` region capability when checking if region supports Disk Encryption ([#11833](https://github.com/linode/manager/pull/11833))
- Account for whether region supports LDE when determining tooltip display for unencrypted linodes & node pools ([#11833](https://github.com/linode/manager/pull/11833))

### Fixed:

Expand Down Expand Up @@ -93,12 +95,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
- Improve UX of CloudPulse Alerts create flow and resources section ([#11748](https://github.com/linode/manager/pull/11748))
- Fix CloudPulse document titles with appropriate keywords (#11662)
- Update LKE checkout bar & NodeBalancer details summary ([#11653](https://github.com/linode/manager/pull/11653))
-

## [2025-02-27] - v1.137.2

### Fixed:

- Disk Encryption logic preventing Linode deployment in distributed regions ([#11760](https://github.com/linode/manager/pull/11760)
- Disk Encryption logic preventing Linode deployment in distributed regions ([#11760](https://github.com/linode/manager/pull/11760))

## [2025-02-25] - v1.137.1

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,18 @@ const Panel = (props: NodePoolPanelProps) => {
setSelectedType(planId);
};

const regionSupportsDiskEncryption = doesRegionSupportFeature(
selectedRegionId ?? '',
regions,
'Disk Encryption'
);
// "Disk Encryption" indicates general availability and "LA Disk Encryption" indicates limited availability
const regionSupportsDiskEncryption =
doesRegionSupportFeature(
selectedRegionId ?? '',
regions,
'Disk Encryption'
) ||
doesRegionSupportFeature(
selectedRegionId ?? '',
regions,
'LA Disk Encryption'
);

return (
<Grid container direction="column">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ interface Props {
openRecycleAllNodesDialog: (poolId: number) => void;
openRecycleNodeDialog: (nodeID: string, linodeLabel: string) => void;
poolId: number;
regionSupportsDiskEncryption: boolean;
statusFilter: StatusFilter;
tags: string[];
typeLabel: string;
Expand All @@ -65,6 +66,7 @@ export const NodePool = (props: Props) => {
openRecycleAllNodesDialog,
openRecycleNodeDialog,
poolId,
regionSupportsDiskEncryption,
statusFilter,
tags,
typeLabel,
Expand Down Expand Up @@ -227,6 +229,7 @@ export const NodePool = (props: Props) => {
nodes={nodes}
openRecycleNodeDialog={openRecycleNodeDialog}
poolId={poolId}
regionSupportsDiskEncryption={regionSupportsDiskEncryption}
statusFilter={statusFilter}
tags={tags}
typeLabel={typeLabel}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,15 @@ export const NodePoolsDisplay = (props: Props) => {
setExpandedAccordions,
} = useDefaultExpandedNodePools(clusterID, _pools);

const regionSupportsDiskEncryption =
(regionsData
.find((regionDatum) => regionDatum.id === clusterRegionId)
?.capabilities.includes('Disk Encryption') ||
regionsData
.find((regionDatum) => regionDatum.id === clusterRegionId)
?.capabilities.includes('LA Disk Encryption')) ??
false;

if (isLoading || pools === undefined) {
return <CircleProgress />;
}
Expand Down Expand Up @@ -302,6 +311,7 @@ export const NodePoolsDisplay = (props: Props) => {
key={id}
nodes={nodes ?? []}
poolId={thisPool.id}
regionSupportsDiskEncryption={regionSupportsDiskEncryption}
statusFilter={statusFilter}
tags={tags}
typeLabel={typeLabel}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ const props: Props = {
nodes: mockKubeNodes,
openRecycleNodeDialog: vi.fn(),
poolId: 1,
regionSupportsDiskEncryption: false,
statusFilter: 'all',
tags: [],
typeLabel: 'Linode 2G',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ export interface Props {
nodes: PoolNodeResponse[];
openRecycleNodeDialog: (nodeID: string, linodeLabel: string) => void;
poolId: number;
regionSupportsDiskEncryption: boolean;
statusFilter: StatusFilter;
tags: string[];
typeLabel: string;
Expand All @@ -67,6 +68,7 @@ export const NodeTable = React.memo((props: Props) => {
nodes,
openRecycleNodeDialog,
poolId,
regionSupportsDiskEncryption,
statusFilter,
tags,
typeLabel,
Expand Down Expand Up @@ -268,6 +270,9 @@ export const NodeTable = React.memo((props: Props) => {
</Typography>
<StyledVerticalDivider />
<EncryptedStatus
regionSupportsDiskEncryption={
regionSupportsDiskEncryption
}
encryptionStatus={encryptionStatus}
tooltipText={DISK_ENCRYPTION_NODE_POOL_GUIDANCE_COPY}
/>
Expand Down Expand Up @@ -309,9 +314,11 @@ export const nodeToRow = (

export const EncryptedStatus = ({
encryptionStatus,
regionSupportsDiskEncryption,
tooltipText,
}: {
encryptionStatus: EncryptionStatus;
regionSupportsDiskEncryption: boolean;
tooltipText: string | undefined;
}) => {
return encryptionStatus === 'enabled' ? (
Expand All @@ -324,7 +331,9 @@ export const EncryptedStatus = ({
<Unlock />
<StyledNotEncryptedBox>
<Typography sx={{ whiteSpace: 'nowrap' }}>Not Encrypted</Typography>
{tooltipText ? <TooltipIcon status="help" text={tooltipText} /> : null}
{regionSupportsDiskEncryption && tooltipText ? (
<TooltipIcon status="help" text={tooltipText} />
) : null}
</StyledNotEncryptedBox>
</>
) : null;
Expand Down
10 changes: 5 additions & 5 deletions packages/manager/src/features/Linodes/LinodeCreate/Region.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -144,11 +144,11 @@ export const Region = React.memo(() => {
setValue('disk_encryption', undefined);
} else {
// Enable disk encryption by default if the region supports it
const defaultDiskEncryptionValue = region.capabilities.includes(
'Disk Encryption'
)
? 'enabled'
: undefined;
const defaultDiskEncryptionValue =
region.capabilities.includes('Disk Encryption') ||
region.capabilities.includes('LA Disk Encryption')
? 'enabled'
: undefined;

setValue('disk_encryption', defaultDiskEncryptionValue);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@ export const Security = () => {

const selectedRegion = regions?.find((r) => r.id === regionId);

const regionSupportsDiskEncryption = selectedRegion?.capabilities.includes(
'Disk Encryption'
);
// "Disk Encryption" indicates general availability and "LA Disk Encryption" indicates limited availability
const regionSupportsDiskEncryption =
selectedRegion?.capabilities.includes('Disk Encryption') ||
selectedRegion?.capabilities.includes('LA Disk Encryption');

const isDistributedRegion = getIsDistributedRegion(
regions ?? [],
Expand Down
10 changes: 10 additions & 0 deletions packages/manager/src/features/Linodes/LinodeEntityDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,15 @@ export const LinodeEntityDetail = (props: Props) => {
linode.region
);

const regionSupportsDiskEncryption =
(regions
?.find((r) => r.id === linode.region)
?.capabilities.includes('Disk Encryption') ||
regions
?.find((r) => r.id === linode.region)
?.capabilities.includes('LA Disk Encryption')) ??
false;

let progress;
let transitionText;

Expand Down Expand Up @@ -132,6 +141,7 @@ export const LinodeEntityDetail = (props: Props) => {
numCPUs={linode.specs.vcpus}
numVolumes={numberOfVolumes}
region={linode.region}
regionSupportsDiskEncryption={regionSupportsDiskEncryption}
vpcLinodeIsAssignedTo={vpcLinodeIsAssignedTo}
/>
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ export interface BodyProps {
numCPUs: number;
numVolumes: number;
region: string;
regionSupportsDiskEncryption: boolean;
vpcLinodeIsAssignedTo?: VPC;
}

Expand All @@ -105,6 +106,7 @@ export const LinodeEntityDetailBody = React.memo((props: BodyProps) => {
numCPUs,
numVolumes,
region,
regionSupportsDiskEncryption,
vpcLinodeIsAssignedTo,
} = props;

Expand Down Expand Up @@ -249,6 +251,7 @@ export const LinodeEntityDetailBody = React.memo((props: BodyProps) => {
: UNENCRYPTED_STANDARD_LINODE_GUIDANCE_COPY
}
encryptionStatus={encryptionStatus}
regionSupportsDiskEncryption={regionSupportsDiskEncryption}
/>
</Box>
</Grid>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,12 @@ export const DiskEncryption = (props: Props) => {
const { data: region } = useRegionQuery(linodeRegion);

const isLinodeInDistributedRegion = region?.site_type === 'distributed';

// "Disk Encryption" indicates general availability and "LA Disk Encryption" indicates limited availability
const regionSupportsDiskEncryption =
region?.capabilities.includes('Disk Encryption') ?? false;
(region?.capabilities.includes('Disk Encryption') ||
region?.capabilities.includes('LA Disk Encryption')) ??
false;

const {
isDiskEncryptionFeatureEnabled,
Expand Down
2 changes: 1 addition & 1 deletion packages/ui/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## [2025-03-11] - v0.8.0
## [2025-03-17] - v0.8.0

### Added:

Expand Down
6 changes: 1 addition & 5 deletions packages/utilities/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## [2025-03-11] - v0.1.0
## [2025-03-17] - v0.1.0

### Added:

Expand All @@ -8,7 +8,3 @@
### Changed:

- Move @vitest/ui to monorepo root dependency ([#11755](https://github.com/linode/manager/pull/11755))

### Tech Stories:

- Update `@vitest/ui` from `2.1.1` to `3.0.3` ([#11749](https://github.com/linode/manager/pull/11749))
2 changes: 1 addition & 1 deletion packages/validation/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## [2025-03-11] - v0.62.0
## [2025-03-17] - v0.62.0

### Added:

Expand Down