Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
e56959b
upcoming: [M3-9087] - Add new API types and endpoints for `/v4/linode…
coliu-akamai Jan 23, 2025
20b4b73
tech-story: [M3-9052] - Migrate PlacementGroups to Tanstack router (#…
coliu-akamai Jan 23, 2025
b362cc4
feat: [M3-8856] - Surface Labels and Taints for LKE node pools - Part…
mjac0bs Jan 23, 2025
6575594
feat: [UIE-8138] - add new assigned roles table component (part 1) (#…
aaleksee-akamai Jan 23, 2025
4d6a55a
deps: [M3-9043., M3-9045] - Upgrade Vite to v6 and Vitest to v3 (#11548)
bnussman-akamai Jan 23, 2025
b49c46d
change: [DI-22875] - Changed the validation error messages, tool-tip …
santoshp210-akamai Jan 24, 2025
4d0f60e
test: [M3-9030] - Object Storage Gen2 Warning Notice Missing Region N…
dmcintyr-akamai Jan 24, 2025
a0f070d
upcoming: [DI-23081] - Add filtering, pagination and sorting for reso…
venkymano-akamai Jan 24, 2025
c92372c
fix: Cypress tests failing in Github Actions, fix `resize-linode.spec…
bnussman-akamai Jan 24, 2025
03f19b0
upcoming: [M3-9064] - Quotas tab placeholder (#11551)
hkhalil-akamai Jan 24, 2025
f01831b
upcoming: [M3-9089, M3-9091] - Update `/v4/account` and `/v4/vpcs` en…
coliu-akamai Jan 24, 2025
cc51ff4
upcoming: [M3-9141] - Add `udp_check_port` support to NodeBalancers (…
bnussman-akamai Jan 24, 2025
74ebf17
fix: Only show new 'Quotas' link in user menu when feature flag is en…
hkhalil-akamai Jan 24, 2025
fa8f445
feat: [M3-8717] - Improve region filter loading state in Linodes Land…
hana-akamai Jan 27, 2025
052f59f
refactor: [M3-8846] - Refactor StackScript Create, Edit, and Details …
bnussman-akamai Jan 27, 2025
6a70961
feat: [M3-9173] - Surface LKE cluster label and id on an associated L…
mjac0bs Jan 27, 2025
b721a04
upcoming: [M3-9088] - Add and update `/v4/networking` endpoints and t…
coliu-akamai Jan 27, 2025
f3a504c
feat: [M3-9170] - Allow Firewall Assignment from Entity Details Pages…
bnussman-akamai Jan 28, 2025
aadbbd4
refactor: [M3-8253] - Replace `pathOr` ramda function with custom uti…
harsh-akamai Jan 28, 2025
549b01c
refactor: [M3-9079, M3-9154] - Refactor Domain Record Drawer (#11538)
pmakode-akamai Jan 28, 2025
61e64d9
test: [DI-22827] - ACLP: Add automation tests to navigate to and veri…
agorthi-akamai Jan 28, 2025
bbd3554
change: [M3-9159] - Enable Pendo based on OneTrust cookie consent (#1…
mjac0bs Jan 28, 2025
5ca0e6b
Merge branch 'master' into develop
abailly-akamai Jan 28, 2025
f7437ce
upcoming: [DI-23103] - added AddChannelListing and RenderChannelDetai…
santoshp210-akamai Jan 29, 2025
1b78238
upcoming: [DI-22283] - Add Notification Channel listing section in Cl…
venkymano-akamai Jan 29, 2025
8e3dece
test: [M3-8998] - LKE view/download Kubeconfig from summary page (#11…
dmcintyr-akamai Jan 29, 2025
b162db8
feat: [LILO-418] - Modify Cloud Manager to use OAuth PKCE instead of …
mkaminsk-akamai Jan 29, 2025
92b419c
test: [M3-7511, M3-9147] restricted user has disabled inputs on objec…
dmcintyr-akamai Jan 29, 2025
828bd97
feat: [UIE-8133] - add new permissions component (#11423)
aaleksee-akamai Jan 29, 2025
7c6e285
test: [M3-8895] - Add Cypress test to check Linode clone with null ty…
cliu-akamai Jan 29, 2025
1ef473f
feat: [M3-9092] - Add Feature Flag for Linode Interfaces (#11584)
bnussman-akamai Jan 30, 2025
872cde9
refactor: [M3-8253] - Replace pathOr ramda function with custom utili…
harsh-akamai Jan 30, 2025
ab2a7e5
test: [M3-8626] - Create linode in a distributed region with Gecko (…
harsh-akamai Jan 30, 2025
084a37a
refactor: [M3-6907] - Replace SearchBar `react-select` with `Autocomp…
abailly-akamai Jan 31, 2025
7275257
refactor: [M3-8252] - Remove ramda from `DomainRecords` (Part 2) (#11…
pmakode-akamai Jan 31, 2025
7511a29
upcoming: [DI-23105] - Listing Alerts features: Pagination, Ordering,…
santoshp210-akamai Jan 31, 2025
c47ddd4
upcoming: [M3-9155] Add billing agreement checkbox for tax id (#11563)
jaalah-akamai Feb 3, 2025
46bfc6f
refactor: [M3-9157] - TanStack Router Migration for Images Feature (#…
abailly-akamai Feb 3, 2025
b1bf01f
DI-23201 : Add scaffolding for new edit resource component for system…
venkymano-akamai Feb 3, 2025
461f5ef
feat: [M3-8856] - Surface Labels and Taints for LKE node pools - Part…
mjac0bs Feb 3, 2025
17185cc
feat: [UIE-8372] - database migration event notification (#11590)
mpolotsk-akamai Feb 3, 2025
2590e36
feat: [M3-9197] - Collapsible Node Pool tables & filterable status (#…
hana-akamai Feb 3, 2025
ff6a2ee
fix: [M3-9069] - Copy Token behavior on LKE details page (#11592)
pmakode-akamai Feb 4, 2025
2bfcd65
refactor: [M3-8256] - Remove `ramda` from Managed (#11593)
hasyed-akamai Feb 4, 2025
8af77d7
upcoming: [M3-9224] - Limits evolution: revise types, queries and moc…
abailly-akamai Feb 4, 2025
5bbe436
feat: [UIE-8422] - database migration banner (#11595)
mpolotsk-akamai Feb 4, 2025
02ee508
fix: [M3-9235] - Longview Detail id param not found locally (#11599)
abailly-akamai Feb 4, 2025
dac27b9
test: [M3-9142] - Add Cypress test for Service Transfers empty state …
cliu-akamai Feb 4, 2025
460c014
test: [M3-9244] - Upgrade to Vitest 3.0.5 (#11612)
jdamore-linode Feb 4, 2025
813da25
change: [M3-9232] - Clean up `disallowImageUploadToNonObjRegions` fla…
bnussman-akamai Feb 4, 2025
0800df8
tech-story: [M3-9098] - Add MSW crud support for firewalls and some I…
coliu-akamai Feb 4, 2025
cc474e0
feat: [M3-9167] - Image Encryption Information (#11579)
bnussman-akamai Feb 4, 2025
8fe1b33
refactor: [M3-9238] - Remove `@types/react-beautiful-dnd` dependency …
pmakode-akamai Feb 5, 2025
21e36b1
deps: [M3-9237] - Update `markdown-it` to v14 (#11602)
bnussman-akamai Feb 5, 2025
0151722
fix disabled button click (#11617)
hana-akamai Feb 5, 2025
86d7d8a
upcoming: [M3-9090] - Update existing `v4/linodes/instances` endpoint…
coliu-akamai Feb 5, 2025
c19c8ce
refactor: [M3-8843] - StackScript Landing page (#11215)
bnussman-akamai Feb 5, 2025
edd2db4
Cloud version v1.136.0, API v4 version 0.134.0, Validation version 0.…
hkhalil-akamai Feb 5, 2025
a2c1bfc
Update Changelogs
hkhalil-akamai Feb 6, 2025
15b219b
Merge pull request #11623 from linode/release-v1.136.0
abailly-akamai Feb 6, 2025
a048132
fix: [UIE-8446] - restore backup date and time fix (#11628)
mpolotsk-akamai Feb 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions docs/tooling/analytics.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ Pendo is configured in [`usePendo.js`](https://github.com/linode/manager/blob/de

Important notes:

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

### Locally Testing Page Views & Custom Events and/or Troubleshooting Pendo
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"devDependencies": {
"husky": "^9.1.6",
"typescript": "^5.7.3",
"vitest": "^2.1.1"
"vitest": "^3.0.5"
},
"scripts": {
"lint": "yarn run eslint . --quiet --ext .js,.ts,.tsx",
Expand Down
29 changes: 29 additions & 0 deletions packages/api-v4/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
## [2025-02-11] - v0.134.0


### Added:

- Labels and Taints types and params ([#11528](https://github.com/linode/manager/pull/11528))
- API endpoints for NotificationChannels ([#11547](https://github.com/linode/manager/pull/11547))
- `service-transfer` related endpoints ([#11562](https://github.com/linode/manager/pull/11562))
- `billing_agreement` to Agreements interface ([#11563](https://github.com/linode/manager/pull/11563))
- `Enhanced Interfaces` to a Region's `Capabilities` ([#11584](https://github.com/linode/manager/pull/11584))
- New database statuses for database_migration event ([#11590](https://github.com/linode/manager/pull/11590))

### Changed:

- Quotas API spec to make region field optional ([#11551](https://github.com/linode/manager/pull/11551))
- Update Taint value to allow undefined ([#11553](https://github.com/linode/manager/pull/11553))
- Mark `entity-transfers` related endpoints as deprecated ([#11562](https://github.com/linode/manager/pull/11562))

### Upcoming Features:

- Update `PermissionType` types for IAM ([#11423](https://github.com/linode/manager/pull/11423))
- Add new API types and endpoints for Linode Interfaces project: `/v4/linodes/instances` ([#11527](https://github.com/linode/manager/pull/11527))
- Update `AccountAccessType` and `RoleType` types for IAM ([#11533](https://github.com/linode/manager/pull/11533))
- Add and update `/v4/networking` endpoints and types for Linode Interfaces ([#11559](https://github.com/linode/manager/pull/11559))
- Update `/v4/account` and `/v4/vpcs` endpoints and types for upcoming Linode Interfaces project ([#11562](https://github.com/linode/manager/pull/11562))
- Update existing `v4/linodes/instances` endpoints and types for Linode Interfaces project ([#11566](https://github.com/linode/manager/pull/11566))
- Add new `editAlertDefinition` endpoint to edit the resources associated with CloudPulse alerts ([#11583](https://github.com/linode/manager/pull/11583))
- Add support for quotas usage endpoint ([#11597](https://github.com/linode/manager/pull/11597))

## [2025-01-28] - v0.133.0

### Changed:
Expand Down
2 changes: 1 addition & 1 deletion packages/api-v4/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@linode/api-v4",
"version": "0.133.0",
"version": "0.134.0",
"homepage": "https://github.com/linode/manager/tree/develop/packages/api-v4",
"bugs": {
"url": "https://github.com/linode/manager/issues"
Expand Down
15 changes: 15 additions & 0 deletions packages/api-v4/src/account/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,22 @@ export interface AccountAvailability {
unavailable: Capabilities[];
}

export const linodeInterfaceAccountSettings = [
'legacy_config_only',
'legacy_config_default_but_linode_allowed',
'linode_default_but_legacy_config_allowed',
'linode_only',
];

export type LinodeInterfaceAccountSetting = typeof linodeInterfaceAccountSettings[number];

export interface AccountSettings {
managed: boolean;
longview_subscription: string | null;
network_helper: boolean;
backups_enabled: boolean;
object_storage: 'active' | 'disabled' | 'suspended';
interfaces_for_new_linodes: LinodeInterfaceAccountSetting;
}

export interface ActivePromotion {
Expand Down Expand Up @@ -254,6 +264,7 @@ export type AgreementType = 'eu_model' | 'privacy_policy';
export interface Agreements {
eu_model: boolean;
privacy_policy: boolean;
billing_agreement: boolean;
}

export type NotificationType =
Expand Down Expand Up @@ -320,6 +331,7 @@ export const EventActionKeys = [
'database_scale',
'database_update_failed',
'database_update',
'database_migrate',
'database_upgrade',
'disk_create',
'disk_delete',
Expand Down Expand Up @@ -358,6 +370,9 @@ export const EventActionKeys = [
'image_delete',
'image_update',
'image_upload',
'interface_create',
'interface_delete',
'interface_update',
'ipaddress_update',
'ipv6pool_add',
'ipv6pool_delete',
Expand Down
30 changes: 29 additions & 1 deletion packages/api-v4/src/cloudpulse/alerts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@ import Request, {
setParams,
setXFilter,
} from '../request';
import { Alert, AlertServiceType, CreateAlertDefinitionPayload } from './types';
import {
Alert,
AlertServiceType,
CreateAlertDefinitionPayload,
EditAlertDefinitionPayload,
NotificationChannel,
} from './types';
import { BETA_API_ROOT as API_ROOT } from '../constants';
import { Params, Filter, ResourcePage } from '../types';

Expand Down Expand Up @@ -44,3 +50,25 @@ export const getAlertDefinitionByServiceTypeAndId = (
),
setMethod('GET')
);

export const editAlertDefinition = (
data: EditAlertDefinitionPayload,
serviceType: string,
alertId: number
) =>
Request<Alert>(
setURL(
`${API_ROOT}/monitor/services/${encodeURIComponent(
serviceType
)}/alert-definitions/${encodeURIComponent(alertId)}`
),
setMethod('PUT'),
setData(data)
);
export const getNotificationChannels = (params?: Params, filters?: Filter) =>
Request<ResourcePage<NotificationChannel>>(
setURL(`${API_ROOT}/monitor/alert-channels`),
setMethod('GET'),
setParams(params),
setXFilter(filters)
);
4 changes: 4 additions & 0 deletions packages/api-v4/src/cloudpulse/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -294,3 +294,7 @@ export type NotificationChannel =
| NotificationChannelSlack
| NotificationChannelWebHook
| NotificationChannelPagerDuty;

export interface EditAlertDefinitionPayload {
entity_ids: string[];
}
2 changes: 2 additions & 0 deletions packages/api-v4/src/databases/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ export type DatabaseStatus =
| 'active'
| 'degraded'
| 'failed'
| 'migrating'
| 'migrated'
| 'provisioning'
| 'resizing'
| 'restoring'
Expand Down
5 changes: 5 additions & 0 deletions packages/api-v4/src/entity-transfers/transfers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { Filter, Params, ResourcePage as Page } from '../types';
import { CreateTransferPayload, EntityTransfer } from './types';

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

/**
* @deprecated
* getEntityTransfer
*
* Get a single Entity Transfer by its token (uuid). A Pending transfer
Expand All @@ -39,6 +41,7 @@ export const getEntityTransfer = (token: string) =>
);

/**
* @deprecated
* createEntityTransfer
*
* Creates a pending Entity Transfer for one or more entities on
Expand All @@ -52,6 +55,7 @@ export const createEntityTransfer = (data: CreateTransferPayload) =>
);

/**
* @deprecated
* acceptEntityTransfer
*
* Accepts a transfer that has been created by a user on a different account.
Expand All @@ -67,6 +71,7 @@ export const acceptEntityTransfer = (token: string) =>
);

/**
* @deprecated
* cancelTransfer
*
* Cancels a pending transfer. Only unrestricted users on the account
Expand Down
36 changes: 33 additions & 3 deletions packages/api-v4/src/firewalls/firewalls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,20 @@ import {
CreateFirewallSchema,
FirewallDeviceSchema,
UpdateFirewallSchema,
UpdateFirewallSettingsSchema,
} from '@linode/validation/lib/firewalls.schema';
import {
CreateFirewallPayload,
Firewall,
FirewallDevice,
FirewallDevicePayload,
FirewallRules,
FirewallSettings,
FirewallTemplate,
FirewallTemplateSlug,
UpdateFirewallPayload,
UpdateFirewallRules,
UpdateFirewallSettings,
} from './types';

/**
Expand Down Expand Up @@ -150,7 +155,10 @@ export const getFirewallRules = (
* Updates the inbound and outbound Rules for a Firewall. Using this endpoint will
* replace all of a Firewall's ruleset with the Rules specified in your request.
*/
export const updateFirewallRules = (firewallID: number, data: FirewallRules) =>
export const updateFirewallRules = (
firewallID: number,
data: UpdateFirewallRules
) =>
Request<FirewallRules>(
setMethod('PUT'),
setData(data), // Validation is too complicated for these; leave it to the API.
Expand Down Expand Up @@ -245,6 +253,29 @@ export const deleteFirewallDevice = (firewallID: number, deviceID: number) =>
)
);

/**
* getFirewallSettings
*
* Returns current interface default firewall settings
*/
export const getFirewallSettings = () =>
Request<FirewallSettings>(
setMethod('GET'),
setURL(`${BETA_API_ROOT}/networking/firewalls/settings`)
);

/**
* updateFirewallSettings
*
* Update which firewalls should be the interface default firewalls
*/
export const updateFirewallSettings = (data: UpdateFirewallSettings) =>
Request<FirewallSettings>(
setMethod('PUT'),
setURL(`${BETA_API_ROOT}/networking/firewalls/settings`),
setData(data, UpdateFirewallSettingsSchema)
);

// #region Templates

/**
Expand All @@ -262,9 +293,8 @@ export const getTemplates = () =>
* getTemplate
*
* Get a specific firewall template by its slug.
*
*/
export const getTemplate = (templateSlug: string) =>
export const getTemplate = (templateSlug: FirewallTemplateSlug) =>
Request<FirewallTemplate>(
setMethod('GET'),
setURL(
Expand Down
42 changes: 32 additions & 10 deletions packages/api-v4/src/firewalls/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ export type FirewallStatus = 'enabled' | 'disabled' | 'deleted';

export type FirewallRuleProtocol = 'ALL' | 'TCP' | 'UDP' | 'ICMP' | 'IPENCAP';

export type FirewallDeviceEntityType = 'linode' | 'nodebalancer';
export type FirewallDeviceEntityType = 'linode' | 'nodebalancer' | 'interface';

export type FirewallPolicyType = 'ACCEPT' | 'DROP';

Expand All @@ -14,21 +14,25 @@ export interface Firewall {
rules: FirewallRules;
created: string;
updated: string;
entities: {
id: number;
type: FirewallDeviceEntityType;
label: string;
url: string;
}[];
entities: FirewallDeviceEntity[];
}

export interface FirewallRules {
fingerprint: string;
inbound?: FirewallRuleType[] | null;
outbound?: FirewallRuleType[] | null;
inbound_policy: FirewallPolicyType;
outbound_policy: FirewallPolicyType;
version: number;
}

export type UpdateFirewallRules = Omit<
FirewallRules,
'fingerprint' | 'version'
>;

export type FirewallTemplateRules = UpdateFirewallRules;

export interface FirewallRuleType {
label?: string | null;
description?: string | null;
Expand All @@ -55,18 +59,21 @@ export interface FirewallDevice {
entity: FirewallDeviceEntity;
}

export type FirewallTemplateSlug = 'akamai-non-prod' | 'vpc' | 'public';

export interface FirewallTemplate {
slug: string;
rules: FirewallRules;
slug: FirewallTemplateSlug;
rules: FirewallTemplateRules;
}

export interface CreateFirewallPayload {
label?: string;
tags?: string[];
rules: FirewallRules;
rules: UpdateFirewallRules;
devices?: {
linodes?: number[];
nodebalancers?: number[];
interfaces?: number[];
};
}

Expand All @@ -80,3 +87,18 @@ export interface FirewallDevicePayload {
id: number;
type: FirewallDeviceEntityType;
}

export interface DefaultFirewallIDs {
public_interface: number;
vpc_interface: number;
linode: number;
nodebalancer: number;
}

export interface FirewallSettings {
default_firewall_ids: DefaultFirewallIDs;
}

export interface UpdateFirewallSettings {
default_firewall_ids: Partial<DefaultFirewallIDs>;
}
Loading