From cda8b64049541bf57c5088bcabffb65eb0536ba7 Mon Sep 17 00:00:00 2001 From: rawagner Date: Wed, 20 Aug 2025 17:09:48 +0200 Subject: [PATCH] Disable disconnected switch in cluster edit --- libs/locales/lib/en/translation.json | 1 + .../clusterWizard/ClusterDetailsForm.tsx | 14 +++----- .../clusterWizard/disconnected/BasicStep.tsx | 12 ++----- .../InstallDisconnectedSwitch.tsx | 32 +++++++++++++++++++ 4 files changed, 40 insertions(+), 19 deletions(-) create mode 100644 libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/InstallDisconnectedSwitch.tsx diff --git a/libs/locales/lib/en/translation.json b/libs/locales/lib/en/translation.json index 191ab4f34a..f16523c25e 100644 --- a/libs/locales/lib/en/translation.json +++ b/libs/locales/lib/en/translation.json @@ -414,6 +414,7 @@ "ai:HTTPS proxy URL": "HTTPS proxy URL", "ai:HTTPS Proxy URL": "HTTPS Proxy URL", "ai:I understand that I need to download credentials files prior of proceeding with the cluster installation.": "I understand that I need to download credentials files prior of proceeding with the cluster installation.", + "ai:I'm installing on a disconnected/air-gapped/secured environment": "I'm installing on a disconnected/air-gapped/secured environment", "ai:If hosts are behind a firewall that requires the use of a proxy, provide additional information about the proxy.": "If hosts are behind a firewall that requires the use of a proxy, provide additional information about the proxy.", "ai:If not, please start your VMs with the following configuration:": "If not, start your VMs with the following configuration:", "ai:If the cluster hosts are in a network with a re-encrypting (MITM) proxy or the cluster needs to trust certificates for other purposes (e.g. container image registries).": "If the cluster hosts are in a network with a re-encrypting (MITM) proxy or the cluster needs to trust certificates for other purposes (e.g. container image registries).", diff --git a/libs/ui-lib/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx b/libs/ui-lib/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx index dda0c20307..4d436f7a5f 100644 --- a/libs/ui-lib/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx +++ b/libs/ui-lib/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { useSelector } from 'react-redux'; import { useLocation } from 'react-router-dom-v5-compat'; -import { Grid, GridItem, Switch } from '@patternfly/react-core'; +import { Grid, GridItem } from '@patternfly/react-core'; import isUndefined from 'lodash-es/isUndefined.js'; import { Formik, FormikHelpers } from 'formik'; import { @@ -32,6 +32,7 @@ import { ManagedDomain, } from '@openshift-assisted/types/assisted-installer-service'; import { useFeature } from '../../hooks/use-feature'; +import InstallDisconnectedSwitch from './disconnected/InstallDisconnectedSwitch'; type ClusterDetailsFormProps = { cluster?: Cluster; @@ -62,8 +63,7 @@ const ClusterDetailsForm = (props: ClusterDetailsFormProps) => { navigation, } = props; - const { installDisconnected, setInstallDisconnected, customManifestsStep, moveNext } = - useClusterWizardContext(); + const { customManifestsStep, moveNext } = useClusterWizardContext(); const { search } = useLocation(); const { isViewerMode } = useSelector(selectCurrentClusterPermissionsState); const { clearAlerts } = useAlerts(); @@ -166,13 +166,7 @@ const ClusterDetailsForm = (props: ClusterDetailsFormProps) => { {!isSingleClusterFeatureEnabled && ( - setInstallDisconnected(checked)} - ouiaId="DisconnectedInstall" - /> + )} diff --git a/libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx b/libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx index badf827381..f97628de08 100644 --- a/libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx +++ b/libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx @@ -8,7 +8,6 @@ import { useTranslation, } from '../../../../common'; import { - Switch, Split, SplitItem, TextContent, @@ -24,10 +23,11 @@ import { useClusterWizardContext } from '../ClusterWizardContext'; import ClusterWizardFooter from '../ClusterWizardFooter'; import ClusterWizardNavigation from '../ClusterWizardNavigation'; import { WithErrorBoundary } from '../../../../common/components/ErrorHandling/WithErrorBoundary'; +import InstallDisconnectedSwitch from './InstallDisconnectedSwitch'; const BasicStep = () => { const { t } = useTranslation(); - const { installDisconnected, setInstallDisconnected, moveNext } = useClusterWizardContext(); + const { moveNext } = useClusterWizardContext(); return ( { - setInstallDisconnected(checked)} - ouiaId="DisconnectedInstall" - /> +
diff --git a/libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/InstallDisconnectedSwitch.tsx b/libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/InstallDisconnectedSwitch.tsx new file mode 100644 index 0000000000..2b0a95f41f --- /dev/null +++ b/libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/InstallDisconnectedSwitch.tsx @@ -0,0 +1,32 @@ +import * as React from 'react'; +import { Switch, Tooltip } from '@patternfly/react-core'; +import { useClusterWizardContext } from '../ClusterWizardContext'; +import { useTranslation } from '../../../../common'; + +const InstallDisconnectedSwitch = ({ isDisabled }: { isDisabled?: boolean }) => { + const { t } = useTranslation(); + const { installDisconnected, setInstallDisconnected } = useClusterWizardContext(); + + const switchBtn = ( + setInstallDisconnected(checked)} + ouiaId="DisconnectedInstall" + isDisabled={isDisabled} + /> + ); + + return isDisabled ? ( + {t('ai:This option is not editable after the draft cluster is created')}} + > + {switchBtn} + + ) : ( + switchBtn + ); +}; + +export default InstallDisconnectedSwitch;