Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
bbd6995
fix: [UIE-10338] marketplace fixes (#13498)
tvijay-akamai Mar 17, 2026
952f363
fix: [UIE-10352] Added capability to open links in markdown in differ…
tvijay-akamai Mar 17, 2026
9fcb771
upcoming: [UIE-10204] - Allow Simultaneous V1 (Legacy) and V2 (ACLP) …
pmakode-akamai Mar 17, 2026
9bce141
fix: [DPS-36769] - Filtering clusters by region not working (#13491)
mduda-akamai Mar 17, 2026
6f39842
fix: [UIE-10285] - Advanced Config field tooltip error (#13465)
hana-akamai Mar 17, 2026
cac8d8c
upcoming: [DPS-41183] - Migrate content to details for Notification C…
santoshp210-akamai Mar 17, 2026
fff15c2
fix: [UIE-10482] Improve loading pattern on Account Delegation landin…
abailly-akamai Mar 18, 2026
b710851
fix: [UIE-10472] - Remove unintended validation on optional email fie…
harsh-akamai Mar 18, 2026
f18fce5
upcoming: [UIE-9376] β€” Add Image select table to Linode Rebuild dialo…
dwiley-akamai Mar 18, 2026
d01dccc
upcoming: [UIE-10425] - Add the new feature "Reserved IPs" to side na…
grevanak-akamai Mar 18, 2026
462f74e
build(deps-dev): Bump simple-git from 3.27.0 to 3.32.3 (#13477)
dependabot[bot] Mar 19, 2026
f284f03
new: STORIF-316 - Removed ErrorState for 404 error in global quotas t…
dchyrva-akamai Mar 19, 2026
9765174
change: [DPS-41214] - Stream and Destination Empty Landing pages flic…
kagora-akamai Mar 19, 2026
c89a6b2
test: [UIE-10422] - DBaaS - Fixing flaky ServiceURI.spec.ts tests (#1…
smans-akamai Mar 19, 2026
85edc8c
feat: [OCA-1666] - Add (DeepSeek,OpenClaw) to Quick Deploy Apps (#13499)
n0vabyte Mar 23, 2026
076ad9d
upcoming: [DPS-36770] - Custom HTTPS form - UX and Tech Writing impro…
mduda-akamai Mar 23, 2026
2cbecd4
upcoming: [DPS-41595] - Ability to download widget data as CSV in Clo…
venkymano-akamai Mar 23, 2026
ca83906
fix: [UIE-10522] - Disable credential buttons for resuming state (#13…
hana-akamai Mar 23, 2026
849c34e
Fix failure by asserting password reveal button is disabled when DB i…
jdamore-linode Mar 23, 2026
e4053c7
merge latest linode/develop
santoshp210-akamai Mar 24, 2026
d588fc3
fix duplicate type
santoshp210-akamai Mar 24, 2026
0bff8eb
upcoming: [DPS-41443] - Metrics widget dimension filter and Group By …
santoshp210-akamai Mar 24, 2026
d4975ff
test: [DI-30129] - Add spec for show details notification channel (#1…
shnagend-akamai Mar 24, 2026
891c1e5
fix: [DPS-41958] - Destination Form: omit empty tls_hostname from des…
mduda-akamai Mar 24, 2026
c02927b
fix: [UIE-10337] updated error message in marketplace contact sales d…
tvijay-akamai Mar 24, 2026
f44fbdd
fix: [UIE-10357] fixed accessibility issue (#13515)
tvijay-akamai Mar 24, 2026
4536cf7
build(deps): Bump dompurify from 3.2.4 to 3.3.1 (#13466)
dependabot[bot] Mar 24, 2026
988fc5f
upcoming: [UIE-10490] - Configure New Feature Chip and Banner Messagi…
pmakode-akamai Mar 24, 2026
a3d6dd4
fix: General Service URI text in Database Summary page (#13519)
hana-akamai Mar 24, 2026
1c93873
build(deps): Bump jspdf from 4.2.0 to 4.2.1 (#13503)
dependabot[bot] Mar 24, 2026
d0083e8
test: [UIE-10554] - Fix LKE create test following APL launch (#13526)
jdamore-linode Mar 24, 2026
28d5bf9
Fix Linode alert creation test failures (#13527)
jdamore-linode Mar 24, 2026
2b3b3f8
feat: [UIE-10505] IAM Parent/Child - pendo tags (#13530)
mpolotsk-akamai Mar 25, 2026
d1ccb5b
Added: [UIE-10469] added new marketplace products (#13531)
tvijay-akamai Mar 25, 2026
696ca2b
test: corrected "can create and delete object storage buckets" test (…
skulpok-akamai Mar 25, 2026
8d2cc6d
fix: [UIE-10490, UIE-10564] - Mock relevant flags in alerts-related t…
pmakode-akamai Mar 25, 2026
d73a7f6
upcoming: [UIE-9402] - Implement Owned groups tab landing page (#13506)
fabrice-akamai Mar 25, 2026
265a772
build(deps): Bump dompurify from 3.3.1 to 3.3.2 (#13525)
dependabot[bot] Mar 25, 2026
0d1f024
upcoming: [UIE-10426] - Add new endpoints, types and Queries for Rese…
grevanak-akamai Mar 26, 2026
6472ae5
sync latest linode/develop
santoshp210-akamai Mar 26, 2026
e0dccbe
commit lockfile
santoshp210-akamai Mar 26, 2026
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/api-v4": Upcoming Features
---

Replaced `content` with `details` in cloudpulse/types.ts for ACLP-Alerts Notification Channels ([#13495](https://github.com/linode/manager/pull/13495))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/api-v4": Removed
---

Old `failed` property from `DatabaseStatus` ([#13505](https://github.com/linode/manager/pull/13505))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/api-v4": Upcoming Features
---

Reserved IPs: Added new API endpoints ([#13517](https://github.com/linode/manager/pull/13517))
1 change: 0 additions & 1 deletion packages/api-v4/src/databases/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ export interface DatabaseEngine {
export type DatabaseStatus =
| 'active'
| 'degraded'
| 'failed'
| 'migrated'
| 'migrating'
| 'provisioning'
Expand Down
2 changes: 2 additions & 0 deletions packages/api-v4/src/images/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
export * from './images';

export * from './sharegroups';

export * from './types';
112 changes: 108 additions & 4 deletions packages/api-v4/src/networking/networking.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {
allocateIPSchema,
assignAddressesSchema,
reserveIPSchema,
shareAddressesSchema,
updateIPSchema,
} from '@linode/validation/lib/networking.schema';
Expand All @@ -14,14 +15,16 @@ import Request, {
setXFilter,
} from '../request';

import type { Filter, ResourcePage as Page, Params } from '../types';
import type { Filter, ResourcePage as Page, Params, PriceType } from '../types';
import type {
AllocateIPPayload,
CreateIPv6RangePayload,
IPAddress,
IPAssignmentPayload,
IPRange,
IPRangeInformation,
IPSharingPayload,
ReserveIPPayload,
} from './types';

/**
Expand Down Expand Up @@ -52,16 +55,24 @@ export const getIP = (address: string) =>
* Sets RDNS on an IP Address. Forward DNS must already be set up for reverse
* DNS to be applied. If you set the RDNS to null for public IPv4 addresses,
* it will be reset to the default members.linode.com RDNS value.
* Also setting β€œreserved” field to true converts an Ephemeral IP to an Reserved IP.
* setting β€œreserved” field set to false converts a Reserved IP to an Ephemeral IP.
* An Ephemeral IP is an IP that’s assigned to a Linode but not reserved.
*
* @param address { string } The address to operate on.
* @param rdns { string } The reverse DNS assigned to this address. For public
* IPv4 addresses, this will be set to a default value provided by Linode if not
* explicitly set.
* @param reserved { boolean } Whether to reserve the IP address.
*/
export const updateIP = (address: string, rdns: null | string = null) =>
export const updateIP = (
address: string,
rdns: null | string = null,
reserved?: boolean,
) =>
Request<IPAddress>(
setURL(`${API_ROOT}/networking/ips/${encodeURIComponent(address)}`),
setData({ rdns }, updateIPSchema),
setData({ rdns, reserved }, updateIPSchema),
setMethod('PUT'),
);

Expand All @@ -77,8 +88,11 @@ export const updateIP = (address: string, rdns: null | string = null) =>
* address.
* @param payload.linode_id { number } The ID of a Linode you you have access to
* that this address will be allocated to.
* @param payload.reserved { boolean } Whether to reserve the IP address.
* @param payload.region { string } The ID of the Region in which this address * will be allocated.
* Required when reserving an IP address, not required when allocating an ephemeral IP address.
*/
export const allocateIp = (payload: any) =>
export const allocateIp = (payload: AllocateIPPayload) =>
Request<IPAddress>(
setURL(`${API_ROOT}/networking/ips/`),
setData(payload, allocateIPSchema),
Expand Down Expand Up @@ -194,3 +208,93 @@ export const createIPv6Range = (payload: CreateIPv6RangePayload) => {
setData(payload),
);
};

// Reserve IP queries
/**
* getReservedIps
*
* Returns a paginated list of all Reserved IP addresses on this account.
*/
export const getReservedIPs = (params?: Params, filters?: Filter) =>
Request<Page<IPAddress>>(
setMethod('GET'),
setParams(params),
setXFilter(filters),
setURL(`${BETA_API_ROOT}/networking/reserved/ips`),
);

/**
* Returns information about a single Reserved IP Address on your Account.
*
* @param address { string } The address to operate on.
*/
export const getReservedIP = (address: string) =>
Request<IPAddress>(
setURL(
`${BETA_API_ROOT}/networking/reserved/ips/${encodeURIComponent(address)}`,
),
setMethod('GET'),
);

/**
* Tags associated with the reserved IP can be updated.
* The tags associated with the reserved IP will be completely replaced with the values specified in the request body,
* rather than just adding additional tags to what’s already there
*
* @param address { string } The address to operate on.
* @param tags { string[] | null } The tags to associate with this reserved IP. If null, all tags will be removed.
*/
export const updateReservedIP = (
address: string,
tags: null | string[] = null,
) =>
Request<IPAddress>(
setURL(
`${BETA_API_ROOT}/networking/reserved/ips/${encodeURIComponent(address)}`,
),
setData({ tags }),
setMethod('PUT'),
);

/**
* Makes one of the IP address available in the provided region as reserved.
* Only IPv4 addresses may be reserved through this endpoint.
*
* @param payload { Object }
* @param payload.region { string } The ID of the Region in which these
* assignments are to take place. All IPs and Linodes must exist in this Region.
* @param payload.tags { string[] } A list of tags to associate with this reserved IP.
*/
export const reserveIP = (payload: ReserveIPPayload) =>
Request<IPAddress>(
setURL(`${BETA_API_ROOT}/networking/reserved/ips`),
setData(payload, reserveIPSchema),
setMethod('POST'),
);

/**
* unReserveIP
*
* Unreserves an IP address, making it available for general use.
* Any Tag associations will be removed when the IP address is un-reserved via this endpoint.
*
*/
export const unReserveIP = (ipAddress: string) =>
Request<object>(
setURL(
`${BETA_API_ROOT}/networking/reserved/ips/${encodeURIComponent(ipAddress)}`,
),
setMethod('DELETE'),
);

/**
* getReservedIPsTypes
*
* Returns a paginated list of available Reserved IP types; used for pricing.
*/
export const getReservedIPsTypes = (params?: Params) =>
Request<Page<PriceType>>(
setURL(`${API_ROOT}/networking/reserved/ips/types`),
setMethod('GET'),
setParams(params),
);
25 changes: 24 additions & 1 deletion packages/api-v4/src/networking/types.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
export interface AssignedEntity {
id: number;
label: string;
type: string;
url: string;
}

export interface IPAddress {
address: string;
assigned_entity: AssignedEntity | null;
gateway: null | string;
interface_id: null | number;
linode_id: number;
linode_id: null | number;
prefix: number;
public: boolean;
rdns: null | string;
region: string;
reserved: boolean;
subnet_mask: string;
tags: string[];
type: string;
vpc_nat_1_1?: null | {
address: string;
Expand All @@ -16,6 +26,14 @@ export interface IPAddress {
};
}

export interface AllocateIPPayload {
linode_id?: number;
public: boolean;
region?: string;
reserved?: boolean;
type: string;
}

export interface IPRangeBaseData {
prefix: number;
range: string;
Expand Down Expand Up @@ -51,3 +69,8 @@ export interface CreateIPv6RangePayload {
prefix_length: IPv6Prefix;
route_target?: string;
}

export interface ReserveIPPayload {
region: string;
tags?: string[];
}
1 change: 1 addition & 0 deletions packages/api-v4/src/nodebalancers/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ export interface CreateNodeBalancerPayload {
client_udp_sess_throttle?: number;
configs: CreateNodeBalancerConfig[];
firewall_id?: number;
ipv4?: string; // must be a reserved unassigned IP owned by the customer.
label?: string;
region?: string;
tags?: string[];
Expand Down
4 changes: 4 additions & 0 deletions packages/api-v4/src/tags/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ export interface Tag {
}

export interface TagRequest {
domains?: number[];
label: string;
linodes?: number[];
nodebalancers?: number[];
reserved_ipv4_addresses?: string[];
volumes?: number[];
}
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13449-tests-1772265280573.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Tests
---

Adding spec for show details notification channel ([#13449](https://github.com/linode/manager/pull/13449))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Allow simultaneous v1 (Legacy) and v2 (ACLP) alerting in Linode edit flow ([#13455](https://github.com/linode/manager/pull/13455))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13465-fixed-1772658612856.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Fixed
---

Database Advanced Config field tooltip error ([#13465](https://github.com/linode/manager/pull/13465))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Use ImageSelectTable in Linode Rebuild dialog ([#13482](https://github.com/linode/manager/pull/13482))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13483-fixed-1773803172611.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Fixed
---

Remove unintended validation on optional email fields in Contact Sales Drawer ([#13483](https://github.com/linode/manager/pull/13483))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Reserve IP: Add the new feature Reserved IPs to side nav ([#13486](https://github.com/linode/manager/pull/13486))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Changed
---

Streams and Destinations Landing page initial load spinner added before empty state ([#13489](https://github.com/linode/manager/pull/13489))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13491-fixed-1773404088592.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Fixed
---

In Stream Create and Edit forms in the Clusters table filtering by region resulted in an empty clusters list ([#13491](https://github.com/linode/manager/pull/13491))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Migrated to `details` from `content` in ACLP-Alerts Notification Channels ([#13495](https://github.com/linode/manager/pull/13495))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

ACLP-Metrics updated Tooltip messages for Group-by, DimensionFilter icons when in disabled state for the Widgets ([#13496](https://github.com/linode/manager/pull/13496))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Add alternate tool tip texts for group-by, dimension filter widget icons when disabled in ACLP-Metrics ([#13496](https://github.com/linode/manager/pull/13496))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Ability to download widget data as CSV in `CloudPulse metrics dashboards` ([#13497](https://github.com/linode/manager/pull/13497))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13498-fixed-1782319675458.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Fixed
---

Marketplace Fixes: Improved texts and tooltips. Changed submit enable behavior in contact sales form ([#13498](https://github.com/linode/manager/pull/13498))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13499-added-1773854043259.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Added
---

Add DeepSeek-R1 and OpenClaw to Quick Deploy Apps ([#13499](https://github.com/linode/manager/pull/13499))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13501-fixed-1774516931626.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Fixed
---

Product content received in markdown format can have links. Added capability in markdown to open these links in new tab ([#13501](https://github.com/linode/manager/pull/13501))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13502-fixed-1773765480516.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Fixed
---

Improve loading pattern on Account Delegation landing page ([#13502](https://github.com/linode/manager/pull/13502))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Tech Stories
---

Bump jspdf from 4.2.0 to 4.2.1 ([#13503](https://github.com/linode/manager/pull/13503))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13505-fixed-1773782546945.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Fixed
---

Disable Database credential buttons for resuming state ([#13505](https://github.com/linode/manager/pull/13505))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Implement owned groups landing page content ([#13506](https://github.com/linode/manager/pull/13506))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Custom HTTPS destination form: improve the UX and update copy ([#13507](https://github.com/linode/manager/pull/13507))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Configure new feature chip and banner messaging for ACLP Linode Alerts and Metrics ([#13509](https://github.com/linode/manager/pull/13509))
5 changes: 5 additions & 0 deletions packages/manager/.changeset/pr-13512-fixed-1791257453414.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Fixed
---

Updated rate limiting error message in contact sales drawer ([#13512](https://github.com/linode/manager/pull/13512))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Reserved IPs - Add new endpoints, types and Queries ([#13517](https://github.com/linode/manager/pull/13517))
Loading
Loading