Skip to content

Syncing latest changes from master for odf-console #2111

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

Open
wants to merge 34 commits into
base: release-4.20
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
9a45eb2
Automatic scaling: add Invalid state
alfonsomthd May 29, 2025
bff407a
Merge pull request #2097 from alfonsomthd/invalid-state-autoscaling
openshift-merge-bot[bot] May 30, 2025
3435d4e
Manage DR modal is failed to detect ApplicationSet CR using VM
GowthamShanmugam May 8, 2025
6e2ec39
Merge pull request #2099 from TimothyAsirJeyasing/DFBUGS-2469
openshift-merge-bot[bot] May 30, 2025
d97ca24
Adds support for default virtualization storage class
bipuladh Jun 2, 2025
cd89ba0
Merge pull request #2100 from bipuladh/virt-class
openshift-merge-bot[bot] Jun 3, 2025
7d283fa
Add provision to recipe parameters while enrolling applicaiton
TimothyAsirJeyasing Apr 3, 2025
9584920
Merge pull request #1934 from TimothyAsirJeyasing/add-config-param-to…
openshift-merge-bot[bot] Jun 3, 2025
1b7d6eb
Add support for force deletion of StorageConsumer
bipuladh Jun 4, 2025
816ef53
Missing LSO component migrated to ODF repo
bipuladh Jun 3, 2025
0ec9686
Merge pull request #2103 from bipuladh/fix-deleteclient
openshift-merge-bot[bot] Jun 4, 2025
cff8d74
Merge pull request #2102 from bipuladh/migrate-lso
openshift-merge-bot[bot] Jun 5, 2025
e810362
Fix S3 upload issue
SanjalKatiyar Jun 10, 2025
34bca8e
Merge pull request #2113 from SanjalKatiyar/s3_upload_issue
openshift-merge-bot[bot] Jun 11, 2025
e11f9c3
Removes guard for deletion threshold for StorageConsumers
bipuladh Jun 11, 2025
7128429
Merge pull request #2115 from bipuladh/remove-deletion-thres
openshift-merge-bot[bot] Jun 11, 2025
683f869
i18n: sort keys
alfonsomthd Jun 11, 2025
dae1269
Merge pull request #2118 from alfonsomthd/fix-i18n-sort
openshift-merge-bot[bot] Jun 12, 2025
ffc4ad7
Fetch primary cluster as per DRPC status
vbnrh Jun 13, 2025
3224870
Merge pull request #2116 from vbnrh/dfbugs-2637
openshift-merge-bot[bot] Jun 16, 2025
893a582
Fix checks for undefined DRPC status
vbnrh Jun 17, 2025
c0491b3
Merge pull request #2121 from vbnrh/dfbugs-2637-fix
openshift-merge-bot[bot] Jun 17, 2025
27d48e0
Fix multus issue
bipuladh Jun 17, 2025
3baa161
Merge pull request #2122 from bipuladh/multus
openshift-merge-bot[bot] Jun 17, 2025
12fcf29
Add checkbox for enabling volume consistency groups
vbnrh Jun 19, 2025
9a0cac3
Merge pull request #2126 from vbnrh/dfbugs-2686
openshift-merge-bot[bot] Jun 19, 2025
689a2bd
A11y lint: enable the disabled rules & fix related issues.
alfonsomthd Jun 20, 2025
fb83207
Merge pull request #2129 from alfonsomthd/a11y-eslint
openshift-merge-bot[bot] Jun 23, 2025
0f473b9
Upgrade packages in both package.json files.
NIKHITHAVADDEMPUDI Jun 24, 2025
84da487
Merge pull request #2107 from NIKHITHAVADDEMPUDI/branch_2
openshift-merge-bot[bot] Jun 25, 2025
bc96021
Fix BlockPool dashboard - mirroring card
SanjalKatiyar Jun 27, 2025
4f4a7de
Merge pull request #2131 from SanjalKatiyar/mirroring_dashboard
openshift-merge-bot[bot] Jun 27, 2025
2c74788
Fix StorageSystem Create page routing issue
SanjalKatiyar Jun 27, 2025
55aa9d3
Merge pull request #2133 from SanjalKatiyar/ss_create_fix
openshift-merge-bot[bot] Jun 27, 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
5 changes: 1 addition & 4 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,7 @@ module.exports = {
bundledDependencies: false,
},
],
'jsx-a11y/anchor-is-valid': 'off',
'jsx-a11y/click-events-have-key-events': 'off',
'jsx-a11y/label-has-associated-control': 'off',
'jsx-a11y/no-static-element-interactions': 'off',
'jsx-a11y/label-has-associated-control': 'off', // Disabled due to false positives.
'max-classes-per-file': 'off',
'max-len': 'off',
'@typescript-eslint/naming-convention': [
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/frontend-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.16.0, 22]
node-version: [20.19.2, 22]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.ci
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM docker.io/library/node:20.16.0 AS builder
FROM docker.io/library/node:20.19.2 AS builder

