@openshift-assisted/ui-lib 2.14.0-cim → 2.14.2-cim
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/@types/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.d.ts +2 -3
- package/build/@types/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.d.ts +3 -0
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostDiscoveryTable.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.d.ts +15 -2
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.d.ts +1 -2
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts +1 -2
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.d.ts +8 -7
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDetailsFormFields.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.d.ts +17 -0
- package/build/@types/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.d.ts.map +1 -0
- package/build/@types/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.d.ts +8 -0
- package/build/@types/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.d.ts.map +1 -0
- package/build/@types/cim/components/ClusterDeployment/components/ValidationSection.d.ts +16 -0
- package/build/@types/cim/components/ClusterDeployment/components/ValidationSection.d.ts.map +1 -0
- package/build/@types/cim/components/ClusterDeployment/constants.d.ts +2 -0
- package/build/@types/cim/components/ClusterDeployment/constants.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/index.d.ts +1 -2
- package/build/@types/cim/components/ClusterDeployment/index.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts +1 -11
- package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/types.d.ts +7 -9
- package/build/@types/cim/components/ClusterDeployment/types.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts +8 -2
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/DetailsPage/HypershiftKubeconfigDownload.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/types.d.ts +6 -3
- package/build/@types/cim/components/Hypershift/types.d.ts.map +1 -1
- package/build/@types/cim/components/InfraEnv/InfraEnvAgentTable.d.ts.map +1 -1
- package/build/@types/cim/components/common/constants.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/agents.d.ts +3 -0
- package/build/@types/cim/components/helpers/agents.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/toAssisted.d.ts.map +1 -1
- package/build/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditAgentModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/ScaleUpModal.d.ts +3 -0
- package/build/@types/cim/components/modals/ScaleUpModal.d.ts.map +1 -1
- package/build/@types/cim/types/k8s/infra-env-k8s-resource.d.ts +1 -0
- package/build/@types/cim/types/k8s/infra-env-k8s-resource.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts +7 -0
- package/build/@types/common/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts.map +1 -0
- package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/clusterDetailsValidation.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/types.d.ts +1 -0
- package/build/@types/common/components/clusterWizard/types.d.ts.map +1 -1
- package/build/@types/common/components/hosts/EditHostForm.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
- package/build/@types/ocm/store/slices/current-cluster/slice.d.ts +1 -0
- package/build/@types/ocm/store/slices/current-cluster/slice.d.ts.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.js +9 -7
- package/build/cjs/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.js +26 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js +13 -29
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostDiscoveryTable.js +2 -12
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostDiscoveryTable.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js +50 -26
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.js +3 -3
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.js +39 -21
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.js +58 -27
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.js +24 -24
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js +26 -42
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.js +12 -8
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js +4 -5
- package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js +5 -5
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.js +50 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.js.map +1 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.js +24 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.js.map +1 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ValidationSection.js +17 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ValidationSection.js.map +1 -0
- package/build/cjs/cim/components/ClusterDeployment/constants.js +2 -0
- package/build/cjs/cim/components/ClusterDeployment/constants.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/index.js +2 -5
- package/build/cjs/cim/components/ClusterDeployment/index.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js +1 -14
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js +2 -2
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/DetailsPage/HypershiftKubeconfigDownload.js +6 -4
- package/build/cjs/cim/components/Hypershift/DetailsPage/HypershiftKubeconfigDownload.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/InfraEnvAgentTable.js +2 -12
- package/build/cjs/cim/components/InfraEnv/InfraEnvAgentTable.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/OpenshiftVersionDropdown.js +1 -1
- package/build/cjs/cim/components/InfraEnv/OpenshiftVersionDropdown.js.map +1 -1
- package/build/cjs/cim/components/common/constants.js +1 -1
- package/build/cjs/cim/components/common/constants.js.map +1 -1
- package/build/cjs/cim/components/helpers/agents.js +19 -1
- package/build/cjs/cim/components/helpers/agents.js.map +1 -1
- package/build/cjs/cim/components/helpers/toAssisted.js +25 -22
- package/build/cjs/cim/components/helpers/toAssisted.js.map +1 -1
- package/build/cjs/cim/components/modals/AddHostModal.js +4 -5
- package/build/cjs/cim/components/modals/AddHostModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditAgentModal.js +2 -2
- package/build/cjs/cim/components/modals/EditAgentModal.js.map +1 -1
- package/build/cjs/cim/components/modals/ScaleUpModal.js +3 -2
- package/build/cjs/cim/components/modals/ScaleUpModal.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/ControlPlaneNodesDropdown.js +41 -0
- package/build/cjs/common/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -0
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +4 -5
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageTypeControlGroup.js +5 -5
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageTypeControlGroup.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js +1 -0
- package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js +14 -18
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.js +4 -4
- package/build/cjs/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.js.map +1 -1
- package/build/cjs/common/components/hosts/EditHostForm.js +3 -3
- package/build/cjs/common/components/hosts/EditHostForm.js.map +1 -1
- package/build/cjs/common/components/ui/formik/validationSchemas.js +18 -15
- package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
- package/build/cjs/common/config/constants.js +1 -1
- package/build/cjs/common/config/constants.js.map +1 -1
- package/lib/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.tsx +11 -9
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.tsx +63 -3
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.tsx +25 -53
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostDiscoveryTable.tsx +7 -16
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.tsx +102 -59
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.tsx +16 -10
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.tsx +84 -48
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.tsx +106 -54
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.tsx +96 -85
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizard.tsx +109 -119
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.tsx +27 -14
- package/lib/cim/components/ClusterDeployment/ClusterDetailsFormFields.tsx +4 -6
- package/lib/cim/components/ClusterDeployment/NetworkConfiguration.tsx +5 -5
- package/lib/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.tsx +107 -0
- package/lib/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.tsx +49 -0
- package/lib/cim/components/ClusterDeployment/components/ValidationSection.tsx +41 -0
- package/lib/cim/components/ClusterDeployment/constants.ts +3 -1
- package/lib/cim/components/ClusterDeployment/index.ts +1 -3
- package/lib/cim/components/ClusterDeployment/networkConfigurationValidation.ts +1 -26
- package/lib/cim/components/ClusterDeployment/types.ts +7 -10
- package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +3 -3
- package/lib/cim/components/Hypershift/DetailsPage/HypershiftKubeconfigDownload.tsx +4 -2
- package/lib/cim/components/Hypershift/types.ts +6 -3
- package/lib/cim/components/InfraEnv/InfraEnvAgentTable.tsx +7 -16
- package/lib/cim/components/InfraEnv/OpenshiftVersionDropdown.tsx +1 -1
- package/lib/cim/components/common/constants.ts +1 -2
- package/lib/cim/components/helpers/agents.ts +30 -1
- package/lib/cim/components/helpers/toAssisted.ts +13 -8
- package/lib/cim/components/modals/AddHostModal.tsx +4 -5
- package/lib/cim/components/modals/EditAgentModal.tsx +2 -1
- package/lib/cim/components/modals/ScaleUpModal.tsx +12 -2
- package/lib/cim/types/k8s/infra-env-k8s-resource.ts +1 -0
- package/lib/common/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +93 -0
- package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +10 -12
- package/lib/common/components/clusterConfiguration/DiscoveryImageTypeControlGroup.tsx +9 -9
- package/lib/common/components/clusterWizard/clusterDetailsValidation.ts +1 -0
- package/lib/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.tsx +50 -61
- package/lib/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.tsx +4 -4
- package/lib/common/components/clusterWizard/types.ts +1 -0
- package/lib/common/components/hosts/EditHostForm.tsx +16 -6
- package/lib/common/components/ui/formik/validationSchemas.ts +13 -10
- package/lib/common/config/constants.ts +1 -1
- package/package.json +4 -3
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.d.ts +0 -10
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.d.ts.map +0 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.d.ts +0 -13
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.d.ts.map +0 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.d.ts +0 -4
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.d.ts.map +0 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.d.ts +0 -7
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.d.ts.map +0 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.js +0 -31
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.js.map +0 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.js +0 -50
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.js.map +0 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.js +0 -35
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.js.map +0 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.js +0 -9
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.js.map +0 -1
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.tsx +0 -79
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.tsx +0 -128
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.tsx +0 -81
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.tsx +0 -13
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import
|
|
3
|
-
import { Grid, GridItem } from '@patternfly/react-core';
|
|
2
|
+
import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
|
|
3
|
+
import { Grid, GridItem, Wizard, WizardStep } from '@patternfly/react-core';
|
|
4
4
|
import { AlertsContextProvider, LoadingState } from '../../../common';
|
|
5
|
-
import ClusterDeploymentWizardContext from './ClusterDeploymentWizardContext';
|
|
6
5
|
import ClusterDeploymentDetailsStep from './ClusterDeploymentDetailsStep';
|
|
7
6
|
import ClusterDeploymentNetworkingStep from './ClusterDeploymentNetworkingStep';
|
|
8
7
|
import ClusterDeploymentHostSelectionStep from './ClusterDeploymentHostSelectionStep';
|
|
9
|
-
import { ClusterDeploymentWizardProps
|
|
8
|
+
import { ClusterDeploymentWizardProps } from './types';
|
|
10
9
|
import ClusterDeploymentHostsDiscoveryStep from './ClusterDeploymentHostsDiscoveryStep';
|
|
11
10
|
import { ACMFeatureSupportLevelProvider } from '../featureSupportLevels';
|
|
12
11
|
import ClusterDeploymentReviewStep from './ClusterDeploymentReviewStep';
|
|
13
12
|
import { YamlPreview, useYamlPreview } from '../YamlPreview';
|
|
13
|
+
import { wizardStepNames } from './constants';
|
|
14
|
+
import { ClusterDeploymentWizardContextProvider } from './ClusterDeploymentWizardContext';
|
|
15
|
+
import { isCIMFlow } from './helpers';
|
|
14
16
|
|
|
15
|
-
const ClusterDeploymentWizard
|
|
17
|
+
export const ClusterDeploymentWizard = ({
|
|
16
18
|
className,
|
|
17
19
|
onSaveDetails,
|
|
18
20
|
onSaveNetworking,
|
|
@@ -25,6 +27,7 @@ const ClusterDeploymentWizard: React.FC<ClusterDeploymentWizardProps> = ({
|
|
|
25
27
|
clusterDeployment,
|
|
26
28
|
agentClusterInstall,
|
|
27
29
|
agents,
|
|
30
|
+
bareMetalHosts,
|
|
28
31
|
clusterImages,
|
|
29
32
|
aiConfigMap,
|
|
30
33
|
infraEnv,
|
|
@@ -37,13 +40,10 @@ const ClusterDeploymentWizard: React.FC<ClusterDeploymentWizardProps> = ({
|
|
|
37
40
|
onSaveISOParams,
|
|
38
41
|
onCreateBMH,
|
|
39
42
|
isNutanix,
|
|
43
|
+
onChangeBMHHostname,
|
|
40
44
|
...rest
|
|
41
|
-
}) => {
|
|
42
|
-
const
|
|
43
|
-
initialStep || 'cluster-details',
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
const isAIFlow = infraEnv;
|
|
45
|
+
}: ClusterDeploymentWizardProps) => {
|
|
46
|
+
const { t } = useTranslation();
|
|
47
47
|
|
|
48
48
|
const { code, loadingResources } = useYamlPreview({
|
|
49
49
|
agentClusterInstall,
|
|
@@ -53,118 +53,110 @@ const ClusterDeploymentWizard: React.FC<ClusterDeploymentWizardProps> = ({
|
|
|
53
53
|
fetchKlusterletAddonConfig,
|
|
54
54
|
});
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
switch (stepId) {
|
|
62
|
-
case 'hosts-selection':
|
|
63
|
-
if (agentClusterInstall?.metadata?.name) {
|
|
64
|
-
return (
|
|
65
|
-
<ClusterDeploymentHostSelectionStep
|
|
66
|
-
clusterDeployment={clusterDeployment}
|
|
67
|
-
agentClusterInstall={agentClusterInstall}
|
|
68
|
-
onClose={onClose}
|
|
69
|
-
onSaveHostsSelection={onSaveHostsSelection}
|
|
70
|
-
agents={agents}
|
|
71
|
-
aiConfigMap={aiConfigMap}
|
|
72
|
-
onEditRole={hostActions.onEditRole}
|
|
73
|
-
onSetInstallationDiskId={hostActions.onSetInstallationDiskId}
|
|
74
|
-
isNutanix={isNutanix}
|
|
75
|
-
/>
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
return <LoadingState />;
|
|
79
|
-
case 'hosts-discovery':
|
|
80
|
-
if (isAIFlow) {
|
|
81
|
-
return onSaveISOParams && onCreateBMH ? (
|
|
82
|
-
<ClusterDeploymentHostsDiscoveryStep
|
|
83
|
-
clusterDeployment={clusterDeployment}
|
|
84
|
-
agentClusterInstall={agentClusterInstall}
|
|
85
|
-
agents={agents}
|
|
86
|
-
bareMetalHosts={[] /* TODO(mlibra) */}
|
|
87
|
-
aiConfigMap={aiConfigMap}
|
|
88
|
-
infraEnv={infraEnv}
|
|
89
|
-
fetchSecret={fetchSecret}
|
|
90
|
-
onClose={onClose}
|
|
91
|
-
onChangeBMHHostname={(bmh, _hostname) => {
|
|
92
|
-
// console.log('onChangeBMHHostname is not implemented: ', hostname);
|
|
93
|
-
return Promise.resolve(bmh);
|
|
94
|
-
}}
|
|
95
|
-
onEditRole={hostActions.onEditRole}
|
|
96
|
-
onSetInstallationDiskId={hostActions.onSetInstallationDiskId}
|
|
97
|
-
onDeleteHost={hostActions.onDeleteHost}
|
|
98
|
-
onSaveISOParams={onSaveISOParams}
|
|
99
|
-
onCreateBMH={onCreateBMH}
|
|
100
|
-
{...rest}
|
|
101
|
-
/>
|
|
102
|
-
) : (
|
|
103
|
-
<LoadingState />
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
return <LoadingState />;
|
|
107
|
-
case 'networking':
|
|
108
|
-
return (
|
|
109
|
-
<ClusterDeploymentNetworkingStep
|
|
110
|
-
clusterDeployment={clusterDeployment}
|
|
111
|
-
agentClusterInstall={agentClusterInstall}
|
|
112
|
-
agents={agents}
|
|
113
|
-
onSaveNetworking={onSaveNetworking}
|
|
114
|
-
onClose={onClose}
|
|
115
|
-
onEditHost={hostActions.onEditHost}
|
|
116
|
-
onEditRole={hostActions.onEditRole}
|
|
117
|
-
fetchInfraEnv={fetchInfraEnv}
|
|
118
|
-
isPreviewOpen={isPreviewOpen}
|
|
119
|
-
onSetInstallationDiskId={hostActions.onSetInstallationDiskId}
|
|
120
|
-
isNutanix={isNutanix}
|
|
121
|
-
/>
|
|
122
|
-
);
|
|
123
|
-
case 'review':
|
|
124
|
-
return (
|
|
125
|
-
<ClusterDeploymentReviewStep
|
|
126
|
-
onFinish={onFinish}
|
|
127
|
-
clusterDeployment={clusterDeployment}
|
|
128
|
-
agentClusterInstall={agentClusterInstall}
|
|
129
|
-
agents={agents}
|
|
130
|
-
onClose={onClose}
|
|
131
|
-
clusterImages={clusterImages}
|
|
132
|
-
infraEnv={infraEnv}
|
|
133
|
-
/>
|
|
134
|
-
);
|
|
135
|
-
case 'cluster-details':
|
|
136
|
-
default:
|
|
137
|
-
return (
|
|
138
|
-
<ClusterDeploymentDetailsStep
|
|
139
|
-
clusterImages={clusterImages}
|
|
140
|
-
usedClusterNames={usedClusterNames}
|
|
141
|
-
clusterDeployment={clusterDeployment}
|
|
142
|
-
agentClusterInstall={agentClusterInstall}
|
|
143
|
-
agents={agents}
|
|
144
|
-
onSaveDetails={onSaveDetails}
|
|
145
|
-
onClose={onClose}
|
|
146
|
-
isPreviewOpen={isPreviewOpen}
|
|
147
|
-
infraEnv={infraEnv}
|
|
148
|
-
isNutanix={isNutanix}
|
|
149
|
-
/>
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
};
|
|
56
|
+
// if initialStep is set, it is either 'host-selection' or 'host-discovery', both at index 4
|
|
57
|
+
// if initialStep is not set, start at 'cluster-details' which is at index 2
|
|
58
|
+
const startIndex = initialStep ? 4 : 2;
|
|
59
|
+
const stepNames = wizardStepNames(t);
|
|
60
|
+
const isAIFlow = !!infraEnv;
|
|
153
61
|
|
|
154
62
|
return (
|
|
155
63
|
<Grid style={{ height: '100%' }}>
|
|
156
64
|
<GridItem span={isPreviewOpen ? 7 : 12}>
|
|
157
65
|
<AlertsContextProvider>
|
|
158
66
|
<ACMFeatureSupportLevelProvider clusterImages={clusterImages} isEditClusterFlow={true}>
|
|
159
|
-
<
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
67
|
+
<ClusterDeploymentWizardContextProvider agentClusterInstall={agentClusterInstall}>
|
|
68
|
+
<Wizard
|
|
69
|
+
isVisitRequired
|
|
70
|
+
startIndex={startIndex}
|
|
71
|
+
className={className}
|
|
72
|
+
onClose={onClose}
|
|
73
|
+
>
|
|
74
|
+
<WizardStep
|
|
75
|
+
name={stepNames['installation-type']}
|
|
76
|
+
id={'installation-type'}
|
|
77
|
+
isDisabled
|
|
78
|
+
/>
|
|
79
|
+
<WizardStep name={stepNames['cluster-details']} id={'cluster-details'}>
|
|
80
|
+
<ClusterDeploymentDetailsStep
|
|
81
|
+
clusterImages={clusterImages}
|
|
82
|
+
usedClusterNames={usedClusterNames}
|
|
83
|
+
clusterDeployment={clusterDeployment}
|
|
84
|
+
agentClusterInstall={agentClusterInstall}
|
|
85
|
+
agents={agents}
|
|
86
|
+
onSaveDetails={onSaveDetails}
|
|
87
|
+
isPreviewOpen={isPreviewOpen}
|
|
88
|
+
infraEnv={infraEnv}
|
|
89
|
+
isNutanix={isNutanix}
|
|
90
|
+
/>
|
|
91
|
+
</WizardStep>
|
|
92
|
+
<WizardStep name={stepNames['automation']} id={'automation'} isDisabled />
|
|
93
|
+
{isCIMFlow(clusterDeployment) ? (
|
|
94
|
+
<WizardStep name={stepNames['hosts-selection']} id={'host-selection'}>
|
|
95
|
+
{agentClusterInstall?.metadata?.name ? (
|
|
96
|
+
<ClusterDeploymentHostSelectionStep
|
|
97
|
+
clusterDeployment={clusterDeployment}
|
|
98
|
+
agentClusterInstall={agentClusterInstall}
|
|
99
|
+
onSaveHostsSelection={onSaveHostsSelection}
|
|
100
|
+
agents={agents}
|
|
101
|
+
aiConfigMap={aiConfigMap}
|
|
102
|
+
onEditRole={hostActions.onEditRole}
|
|
103
|
+
onSetInstallationDiskId={hostActions.onSetInstallationDiskId}
|
|
104
|
+
isNutanix={isNutanix}
|
|
105
|
+
/>
|
|
106
|
+
) : (
|
|
107
|
+
<LoadingState />
|
|
108
|
+
)}
|
|
109
|
+
</WizardStep>
|
|
110
|
+
) : (
|
|
111
|
+
<WizardStep name={stepNames['hosts-discovery']} id={'host-discovery'}>
|
|
112
|
+
{isAIFlow && onSaveISOParams && onCreateBMH ? (
|
|
113
|
+
<ClusterDeploymentHostsDiscoveryStep
|
|
114
|
+
clusterDeployment={clusterDeployment}
|
|
115
|
+
agentClusterInstall={agentClusterInstall}
|
|
116
|
+
agents={agents}
|
|
117
|
+
bareMetalHosts={bareMetalHosts}
|
|
118
|
+
aiConfigMap={aiConfigMap}
|
|
119
|
+
infraEnv={infraEnv}
|
|
120
|
+
fetchSecret={fetchSecret}
|
|
121
|
+
onChangeBMHHostname={onChangeBMHHostname}
|
|
122
|
+
onEditRole={hostActions.onEditRole}
|
|
123
|
+
onSetInstallationDiskId={hostActions.onSetInstallationDiskId}
|
|
124
|
+
onDeleteHost={hostActions.onDeleteHost}
|
|
125
|
+
onSaveISOParams={onSaveISOParams}
|
|
126
|
+
onCreateBMH={onCreateBMH}
|
|
127
|
+
{...rest}
|
|
128
|
+
/>
|
|
129
|
+
) : (
|
|
130
|
+
<LoadingState />
|
|
131
|
+
)}
|
|
132
|
+
</WizardStep>
|
|
133
|
+
)}
|
|
134
|
+
<WizardStep name={stepNames['networking']} id={'networking'}>
|
|
135
|
+
<ClusterDeploymentNetworkingStep
|
|
136
|
+
clusterDeployment={clusterDeployment}
|
|
137
|
+
agentClusterInstall={agentClusterInstall}
|
|
138
|
+
agents={agents}
|
|
139
|
+
onSaveNetworking={onSaveNetworking}
|
|
140
|
+
onEditHost={hostActions.onEditHost}
|
|
141
|
+
onEditRole={hostActions.onEditRole}
|
|
142
|
+
fetchInfraEnv={fetchInfraEnv}
|
|
143
|
+
isPreviewOpen={isPreviewOpen}
|
|
144
|
+
onSetInstallationDiskId={hostActions.onSetInstallationDiskId}
|
|
145
|
+
isNutanix={isNutanix}
|
|
146
|
+
/>
|
|
147
|
+
</WizardStep>
|
|
148
|
+
<WizardStep name={stepNames['review']} id={'review'}>
|
|
149
|
+
<ClusterDeploymentReviewStep
|
|
150
|
+
onFinish={onFinish}
|
|
151
|
+
clusterDeployment={clusterDeployment}
|
|
152
|
+
agentClusterInstall={agentClusterInstall}
|
|
153
|
+
agents={agents}
|
|
154
|
+
clusterImages={clusterImages}
|
|
155
|
+
infraEnv={infraEnv}
|
|
156
|
+
/>
|
|
157
|
+
</WizardStep>
|
|
158
|
+
</Wizard>
|
|
159
|
+
</ClusterDeploymentWizardContextProvider>
|
|
168
160
|
</ACMFeatureSupportLevelProvider>
|
|
169
161
|
</AlertsContextProvider>
|
|
170
162
|
</GridItem>
|
|
@@ -178,5 +170,3 @@ const ClusterDeploymentWizard: React.FC<ClusterDeploymentWizardProps> = ({
|
|
|
178
170
|
</Grid>
|
|
179
171
|
);
|
|
180
172
|
};
|
|
181
|
-
|
|
182
|
-
export default ClusterDeploymentWizard;
|
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { ClusterDeploymentWizardStepsType } from './types';
|
|
2
|
+
import { AgentClusterInstallK8sResource } from '../../types';
|
|
4
3
|
|
|
5
4
|
type ClusterDeploymentWizardContextType = {
|
|
6
|
-
|
|
7
|
-
setCurrentStepId: (stepId: ClusterDeploymentWizardStepsType) => void;
|
|
8
|
-
clusterDeployment?: ClusterDeploymentK8sResource;
|
|
5
|
+
syncError?: string;
|
|
9
6
|
};
|
|
10
7
|
|
|
11
|
-
const ClusterDeploymentWizardContext =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// 'Tried to use ClusterDeploymentWizardContext but there was no provider rendered.',
|
|
16
|
-
// );
|
|
17
|
-
},
|
|
18
|
-
});
|
|
8
|
+
export const ClusterDeploymentWizardContext =
|
|
9
|
+
React.createContext<ClusterDeploymentWizardContextType>({
|
|
10
|
+
syncError: undefined,
|
|
11
|
+
});
|
|
19
12
|
|
|
20
|
-
export
|
|
13
|
+
export const ClusterDeploymentWizardContextProvider = ({
|
|
14
|
+
children,
|
|
15
|
+
agentClusterInstall,
|
|
16
|
+
}: {
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
agentClusterInstall?: AgentClusterInstallK8sResource;
|
|
19
|
+
}) => {
|
|
20
|
+
const syncError = React.useMemo(
|
|
21
|
+
() =>
|
|
22
|
+
agentClusterInstall?.status?.conditions?.find(
|
|
23
|
+
(c) => c.type === 'SpecSynced' && c.status === 'False',
|
|
24
|
+
)?.message,
|
|
25
|
+
[agentClusterInstall?.status?.conditions],
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<ClusterDeploymentWizardContext.Provider value={{ syncError }}>
|
|
30
|
+
{children}
|
|
31
|
+
</ClusterDeploymentWizardContext.Provider>
|
|
32
|
+
);
|
|
33
|
+
};
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
import { ClusterDetailsValues } from '../../../common/components/clusterWizard/types';
|
|
15
15
|
import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
|
|
16
16
|
import CpuArchitectureDropdown from '../common/CpuArchitectureDropdown';
|
|
17
|
-
import { SNOControlGroup } from '../../../common';
|
|
18
17
|
import { getNetworkType } from '../helpers';
|
|
18
|
+
import ControlPlaneNodesDropdown from '../../../common/components/clusterConfiguration/ControlPlaneNodesDropdown';
|
|
19
19
|
export type ClusterDetailsFormFieldsProps = {
|
|
20
20
|
isEditFlow: boolean;
|
|
21
21
|
forceOpenshiftVersion?: string;
|
|
@@ -52,7 +52,7 @@ export const ClusterDetailsFormFields: React.FC<ClusterDetailsFormFieldsProps> =
|
|
|
52
52
|
cpuArchitectures,
|
|
53
53
|
}) => {
|
|
54
54
|
const { values, setFieldValue } = useFormikContext<ClusterDetailsValues>();
|
|
55
|
-
const { name, baseDnsDomain
|
|
55
|
+
const { name, baseDnsDomain } = values;
|
|
56
56
|
|
|
57
57
|
const nameInputRef = React.useRef<HTMLInputElement>();
|
|
58
58
|
React.useEffect(() => {
|
|
@@ -110,11 +110,9 @@ export const ClusterDetailsFormFields: React.FC<ClusterDetailsFormFieldsProps> =
|
|
|
110
110
|
}}
|
|
111
111
|
/>
|
|
112
112
|
)}
|
|
113
|
+
<ControlPlaneNodesDropdown isNutanix={isNutanix} isDisabled={isEditFlow} />
|
|
113
114
|
{!isNutanix && (
|
|
114
|
-
|
|
115
|
-
<SNOControlGroup versions={versions} highAvailabilityMode={highAvailabilityMode} />
|
|
116
|
-
<CpuArchitectureDropdown isDisabled={isEditFlow} cpuArchitectures={cpuArchitectures} />
|
|
117
|
-
</>
|
|
115
|
+
<CpuArchitectureDropdown cpuArchitectures={cpuArchitectures} isDisabled={isEditFlow} />
|
|
118
116
|
)}
|
|
119
117
|
{extensionAfter?.['openshiftVersion'] && extensionAfter['openshiftVersion']}
|
|
120
118
|
{!isEditFlow && <PullSecret />}
|
|
@@ -97,12 +97,12 @@ const NetworkConfiguration = ({
|
|
|
97
97
|
|
|
98
98
|
// We need to reset these fields' values in order to align with the values the server sends
|
|
99
99
|
setFieldValue('vipDhcpAllocation', false);
|
|
100
|
-
setFieldValue('
|
|
101
|
-
setFieldValue('
|
|
100
|
+
setFieldValue('ingressVips', [], shouldValidate);
|
|
101
|
+
setFieldValue('apiVips', [], shouldValidate);
|
|
102
102
|
} else {
|
|
103
|
-
if (!values.vipDhcpAllocation
|
|
104
|
-
validateField('
|
|
105
|
-
validateField('
|
|
103
|
+
if (!values.vipDhcpAllocation) {
|
|
104
|
+
validateField('ingressVips');
|
|
105
|
+
validateField('apiVips');
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}, [
|
package/lib/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.tsx
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Measure from 'react-measure';
|
|
3
|
+
import isMatch from 'lodash-es/isMatch.js';
|
|
4
|
+
import { useFormikContext } from 'formik';
|
|
5
|
+
import { Alert, AlertVariant, Grid, GridItem } from '@patternfly/react-core';
|
|
6
|
+
|
|
7
|
+
import { AgentK8sResource } from '../../../types';
|
|
8
|
+
import { AGENT_LOCATION_LABEL_KEY, AGENT_NOLOCATION_VALUE } from '../../common';
|
|
9
|
+
import { ClusterDeploymentHostsSelectionValues, ScaleUpFormValues } from '../types';
|
|
10
|
+
import AgentsSelectionTable from '../../Agent/AgentsSelectionTable';
|
|
11
|
+
import { AgentTableActions } from '../types';
|
|
12
|
+
import { useTranslation } from '../../../../common/hooks/use-translation-wrapper';
|
|
13
|
+
import { CpuArchitecture } from '../../../../common';
|
|
14
|
+
import LocationsSelector from '../LocationsSelector';
|
|
15
|
+
import LabelsSelector, { infraEnvLabelKeys } from '../LabelsSelector';
|
|
16
|
+
|
|
17
|
+
type ClusterDeploymentHostsSelectionAdvancedProps = {
|
|
18
|
+
availableAgents: AgentK8sResource[];
|
|
19
|
+
onEditRole?: AgentTableActions['onEditRole'];
|
|
20
|
+
onEditHost?: AgentTableActions['onEditHost'];
|
|
21
|
+
onSetInstallationDiskId?: AgentTableActions['onSetInstallationDiskId'];
|
|
22
|
+
onHostSelect?: VoidFunction;
|
|
23
|
+
cpuArchitecture?: CpuArchitecture;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
type FormValues = ClusterDeploymentHostsSelectionValues | ScaleUpFormValues;
|
|
27
|
+
|
|
28
|
+
const ClusterDeploymentHostsSelectionAdvanced = <T extends FormValues>({
|
|
29
|
+
availableAgents,
|
|
30
|
+
onEditRole,
|
|
31
|
+
onSetInstallationDiskId,
|
|
32
|
+
onEditHost,
|
|
33
|
+
onHostSelect,
|
|
34
|
+
cpuArchitecture,
|
|
35
|
+
}: ClusterDeploymentHostsSelectionAdvancedProps) => {
|
|
36
|
+
const { t } = useTranslation();
|
|
37
|
+
const { values } = useFormikContext<T>();
|
|
38
|
+
const { locations, agentLabels } = values;
|
|
39
|
+
|
|
40
|
+
const matchingAgents = React.useMemo(
|
|
41
|
+
() =>
|
|
42
|
+
availableAgents.filter((agent) => {
|
|
43
|
+
const labels = agentLabels.reduce((acc, curr) => {
|
|
44
|
+
const label = curr.split('=');
|
|
45
|
+
acc[label[0]] = label[1];
|
|
46
|
+
return acc;
|
|
47
|
+
}, {} as Record<string, string>);
|
|
48
|
+
const matchesLocation = locations.length
|
|
49
|
+
? locations.includes(
|
|
50
|
+
agent.metadata?.labels?.[AGENT_LOCATION_LABEL_KEY] || AGENT_NOLOCATION_VALUE,
|
|
51
|
+
)
|
|
52
|
+
: true;
|
|
53
|
+
const matchesLabels = agent.metadata?.labels
|
|
54
|
+
? isMatch(agent.metadata?.labels, labels)
|
|
55
|
+
: true;
|
|
56
|
+
return matchesLocation && matchesLabels;
|
|
57
|
+
}),
|
|
58
|
+
[availableAgents, locations, agentLabels],
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<>
|
|
63
|
+
<Grid hasGutter>
|
|
64
|
+
<GridItem>
|
|
65
|
+
<LocationsSelector agents={availableAgents} />
|
|
66
|
+
</GridItem>
|
|
67
|
+
<GridItem>
|
|
68
|
+
<LabelsSelector
|
|
69
|
+
agents={matchingAgents}
|
|
70
|
+
name="agentLabels"
|
|
71
|
+
labelKeysFilter={infraEnvLabelKeys}
|
|
72
|
+
/>
|
|
73
|
+
</GridItem>
|
|
74
|
+
{cpuArchitecture && (
|
|
75
|
+
<Alert
|
|
76
|
+
variant={AlertVariant.info}
|
|
77
|
+
title={t(
|
|
78
|
+
'ai:Displaying only hosts with {{cpuArchitecture}} architecture in the table.',
|
|
79
|
+
{
|
|
80
|
+
cpuArchitecture,
|
|
81
|
+
},
|
|
82
|
+
)}
|
|
83
|
+
isInline
|
|
84
|
+
/>
|
|
85
|
+
)}
|
|
86
|
+
<GridItem>
|
|
87
|
+
<Measure bounds>
|
|
88
|
+
{({ measureRef, contentRect }) => (
|
|
89
|
+
<div ref={measureRef}>
|
|
90
|
+
<AgentsSelectionTable
|
|
91
|
+
matchingAgents={matchingAgents}
|
|
92
|
+
onEditRole={onEditRole}
|
|
93
|
+
onSetInstallationDiskId={onSetInstallationDiskId}
|
|
94
|
+
width={contentRect.bounds?.width}
|
|
95
|
+
onEditHost={onEditHost}
|
|
96
|
+
onHostSelect={onHostSelect}
|
|
97
|
+
/>
|
|
98
|
+
</div>
|
|
99
|
+
)}
|
|
100
|
+
</Measure>
|
|
101
|
+
</GridItem>
|
|
102
|
+
</Grid>
|
|
103
|
+
</>
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export default ClusterDeploymentHostsSelectionAdvanced;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Grid, GridItem } from '@patternfly/react-core';
|
|
3
|
+
import { NumberInputField } from '../../../../common';
|
|
4
|
+
import { AgentK8sResource } from '../../../types';
|
|
5
|
+
import AgentsSelectionHostCountAlerts from '../../Agent/AgentsSelectionHostCountAlerts';
|
|
6
|
+
import AgentsSelectionHostCountLabelIcon from '../../Agent/AgentsSelectionHostCountLabelIcon';
|
|
7
|
+
import { useAgentsAutoSelection } from '../../Agent/AgentsSelectionUtils';
|
|
8
|
+
import { useTranslation } from '../../../../common/hooks/use-translation-wrapper';
|
|
9
|
+
import LocationsSelector from '../LocationsSelector';
|
|
10
|
+
|
|
11
|
+
type ClusterScaleUpAutoHostsSelectionProps = {
|
|
12
|
+
availableAgents: AgentK8sResource[];
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const ClusterScaleUpAutoHostsSelection: React.FC<ClusterScaleUpAutoHostsSelectionProps> = ({
|
|
16
|
+
availableAgents,
|
|
17
|
+
}) => {
|
|
18
|
+
const { matchingAgents, selectedAgents, hostCount } = useAgentsAutoSelection(availableAgents);
|
|
19
|
+
const { t } = useTranslation();
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<>
|
|
23
|
+
<Grid hasGutter>
|
|
24
|
+
<GridItem span={12} lg={10} xl={9} xl2={7}>
|
|
25
|
+
<NumberInputField
|
|
26
|
+
label={t('ai:Number of hosts')}
|
|
27
|
+
labelIcon={<AgentsSelectionHostCountLabelIcon />}
|
|
28
|
+
idPostfix="hostcount"
|
|
29
|
+
name="hostCount"
|
|
30
|
+
minValue={1}
|
|
31
|
+
maxValue={matchingAgents.length}
|
|
32
|
+
isRequired
|
|
33
|
+
/>
|
|
34
|
+
</GridItem>
|
|
35
|
+
<GridItem span={12} lg={10} xl={9} xl2={7}>
|
|
36
|
+
<LocationsSelector agents={availableAgents} />
|
|
37
|
+
</GridItem>
|
|
38
|
+
</Grid>
|
|
39
|
+
|
|
40
|
+
<AgentsSelectionHostCountAlerts
|
|
41
|
+
matchingAgentsCount={matchingAgents.length}
|
|
42
|
+
selectedAgents={selectedAgents}
|
|
43
|
+
targetHostCount={hostCount}
|
|
44
|
+
/>
|
|
45
|
+
</>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export default ClusterScaleUpAutoHostsSelection;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AlertGroup } from '@patternfly/react-core';
|
|
3
|
+
import { Cluster } from '@openshift-assisted/types/./assisted-installer-service';
|
|
4
|
+
import { ValidationsInfo, ClusterWizardStepValidationsAlert } from '../../../../common';
|
|
5
|
+
import { ClusterWizardStepHostStatusDeterminationObject } from '../../../../common/types/hosts';
|
|
6
|
+
import ValidationsRunningAlert from '../../common/ValidationsRunningAlert';
|
|
7
|
+
import { ClusterWizardStepsType, wizardStepsValidationsMap } from '../wizardTransition';
|
|
8
|
+
|
|
9
|
+
type ValidationSectionProps = {
|
|
10
|
+
requireProxy?: boolean;
|
|
11
|
+
currentStepId: ClusterWizardStepsType;
|
|
12
|
+
validationsInfo?: ValidationsInfo;
|
|
13
|
+
clusterStatus?: Cluster['status'];
|
|
14
|
+
hosts: ClusterWizardStepHostStatusDeterminationObject[];
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const ValidationSection = ({
|
|
19
|
+
currentStepId,
|
|
20
|
+
clusterStatus,
|
|
21
|
+
validationsInfo,
|
|
22
|
+
hosts,
|
|
23
|
+
children,
|
|
24
|
+
}: ValidationSectionProps) => {
|
|
25
|
+
return (
|
|
26
|
+
<AlertGroup>
|
|
27
|
+
{children}
|
|
28
|
+
{clusterStatus && (
|
|
29
|
+
<ClusterWizardStepValidationsAlert
|
|
30
|
+
currentStepId={currentStepId}
|
|
31
|
+
clusterStatus={clusterStatus}
|
|
32
|
+
hosts={hosts}
|
|
33
|
+
validationsInfo={validationsInfo}
|
|
34
|
+
wizardStepsValidationsMap={wizardStepsValidationsMap}
|
|
35
|
+
>
|
|
36
|
+
<ValidationsRunningAlert />
|
|
37
|
+
</ClusterWizardStepValidationsAlert>
|
|
38
|
+
)}
|
|
39
|
+
</AlertGroup>
|
|
40
|
+
);
|
|
41
|
+
};
|
|
@@ -10,8 +10,10 @@ export const clusterHostsSelectionLabel = (t: TFunction): { [key in string]: str
|
|
|
10
10
|
export const wizardStepNames = (
|
|
11
11
|
t: TFunction,
|
|
12
12
|
): {
|
|
13
|
-
[key in ClusterDeploymentWizardStepsType]: string;
|
|
13
|
+
[key in ClusterDeploymentWizardStepsType | 'installation-type' | 'automation']: string;
|
|
14
14
|
} => ({
|
|
15
|
+
'installation-type': t('ai:Installation type'),
|
|
16
|
+
automation: t('ai:Automation'),
|
|
15
17
|
'cluster-details': t('ai:Cluster details'),
|
|
16
18
|
'hosts-selection': t('ai:Cluster hosts'),
|
|
17
19
|
'hosts-discovery': t('ai:Cluster hosts'),
|
|
@@ -4,17 +4,15 @@ export * from './AdditionalNTPSourcesDialogToggle';
|
|
|
4
4
|
export * from './LogsDownloadButton';
|
|
5
5
|
export * from './wizardTransition';
|
|
6
6
|
export * from './networkConfigurationValidation';
|
|
7
|
+
export * from './ClusterDeploymentWizard';
|
|
7
8
|
|
|
8
9
|
export { default as ClusterDeploymentValidationsOverview } from './ClusterDeploymentValidationsOverview';
|
|
9
10
|
export { default as ClusterDeploymentDetails } from './ClusterDeploymentDetails';
|
|
10
11
|
export { default as ClusterDeploymentProgress } from './ClusterDeploymentProgress';
|
|
11
12
|
export { default as ClusterDeploymentCredentials } from './ClusterDeploymentCredentials';
|
|
12
13
|
export { default as ClusterDeploymentKubeconfigDownload } from './ClusterDeploymentKubeconfigDownload';
|
|
13
|
-
export { default as ClusterDeploymentWizard } from './ClusterDeploymentWizard';
|
|
14
14
|
export { default as ClusterInstallationError } from './ClusterInstallationError';
|
|
15
15
|
export { default as NetworkConfiguration } from './NetworkConfiguration';
|
|
16
|
-
|
|
17
16
|
export { default as ACMClusterDeploymentDetailsStep } from './ACMClusterDeploymentDetailsStep';
|
|
18
17
|
|
|
19
|
-
export { default as ClusterDeploymentCreateProgress } from './ClusterDeploymentCreateProgress';
|
|
20
18
|
export { getTotalCompute } from './ShortCapacitySummary';
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
import * as Yup from 'yup';
|
|
2
1
|
import {
|
|
3
2
|
Cluster,
|
|
4
3
|
ClusterDefaultConfig,
|
|
5
4
|
} from '@openshift-assisted/types/assisted-installer-service';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
hostPrefixValidationSchema,
|
|
9
|
-
hostSubnetValidationSchema,
|
|
10
|
-
ipBlockValidationSchema,
|
|
11
|
-
sshPublicKeyValidationSchema,
|
|
12
|
-
vipValidationSchema,
|
|
13
|
-
} from '../../../common/components/ui';
|
|
14
|
-
|
|
5
|
+
import { NetworkConfigurationValues } from '../../../common/types/clusters';
|
|
15
6
|
import {
|
|
16
7
|
getSubnetFromMachineNetworkCidr,
|
|
17
8
|
getHostSubnets,
|
|
@@ -63,19 +54,3 @@ export const getNetworkInitialValues = (
|
|
|
63
54
|
networkType: cluster.networkType || NETWORK_TYPE_OVN,
|
|
64
55
|
};
|
|
65
56
|
};
|
|
66
|
-
|
|
67
|
-
export const getNetworkConfigurationValidationSchema = (
|
|
68
|
-
initialValues: NetworkConfigurationValues,
|
|
69
|
-
hostSubnets: HostSubnets,
|
|
70
|
-
) =>
|
|
71
|
-
Yup.lazy((values: NetworkConfigurationValues) =>
|
|
72
|
-
Yup.object<NetworkConfigurationValues>().shape({
|
|
73
|
-
clusterNetworkHostPrefix: hostPrefixValidationSchema(values.clusterNetworkCidr),
|
|
74
|
-
clusterNetworkCidr: ipBlockValidationSchema(values.serviceNetworkCidr),
|
|
75
|
-
serviceNetworkCidr: ipBlockValidationSchema(values.clusterNetworkCidr),
|
|
76
|
-
apiVip: vipValidationSchema(hostSubnets, values, initialValues.apiVip),
|
|
77
|
-
ingressVip: vipValidationSchema(hostSubnets, values, initialValues.ingressVip),
|
|
78
|
-
sshPublicKey: sshPublicKeyValidationSchema,
|
|
79
|
-
hostSubnet: hostSubnetValidationSchema,
|
|
80
|
-
}),
|
|
81
|
-
);
|