Skip to content

Commit 060af91

Browse files
authored
Merge pull request #11220 from linode/release-v1.132.0
Release v1.132.0 - `release` → `staging`
2 parents a6c1e12 + 185ece4 commit 060af91

File tree

730 files changed

+10438
-7307
lines changed

Some content is hidden

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

730 files changed

+10438
-7307
lines changed

.github/workflows/coverage_comment.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ permissions:
1111

1212
jobs:
1313
comment:
14+
if: ${{ github.event.workflow_run.conclusion == 'success' }}
1415
runs-on: ubuntu-latest
1516

1617
steps:

docker-compose.yml

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,14 @@ services:
117117
<<: *default-env
118118
MANAGER_OAUTH: ${MANAGER_OAUTH}
119119

120-
# Cypress test runner service to run tests against a locally-served Cloud instance.
120+
# Cypress test runner service to run tests against a local Cloud instance.
121121
#
122-
# This is useful when testing against a customized or in-development build of
123-
# Cloud Manager.
122+
# This is useful when testing against a Cloud Manager instance served locally at
123+
# `localhost:3000`, e.g. during development.
124+
#
125+
# If the local Cloud Manager instance is not served at `localhost:3000` (when
126+
# served from a container, for example), prefer the `cypress_containerized`
127+
# service instead.
124128
cypress_local:
125129
<<: *default-runner
126130
environment:
@@ -130,6 +134,38 @@ services:
130134
web:
131135
condition: service_healthy
132136

137+
# Cypress test runner service to run tests against a containerized Cloud instance.
138+
#
139+
# This service reverse proxies the given $CYPRESS_BASE_URL to `localhost:3000`.
140+
# This is necessary for certain tests which require a secure context, which
141+
# can typically only be achieved when Cloud is served at `localhost` or
142+
# remotely behind SSL.
143+
#
144+
# For more information, refer to:
145+
# https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts
146+
#
147+
# If the local Cloud Manager instance is served at `localhost:3000` (when
148+
# running Cloud Manager locally during development, for example), prefer the
149+
# `cypress_local` service instead.
150+
cypress_containerized:
151+
<<: *default-runner
152+
build:
153+
context: .
154+
dockerfile: ./packages/manager/Dockerfile
155+
target: e2e-reverse-proxy
156+
environment:
157+
<<: *default-env
158+
MANAGER_OAUTH: ${MANAGER_OAUTH}
159+
CYPRESS_BASE_URL: "http://localhost:3000"
160+
REVERSE_PROXY_URL: ${CYPRESS_BASE_URL}
161+
depends_on:
162+
web:
163+
condition: service_healthy
164+
entrypoint:
165+
- "/bin/sh"
166+
- "-c"
167+
- "caddy reverse-proxy --from $${CYPRESS_BASE_URL} --to $${REVERSE_PROXY_URL} & yarn $0 $@"
168+
133169
# Cypress component test runner service.
134170
#
135171
# Unlike other Cloud Manager Cypress tests, these tests can be run without

docs/CONTRIBUTING.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ Feel free to open an issue to report a bug or request a feature.
2727
**Example:** `feat: [M3-1234] - Allow user to view their login history`
2828

