Skip to content

Commit fbcb018

Browse files
Merge pull request #11645 from linode/staging
Release v1.136.0 - `staging` → `master`
2 parents 0b3126f + a048132 commit fbcb018

File tree

413 files changed

+16748
-6476
lines changed

Some content is hidden

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

413 files changed

+16748
-6476
lines changed

docs/tooling/analytics.md

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

1313
Important notes:
1414

15-
- Pendo is only loaded 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.
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.
1616
- 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).
1717
- We are hashing account and visitor IDs in a way that is consistent with Akamai's standards.
1818
- 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.
19-
- Pendo is currently not using any client-side (cookies or local) storage.
19+
- Pendo will respect OneTrust cookie preferences in development, staging, and production environments and does not check cookie preferences in the local environment.
2020
- 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.
2121

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"devDependencies": {
66
"husky": "^9.1.6",
77
"typescript": "^5.7.3",
8-
"vitest": "^2.1.1"
8+
"vitest": "^3.0.5"
99
},
1010
"scripts": {
1111
"lint": "yarn run eslint . --quiet --ext .js,.ts,.tsx",

packages/api-v4/CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,32 @@
1+
## [2025-02-11] - v0.134.0
2+
3+
4+
### Added:
5+
6+
- Labels and Taints types and params ([#11528](https://github.com/linode/manager/pull/11528))
7+
- API endpoints for NotificationChannels ([#11547](https://github.com/linode/manager/pull/11547))
8+
- `service-transfer` related endpoints ([#11562](https://github.com/linode/manager/pull/11562))
9+
- `billing_agreement` to Agreements interface ([#11563](https://github.com/linode/manager/pull/11563))
10+
- `Enhanced Interfaces` to a Region's `Capabilities` ([#11584](https://github.com/linode/manager/pull/11584))
11+
- New database statuses for database_migration event ([#11590](https://github.com/linode/manager/pull/11590))
12+
13+
### Changed:
14+
15+
- Quotas API spec to make region field optional ([#11551](https://github.com/linode/manager/pull/11551))
16+
- Update Taint value to allow undefined ([#11553](https://github.com/linode/manager/pull/11553))
17+
- Mark `entity-transfers` related endpoints as deprecated ([#11562](https://github.com/linode/manager/pull/11562))
18+
19+
### Upcoming Features:
20+
21+
- Update `PermissionType` types for IAM ([#11423](https://github.com/linode/manager/pull/11423))
22+
- Add new API types and endpoints for Linode Interfaces project: `/v4/linodes/instances` ([#11527](https://github.com/linode/manager/pull/11527))
23+
- Update `AccountAccessType` and `RoleType` types for IAM ([#11533](https://github.com/linode/manager/pull/11533))
24+
- Add and update `/v4/networking` endpoints and types for Linode Interfaces ([#11559](https://github.com/linode/manager/pull/11559))
25+
- Update `/v4/account` and `/v4/vpcs` endpoints and types for upcoming Linode Interfaces project ([#11562](https://github.com/linode/manager/pull/11562))
26+
- Update existing `v4/linodes/instances` endpoints and types for Linode Interfaces project ([#11566](https://github.com/linode/manager/pull/11566))
27+
- Add new `editAlertDefinition` endpoint to edit the resources associated with CloudPulse alerts ([#11583](https://github.com/linode/manager/pull/11583))
28+
- Add support for quotas usage endpoint ([#11597](https://github.com/linode/manager/pull/11597))
29+
130
## [2025-01-28] - v0.133.0
231

332
### Changed:

packages/api-v4/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@linode/api-v4",
3-
"version": "0.133.0",
3+
"version": "0.134.0",
44
"homepage": "https://github.com/linode/manager/tree/develop/packages/api-v4",
55
"bugs": {
66
"url": "https://github.com/linode/manager/issues"

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,22 @@ export interface AccountAvailability {
9494
unavailable: Capabilities[];
9595
}
9696

97+
export const linodeInterfaceAccountSettings = [
98+
'legacy_config_only',
99+
'legacy_config_default_but_linode_allowed',
100+
'linode_default_but_legacy_config_allowed',
101+
'linode_only',
102+
];
103+
104+
export type LinodeInterfaceAccountSetting = typeof linodeInterfaceAccountSettings[number];
105+
97106
export interface AccountSettings {
98107
managed: boolean;
99108
longview_subscription: string | null;
100109
network_helper: boolean;
101110
backups_enabled: boolean;
102111
object_storage: 'active' | 'disabled' | 'suspended';
112+
interfaces_for_new_linodes: LinodeInterfaceAccountSetting;
103113
}
104114

105115
export interface ActivePromotion {
@@ -254,6 +264,7 @@ export type AgreementType = 'eu_model' | 'privacy_policy';
254264
export interface Agreements {
255265
eu_model: boolean;
256266
privacy_policy: boolean;
267+
billing_agreement: boolean;
257268
}
258269

259270
export type NotificationType =
@@ -320,6 +331,7 @@ export const EventActionKeys = [
320331
'database_scale',
321332
'database_update_failed',
322333
'database_update',
334+
'database_migrate',
323335
'database_upgrade',
324336
'disk_create',
325337
'disk_delete',
@@ -358,6 +370,9 @@ export const EventActionKeys = [
358370
'image_delete',
359371
'image_update',
360372
'image_upload',
373+
'interface_create',
374+
'interface_delete',
375+
'interface_update',
361376
'ipaddress_update',
362377
'ipv6pool_add',
363378
'ipv6pool_delete',

packages/api-v4/src/cloudpulse/alerts.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ import Request, {
66
setParams,
77
setXFilter,
88
} from '../request';
9-
import { Alert, AlertServiceType, CreateAlertDefinitionPayload } from './types';
9+
import {
10+
Alert,
11+
AlertServiceType,
12+
CreateAlertDefinitionPayload,
13+
EditAlertDefinitionPayload,
14+
NotificationChannel,
15+
} from './types';
1016
import { BETA_API_ROOT as API_ROOT } from '../constants';
1117
import { Params, Filter, ResourcePage } from '../types';
1218

@@ -44,3 +50,25 @@ export const getAlertDefinitionByServiceTypeAndId = (
4450
),
4551
setMethod('GET')
4652
);
53+
54+
export const editAlertDefinition = (
55+
data: EditAlertDefinitionPayload,
56+
serviceType: string,
57+
alertId: number
58+
) =>
59+
Request<Alert>(
60+
setURL(
61+
`${API_ROOT}/monitor/services/${encodeURIComponent(
62+
serviceType
63+
)}/alert-definitions/${encodeURIComponent(alertId)}`
64+
),
65+
setMethod('PUT'),
66+
setData(data)
67+
);
68+
export const getNotificationChannels = (params?: Params, filters?: Filter) =>
69+
Request<ResourcePage<NotificationChannel>>(
70+
setURL(`${API_ROOT}/monitor/alert-channels`),
71+
setMethod('GET'),
72+
setParams(params),
73+
setXFilter(filters)
74+
);

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,3 +294,7 @@ export type NotificationChannel =
294294
| NotificationChannelSlack
295295
| NotificationChannelWebHook
296296
| NotificationChannelPagerDuty;
297+
298+
export interface EditAlertDefinitionPayload {
299+
entity_ids: string[];
300+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ export type DatabaseStatus =
3333
| 'active'
3434
| 'degraded'
3535
| 'failed'
36+
| 'migrating'
37+
| 'migrated'
3638
| 'provisioning'
3739
| 'resizing'
3840
| 'restoring'

packages/api-v4/src/entity-transfers/transfers.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { Filter, Params, ResourcePage as Page } from '../types';
1111
import { CreateTransferPayload, EntityTransfer } from './types';
1212

1313
/**
14+
* @deprecated
1415
* getEntityTransfers
1516
*
1617
* Returns a paginated list of all Entity Transfers which this customer has created or accepted.
@@ -24,6 +25,7 @@ export const getEntityTransfers = (params?: Params, filter?: Filter) =>
2425
);
2526

2627
/**
28+
* @deprecated
2729
* getEntityTransfer
2830
*
2931
* Get a single Entity Transfer by its token (uuid). A Pending transfer
@@ -39,6 +41,7 @@ export const getEntityTransfer = (token: string) =>
3941
);
4042

4143
/**
44+
* @deprecated
4245
* createEntityTransfer
4346
*
4447
* Creates a pending Entity Transfer for one or more entities on
@@ -52,6 +55,7 @@ export const createEntityTransfer = (data: CreateTransferPayload) =>
5255
);
5356

5457
/**
58+
* @deprecated
5559
* acceptEntityTransfer
5660
*
5761
* Accepts a transfer that has been created by a user on a different account.
@@ -67,6 +71,7 @@ export const acceptEntityTransfer = (token: string) =>
6771
);
6872

6973
/**
74+
* @deprecated
7075
* cancelTransfer
7176
*
7277
* Cancels a pending transfer. Only unrestricted users on the account

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

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,20 @@ import {
1111
CreateFirewallSchema,
1212
FirewallDeviceSchema,
1313
UpdateFirewallSchema,
14+
UpdateFirewallSettingsSchema,
1415
} from '@linode/validation/lib/firewalls.schema';
1516
import {
1617
CreateFirewallPayload,
1718
Firewall,
1819
FirewallDevice,
1920
FirewallDevicePayload,
2021
FirewallRules,
22+
FirewallSettings,
2123
FirewallTemplate,
24+
FirewallTemplateSlug,
2225
UpdateFirewallPayload,
26+
UpdateFirewallRules,
27+
UpdateFirewallSettings,
2328
} from './types';
2429

2530
/**
@@ -150,7 +155,10 @@ export const getFirewallRules = (
150155
* Updates the inbound and outbound Rules for a Firewall. Using this endpoint will
151156
* replace all of a Firewall's ruleset with the Rules specified in your request.
152157
*/
153-
export const updateFirewallRules = (firewallID: number, data: FirewallRules) =>
158+
export const updateFirewallRules = (
159+
firewallID: number,
160+
data: UpdateFirewallRules
161+
) =>
154162
Request<FirewallRules>(
155163
setMethod('PUT'),
156164
setData(data), // Validation is too complicated for these; leave it to the API.
@@ -245,6 +253,29 @@ export const deleteFirewallDevice = (firewallID: number, deviceID: number) =>
245253
)
246254
);
247255

256+
/**
257+
* getFirewallSettings
258+
*
259+
* Returns current interface default firewall settings
260+
*/
261+
export const getFirewallSettings = () =>
262+
Request<FirewallSettings>(
263+
setMethod('GET'),
264+
setURL(`${BETA_API_ROOT}/networking/firewalls/settings`)
265+
);
266+
267+
/**
268+
* updateFirewallSettings
269+
*
270+
* Update which firewalls should be the interface default firewalls
271+
*/
272+
export const updateFirewallSettings = (data: UpdateFirewallSettings) =>
273+
Request<FirewallSettings>(
274+
setMethod('PUT'),
275+
setURL(`${BETA_API_ROOT}/networking/firewalls/settings`),
276+
setData(data, UpdateFirewallSettingsSchema)
277+
);
278+
248279
// #region Templates
249280

250281
/**
@@ -262,9 +293,8 @@ export const getTemplates = () =>
262293
* getTemplate
263294
*
264295
* Get a specific firewall template by its slug.
265-
*
266296
*/
267-
export const getTemplate = (templateSlug: string) =>
297+
export const getTemplate = (templateSlug: FirewallTemplateSlug) =>
268298
Request<FirewallTemplate>(
269299
setMethod('GET'),
270300
setURL(

0 commit comments

Comments
 (0)