From eae7fcfd00c1f6a0054b2844cdbca184d9f6315e Mon Sep 17 00:00:00 2001 From: Bipul Adhikari Date: Fri, 20 Sep 2024 14:55:46 +0545 Subject: [PATCH] Block creation of external mode when Provider mode is already present Reset radio button when Provider mode is selected from dropdown Signed-off-by: Bipul Adhikari --- .../backing-storage-step/backing-storage-step.tsx | 13 ++++++++++--- .../backing-storage-step/select-deployment.tsx | 8 +++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/odf/components/create-storage-system/create-storage-system-steps/backing-storage-step/backing-storage-step.tsx b/packages/odf/components/create-storage-system/create-storage-system-steps/backing-storage-step/backing-storage-step.tsx index 2a4711924..119c8ac4e 100644 --- a/packages/odf/components/create-storage-system/create-storage-system-steps/backing-storage-step/backing-storage-step.tsx +++ b/packages/odf/components/create-storage-system/create-storage-system-steps/backing-storage-step/backing-storage-step.tsx @@ -3,6 +3,7 @@ import { STORAGE_CLUSTER_SYSTEM_KIND, NO_PROVISIONER, } from '@odf/core/constants'; +import { PROVIDER_MODE } from '@odf/core/features'; import { useSafeK8sGet } from '@odf/core/hooks'; import { useODFNamespaceSelector } from '@odf/core/redux'; import { scResource } from '@odf/core/resources'; @@ -25,6 +26,7 @@ import { } from '@odf/shared/types'; import { useCustomTranslation } from '@odf/shared/useCustomTranslationHook'; import { isDefaultClass, getODFCsv, getGVKLabel } from '@odf/shared/utils'; +import { useFlag } from '@openshift-console/dynamic-plugin-sdk'; import * as _ from 'lodash-es'; import { Form, @@ -213,6 +215,7 @@ export const BackingStorage: React.FC = ({ const isFullDeployment = deployment === DeploymentType.FULL; const isProviderMode = deployment === DeploymentType.PROVIDER_MODE; + const isProviderModePresent = useFlag(PROVIDER_MODE) && hasInternal; const isNonRHCSExternalType = type === BackingStorageType.EXTERNAL && externalStorage !== OCSStorageClusterModel.kind; @@ -269,7 +272,7 @@ export const BackingStorage: React.FC = ({ * Allow pre selecting the "external connection" option instead of the "existing" option * if an OCS Storage System is already created. */ - if (hasOCS && allowedExternalStorage.length) { + if (hasOCS && allowedExternalStorage.length && !isProviderModePresent) { dispatch({ type: 'backingStorage/setType', payload: BackingStorageType.EXTERNAL, @@ -282,7 +285,7 @@ export const BackingStorage: React.FC = ({ }, }); } - }, [dispatch, allowedExternalStorage.length, hasOCS]); + }, [dispatch, allowedExternalStorage.length, hasOCS, isProviderModePresent]); React.useEffect(() => { /* @@ -384,7 +387,11 @@ export const BackingStorage: React.FC = ({ value={BackingStorageType.EXTERNAL} isChecked={type === BackingStorageType.EXTERNAL} onChange={(event, _unused) => onRadioSelect(_unused, event)} - isDisabled={allowedExternalStorage.length === 0 || isProviderMode} + isDisabled={ + allowedExternalStorage.length === 0 || + isProviderMode || + isProviderModePresent + } body={ showExternalStorageSelection && ( = ({ // 'value' on SelectProps['onSelect'] is string hence does not match with payload of type "DeploymentType" payload: value as DeploymentType, }); + if (value === DeploymentType.PROVIDER_MODE) { + dispatch({ + type: 'backingStorage/setType', + payload: BackingStorageType.EXISTING, + }); + } setIsSelectOpen(false); };