Skip to content

Commit be09b1a

Browse files
authored
Merge pull request #12306 from linode/staging
Release v1.143.0 - staging → master
2 parents e0dda68 + 4a7a1c2 commit be09b1a

File tree

554 files changed

+10583
-3710
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

554 files changed

+10583
-3710
lines changed

docs/tooling/analytics.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,20 @@ Pendo is configured in [`usePendo.js`](https://github.com/linode/manager/blob/de
1212

1313
Important notes:
1414

15-
- Pendo is only loaded if the user has enabled Performance Cookies via OneTrust *and* if a valid `PENDO_API_KEY` is configured as an environment variable. In our development, staging, and production environments, `PENDO_API_KEY` is available at build time. See **Locally Testing Page Views & Custom Events and/or Troubleshooting Pendo** for set up with local environments.
16-
- We load the Pendo agent from the CDN, rather than [self-hosting](https://support.pendo.io/hc/en-us/articles/360038969692-Self-hosting-the-Pendo-agent), and we have configured a [CNAME](https://support.pendo.io/hc/en-us/articles/360043539891-CNAME-for-Pendo).
15+
- Pendo is only loaded if a valid `PENDO_API_KEY` is configured as an environment variable. In our preview, development, staging, and production environments, `PENDO_API_KEY` is available at build time. See **Locally Testing Page Views & Custom Events and/or Troubleshooting Pendo** for set up with local environments.
16+
- We [self-host](https://support.pendo.io/hc/en-us/articles/360038969692-Self-hosting-the-Pendo-agent) and load the Pendo agent from Adobe Launch, rather than from the CDN, and we have configured a [CNAME](https://support.pendo.io/hc/en-us/articles/360043539891-CNAME-for-Pendo).
17+
- As configured by Adobe Launch, Pendo will respect OneTrust cookie preferences in development, staging, and production environments and does not check cookie preferences in preview environments. Pendo will not run on localhost:3000 because it needs a Optanon cookie with the linode.com domain for consent.
1718
- At initialization, we do string transformation on select URL patterns to **remove sensitive data**. When new URL patterns are added to Cloud Manager, verify that existing transforms remove sensitive data; if not, update the transforms.
18-
- Pendo will respect OneTrust cookie preferences in development, staging, and production environments and does not check cookie preferences in the local environment.
1919
- Pendo makes use of the existing `data-testid` properties, used in our automated testing, for tagging elements. They are more persistent and reliable than CSS properties, which are liable to change.
2020

2121
### Locally Testing Page Views & Custom Events and/or Troubleshooting Pendo
2222

2323
1. Set the `REACT_APP_PENDO_API_KEY` environment variable in `.env`.
24-
2. Use the browser tools Network tab, filter requests by "psp.cloud", and check that successful network requests have been made to load Pendo scripts (also visible in the browser tools Sources tab).
25-
3. In the browser console, type `pendo.validateEnvironment()`.
26-
4. You should see command output in the console, and it should include an `accountId` and a `visitorId` that correspond with your APIv4 account `euuid` and profile `uid`, respectively. Each page view change or custom event that fires should be visible as a request in the Network tab.
27-
5. If the console does not output the expected ids and instead outputs something like `Cookies are disabled in Pendo config. Is this expected?` in response to the above command, clear app storage with the browser tools. Once redirected back to Login, update the OneTrust cookie settings to enable cookies via "Manage Preferences" in the banner at the bottom of the screen. Log back into Cloud Manager and Pendo should load.
24+
2. Confirm the Adobe Launch script has loaded. (View it in the browser console Sources tab under the assets.adobedtm.com directory.)
25+
3. Use the browser tools Network tab, filter requests by "psp.cloud", and check that successful network requests have been made to load Pendo scripts (also visible in the browser tools Sources tab).
26+
4. In the browser console, type `pendo.validateEnvironment()`.
27+
5. You should see command output in the console, and it should include an `accountId` and a `visitorId` that correspond with your APIv4 account `euuid` and profile `uid`, respectively. Each page view change or custom event that fires should be visible as a request in the Network tab.
28+
6. If the console does not output the expected ids and instead outputs something like `Cookies are disabled in Pendo config. Is this expected?` in response to the above command, clear app storage with the browser tools. Once redirected back to Login, update the OneTrust cookie settings to enable cookies via "Manage Preferences" in the banner at the bottom of the screen. Log back into Cloud Manager and Pendo should load.
2829

2930
## Adobe Analytics
3031

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"eslint-plugin-prettier": "~5.2.6",
2020
"eslint-plugin-react": "^7.37.4",
2121
"eslint-plugin-react-hooks": "^5.2.0",
22+
"eslint-plugin-react-refresh": "0.4.20",
2223
"eslint-plugin-sonarjs": "^3.0.2",
2324
"eslint-plugin-testing-library": "^7.1.1",
2425
"eslint-plugin-xss": "^0.1.12",

packages/api-v4/CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
## [2025-06-03] - v0.141.0
2+
3+
### Added:
4+
5+
- Notification type for QEMU maintenance ([#12231](https://github.com/linode/manager/pull/12231))
6+
- PrivateNetwork type for Use in DBaaS requests ([#12281](https://github.com/linode/manager/pull/12281))
7+
8+
### Changed:
9+
10+
- Make `lke_cluster` and `type` defined in the `NodeBalancer` type ([#12217](https://github.com/linode/manager/pull/12217))
11+
- Mark `markEventRead` as deprecated ([#12274](https://github.com/linode/manager/pull/12274))
12+
13+
### Fixed:
14+
15+
- Make quota_id a string ([#12272](https://github.com/linode/manager/pull/12272))
16+
17+
### Removed:
18+
19+
- `add_buckets` from `GlobalGrantTypes` ([#12223](https://github.com/linode/manager/pull/12223))
20+
121
## [2025-05-20] - v0.140.0
222

323
### Upcoming Features:

packages/api-v4/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@linode/api-v4",
3-
"version": "0.140.0",
3+
"version": "0.141.0",
44
"homepage": "https://github.com/linode/manager/tree/develop/packages/api-v4",
55
"bugs": {
66
"url": "https://github.com/linode/manager/issues"
@@ -56,6 +56,7 @@
5656
"lib"
5757
],
5858
"devDependencies": {
59+
"@linode/tsconfig": "workspace:*",
5960
"axios-mock-adapter": "^1.22.0",
6061
"concurrently": "^9.0.1",
6162
"tsup": "^8.4.0"

packages/api-v4/src/account/events.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export const getEvent = (eventId: number) =>
3333
/**
3434
* markEventSeen
3535
*
36-
* Set the "seen" property of an event to true
36+
* Marks all events up to and including the referenced event ID as "seen"
3737
*
3838
* @param eventId { number } ID of the event to designate as seen
3939
*/
@@ -50,6 +50,10 @@ export const markEventSeen = (eventId: number) =>
5050
*
5151
* @param eventId { number } ID of the event to designate as read
5252
*
53+
* @deprecated As of `5/20/2025`, this endpoint is deprecated. It will be sunset on `6/17/2025`.
54+
*
55+
* If you depend on using `read`, you may be able to use `markEventSeen` and `seen` instead.
56+
* Please note that the `seen` endpoint functions differently and will mark all events up to and including the referenced event ID as "seen" rather than individual events.
5357
*/
5458
export const markEventRead = (eventId: number) =>
5559
Request<{}>(

packages/api-v4/src/account/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,6 @@ export interface Grant {
199199
}
200200
export type GlobalGrantTypes =
201201
| 'account_access'
202-
| 'add_buckets'
203202
| 'add_databases'
204203
| 'add_domains'
205204
| 'add_firewalls'
@@ -286,6 +285,7 @@ export type NotificationType =
286285
| 'payment_due'
287286
| 'promotion'
288287
| 'reboot_scheduled'
288+
| 'security_reboot_maintenance_scheduled'
289289
| 'tax_id_verifying'
290290
| 'ticket_abuse'
291291
| 'ticket_important'
@@ -574,7 +574,7 @@ export interface AccountMaintenance {
574574
entity: {
575575
id: number;
576576
label: string;
577-
type: string;
577+
type: 'linode' | 'volume';
578578
url: string;
579579
};
580580
maintenance_policy_set: MaintenancePolicyType;

packages/api-v4/src/databases/types.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,12 @@ export interface DatabaseInstance {
127127

128128
export type ClusterSize = 1 | 2 | 3;
129129

130+
export interface PrivateNetwork {
131+
public_access: boolean;
132+
subnet_id: null | number;
133+
vpc_id: null | number;
134+
}
135+
130136
type ReadonlyCount = 0 | 2;
131137

132138
/** @deprecated TODO (UIE-8214) remove POST GA */
@@ -139,6 +145,7 @@ export interface CreateDatabasePayload {
139145
encrypted?: boolean;
140146
engine?: Engine;
141147
label: string;
148+
private_network?: null | PrivateNetwork; // TODO (UIE-8831): Remove optional (?) post VPC release, since it will always be in create payload
142149
region: string;
143150
/** @Deprecated used by rdbms-legacy only */
144151
replication_type?: MySQLReplicationType | PostgresReplicationType;

packages/api-v4/src/nodebalancers/nodebalancers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import type {
2222
CreateNodeBalancerPayload,
2323
NodeBalancer,
2424
NodeBalancerStats,
25-
NodebalancerVpcConfig,
25+
NodeBalancerVpcConfig,
2626
} from './types';
2727

2828
/**
@@ -193,7 +193,7 @@ export const getNodeBalancerVPCConfigsBeta = (
193193
params?: Params,
194194
filter?: Filter,
195195
) =>
196-
Request<Page<NodebalancerVpcConfig>>(
196+
Request<Page<NodeBalancerVpcConfig>>(
197197
setURL(
198198
`${BETA_API_ROOT}/nodebalancers/${encodeURIComponent(
199199
nodeBalancerId,
@@ -214,7 +214,7 @@ export const getNodeBalancerVPCConfigBeta = (
214214
nodeBalancerId: number,
215215
nbVpcConfigId: number,
216216
) =>
217-
Request<NodebalancerVpcConfig>(
217+
Request<NodeBalancerVpcConfig>(
218218
setURL(
219219
`${BETA_API_ROOT}/nodebalancers/${encodeURIComponent(
220220
nodeBalancerId,

packages/api-v4/src/nodebalancers/types.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ export interface NodeBalancer {
4242
* If the NB is associated with a cluster (active or deleted), return its info
4343
* If the NB is not associated with a cluster, return null
4444
*/
45-
lke_cluster?: LKEClusterInfo | null;
45+
lke_cluster: LKEClusterInfo | null;
4646
region: string;
4747
tags: string[];
4848
transfer: BalancerTransfer;
49-
type?: NodeBalancerType;
49+
type: NodeBalancerType;
5050
updated: string;
5151
}
5252

@@ -134,7 +134,13 @@ export interface NodeBalancerStats {
134134
title: string;
135135
}
136136

137-
export interface NodebalancerVpcConfig {
137+
export interface NodeBalancerVpcPayload {
138+
ipv4_range?: string;
139+
ipv6_range?: string;
140+
subnet_id: number;
141+
}
142+
143+
export interface NodeBalancerVpcConfig {
138144
id: number;
139145
ipv4_range: null | string;
140146
ipv6_range: null | string;
@@ -247,9 +253,5 @@ export interface CreateNodeBalancerPayload {
247253
label?: string;
248254
region?: string;
249255
tags?: string[];
250-
vpcs?: {
251-
ipv4_range: string;
252-
ipv6_range?: string;
253-
subnet_id: number;
254-
}[];
256+
vpcs?: NodeBalancerVpcPayload[];
255257
}

packages/api-v4/src/quotas/quotas.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ export const getQuotas = (
4545
* Returns the usage for a single quota within a particular service specified by `type`.
4646
*
4747
* @param type { QuotaType } retrieve a quota within this service type.
48-
* @param id { number } the quota ID to look up.
48+
* @param id { string } the quota ID to look up.
4949
*/
50-
export const getQuotaUsage = (type: QuotaType, id: number) =>
50+
export const getQuotaUsage = (type: QuotaType, id: string) =>
5151
Request<QuotaUsage>(
5252
setURL(`${BETA_API_ROOT}/${type}/quotas/${id}/usage`),
5353
setMethod('GET'),

0 commit comments

Comments
 (0)