2929
6. Open a pull request against `develop` and make sure the title follows the same format as the commit message.
30-
7. If needed, create a changeset to populate our changelog.
30+
7. Keep in mind that our repository is public and open source! Before adding screenshots to your PR, we recommend you enable the **Mask Sensitive Data** setting in Cloud Manager [Profile Settings](https://cloud.linode.com/profile/settings).
31+
8. If needed, create a changeset to populate our changelog.
3132
- If you don't have the Github CLI installed or need to update it (you need GH CLI 2.21.0 or greater),
3233
- install it via `brew`: https://github.com/cli/cli#installation or upgrade with `brew upgrade gh`
3334
- Once installed, run `gh repo set-default` and pick `linode/manager` (only > 2.21.0)

docs/PULL_REQUEST_TEMPLATE.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ List any change relevant to the reviewer.
1010
Please specify a release date to guarantee timely review of this PR. If exact date is not known, please approximate and update it as needed.
1111

1212
## Preview 📷
13-
**Include a screenshot or screen recording of the change**
13+
**Include a screenshot or screen recording of the change.**
14+
15+
:lock: Use the [Mask Sensitive Data](https://cloud.linode.com/profile/settings) setting for security.
1416

1517
:bulb: Use `<video src="" />` tag when including recordings in table.
1618

docs/development-guide/02-component-structure.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ The basic structure of a component file should follow:
1515
Here is a minimal code example demonstrating the basic structure of a component file:
1616

1717
```tsx
18-
import * as React from "react";
18+
import { omittedProps } from "@linode/ui";
1919
import { styled } from "@mui/material/styles";
20-
import { omittedProps } from "src/utilities/omittedProps";
20+
import * as React from "react";
2121

2222
// If not exported, it can just be named `Props`
2323
export interface SayHelloProps {
@@ -66,6 +66,10 @@ When building a large component, it is recommended to break it down and avoid wr
6666
Components should, in most cases, come with their own unit test, although they can be skipped if an e2e suite is covering the functionality.
6767
Utilities should almost always feature a unit test.
6868

69+
#### Security
70+
71+
Consider whether the component is displaying data that may be sensitive, such as IP addresses or personal contact information. If so, make use of the `MaskableText` component or `masked` property of the `CopyTooltip` to hide this data for users who choose to 'Mask Sensitive Data' via Profile Settings.
72+
6973
#### Styles
7074

7175
- With the transition to MUI v5, the [`styled`](https://mui.com/system/styled/) API, along with the [`sx` prop](https://mui.com/system/getting-started/the-sx-prop/), is the preferred way to specify component-specific styles.

docs/development-guide/08-testing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ yarn test
1919
Or you can run the tests in watch mode with:
2020

2121
```
22-
yarn test --watch
22+
yarn test:watch
2323
```
2424

2525
To run a specific file or files in a directory:

package.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"license": "Apache-2.0",
55
"devDependencies": {
66
"husky": "^9.1.6",
7-
"typescript": "^5.5.4"
7+
"typescript": "^5.5.4",
8+
"vitest": "^2.1.1"
89
},
910
"scripts": {
1011
"lint": "yarn run eslint . --quiet --ext .js,.ts,.tsx",
@@ -23,7 +24,12 @@
2324
"start:manager": "yarn workspace linode-manager start",
2425
"start:manager:ci": "yarn workspace linode-manager start:ci",
2526
"clean": "rm -rf node_modules && rm -rf packages/@linode/api-v4/node_modules && rm -rf packages/manager/node_modules && rm -rf packages/@linode/validation/node_modules",
26-
"test": "yarn workspace linode-manager test",
27+
"test": "vitest run",
28+
"test:watch": "vitest",
29+
"test:manager": "yarn workspace linode-manager test",
30+
"test:sdk": "yarn workspace @linode/api-v4 test",
31+
"test:search": "yarn workspace @linode/search test",
32+
"test:ui": "yarn workspace @linode/ui test",
2733
"package-versions": "node ./scripts/package-versions/index.js",
2834
"storybook": "yarn workspace linode-manager storybook",
2935
"cy:run": "yarn workspace linode-manager cy:run",

packages/api-v4/CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
## [2024-11-12] - v0.130.0
2+
3+
4+
### Added:
5+
6+
- DBaaS: Suspend and Resume backend calls ([#11152](https://github.com/linode/manager/pull/11152))
7+
8+
### Removed:
9+
10+
- DBaaS: Deprecated types including MongoDB and Redis ([#11218](https://github.com/linode/manager/pull/11218))
11+
12+
### Tech Stories:
13+
14+
- Remove `@types/node` dependency ([#11157](https://github.com/linode/manager/pull/11157))
15+
16+
### Upcoming Features:
17+
18+
- DBaaS: Modify update payload to include version, add patch API ([#11196](https://github.com/linode/manager/pull/11196))
19+
120

221
## [2024-10-28] - v0.129.0
322

packages/api-v4/package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@linode/api-v4",
3-
"version": "0.129.0",
3+
"version": "0.130.0",
44
"homepage": "https://github.com/linode/manager/tree/develop/packages/api-v4",
55
"bugs": {
66
"url": "https://github.com/linode/manager/issues"
@@ -57,16 +57,14 @@
5757
"lib"
5858
],
5959
"devDependencies": {
60-
"@types/node": "^12.7.1",
6160
"@types/yup": "^0.29.13",
6261
"axios-mock-adapter": "^1.22.0",
6362
"concurrently": "^9.0.1",
6463
"eslint": "^6.8.0",
6564
"eslint-plugin-sonarjs": "^0.5.0",
6665
"lint-staged": "^15.2.9",
6766
"prettier": "~2.2.1",
68-
"tsup": "^8.2.4",
69-
"vitest": "^2.1.1"
67+
"tsup": "^8.2.4"
7068
},
7169
"lint-staged": {
7270
"*.{ts,tsx,js}": [

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

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,21 @@ export const updateDatabase = (
163163
setData(data, updateDatabaseSchema)
164164
);
165165

166+
/**
167+
* patchDatabase
168+
*
169+
* Patch security updates for the database (outside of the maintenance window)
170+
*/
171+
export const patchDatabase = (engine: Engine, databaseID: number) =>
172+
Request<void>(
173+
setURL(
174+
`${API_ROOT}/databases/${encodeURIComponent(
175+
engine
176+
)}/instances/${encodeURIComponent(databaseID)}/patch`
177+
),
178+
setMethod('POST')
179+
);
180+
166181
/**
167182
* deleteDatabase
168183
*
@@ -301,3 +316,33 @@ export const getSSLFields = (engine: Engine, databaseID: number) =>
301316
),
302317
setMethod('GET')
303318
);
319+
320+
/**
321+
* suspendDatabase
322+
*
323+
* Suspend the specified database cluster
324+
*/
325+
export const suspendDatabase = (engine: Engine, databaseID: number) =>
326+
Request<{}>(
327+
setURL(
328+
`${API_ROOT}/databases/${encodeURIComponent(
329+
engine
330+
)}/instances/${encodeURIComponent(databaseID)}/suspend`
331+
),
332+
setMethod('POST')
333+
);
334+
335+
/**
336+
* resumeDatabase
337+
*
338+
* Resume the specified database cluster
339+
*/
340+
export const resumeDatabase = (engine: Engine, databaseID: number) =>
341+
Request<{}>(
342+
setURL(
343+
`${API_ROOT}/databases/${encodeURIComponent(
344+
engine
345+
)}/instances/${encodeURIComponent(databaseID)}/resume`
346+
),
347+
setMethod('POST')
348+
);

0 commit comments

Comments
 (0)