Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
5a20623
change: [UIE-8228] - Database Resize: disable same size plan (#11481)
mpolotsk-akamai Jan 9, 2025
473bc3d
test: Fix DateTimeRangePicker unit test failure (#11502)
jdamore-linode Jan 9, 2025
d35c467
fix: Preferences type_to_confirm being undefined no longer causes but…
jaalah-akamai Jan 9, 2025
73f9186
refactor: [M3-8246, M3-8252] - Replace Ramda's `splitAt` with custom …
pmakode-akamai Jan 10, 2025
0532aad
test: [M3-8313] - Move OBJ Multicluster Cypress tests to `ObjectStora…
jdamore-linode Jan 10, 2025
a2686c1
feat: [UIE-8134] - add new entities component (#11429)
aaleksee-akamai Jan 10, 2025
584aab4
refactor: [M3-9016] - Convert `DomainRecords.tsx` to functional compo…
pmakode-akamai Jan 13, 2025
853c33e
refactor: [M3-9031] - Replace one-off hardcoded color values with col…
hasyed-akamai Jan 13, 2025
02c975d
test: [M3-9066] - Remove Cypress deprecated helper functions (#11501)
dmcintyr-akamai Jan 13, 2025
bd63112
change: [M3-9067] - Improve Backups Banner Styles and Refactor Notice…
bnussman-akamai Jan 13, 2025
aefd870
upcoming: [DI-22132] - Added criteria section in alert details page f…
venkymano-akamai Jan 14, 2025
96690a2
change: Update understanding bucket rate limits for OBJ Gen2 (#11513)
jaalah-akamai Jan 14, 2025
57457dc
upcoming: [DI-22714] - Metrics and JWE Token api request update in Cl…
ankita-akamai Jan 14, 2025
5cd6841
refactor: [M3-8252] - Remove ramda from `CreateDomain.tsx` (#11505)
pmakode-akamai Jan 14, 2025
131df59
fix: [M3-9009] - Fix spacing for LKE cluster tags (#11507)
mjac0bs Jan 14, 2025
dd7e712
refactor: [M3-9053] - Reroute Longview (#11490)
abailly-akamai Jan 14, 2025
1ef9498
Merge pull request #11519 from linode/staging
jaalah-akamai Jan 14, 2025
3b77ca0
change: [M3-8956] - Update `tsconfig.json`s to use `bundler` moduleRe…
bnussman-akamai Jan 14, 2025
21af1df
upcoming: [M3-9084] - Handle edge cases with UDP NodeBalancer (#11515)
bnussman-akamai Jan 14, 2025
8a8066e
test: [M3-8692] - Component tests for PasswordInput (#11508)
coliu-akamai Jan 15, 2025
e82fb05
Merge remote-tracking branch 'origin/master' into develop
jaalah Jan 15, 2025
514cb97
deps: [M3-9082, M3-9083] - Dependabot Fixes (#11510)
jaalah-akamai Jan 15, 2025
d51015d
fix: [M3-9073] - Fix duplicate specs in Cypress Slack / GH notificati…
jdamore-linode Jan 15, 2025
ee4ee7a
feat: [DI-22550] - Enhance date range picker component (#11495)
nikhagra-akamai Jan 16, 2025
ecc0357
upcoming: [M3-8921] - Limits Evolution foundations (#11493)
hkhalil-akamai Jan 16, 2025
397c3ce
test: [M3-9123] - Reset test account preferences when Cypress starts …
jdamore-linode Jan 16, 2025
90a7be7
fix: [DI-22875] - Zoom-in icon hover effect fix in CloudPulse (#11526)
ankita-akamai Jan 17, 2025
e9d3ac5
refactor: [M3-8252] - Remove ramda from `DomainRecords` (Part 1) (#11…
pmakode-akamai Jan 17, 2025
7123228
feat: [UIE-8136] - add new users table component (part 2) (#11402)
aaleksee-akamai Jan 17, 2025
fa4e589
upcoming: [M3-9071] - Display cluster provisioning after an LKE-E clu…
hana-akamai Jan 17, 2025
57253d6
upcoming: [DI-22838] - Add Scaffolding for resources section in Cloud…
venkymano-akamai Jan 18, 2025
35f2726
deps: [M3-9135] - Upgrade to TypeScript v5.7 (#11531)
bnussman-akamai Jan 18, 2025
9b2513a
refactor: [M3-6919] - replace remaining react-select instances & type…
abailly-akamai Jan 21, 2025
a7ea42f
change: [M3-9132] – Revise description for "Disk Encryption" section …
dwiley-akamai Jan 21, 2025
e51862d
upcoming: [DI - 22836] - Added AddNotificationChannel component (#11511)
santoshp210-akamai Jan 21, 2025
2681832
fix: Notice alignment and Linode details button spacing (#11535)
hana-akamai Jan 21, 2025
90e7224
test: [M3-9131] - Increase Linode clone timeout to 5 minutes (#11529)
jdamore-linode Jan 21, 2025
b72c973
change: Improve search syntax for `+neq` (#11521)
bnussman-akamai Jan 21, 2025
163c899
refactor: [M3-6916] Replace EnhancedSelect with Autocomplete in: help…
hasyed-akamai Jan 22, 2025
7634e11
fix: [UIE-8386] - fix redirects to old route (#11539)
aaleksee-akamai Jan 22, 2025
1b6607a
feat: [M3-9158] - Add GPU plans support for LKE in Cloud Manager (#11…
abailly-akamai Jan 22, 2025
77b9661
fix: [M3-9156] - Linode Config Dialog misrepresenting primary interfa…
bnussman-akamai Jan 23, 2025
3964f71
Cloud Manager v1.135, API v4 v0.133.0, Validation v0.59.0, and UI v0.6.0
abailly-akamai Jan 23, 2025
c6cf128
Update changelos
abailly-akamai Jan 23, 2025
df02656
Merge branch 'staging' into release-v-1.135.0
abailly-akamai Jan 23, 2025
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
1 change: 1 addition & 0 deletions .github/workflows/e2e_schedule_and_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ env:
USER_4: ${{ secrets.USER_4 }}
CLIENT_ID: ${{ secrets.REACT_APP_CLIENT_ID }}
CY_TEST_FAIL_ON_MANAGED: 1
CY_TEST_RESET_PREFERENCES: 1
on:
schedule:
- cron: "0 13 * * 1-5"
Expand Down
1 change: 1 addition & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ x-e2e-env:
CY_TEST_FEATURE_FLAGS: ${CY_TEST_FEATURE_FLAGS}
CY_TEST_TAGS: ${CY_TEST_TAGS}
CY_TEST_DISABLE_RETRIES: ${CY_TEST_DISABLE_RETRIES}
CY_TEST_RESET_PREFERENCES: ${CY_TEST_RESET_PREFERENCES}

# Cypress environment variables for alternative parallelization.
CY_TEST_SPLIT_RUN: ${CY_TEST_SPLIT_RUN}
Expand Down
9 changes: 4 additions & 5 deletions docs/development-guide/08-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ Environment variables related to Cypress logging and reporting, as well as repor
| `CY_TEST_DISABLE_RETRIES` | Disable test retries on failure in CI | `1` | Unset; disabled by default |
| `CY_TEST_FAIL_ON_MANAGED` | Fail affected tests when Managed is enabled | `1` | Unset; disabled by default |
| `CY_TEST_GENWEIGHTS` | Generate and output test weights to the given path | `./weights.json` | Unset; disabled by default |
| `CY_TEST_RESET_PREFERENCES` | Reset user preferences when test run begins | `1` | Unset; disabled by default |

###### Performance

Expand Down Expand Up @@ -281,17 +282,15 @@ Environment variables that can be used to improve test performance in some scena
cy.wait('@getProfilePreferences');
cy.wait('@getAccountSettings');

/* `getVisible` defined in /cypress/support/helpers.ts
plus a few other commonly used commands shortened as methods */
getVisible(`tr[data-qa-linode="${label}"]`).within(() => {
cy.get(`tr[data-qa-linode="${label}"]`).should('be.visible').within(() => {
// use `within` to search inside/use data from/assert on a specific page element
cy.get(`[data-qa-ip-main]`)
// `realHover` and more real event methods from cypress real events plugin
.realHover()
.then(() => {
getVisible(`[aria-label="Copy ${ip} to clipboard"]`);
cy.get(`[aria-label="Copy ${ip} to clipboard"]`).should('be.visible');
});
getVisible(`[aria-label="Action menu for Linode ${label}"]`);
cy.get(`[aria-label="Action menu for Linode ${label}"]`).should('be.visible');
});
// `findByText` and others from cypress testing library plugin
cy.findByText('Oh Snap!', { timeout: 1000 }).should('not.exist');
Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"license": "Apache-2.0",
"devDependencies": {
"husky": "^9.1.6",
"typescript": "^5.5.4",
"typescript": "^5.7.3",
"vitest": "^2.1.1"
},
"scripts": {
Expand Down Expand Up @@ -52,7 +52,8 @@
"node-fetch": "^2.6.7",
"yaml": "^2.3.0",
"semver": "^7.5.2",
"cookie": "^0.7.0"
"cookie": "^0.7.0",
"nanoid": "^3.3.8"
},
"workspaces": {
"packages": [
Expand Down
17 changes: 17 additions & 0 deletions packages/api-v4/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
## [2025-01-28] - v0.133.0

### Changed:

- Allow `cipher_suite` to be `none` in `NodeBalancerConfig` and `CreateNodeBalancerConfig` ([#11515](https://github.com/linode/manager/pull/11515))

### Tech Stories:

- Update `tsconfig.json` to use `bundler` moduleResolution ([#11487](https://github.com/linode/manager/pull/11487))

### Upcoming Features:

- Update types for IAM and resources API ([#11429](https://github.com/linode/manager/pull/11429))
- Add types for Quotas endpoints ([#11493](https://github.com/linode/manager/pull/11493))
- Add Notification Channel related types to cloudpulse/alerts.ts ([#11511](https://github.com/linode/manager/pull/11511))


## [2025-01-14] - v0.132.0

### Added:
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.132.0",
"version": "0.133.0",
"homepage": "https://github.com/linode/manager/tree/develop/packages/api-v4",
"bugs": {
"url": "https://github.com/linode/manager/issues"
Expand Down
82 changes: 79 additions & 3 deletions packages/api-v4/src/cloudpulse/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@ export type MetricUnitType =
| 'KB'
| 'MB'
| 'GB';
export type NotificationStatus = 'Enabled' | 'Disabled';
export type ChannelType = 'email' | 'slack' | 'pagerduty' | 'webhook';
export type AlertNotificationType = 'default' | 'custom';
type AlertNotificationEmail = 'email';
type AlertNotificationSlack = 'slack';
type AlertNotificationPagerDuty = 'pagerduty';
type AlertNotificationWebHook = 'webhook';
export interface Dashboard {
id: number;
label: string;
Expand Down Expand Up @@ -55,7 +62,7 @@ export interface Widgets {
filters: Filters[];
serviceType: string;
service_type: string;
resource_id: string[];
entity_ids: string[];
time_granularity: TimeGranularity;
time_duration: TimeDuration;
unit: string;
Expand Down Expand Up @@ -106,7 +113,7 @@ export interface Dimension {
}

export interface JWETokenPayLoad {
resource_ids: number[];
entity_ids: number[];
}

export interface JWEToken {
Expand All @@ -120,7 +127,7 @@ export interface CloudPulseMetricsRequest {
group_by: string;
relative_time_duration: TimeDuration;
time_granularity: TimeGranularity | undefined;
resource_ids: number[];
entity_ids: number[];
}

export interface CloudPulseMetricsResponse {
Expand Down Expand Up @@ -218,3 +225,72 @@ export interface Alert {
created: string;
updated: string;
}

interface NotificationChannelAlerts {
id: number;
label: string;
url: string;
type: 'alerts-definitions';
}
interface NotificationChannelBase {
id: number;
label: string;
channel_type: ChannelType;
type: AlertNotificationType;
status: NotificationStatus;
alerts: NotificationChannelAlerts[];
created_by: string;
updated_by: string;
created_at: string;
updated_at: string;
}

interface NotificationChannelEmail extends NotificationChannelBase {
channel_type: AlertNotificationEmail;
content: {
email: {
email_addresses: string[];
subject: string;
message: string;
};
};
}

interface NotificationChannelSlack extends NotificationChannelBase {
channel_type: AlertNotificationSlack;
content: {
slack: {
slack_webhook_url: string;
slack_channel: string;
message: string;
};
};
}

interface NotificationChannelPagerDuty extends NotificationChannelBase {
channel_type: AlertNotificationPagerDuty;
content: {
pagerduty: {
service_api_key: string;
attributes: string[];
description: string;
};
};
}
interface NotificationChannelWebHook extends NotificationChannelBase {
channel_type: AlertNotificationWebHook;
content: {
webhook: {
webhook_url: string;
http_headers: {
header_key: string;
header_value: string;
}[];
};
};
}
export type NotificationChannel =
| NotificationChannelEmail
| NotificationChannelSlack
| NotificationChannelWebHook
| NotificationChannelPagerDuty;
2 changes: 2 additions & 0 deletions packages/api-v4/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ export * from './placement-groups';

export * from './profile';

export * from './quotas';

export * from './regions';

export * from './stackscripts';
Expand Down
7 changes: 5 additions & 2 deletions packages/api-v4/src/nodebalancers/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,10 @@ export interface NodeBalancerConfig {
stickiness: Stickiness;
algorithm: Algorithm;
ssl_fingerprint: string;
cipher_suite: 'recommended' | 'legacy';
/**
* Is `none` when protocol is UDP
*/
cipher_suite: 'recommended' | 'legacy' | 'none';
nodes: NodeBalancerConfigNode[];
}

Expand Down Expand Up @@ -160,7 +163,7 @@ export interface CreateNodeBalancerConfig {
* @default 80
*/
udp_check_port?: number;
cipher_suite?: 'recommended' | 'legacy';
cipher_suite?: 'recommended' | 'legacy' | 'none';
ssl_cert?: string;
ssl_key?: string;
}
Expand Down
3 changes: 3 additions & 0 deletions packages/api-v4/src/quotas/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from './types';

export * from './quotas';
36 changes: 36 additions & 0 deletions packages/api-v4/src/quotas/quotas.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { Filter, Params, ResourcePage as Page } from 'src/types';
import { API_ROOT } from '../constants';
import Request, { setMethod, setParams, setURL, setXFilter } from '../request';
import { Quota, QuotaType } from './types';

/**
* getQuota
*
* Returns the details for a single quota within a particular service specified by `type`.
*
* @param type { QuotaType } retrieve a quota within this service type.
* @param id { number } the quota ID to look up.
*/
export const getQuota = (type: QuotaType, id: number) =>
Request<Quota>(setURL(`${API_ROOT}/${type}/quotas/${id}`), setMethod('GET'));

/**
* getQuotas
*
* Returns a paginated list of quotas for a particular service specified by `type`.
*
* This request can be filtered on `quota_name`, `service_name` and `scope`.
*
* @param type { QuotaType } retrieve quotas within this service type.
*/
export const getQuotas = (
type: QuotaType,
params: Params = {},
filter: Filter = {}
) =>
Request<Page<Quota>>(
setURL(`${API_ROOT}/${type}/quotas`),
setMethod('GET'),
setXFilter(filter),
setParams(params)
);
70 changes: 70 additions & 0 deletions packages/api-v4/src/quotas/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import { ObjectStorageEndpointTypes } from 'src/object-storage';
import { Region } from 'src/regions';

/**
* A Quota is a service used limit that is rated based on service metrics such
* as vCPUs used, instances or storage size.
*/
export interface Quota {
/**
* A unique identifier for the quota.
*/
quota_id: number;

/**
* Customer facing label describing the quota.
*/
quota_name: string;

/**
* Longer explanatory description for the quota.
*/
description: string;

/**
* The account-wide limit for this service, measured in units
* specified by the `resource_metric` field.
*/
quota_limit: number;

/**
* Current account usage, measured in units specified by the
* `resource_metric` field.
*/
used: number;

/**
* The unit of measurement for this service limit.
*/
resource_metric:
| 'instance'
| 'CPU'
| 'GPU'
| 'VPU'
| 'cluster'
| 'node'
| 'bucket'
| 'object'
| 'byte';

/**
* The region slug to which this limit applies.
*/
region_applied: Region['id'] | 'global';

/**
* The OBJ endpoint type to which this limit applies.
*
* For OBJ limits only.
*/
endpoint_type?: ObjectStorageEndpointTypes;

/**
* The S3 endpoint URL to which this limit applies.
*
* For OBJ limits only.
*/
s3_endpoint?: string;
}

export type QuotaType = 'linode' | 'lke' | 'object-storage';
1 change: 1 addition & 0 deletions packages/api-v4/src/request.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, vi, expect, it } from 'vitest';
import adapter from 'axios-mock-adapter';
import { object, string } from 'yup';
import request, {
Expand Down
6 changes: 3 additions & 3 deletions packages/api-v4/src/resources/types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
type ResourceType =
export type ResourceType =
| 'linode'
| 'firewall'
| 'nodebalancer'
Expand All @@ -10,10 +10,10 @@ type ResourceType =
| 'database'
| 'vpc';

export type IamAccountResource = {
export interface IamAccountResource {
resource_type: ResourceType;
resources: Resource[];
}[];
}

export interface Resource {
name: string;
Expand Down
9 changes: 2 additions & 7 deletions packages/api-v4/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
{
"compilerOptions": {
"target": "esnext",
"types": ["vitest/globals"],
"module": "umd",
"module": "esnext",
"emitDeclarationOnly": true,
"declaration": true,
"outDir": "./lib",
"esModuleInterop": true,
"moduleResolution": "node",
"moduleResolution": "bundler",
"skipLibCheck": true,
"strict": true,
"baseUrl": ".",
Expand All @@ -17,9 +16,5 @@
},
"include": [
"src"
],
"exclude": [
"node_modules/**/*",
"**/__tests__/*"
]
}
Loading
Loading