ARG PLUGIN=odf

Expand All @@ -14,7 +14,7 @@ RUN BUILD_SCRIPT=build; \
NODE_OPTIONS="--max-old-space-size=1024" yarn "${BUILD_SCRIPT}" && \
mv /app/plugins/${PLUGIN}/dist /dist

FROM docker.io/library/node:20.16.0
FROM docker.io/library/node:20.19.2

RUN yarn global add http-server
COPY --from=builder /dist /app
Expand Down
5 changes: 4 additions & 1 deletion i18next-parser.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ module.exports = {
locales: ['en'],
namespaceSeparator: '~',
reactNamespace: false,
defaultValue: function (_, _, key, _) {
defaultValue: function (_locale, _namespace, key, _value) {
// The `useKeysAsDefaultValues` option is deprecated in favor of `defaultValue` option function arguments.
// The `key` is used to set default value.
return key;
},
defaultNamespace: 'plugin__odf-console',
sort: (a, b) => {
return a.localeCompare(b, 'en');
},
};
3,714 changes: 1,872 additions & 1,842 deletions locales/en/plugin__odf-console.json

Large diffs are not rendered by default.

99 changes: 38 additions & 61 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,33 +64,10 @@
"*": "prettier --ignore-unknown --write",
"**/package.json": "npx --yes [email protected]"
},
"resolutions": {
"**/@typescript-eslint/typescript-estree/semver": "^7.7.1",
"**/cypress/semver": "^7.7.1",
"@babel/runtime": "^7.27.0",
"async": "^3.2.6",
"braces": "^3.0.3",
"cache-loader/loader-utils": "^1.4.2",
"cache-loader/loader-utils/json5": "^1.0.2",
"cross-spawn": "^7.0.6",
"eslint-plugin-import/tsconfig-paths/json5": "^1.0.2",
"loader-utils": "^2.0.4",
"micromatch": "^4.0.8",
"minimatch": "^3.0.5",
"minimist": "^1.2.8",
"nanoid": "^3.3.8",
"postcss": "^8.4.49",
"tough-cookie": "^4.1.3",
"underscore.string": "^3.3.6",
"undici": "^6.21.1",
"webpack": "^5.97.1",
"webpack-bundle-analyzer/ws": "^7.5.10",
"webpack-dev-server/express": "^4.21.0"
},
"dependencies": {
"@aws-sdk/client-s3": "3.667.0",
"@aws-sdk/lib-storage": "3.501.0",
"@aws-sdk/s3-request-presigner": "3.614.0",
"@aws-sdk/client-s3": "3.823.0",
"@aws-sdk/lib-storage": "3.823.0",
"@aws-sdk/s3-request-presigner": "3.823.0",
"@openshift-console/dynamic-plugin-sdk": "1.8.0",
"@openshift-console/dynamic-plugin-sdk-internal": "1.0.0",
"@openshift-console/dynamic-plugin-sdk-webpack": "1.3.0",
Expand All @@ -106,105 +83,105 @@
"cache-loader": "^4.1.0",
"circular-dependency-plugin": "^5.2.2",
"classnames": "^2.5.1",
"copy-webpack-plugin": "^12.0.2",
"copy-webpack-plugin": "^13.0.0",
"css-loader": "^7.1.2",
"file-loader": "^6.2.0",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"fork-ts-checker-webpack-plugin": "^9.1.0",
"fuzzysearch": "^1.0.3",
"i18next": "^24.2.2",
"i18next": "^25.2.1",
"i18next-conv": "^15.1.1",
"immer": "^10.1.1",
"is-ip": "^5.0.1",
"js-base64": "^3.7.7",
"js-yaml": "^4.1.0",
"lodash-es": "^4.17.21",
"luxon": "^3.5.0",
"mobx": "^6.13.6",
"luxon": "^3.6.1",
"mobx": "^6.13.7",
"mobx-react-lite": "^4.1.0",
"murmurhash-js": "^1.0.0",
"react": "^17.0.1",
"react-copy-to-clipboard": "5.x",
"react-dnd": "^15.1.1",
"react-dnd-html5-backend": "^15.1.2",
"react-dom": "^17.0.1",
"react-dropzone": "^14.2.9",
"react-dropzone": "^14.3.8",
"react-helmet": "^6.1.0",
"react-hook-form": "^7.42.1",
"react-hook-form": "^7.56.4",
"react-i18next": "^11.11.4",
"react-linkify": "^0.2.2",
"react-redux": "7.2.2",
"react-router-dom-v5-compat": "^6.28.2",
"react-tagsinput": "^3.19.0",
"react-virtualized-auto-sizer": "^1.0.24",
"react-window": "^1.8.10",
"react-tagsinput": "^3.20.3",
"react-virtualized-auto-sizer": "^1.0.26",
"react-window": "^1.8.11",
"redux": "4.0.1",
"resolve-url-loader": "^5.0.0",
"sass": "^1.85.1",
"sass": "^1.89.0",
"sass-loader": "^16.0.5",
"semver": "^6.3.1",
"semver": "^7.7.2",
"style-loader": "^3.3.4",
"swr": "2.3.2",
"swr": "2.3.3",
"thread-loader": "^4.0.4",
"ts-loader": "^9.5.2",
"tsx": "^4.19.2",
"tsx": "^4.19.4",
"typesafe-actions": "^5.1.0",
"typescript": "^5.7.3",
"typescript": "^5.8.3",
"victory-core": "^37.3.6",
"webpack": "^5.97.1",
"webpack-bundle-analyzer": "^4.10.2",
"webpack-cli": "^6.0.1",
"yup": "^0.32.11"
},
"devDependencies": {
"@cypress/webpack-preprocessor": "^6.0.2",
"@cypress/webpack-preprocessor": "^6.0.4",
"@discoveryjs/json-ext": "^0.6.3",
"@swc/core": "^1.10.11",
"@swc/jest": "^0.2.37",
"@swc/core": "^1.11.29",
"@swc/jest": "^0.2.38",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^12.1.5",
"@testing-library/react-hooks": "^8.0.1",
"@testing-library/user-event": "^14.6.1",
"@types/jest": "^29.5.14",
"@types/lodash-es": "^4.17.12",
"@types/luxon": "^3.4.2",
"@types/luxon": "^3.6.2",
"@types/react-helmet": "^6.1.11",
"@types/react-window": "^1.8.8",
"@typescript-eslint/eslint-plugin": "^8.12.2",
"@typescript-eslint/parser": "^8.17.0",
"cypress": "^14.0.0",
"cypress-multi-reporters": "^2.0.4",
"@typescript-eslint/eslint-plugin": "^8.32.1",
"@typescript-eslint/parser": "^8.32.1",
"cypress": "^14.4.0",
"cypress-multi-reporters": "^2.0.5",
"eslint": "^8.57.1",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^9.1.0",
"eslint-config-prettier": "^10.1.5",
"eslint-plugin-chai-friendly": "^1.0.1",
"eslint-plugin-cypress": "^4.1.0",
"eslint-plugin-cypress": "^4.3.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jest": "^28.11.0",
"eslint-plugin-jest": "^28.12.0",
"eslint-plugin-jest-dom": "^5.5.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-mobx": "^0.0.13",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-hooks": "^4.6.2",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-testing-library": "^7.0.0",
"http-server": "^14.1.1",
"husky": "^9.1.7",
"i18next-parser": "^9.3.0",
"identity-obj-proxy": "^3.0.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-html-reporter": "^3.10.2",
"jest-html-reporter": "^4.1.0",
"jest-silent-reporter": "^0.6.0",
"mocha-junit-reporter": "^2.2.1",
"mochawesome": "^7.1.3",
"mochawesome-merge": "^4.4.1",
"prettier": "^3.5.2",
"stylelint": "^16.14.1",
"prettier": "^3.5.3",
"stylelint": "^16.19.1",
"stylelint-config-sass-guidelines": "^12.1.0",
"stylelint-config-standard": "^37.0.0",
"stylelint-order": "^6.0.4",
"webpack-dev-server": "^5.2.0"
"stylelint-config-standard": "^38.0.0",
"stylelint-order": "^7.0.0",
"webpack-dev-server": "^5.2.1"
},
"engines": {
"node": ">=20.x"
"node": ">=20.19.2"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,25 @@ import {
ObjectMetadata,
k8sCreate,
} from '@openshift-console/dynamic-plugin-sdk';
import { IS_CG_ENABLED_ANNOTATION } from '../../../constants';
import {
EnrollDiscoveredApplicationState,
ProtectionMethodType,
} from './reducer';

export const convertRecipeParamsToList = (
params: Record<string, string> = {}
): Record<string, string[]> =>
Object.fromEntries(
Object.entries(params).map(([k, val]) => [
k.trim(),
val
.split(',')
.map((item) => item.trim())
.filter(Boolean),
])
);

export const getDRPCKindObj = (props: {
name: string;
preferredCluster: string;
Expand All @@ -31,18 +45,20 @@ export const getDRPCKindObj = (props: {
k8sResourceReplicationInterval: string;
recipeName?: string;
recipeNamespace?: string;
recipeParameters?: Record<string, string[]>;
k8sResourceLabelExpressions?: MatchExpression[];
pvcLabelExpressions?: MatchExpression[];
placementName: string;
recipeParameters?: Record<string, string[]>;
labels?: ObjectMetadata['labels'];
annotations?: ObjectMetadata['annotations'];
}): DRPlacementControlKind => ({
apiVersion: getAPIVersionForModel(DRPlacementControlModel),
kind: DRPlacementControlModel.kind,
metadata: {
name: props.name,
namespace: DISCOVERED_APP_NS,
...(props.labels && { labels: props.labels }),
...(props.annotations && { annotations: props.annotations }),
},
spec: {
preferredCluster: props.preferredCluster,
Expand Down Expand Up @@ -105,8 +121,13 @@ export const createPromise = (
): Promise<K8sResourceKind>[] => {
const { namespace, configuration, replication } = state;
const { clusterName, namespaces, name } = namespace;
const { protectionMethod, recipe, resourceLabels } = configuration;
const { recipeName, recipeNamespace } = recipe;
const {
protectionMethod,
recipe,
resourceLabels,
isVolumeConsistencyEnabled,
} = configuration;
const { recipeName, recipeNamespace, recipeParameters } = recipe;
const { k8sResourceLabelExpressions, pvcLabelExpressions } = resourceLabels;
const { drPolicy, k8sResourceReplicationInterval } = replication;
const namespaceList = namespaces.map(getName);
Expand All @@ -122,6 +143,13 @@ export const createPromise = (
})
);

let labels: ObjectMetadata['labels'];
const annotations = isVolumeConsistencyEnabled
? {
[IS_CG_ENABLED_ANNOTATION]: 'true',
}
: undefined;

promises.push(
k8sCreate({
model: DRPlacementControlModel,
Expand All @@ -132,11 +160,14 @@ export const createPromise = (
protectionMethod,
recipeName,
recipeNamespace,
recipeParameters: convertRecipeParamsToList(recipeParameters),
k8sResourceLabelExpressions,
pvcLabelExpressions,
drPolicyName: getName(drPolicy),
k8sResourceReplicationInterval,
placementName,
labels,
annotations,
}),
})
);
Expand Down
Loading
Loading