Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v1.122.0 - release → staging #10601

Merged
merged 46 commits into from
Jun 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
0581593
refactor: [M3-8203] - Refactor Region Select (#10551)
bnussman-akamai Jun 10, 2024
22aaba6
Merge remote-tracking branch 'origin/master' into develop
jaalah Jun 11, 2024
0e36980
refactor: [M3-8127] - Query Key Factory for Domains (#10559)
bnussman-akamai Jun 11, 2024
f902075
refactor: [M3-8157] - Clean up images drawer (#10487)
hkhalil-akamai Jun 11, 2024
2fa3151
test: Upgrade Vitest and related dependencies to v1.6.0 (#10561)
jdamore-linode Jun 11, 2024
2692d92
upcoming: [M3-8031] – Add Disk Encryption info banner to Kubernetes l…
dwiley-akamai Jun 11, 2024
c9a970e
test: [M3-8227] - Prevent Cypress failures when `cy.visit` hits non-2…
jdamore-linode Jun 12, 2024
556877d
test: [M3-7769] - Add Placement Groups Navigation Integration Tests (…
carrillo-erik Jun 12, 2024
230b623
test: [M3-7667] - (Proof of Concept) Add tagging capability for Cypre…
jdamore-linode Jun 12, 2024
3843169
feat: [M3-8017] - Support Linodes in Distributed Compute Regions on I…
bnussman-akamai Jun 12, 2024
776e843
Merge branch 'master' into develop
hana-akamai Jun 12, 2024
f3e361b
refactor: [M3-8216] - NodeBalancer Query Key Factory (#10556)
bnussman-akamai Jun 12, 2024
c7bf93c
test: [M3-7954] - Cypress integration test to add SSH key via Profil…
cliu-akamai Jun 12, 2024
225a175
upcoming: [DI-18829] - Resources MultiSelect component in cloudpulse …
venkymano-akamai Jun 13, 2024
bb60d3a
fix: [OCA: 1382] - Correct docs urls for Apache Kafka Cluster and Cou…
tbaka-akamai Jun 13, 2024
2db9ca3
Improve disk encryption banner test resiliency against CI test accoun…
jdamore-linode Jun 13, 2024
d244ecd
test: Improve stability of StackScript pagination test (#10574)
jdamore-linode Jun 13, 2024
47dd6a7
refactor: [M3-8232] - Query Key Factory for Firewalls (#10568)
bnussman-akamai Jun 13, 2024
da1d72f
upcoming: [M3-8081] - Linode Create v2 - Handle side-effects when cha…
bnussman-akamai Jun 13, 2024
ee2707c
refactor: [M3-8101] - Use `network-transfer/prices` endpoint for tran…
mjac0bs Jun 13, 2024
c50ab9f
change: [M3-8153] - Rename to Choose an OS in Linode Create flow (#10…
hana-akamai Jun 13, 2024
6ab8240
refactor: M3-7034 - Event Messages Part 2 (#10550)
abailly-akamai Jun 14, 2024
22026a3
change: [M3-8242] - Update TypeScript to latest (#10573)
bnussman-akamai Jun 14, 2024
b18db95
upcoming: [M3-8020] – Add "Disk Encryption" section to Linode Rebuild…
dwiley-akamai Jun 14, 2024
a5f18c7
upcoming: [M3-8145] – Update LDE copy in Linode Create flow when Dist…
dwiley-akamai Jun 14, 2024
f1a02f9
test: Mock profile to fix GHA test failure (#10585)
jdamore-linode Jun 17, 2024
fb9c2d2
upcoming: [M3-8245] – Update "Add Node Pools" description in LKE Crea…
dwiley-akamai Jun 17, 2024
b078966
change: [M3-7646] - Link Cloud Manager README to new documentation pa…
abailly-akamai Jun 17, 2024
4ac62db
feat: [M3-8229] - Volume & Images search and filtering (#10570)
abailly-akamai Jun 17, 2024
ca19099
test: Resolve Linode/Firewall E2E flake by using alternative security…
jdamore-linode Jun 17, 2024
1f9814f
upcoming: [M3-8265] - Linode Create v2 - Add Marketplace Searching / …
bnussman-akamai Jun 18, 2024
7ee2cac
fix: [M3-7646] CONTRIBUTING commit type list markup (#10587)
abailly-akamai Jun 18, 2024
9939b41
fix: React Query Events `seen` and other optimizations (#10588)
bnussman-akamai Jun 18, 2024
a95b715
fix: [M3-8269] - Accessibility: Add tabindex to TextTooltip (#10590)
abailly-akamai Jun 18, 2024
1f2d666
change: [M3-7383] - Replace hardcoded prices for LKE HA with data fro…
carrillo-erik Jun 18, 2024
5ec87a1
test: [M3-7330] - Attempt to fix hanging unit tests (#10591)
jdamore-linode Jun 18, 2024
284d3a4
test: Unit test coverage - HostNameTableCell (#10596)
cpathipa Jun 20, 2024
2d416b8
fix: [M3-8193] - Check account access for disabling add tags button (…
jaalah-akamai Jun 20, 2024
352c2b9
upcoming: [M3-8270] - Add Distributed Icon to ImageSelects for distri…
bnussman-akamai Jun 20, 2024
3e9c2c3
upcoming: [M3-8015] - Update Images Landing table (#10545)
hkhalil-akamai Jun 21, 2024
eb2bfdd
fix: [M3-8274] - Fix parsing issue causing in Kubernetes Version fiel…
cpathipa Jun 21, 2024
3a245e8
Cloud version 1.122.0 and API v4 version 0.120.0
cpathipa Jun 21, 2024
40ee98b
test: Update Object Storage tests to mock account `capabilities` as n…
bnussman-akamai Jun 21, 2024
f284f8c
added: [M3-8008, M3-8277] - Update invoices for JP and EU (#10606)
jaalah-akamai Jun 24, 2024
17760ff
Merge branch 'staging' into release-v1.122.0
cpathipa Jun 24, 2024
2e0d0cb
Update the changelog
cpathipa Jun 24, 2024
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
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@ This repository is home to the Akamai Connected **[Cloud Manager](https://cloud.

## Developing Locally

To get started running Cloud Manager locally, please see the [_Getting Started_ guide](docs/GETTING_STARTED.md).
To get started running Cloud Manager locally, please see the [Getting Started guide](https://linode.github.io/manager/GETTING_STARTED.html).

## Contributing

If you already have your development environment set up, please read the [contributing guidelines](docs/CONTRIBUTING.md) to get help in creating your first Pull Request.
If you already have your development environment set up, please read the [Contributing Guidelines](https://linode.github.io/manager/CONTRIBUTING.html) to get help in creating your first Pull Request.

To report a bug or request a feature in Cloud Manager, please [open a GitHub Issue](https://github.com/linode/manager/issues/new). For general feedback, use [linode.com/feedback](https://www.linode.com/feedback/).

Expand Down
17 changes: 9 additions & 8 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,26 @@ Feel free to open an issue to report a bug or request a feature.
5. Commit message format standard: `<commit type>: [JIRA-ticket-number] - <description>`

**Commit Types:**
`feat`: New feature for the user (not a part of the code, or ci, ...).
`fix`: Bugfix for the user (not a fix to build something, ...).
`change`: Modifying an existing visual UI instance. Such as a component or a feature.
`refactor`: Restructuring existing code without changing its external behavior or visual UI. Typically to improve readability, maintainability, and performance.
`test`: New tests or changes to existing tests. Does not change the production code.
`upcoming`: A new feature that is in progress, not visible to users yet, and usually behind a feature flag.
- `feat`: New feature for the user (not a part of the code, or ci, ...).
- `fix`: Bugfix for the user (not a fix to build something, ...).
- `change`: Modifying an existing visual UI instance. Such as a component or a feature.
- `refactor`: Restructuring existing code without changing its external behavior or visual UI. Typically to improve readability, maintainability, and performance.
- `test`: New tests or changes to existing tests. Does not change the production code.
- `upcoming`: A new feature that is in progress, not visible to users yet, and usually behind a feature flag.

**Example:** `feat: [M3-1234] - Allow user to view their login history`

6. Open a pull request against `develop` and make sure the title follows the same format as the commit message.
7. If needed, create a changeset to populate our changelog
- If you don't have the Github CLI installed or need to update it (you need GH CLI 2.21.0 or greater),
- If you don't have the Github CLI installed or need to update it (you need GH CLI 2.21.0 or greater),
- install it via `brew`: https://cli.github.com/manual/installation or upgrade with `brew upgrade gh`
- Once installed, run `gh repo set-default` and pick `linode/manager` (only > 2.21.0)
- You can also just create the changeset manually, in this case make sure to use the proper formatting for it.
- Run `yarn changeset`from the root, choose the package to create a changeset for, and provide a description for the change.
You can either have it committed automatically or do it manually if you need to edit it.
- A changeset is optional, it merely depends if it falls in one of the following categories:
- A changeset is optional, but should be included if the PR falls in one of the following categories:<br>
`Added`, `Fixed`, `Changed`, `Removed`, `Tech Stories`, `Tests`, `Upcoming Features`
- Select the changeset category that matches the commit type in your PR title. (Where this isn't a 1:1 match: generally, a `feat` commit type falls under an `Added` change and `refactor` falls under `Tech Stories`.)

Two reviews from members of the Cloud Manager team are required before merge. After approval, all pull requests are squash merged.

Expand Down
7 changes: 4 additions & 3 deletions docs/development-guide/08-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,10 @@ These environment variables are specific to Cloud Manager UI tests. They can be
###### General
Environment variables related to the general operation of the Cloud Manager Cypress tests.

| Environment Variable | Description | Example | Default |
|----------------------|-------------------------------------------------------------------------------------------------------|----------|---------------------------------|
| `CY_TEST_SUITE` | Name of the Cloud Manager UI test suite to run. Possible values are `core`, `region`, or `synthetic`. | `region` | Unset; defaults to `core` suite |
| Environment Variable | Description | Example | Default |
|----------------------|-------------------------------------------------------------------------------------------------------|--------------|---------------------------------|
| `CY_TEST_SUITE` | Name of the Cloud Manager UI test suite to run. Possible values are `core`, `region`, or `synthetic`. | `region` | Unset; defaults to `core` suite |
| `CY_TEST_TAGS` | Query identifying tests that should run by specifying allowed and disallowed tags. | `method:e2e` | Unset; all tests run by default |

###### Regions
These environment variables are used by Cloud Manager's UI tests to override region selection behavior. This can be useful for testing Cloud Manager functionality against a specific region.
Expand Down
37 changes: 36 additions & 1 deletion docs/development-guide/15-api-events.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ In order to display these messages in the application (Notification Center, /eve
## Adding a new Action and Composing Messages

In order to add a new Action, one must add a new key to the read-only `EventActionKeys` constant array in the api-v4 package.
Once that's done, a related entry must be added to the `eventMessages` Event Map. In order to do so, the entry can either be added to an existing Event Factory or a new one. `eventMessages` is strictly typed, so the decision where to add the new Action will be clear. ex:
Once that's done, a related entry must be added to the `eventMessages` Event Map. In order to do so, the entry can either be added to an existing Event Factory or a new one. `eventMessages` is strictly typed, so the action needs to be added to an existing factory or a new one, depending on its key (in this example the action starts with `linode_` so it belongs in the `linode.tsx` factory):

```Typescript
import { EventLink } from '../EventLink';
Expand All @@ -32,6 +32,41 @@ The convention to compose the message is as follows:
- the primary action: (ex: `<strong>created</strong>`)
- its correlated negation for negative actions (ex: `could <strong>not</strong> be <strong>created</strong>.`)
- The `message` should be also handled via the `<EventMessage message={e.message} />` in order to handle potential formatting from the API string (ticks to indicate code blocks).
- The message composition can be enhanced by using custom components. For instance, if we need to fetch extra data based on an event entity, we can simply write a new component to include in the message:

```Typescript
export const linode: PartialEventMap<'linode'> = {
linode_migrate_datacenter: {
started: (e) => <LinodeMigrateDataCenterMessage event={e} />,
},
};

const LinodeMigrateDataCenterMessage = ({ event }: { event: Event }) => {
const { data: linode } = useLinodeQuery(event.entity?.id ?? -1);
const { data: regions } = useRegionsQuery();
const region = regions?.find((r) => r.id === linode?.region);

return (
<>
Linode <EventLink event={event} to="entity" /> is being{' '}
<strong>migrated</strong>
{region && (
<>
{' '}
to <strong>{region.label}</strong>
</>
)}
.
</>
);
};
```

## In Progress Events

Some event messages are meant to be displayed alongside a progress bar to show the user the percentage of the action's completion. When an action is in progress, the polling interval switches to every two seconds to provide real-time feedback.

Despite receiving a `percent_complete` value from the API, not all actions are suitable for displaying visual progress, often because they're too short, or we only receive 0% and 100% from the endpoint. To allow only certain events to feature the progress bar, their action keys must be added to the `ACTIONS_TO_INCLUDE_AS_PROGRESS_EVENTS` constant.

## Displaying Events in snackbars

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"npm-run-all": "^4.1.5",
"patch-package": "^7.0.0",
"postinstall": "^0.6.0",
"typescript": "^4.9.5"
"typescript": "^5.4.5"
},
"husky": {
"hooks": {
Expand Down
15 changes: 8 additions & 7 deletions packages/api-v4/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
## [2024-06-10] - v0.119.0
## [2024-06-24] - v0.120.0

### Added:

- New endpoint for LKE HA types used in pricing ([#10505](https://github.com/linode/manager/pull/10505))
- UpdateImagePayload type ([#10514](https://github.com/linode/manager/pull/10514))
- New endpoint for `network-transfer/prices` ([#10566](https://github.com/linode/manager/pull/10566))

## [2024-06-10] - v0.119.0

### Added:

Expand All @@ -19,7 +26,6 @@

## [2024-05-28] - v0.118.0


### Added:

- New LKE events in `EventAction` type ([#10443](https://github.com/linode/manager/pull/10443))
Expand All @@ -28,10 +34,8 @@

- Add Disk Encryption to AccountCapability type and region Capabilities type ([#10462](https://github.com/linode/manager/pull/10462))


## [2024-05-13] - v0.117.0


### Added:

- 'edge' Linode type class ([#10415](https://github.com/linode/manager/pull/10415))
Expand All @@ -46,17 +50,14 @@

- Update Placement Group event types ([#10420](https://github.com/linode/manager/pull/10420))


## [2024-05-06] - v0.116.0


### Added:

- 'edge' Linode type class ([#10441](https://github.com/linode/manager/pull/10441))

## [2024-04-29] - v0.115.0


### Added:

- New endpoint for `volumes/types` ([#10376](https://github.com/linode/manager/pull/10376))
Expand Down
4 changes: 2 additions & 2 deletions 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.119.0",
"version": "0.120.0",
"homepage": "https://github.com/linode/manager/tree/develop/packages/api-v4",
"bugs": {
"url": "https://github.com/linode/manager/issues"
Expand Down Expand Up @@ -67,7 +67,7 @@
"lint-staged": "^13.2.2",
"prettier": "~2.2.1",
"tsup": "^7.2.0",
"vitest": "^1.3.1"
"vitest": "^1.6.0"
},
"lint-staged": {
"*.{ts,tsx,js}": [
Expand Down
17 changes: 3 additions & 14 deletions packages/api-v4/src/images/images.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import type {
CreateImagePayload,
Image,
ImageUploadPayload,
UpdateImagePayload,
UploadImageResponse,
} from './types';

Expand Down Expand Up @@ -58,21 +59,9 @@ export const createImage = (data: CreateImagePayload) => {
* Updates a private Image that you have permission to read_write.
*
* @param imageId { string } ID of the Image to look up.
* @param label { string } A short description of the Image. Labels cannot contain special characters.
* @param description { string } A detailed description of this Image.
* @param data { UpdateImagePayload } the updated image details
*/
export const updateImage = (
imageId: string,
label?: string,
description?: string,
tags?: string[]
) => {
const data = {
...(label && { label }),
...(description && { description }),
...(tags && { tags }),
};

export const updateImage = (imageId: string, data: UpdateImagePayload) => {
return Request<Image>(
setURL(`${API_ROOT}/images/${encodeURIComponent(imageId)}`),
setMethod('PUT'),
Expand Down
4 changes: 3 additions & 1 deletion packages/api-v4/src/images/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export type ImageStatus =
| 'deleted'
| 'pending_upload';

type ImageCapabilities = 'cloud-init' | 'distributed-images';
export type ImageCapabilities = 'cloud-init' | 'distributed-images';

type ImageType = 'manual' | 'automatic';

Expand Down Expand Up @@ -148,6 +148,8 @@ export interface CreateImagePayload extends BaseImagePayload {
disk_id: number;
}

export type UpdateImagePayload = Omit<BaseImagePayload, 'cloud_init'>;

export interface ImageUploadPayload extends BaseImagePayload {
label: string;
region: string;
Expand Down
2 changes: 2 additions & 0 deletions packages/api-v4/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ export * from './managed';

export * from './networking';

export * from './network-transfer';

export * from './nodebalancers';

export * from './object-storage';
Expand Down
16 changes: 14 additions & 2 deletions packages/api-v4/src/kubernetes/kubernetes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import Request, {
setURL,
setXFilter,
} from '../request';
import { Filter, Params, ResourcePage as Page } from '../types';
import {
import type { Filter, Params, ResourcePage as Page, PriceType } from '../types';
import type {
CreateKubeClusterPayload,
KubeConfigResponse,
KubernetesCluster,
Expand Down Expand Up @@ -180,3 +180,15 @@ export const recycleClusterNodes = (clusterID: number) =>
setMethod('POST'),
setURL(`${API_ROOT}/lke/clusters/${encodeURIComponent(clusterID)}/recycle`)
);

/**
* getKubernetesTypes
*
* Returns a paginated list of available Kubernetes types; used for dynamic pricing.
*/
export const getKubernetesTypes = (params?: Params) =>
Request<Page<PriceType>>(
setURL(`${API_ROOT}/lke/types`),
setMethod('GET'),
setParams(params)
);
1 change: 1 addition & 0 deletions packages/api-v4/src/network-transfer/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './prices';
10 changes: 10 additions & 0 deletions packages/api-v4/src/network-transfer/prices.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { API_ROOT } from 'src/constants';
import Request, { setMethod, setURL, setParams } from 'src/request';
import { Params, PriceType, ResourcePage } from 'src/types';

export const getNetworkTransferPrices = (params?: Params) =>
Request<ResourcePage<PriceType>>(
setURL(`${API_ROOT}/network-transfer/prices`),
setMethod('GET'),
setParams(params)
);
4 changes: 2 additions & 2 deletions packages/api-v4/src/regions/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,6 @@ export interface RegionAvailability {
region: string;
}

type ContinentCode = keyof typeof COUNTRY_CODE_TO_CONTINENT_CODE;
type CountryCode = keyof typeof COUNTRY_CODE_TO_CONTINENT_CODE;

export type Country = Lowercase<ContinentCode>;
export type Country = Lowercase<CountryCode>;

This file was deleted.

Loading
Loading