@openshift-assisted/ui-lib 2.52.1 → 2.53.0
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/ClusterDeploymentWizard.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/NetworkConfiguration.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/NetworkConfiguration.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/customManifests/ClusterDeploymentCustomManifestsStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.d.ts +5 -0
- package/build/@types/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.d.ts.map +1 -0
- package/build/@types/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/types.d.ts +0 -1
- package/build/@types/cim/components/ClusterDeployment/types.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts +4 -4
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
- package/build/@types/cim/components/featureSupportLevels/ACMFeatureSupportLevelProvider.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/clusterDeployment.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/versions.d.ts +2 -2
- package/build/@types/cim/components/helpers/versions.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/versions.test.d.ts +2 -0
- package/build/@types/cim/components/helpers/versions.test.d.ts.map +1 -0
- package/build/@types/cim/components/modals/CimConfiguration/CimConfigurationModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/CimConfiguration/persist.d.ts +14 -17
- package/build/@types/cim/components/modals/CimConfiguration/persist.d.ts.map +1 -1
- package/build/@types/cim/hooks/index.d.ts +1 -0
- package/build/@types/cim/hooks/index.d.ts.map +1 -1
- package/build/@types/cim/hooks/useAgents.d.ts +4 -0
- package/build/@types/cim/hooks/useAgents.d.ts.map +1 -0
- package/build/@types/cim/types/k8s/agent-cluster-install.d.ts +1 -1
- package/build/@types/cim/types/k8s/agent-cluster-install.d.ts.map +1 -1
- package/build/@types/common/components/clusterDetail/ClusterCredentials.d.ts.map +1 -1
- package/build/@types/common/components/clusterDetail/ConsoleModal.d.ts +0 -5
- package/build/@types/common/components/clusterDetail/ConsoleModal.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/customManifests/CustomManifestsAlert.d.ts +6 -0
- package/build/@types/common/components/clusterWizard/customManifests/CustomManifestsAlert.d.ts.map +1 -0
- package/build/@types/common/components/clusterWizard/customManifests/index.d.ts +2 -0
- package/build/@types/common/components/clusterWizard/customManifests/index.d.ts.map +1 -0
- package/build/@types/common/components/clusterWizard/index.d.ts +2 -0
- package/build/@types/common/components/clusterWizard/index.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts +2 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts +2 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.d.ts +3 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.d.ts.map +1 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/index.d.ts +1 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/index.d.ts.map +1 -1
- package/build/@types/common/components/clusters/PullSecret.d.ts +0 -1
- package/build/@types/common/components/clusters/PullSecret.d.ts.map +1 -1
- package/build/@types/common/components/hosts/HostsTable.d.ts.map +1 -1
- package/build/@types/common/components/ui/WizardFooter.d.ts +1 -0
- package/build/@types/common/components/ui/WizardFooter.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/utils.d.ts +1 -0
- package/build/@types/common/components/ui/formik/utils.d.ts.map +1 -1
- package/build/@types/common/config/constants.d.ts +2 -2
- package/build/@types/common/config/constants.d.ts.map +1 -1
- package/build/@types/common/types/networkType.d.ts +2 -1
- package/build/@types/common/types/networkType.d.ts.map +1 -1
- package/build/@types/common/validationSchemas/networkingValidation.d.ts +10 -0
- package/build/@types/common/validationSchemas/networkingValidation.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/review/ReviewSummary.d.ts.map +1 -1
- package/build/@types/ocm/components/{clusterDetail/ClusterProperties.d.ts → clusterConfiguration/review/utils.d.ts} +1 -8
- package/build/@types/ocm/components/clusterConfiguration/review/utils.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/review/utils.test.d.ts +2 -0
- package/build/@types/ocm/components/clusterConfiguration/review/utils.test.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.d.ts +1 -0
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.d.ts +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterDetailsButtonGroup.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/index.d.ts +0 -1
- package/build/@types/ocm/components/clusterDetail/index.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterDetailsForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/HostDiscovery.d.ts.map +1 -1
- package/build/@types/ocm/components/clusters/AssistedInstallerHeader.d.ts +5 -1
- package/build/@types/ocm/components/clusters/AssistedInstallerHeader.d.ts.map +1 -1
- package/build/@types/ocm/components/clusters/ClustersTable.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/HostsTableEmptyState.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useClusterCustomManifests.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useLateBinding.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useUISettings.d.ts.map +1 -1
- package/build/@types/ocm/services/ClusterDetailsService.d.ts +2 -1
- package/build/@types/ocm/services/ClusterDetailsService.d.ts.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js +9 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js +46 -7
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/customManifests/ClusterDeploymentCustomManifestsStep.js +22 -21
- package/build/cjs/cim/components/ClusterDeployment/customManifests/ClusterDeploymentCustomManifestsStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js +25 -9
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.js +35 -0
- package/build/cjs/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.js.map +1 -0
- package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js +4 -4
- package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js +13 -18
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/wizardTransition.js +5 -1
- package/build/cjs/cim/components/ClusterDeployment/wizardTransition.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/modals/NodePoolForm.js +1 -1
- package/build/cjs/cim/components/Hypershift/modals/NodePoolForm.js.map +1 -1
- package/build/cjs/cim/components/featureSupportLevels/ACMFeatureSupportLevelProvider.js +1 -4
- package/build/cjs/cim/components/featureSupportLevels/ACMFeatureSupportLevelProvider.js.map +1 -1
- package/build/cjs/cim/components/helpers/clusterDeployment.js +14 -10
- package/build/cjs/cim/components/helpers/clusterDeployment.js.map +1 -1
- package/build/cjs/cim/components/helpers/versions.js +39 -28
- package/build/cjs/cim/components/helpers/versions.js.map +1 -1
- package/build/cjs/cim/components/helpers/versions.test.js +423 -0
- package/build/cjs/cim/components/helpers/versions.test.js.map +1 -0
- package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js +39 -16
- package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js.map +1 -1
- package/build/cjs/cim/components/modals/CimConfiguration/persist.js +96 -136
- package/build/cjs/cim/components/modals/CimConfiguration/persist.js.map +1 -1
- package/build/cjs/cim/hooks/index.js +1 -0
- package/build/cjs/cim/hooks/index.js.map +1 -1
- package/build/cjs/cim/hooks/useAgents.js +13 -0
- package/build/cjs/cim/hooks/useAgents.js.map +1 -0
- package/build/cjs/common/components/clusterDetail/ClusterCredentials.js +10 -9
- package/build/cjs/common/components/clusterDetail/ClusterCredentials.js.map +1 -1
- package/build/cjs/common/components/clusterDetail/ConsoleModal.js +1 -10
- package/build/cjs/common/components/clusterDetail/ConsoleModal.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/customManifests/CustomManifestsAlert.js +32 -0
- package/build/cjs/common/components/clusterWizard/customManifests/CustomManifestsAlert.js.map +1 -0
- package/build/cjs/common/components/clusterWizard/customManifests/index.js +5 -0
- package/build/cjs/common/components/clusterWizard/customManifests/index.js.map +1 -0
- package/build/cjs/common/components/clusterWizard/index.js +2 -0
- package/build/cjs/common/components/clusterWizard/index.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js +8 -2
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.js +2 -2
- package/build/cjs/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js +29 -19
- package/build/cjs/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.js +20 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.js.map +1 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/index.js +1 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/index.js.map +1 -1
- package/build/cjs/common/components/clusters/PullSecret.js +17 -19
- package/build/cjs/common/components/clusters/PullSecret.js.map +1 -1
- package/build/cjs/common/components/hosts/HostsTable.js +2 -1
- package/build/cjs/common/components/hosts/HostsTable.js.map +1 -1
- package/build/cjs/common/components/ui/WizardFooter.js +6 -1
- package/build/cjs/common/components/ui/WizardFooter.js.map +1 -1
- package/build/cjs/common/components/ui/formik/utils.js +5 -1
- package/build/cjs/common/components/ui/formik/utils.js.map +1 -1
- package/build/cjs/common/config/constants.js +13 -2
- package/build/cjs/common/config/constants.js.map +1 -1
- package/build/cjs/common/types/networkType.js +9 -8
- package/build/cjs/common/types/networkType.js.map +1 -1
- package/build/cjs/common/validationSchemas/networkingValidation.js +19 -1
- package/build/cjs/common/validationSchemas/networkingValidation.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js +4 -1
- package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js +1 -20
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +7 -6
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.js +6 -9
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js +4 -4
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewClusterDetailTable.js +2 -2
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewClusterDetailTable.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js +6 -5
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewSummary.js +5 -2
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewSummary.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/utils.js +57 -0
- package/build/cjs/ocm/components/clusterConfiguration/review/utils.js.map +1 -0
- package/build/cjs/ocm/components/{clusterDetail/ClusterProperties.test.js → clusterConfiguration/review/utils.test.js} +13 -13
- package/build/cjs/ocm/components/clusterConfiguration/review/utils.test.js.map +1 -0
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.js +2 -2
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.js +3 -7
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailsButtonGroup.js +8 -2
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailsButtonGroup.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/index.js +1 -3
- package/build/cjs/ocm/components/clusterDetail/index.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js +10 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/HostDiscovery.js +4 -1
- package/build/cjs/ocm/components/clusterWizard/HostDiscovery.js.map +1 -1
- package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js +2 -2
- package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js.map +1 -1
- package/build/cjs/ocm/components/clusters/ClusterPage.js +1 -1
- package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
- package/build/cjs/ocm/components/clusters/ClustersTable.js +3 -2
- package/build/cjs/ocm/components/clusters/ClustersTable.js.map +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +1 -1
- package/build/cjs/ocm/components/hosts/HostsTableEmptyState.js +2 -1
- package/build/cjs/ocm/components/hosts/HostsTableEmptyState.js.map +1 -1
- package/build/cjs/ocm/hooks/useClusterCustomManifests.js +3 -15
- package/build/cjs/ocm/hooks/useClusterCustomManifests.js.map +1 -1
- package/build/cjs/ocm/hooks/useLateBinding.js +41 -26
- package/build/cjs/ocm/hooks/useLateBinding.js.map +1 -1
- package/build/cjs/ocm/hooks/usePullSecret.js +2 -2
- package/build/cjs/ocm/hooks/useUISettings.js +1 -1
- package/build/cjs/ocm/hooks/useUISettings.js.map +1 -1
- package/build/cjs/ocm/services/ClusterDetailsService.js +4 -2
- package/build/cjs/ocm/services/ClusterDetailsService.js.map +1 -1
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizard.tsx +10 -2
- package/lib/cim/components/ClusterDeployment/NetworkConfiguration.tsx +55 -6
- package/lib/cim/components/ClusterDeployment/customManifests/ClusterDeploymentCustomManifestsStep.tsx +18 -2
- package/lib/cim/components/ClusterDeployment/networkConfigurationValidation.ts +22 -8
- package/lib/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.tsx +81 -0
- package/lib/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.tsx +18 -14
- package/lib/cim/components/ClusterDeployment/types.ts +0 -1
- package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +14 -22
- package/lib/cim/components/ClusterDeployment/wizardTransition.ts +5 -1
- package/lib/cim/components/Hypershift/modals/NodePoolForm.tsx +2 -2
- package/lib/cim/components/featureSupportLevels/ACMFeatureSupportLevelProvider.tsx +2 -5
- package/lib/cim/components/helpers/clusterDeployment.ts +9 -4
- package/lib/cim/components/helpers/versions.test.ts +465 -0
- package/lib/cim/components/helpers/versions.ts +37 -31
- package/lib/cim/components/modals/CimConfiguration/CimConfigurationModal.tsx +45 -18
- package/lib/cim/components/modals/CimConfiguration/persist.ts +97 -199
- package/lib/cim/hooks/index.tsx +1 -0
- package/lib/cim/hooks/useAgents.tsx +15 -0
- package/lib/cim/types/k8s/agent-cluster-install.ts +1 -1
- package/lib/common/components/clusterDetail/ClusterCredentials.tsx +49 -53
- package/lib/common/components/clusterDetail/ConsoleModal.tsx +0 -35
- package/lib/common/components/clusterWizard/customManifests/CustomManifestsAlert.tsx +39 -0
- package/lib/common/components/clusterWizard/customManifests/index.tsx +1 -0
- package/lib/common/components/clusterWizard/index.ts +2 -0
- package/lib/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.tsx +8 -1
- package/lib/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.tsx +2 -2
- package/lib/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.tsx +36 -26
- package/lib/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.tsx +28 -0
- package/lib/common/components/clusterWizard/networkingSteps/index.ts +1 -0
- package/lib/common/components/clusters/PullSecret.tsx +28 -38
- package/lib/common/components/hosts/HostsTable.tsx +2 -0
- package/lib/common/components/ui/WizardFooter.tsx +10 -0
- package/lib/common/components/ui/formik/utils.ts +6 -0
- package/lib/common/config/constants.ts +14 -1
- package/lib/common/types/networkType.ts +9 -8
- package/lib/common/validationSchemas/networkingValidation.tsx +39 -1
- package/lib/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +6 -3
- package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +7 -6
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.tsx +10 -45
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +11 -9
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.tsx +7 -24
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts +6 -5
- package/lib/ocm/components/clusterConfiguration/review/ReviewClusterDetailTable.tsx +1 -1
- package/lib/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.tsx +10 -4
- package/lib/ocm/components/clusterConfiguration/review/ReviewSummary.tsx +9 -2
- package/lib/ocm/components/{clusterDetail/ClusterProperties.test.ts → clusterConfiguration/review/utils.test.ts} +1 -1
- package/lib/ocm/components/clusterConfiguration/review/utils.tsx +61 -0
- package/lib/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.ts +2 -0
- package/lib/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.ts +1 -0
- package/lib/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.ts +2 -0
- package/lib/ocm/components/clusterDetail/ClusterDetailsButtonGroup.tsx +27 -2
- package/lib/ocm/components/clusterDetail/index.ts +0 -1
- package/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx +10 -1
- package/lib/ocm/components/clusterWizard/HostDiscovery.tsx +4 -0
- package/lib/ocm/components/clusters/AssistedInstallerHeader.tsx +6 -2
- package/lib/ocm/components/clusters/ClusterPage.tsx +1 -1
- package/lib/ocm/components/clusters/ClustersTable.tsx +59 -49
- package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +1 -1
- package/lib/ocm/components/hosts/HostsTableEmptyState.tsx +2 -0
- package/lib/ocm/hooks/useClusterCustomManifests.ts +3 -0
- package/lib/ocm/hooks/useLateBinding.ts +45 -24
- package/lib/ocm/hooks/usePullSecret.ts +2 -2
- package/lib/ocm/hooks/useUISettings.ts +3 -1
- package/lib/ocm/services/ClusterDetailsService.ts +6 -0
- package/package.json +9 -9
- package/build/@types/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.d.ts +0 -7
- package/build/@types/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts +0 -8
- package/build/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.test.d.ts +0 -2
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.test.d.ts.map +0 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js +0 -33
- package/build/cjs/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js.map +0 -1
- package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js +0 -40
- package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js.map +0 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js +0 -77
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js.map +0 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.test.js.map +0 -1
- package/lib/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.tsx +0 -74
- package/lib/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.tsx +0 -69
- package/lib/ocm/components/clusterDetail/ClusterProperties.tsx +0 -169
|
@@ -13,7 +13,8 @@ import {
|
|
|
13
13
|
ipBlockValidationSchema,
|
|
14
14
|
} from './addressValidation';
|
|
15
15
|
import { isMajorMinorVersionEqualOrGreater } from '../utils';
|
|
16
|
-
import { allSubnetsIPv4 } from '../components/ui/formik/utils';
|
|
16
|
+
import { allSubnetsIPv4, allSubnetsIPv6 } from '../components/ui/formik/utils';
|
|
17
|
+
import { SINGLE_STACK } from '../config';
|
|
17
18
|
|
|
18
19
|
export const machineNetworksValidationSchema = Yup.array().of(
|
|
19
20
|
Yup.object({ cidr: hostSubnetValidationSchema, clusterId: Yup.string() }),
|
|
@@ -111,3 +112,40 @@ export const IPv4ValidationSchema = Yup.array().test(
|
|
|
111
112
|
`All network subnets must be IPv4.`,
|
|
112
113
|
(values?: (MachineNetwork | ClusterNetwork | ServiceNetwork)[]) => allSubnetsIPv4(values),
|
|
113
114
|
);
|
|
115
|
+
|
|
116
|
+
export const IPv6ValidationSchema = Yup.array().test(
|
|
117
|
+
'single-stack-ipv6',
|
|
118
|
+
'All network subnets must be IPv6.',
|
|
119
|
+
(values?: (MachineNetwork | ClusterNetwork | ServiceNetwork)[]) => allSubnetsIPv6(values),
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
export const clusterNetworksSchema = (
|
|
123
|
+
t: TFunction,
|
|
124
|
+
stackType: string,
|
|
125
|
+
primaryCidr: string | undefined,
|
|
126
|
+
openshiftVersion?: string,
|
|
127
|
+
) => {
|
|
128
|
+
const singleStackFamilySchema =
|
|
129
|
+
primaryCidr && isCIDR.v6(primaryCidr) ? IPv6ValidationSchema : IPv4ValidationSchema;
|
|
130
|
+
|
|
131
|
+
const stackFamilySchema =
|
|
132
|
+
stackType === SINGLE_STACK
|
|
133
|
+
? singleStackFamilySchema
|
|
134
|
+
: dualStackValidationSchema(t('ai:cluster network'), t, openshiftVersion);
|
|
135
|
+
return clusterNetworksValidationSchema(t).concat(stackFamilySchema);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export const serviceNetworksSchema = (
|
|
139
|
+
t: TFunction,
|
|
140
|
+
stackType: string,
|
|
141
|
+
primaryCidr: string | undefined,
|
|
142
|
+
openshiftVersion?: string,
|
|
143
|
+
) => {
|
|
144
|
+
const singleStackFamilySchema =
|
|
145
|
+
primaryCidr && isCIDR.v6(primaryCidr) ? IPv6ValidationSchema : IPv4ValidationSchema;
|
|
146
|
+
const stackFamilySchema =
|
|
147
|
+
stackType === SINGLE_STACK
|
|
148
|
+
? singleStackFamilySchema
|
|
149
|
+
: dualStackValidationSchema(t('ai:service network'), t, openshiftVersion);
|
|
150
|
+
return serviceNetworkValidationSchema(t).concat(stackFamilySchema);
|
|
151
|
+
};
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import { useField } from 'formik';
|
|
12
12
|
import toNumber from 'lodash-es/toNumber';
|
|
13
13
|
import { getFieldId, PopoverIcon, PreviewBadgePosition, TechnologyPreview } from '../../../common';
|
|
14
|
-
|
|
14
|
+
import { useFeature } from '../../hooks/use-feature';
|
|
15
15
|
import {
|
|
16
16
|
NewFeatureSupportLevelMap,
|
|
17
17
|
useNewFeatureSupportLevel,
|
|
@@ -45,6 +45,8 @@ interface ControlPlaneNodesOption {
|
|
|
45
45
|
value: number;
|
|
46
46
|
label: string;
|
|
47
47
|
badge?: React.ReactNode;
|
|
48
|
+
/** When true, option is omitted from the list (e.g. product mode does not offer this topology). */
|
|
49
|
+
hidden?: boolean;
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
interface ControlPlaneNodesDropdownProps {
|
|
@@ -71,7 +73,7 @@ const ControlPlaneNodesDropdown: React.FC<ControlPlaneNodesDropdownProps> = ({
|
|
|
71
73
|
const [field, , { setValue }] = useField<number>(INPUT_NAME);
|
|
72
74
|
const [isOpen, setOpen] = React.useState<boolean>(false);
|
|
73
75
|
const newFeatureSupportLevelContext = useNewFeatureSupportLevel();
|
|
74
|
-
|
|
76
|
+
const isSingleClusterFeatureEnabled = useFeature('ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE');
|
|
75
77
|
const snoExpansion = newFeatureSupportLevelContext.isFeatureSupported(
|
|
76
78
|
'SINGLE_NODE_EXPANSION',
|
|
77
79
|
featureSupportLevelData ?? undefined,
|
|
@@ -100,11 +102,12 @@ const ControlPlaneNodesDropdown: React.FC<ControlPlaneNodesDropdownProps> = ({
|
|
|
100
102
|
tnaSupport === 'tech-preview' ? (
|
|
101
103
|
<TechnologyPreview position={PreviewBadgePosition.default} />
|
|
102
104
|
) : undefined,
|
|
105
|
+
hidden: isSingleClusterFeatureEnabled,
|
|
103
106
|
},
|
|
104
107
|
{ value: 3, label: '3 (highly available cluster)' },
|
|
105
108
|
{ value: 4, label: '4 (highly available cluster+)' },
|
|
106
109
|
{ value: 5, label: '5 (highly available cluster++)' },
|
|
107
|
-
];
|
|
110
|
+
].filter(({ hidden }) => !hidden);
|
|
108
111
|
|
|
109
112
|
React.useEffect(() => {
|
|
110
113
|
if (!field.value) {
|
|
@@ -179,12 +179,13 @@ export const OcmClusterDetailsFormFields = ({
|
|
|
179
179
|
/>
|
|
180
180
|
)}
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
182
|
+
{!cluster?.pullSecretSet && (
|
|
183
|
+
<PullSecret
|
|
184
|
+
isOcm={isOcm}
|
|
185
|
+
defaultPullSecret={defaultPullSecret}
|
|
186
|
+
isSingleClusterFeatureEnabled={isSingleClusterFeatureEnabled}
|
|
187
|
+
/>
|
|
188
|
+
)}
|
|
188
189
|
|
|
189
190
|
{!isSingleClusterFeatureEnabled &&
|
|
190
191
|
(clusterExists ? (
|
package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.tsx
CHANGED
|
@@ -3,19 +3,21 @@ import {
|
|
|
3
3
|
Content,
|
|
4
4
|
ContentVariants,
|
|
5
5
|
Alert,
|
|
6
|
-
AlertVariant,
|
|
7
6
|
Grid,
|
|
8
7
|
FormGroup,
|
|
9
8
|
Switch,
|
|
10
9
|
Tooltip,
|
|
11
|
-
Stack,
|
|
12
|
-
StackItem,
|
|
13
10
|
} from '@patternfly/react-core';
|
|
14
11
|
|
|
15
12
|
import { CustomManifests } from './components/CustomManifests';
|
|
16
13
|
import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
|
|
17
14
|
import { CustomManifestFormState } from './components/propTypes';
|
|
18
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
ClustersAPI,
|
|
17
|
+
ClusterWizardStepHeader,
|
|
18
|
+
CustomManifestsAlert,
|
|
19
|
+
isThirdPartyCNI,
|
|
20
|
+
} from '../../../../common';
|
|
19
21
|
import { getFieldId } from '../../../../common/components/ui/formik';
|
|
20
22
|
import { isOciPlatformType } from '../../utils';
|
|
21
23
|
import DeleteCustomManifestModal from './DeleteCustomManifestModal';
|
|
@@ -90,46 +92,6 @@ export const CustomManifestsPage = ({
|
|
|
90
92
|
? 'Custom manifests are required when using a third-party CNI or Oracle Cloud Infrastructure.'
|
|
91
93
|
: '';
|
|
92
94
|
|
|
93
|
-
const showExternalPlatformReminder = isOciPlatformType(cluster);
|
|
94
|
-
const showThirdPartyCnIReminder = isThirdPartyCNI(cluster.networkType);
|
|
95
|
-
const showCombinedReminder = showExternalPlatformReminder && showThirdPartyCnIReminder;
|
|
96
|
-
let reminderAlerts: React.ReactNode = null;
|
|
97
|
-
if (showCombinedReminder) {
|
|
98
|
-
reminderAlerts = (
|
|
99
|
-
<Stack>
|
|
100
|
-
<StackItem>
|
|
101
|
-
<Alert
|
|
102
|
-
variant={AlertVariant.info}
|
|
103
|
-
isInline
|
|
104
|
-
title="You're using an external platform and a third-party CNI"
|
|
105
|
-
>
|
|
106
|
-
Make sure to upload the required custom and CNI manifests in this step.
|
|
107
|
-
</Alert>
|
|
108
|
-
</StackItem>
|
|
109
|
-
</Stack>
|
|
110
|
-
);
|
|
111
|
-
} else if (showExternalPlatformReminder) {
|
|
112
|
-
reminderAlerts = (
|
|
113
|
-
<Stack>
|
|
114
|
-
<StackItem>
|
|
115
|
-
<Alert variant={AlertVariant.info} isInline title="You're using an external platform">
|
|
116
|
-
Make sure to upload the required custom manifests in this step.
|
|
117
|
-
</Alert>
|
|
118
|
-
</StackItem>
|
|
119
|
-
</Stack>
|
|
120
|
-
);
|
|
121
|
-
} else if (showThirdPartyCnIReminder) {
|
|
122
|
-
reminderAlerts = (
|
|
123
|
-
<Stack>
|
|
124
|
-
<StackItem>
|
|
125
|
-
<Alert variant={AlertVariant.info} isInline title="You're using a third-party CNI">
|
|
126
|
-
Make sure to upload the required CNI manifests in this step.
|
|
127
|
-
</Alert>
|
|
128
|
-
</StackItem>
|
|
129
|
-
</Stack>
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
95
|
return (
|
|
134
96
|
<Grid hasGutter>
|
|
135
97
|
<Content>
|
|
@@ -157,7 +119,10 @@ export const CustomManifestsPage = ({
|
|
|
157
119
|
{!useCustomManifests && <div style={{ minHeight: '250px' }} aria-hidden="true" />}
|
|
158
120
|
{useCustomManifests && (
|
|
159
121
|
<>
|
|
160
|
-
|
|
122
|
+
<CustomManifestsAlert
|
|
123
|
+
usesExternalPlatform={isOciPlatformType(cluster)}
|
|
124
|
+
usesThirdPartyCNI={isThirdPartyCNI(cluster.networkType)}
|
|
125
|
+
/>
|
|
161
126
|
<Alert
|
|
162
127
|
isInline
|
|
163
128
|
variant="warning"
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
getFormikErrorFields,
|
|
10
10
|
getHostSubnets,
|
|
11
11
|
HostSubnets,
|
|
12
|
-
|
|
12
|
+
SINGLE_STACK,
|
|
13
13
|
isSNO,
|
|
14
14
|
LoadingState,
|
|
15
15
|
NetworkConfigurationValues,
|
|
@@ -113,18 +113,20 @@ const NetworkConfigurationForm: React.FC<{
|
|
|
113
113
|
clusterWizardContext.moveNext();
|
|
114
114
|
}, [addAlert, cluster.id, clusterWizardContext, dispatch, isSingleClusterFeatureEnabled]);
|
|
115
115
|
|
|
116
|
+
const isNextDisabled =
|
|
117
|
+
isSubmitting ||
|
|
118
|
+
isAutoSaveRunning ||
|
|
119
|
+
!!alerts.length ||
|
|
120
|
+
!isValid ||
|
|
121
|
+
!canNextNetwork({ cluster });
|
|
122
|
+
|
|
116
123
|
const footer = (
|
|
117
124
|
<ClusterWizardFooter
|
|
118
125
|
cluster={cluster}
|
|
119
126
|
errorFields={errorFields}
|
|
120
127
|
isSubmitting={isSubmitting}
|
|
121
|
-
isNextDisabled={
|
|
122
|
-
|
|
123
|
-
isAutoSaveRunning ||
|
|
124
|
-
!!alerts.length ||
|
|
125
|
-
!isValid ||
|
|
126
|
-
!canNextNetwork({ cluster })
|
|
127
|
-
}
|
|
128
|
+
isNextDisabled={isNextDisabled}
|
|
129
|
+
isWaitingForHosts={!canNextNetwork({ cluster })}
|
|
128
130
|
onNext={() => void onNext()}
|
|
129
131
|
onBack={() => clusterWizardContext.moveBack()}
|
|
130
132
|
isBackDisabled={isSubmitting || isAutoSaveRunning}
|
|
@@ -262,7 +264,7 @@ const NetworkConfigurationPage = ({ cluster }: { cluster: Cluster }) => {
|
|
|
262
264
|
if (values.vipDhcpAllocation) {
|
|
263
265
|
delete params.apiVips;
|
|
264
266
|
delete params.ingressVips;
|
|
265
|
-
} else if (values.stackType ===
|
|
267
|
+
} else if (values.stackType === SINGLE_STACK) {
|
|
266
268
|
// The API will rebuild the default machineNetwork
|
|
267
269
|
params.machineNetworks = [];
|
|
268
270
|
}
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.tsx
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useField, useFormikContext } from 'formik';
|
|
3
3
|
import {
|
|
4
|
-
Alert,
|
|
5
|
-
AlertVariant,
|
|
6
4
|
Dropdown,
|
|
7
5
|
DropdownItem,
|
|
8
6
|
FormGroup,
|
|
@@ -12,7 +10,7 @@ import {
|
|
|
12
10
|
StackItem,
|
|
13
11
|
Tooltip,
|
|
14
12
|
} from '@patternfly/react-core';
|
|
15
|
-
import { getFieldId
|
|
13
|
+
import { getFieldId } from '../../../../common/components/ui';
|
|
16
14
|
import {
|
|
17
15
|
NewFeatureSupportLevelMap,
|
|
18
16
|
useNewFeatureSupportLevel,
|
|
@@ -25,7 +23,8 @@ import {
|
|
|
25
23
|
NETWORK_TYPE_FEATURE_IDS,
|
|
26
24
|
isThirdPartyCNI,
|
|
27
25
|
} from '../../../../common/types/networkType';
|
|
28
|
-
import {
|
|
26
|
+
import { useTranslation } from '../../../../common/hooks';
|
|
27
|
+
import { ThirdPartyCNIBanner } from '../../../../common';
|
|
29
28
|
|
|
30
29
|
export interface NetworkTypeDropDownProps {
|
|
31
30
|
isDisabled?: boolean;
|
|
@@ -36,6 +35,7 @@ export const NetworkTypeDropDown = ({
|
|
|
36
35
|
isDisabled = false,
|
|
37
36
|
featureSupportLevelData,
|
|
38
37
|
}: NetworkTypeDropDownProps) => {
|
|
38
|
+
const { t } = useTranslation();
|
|
39
39
|
const [field, , { setValue }] = useField<string>('networkType');
|
|
40
40
|
const [isOpen, setOpen] = React.useState(false);
|
|
41
41
|
const { values } = useFormikContext<NetworkConfigurationValues>();
|
|
@@ -54,9 +54,9 @@ export const NetworkTypeDropDown = ({
|
|
|
54
54
|
}
|
|
55
55
|
}, [field.value, setValue, featureSupportLevelData, getFeatureDisabledReason]);
|
|
56
56
|
|
|
57
|
-
const currentDisplayValue = NETWORK_TYPE_LABELS[field.value];
|
|
57
|
+
const currentDisplayValue = NETWORK_TYPE_LABELS(t)[field.value];
|
|
58
58
|
|
|
59
|
-
const dropdownItems = Object.entries(NETWORK_TYPE_LABELS).map(([value, label]) => {
|
|
59
|
+
const dropdownItems = Object.entries(NETWORK_TYPE_LABELS(t)).map(([value, label]) => {
|
|
60
60
|
const disabledReason = getFeatureDisabledReason(
|
|
61
61
|
NETWORK_TYPE_FEATURE_IDS[value],
|
|
62
62
|
featureSupportLevelData ?? undefined,
|
|
@@ -119,24 +119,7 @@ export const NetworkTypeDropDown = ({
|
|
|
119
119
|
</Dropdown>
|
|
120
120
|
</FormGroup>
|
|
121
121
|
</StackItem>
|
|
122
|
-
{showThirdPartyBanner &&
|
|
123
|
-
<StackItem>
|
|
124
|
-
<Alert variant={AlertVariant.warning} isInline title="Third-party CNI">
|
|
125
|
-
<Stack hasGutter>
|
|
126
|
-
<StackItem>
|
|
127
|
-
Third-party CNIs require uploading CNI manifests. Please verify you have the
|
|
128
|
-
required manifests and that the chosen CNI is compatible with your platform and
|
|
129
|
-
OpenShift version.
|
|
130
|
-
</StackItem>
|
|
131
|
-
<StackItem>
|
|
132
|
-
<ExternalLink href={RED_HAT_CNI_SUPPORT_MATRIX_LINK}>
|
|
133
|
-
Red Hat CNI Support Matrix
|
|
134
|
-
</ExternalLink>
|
|
135
|
-
</StackItem>
|
|
136
|
-
</Stack>
|
|
137
|
-
</Alert>
|
|
138
|
-
</StackItem>
|
|
139
|
-
)}
|
|
122
|
+
{showThirdPartyBanner && <ThirdPartyCNIBanner />}
|
|
140
123
|
</Stack>
|
|
141
124
|
);
|
|
142
125
|
};
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
serviceNetworkValidationSchema,
|
|
12
12
|
IPv4ValidationSchema,
|
|
13
13
|
sshPublicKeyValidationSchema,
|
|
14
|
-
|
|
14
|
+
SINGLE_STACK,
|
|
15
15
|
DUAL_STACK,
|
|
16
16
|
vipArrayValidationSchema,
|
|
17
17
|
NETWORK_TYPE_OVN,
|
|
@@ -50,7 +50,7 @@ export const getNetworkInitialValues = (
|
|
|
50
50
|
: 'clusterManaged',
|
|
51
51
|
networkType: cluster.networkType || NETWORK_TYPE_OVN,
|
|
52
52
|
machineNetworks: cluster.machineNetworks || [],
|
|
53
|
-
stackType: isDualStackType ? DUAL_STACK :
|
|
53
|
+
stackType: isDualStackType ? DUAL_STACK : SINGLE_STACK,
|
|
54
54
|
clusterNetworks:
|
|
55
55
|
cluster.clusterNetworks ||
|
|
56
56
|
(isDualStackType
|
|
@@ -85,7 +85,8 @@ export const getNetworkConfigurationValidationSchema = (
|
|
|
85
85
|
values.managedNetworkingType === 'userManaged'
|
|
86
86
|
? Yup.array()
|
|
87
87
|
: machineNetworksValidationSchema.when('stackType', {
|
|
88
|
-
is: (stackType: NetworkConfigurationValues['stackType']) =>
|
|
88
|
+
is: (stackType: NetworkConfigurationValues['stackType']) =>
|
|
89
|
+
stackType === SINGLE_STACK,
|
|
89
90
|
then: () => machineNetworksValidationSchema.concat(IPv4ValidationSchema),
|
|
90
91
|
otherwise: () =>
|
|
91
92
|
values.machineNetworks && values.machineNetworks?.length >= 2
|
|
@@ -95,13 +96,13 @@ export const getNetworkConfigurationValidationSchema = (
|
|
|
95
96
|
: Yup.array(),
|
|
96
97
|
}),
|
|
97
98
|
clusterNetworks: clusterNetworksValidationSchema(t).when('stackType', {
|
|
98
|
-
is: (stackType: NetworkConfigurationValues['stackType']) => stackType ===
|
|
99
|
+
is: (stackType: NetworkConfigurationValues['stackType']) => stackType === SINGLE_STACK,
|
|
99
100
|
then: (schema) => schema.concat(IPv4ValidationSchema),
|
|
100
101
|
otherwise: (schema) =>
|
|
101
102
|
schema.concat(dualStackValidationSchema('cluster network', t, openshiftVersion)),
|
|
102
103
|
}),
|
|
103
104
|
serviceNetworks: serviceNetworkValidationSchema(t).when('stackType', {
|
|
104
|
-
is: (stackType: NetworkConfigurationValues['stackType']) => stackType ===
|
|
105
|
+
is: (stackType: NetworkConfigurationValues['stackType']) => stackType === SINGLE_STACK,
|
|
105
106
|
then: (schema) => schema.concat(IPv4ValidationSchema),
|
|
106
107
|
otherwise: (schema) =>
|
|
107
108
|
schema.concat(dualStackValidationSchema('service network', t, openshiftVersion)),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Table, TableVariant, Tbody, Td, Tr } from '@patternfly/react-table';
|
|
3
3
|
import { genericTableRowKey, getDefaultCpuArchitecture } from '../../../../common';
|
|
4
|
-
import { getDiskEncryptionEnabledOnStatus } from '
|
|
4
|
+
import { getDiskEncryptionEnabledOnStatus } from './utils';
|
|
5
5
|
import OpenShiftVersionDetail from '../../clusterDetail/OpenShiftVersionDetail';
|
|
6
6
|
import { useNewFeatureSupportLevel } from '../../../../common/components/newFeatureSupportLevels';
|
|
7
7
|
import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { Title } from '@patternfly/react-core';
|
|
2
2
|
import { Table, TableVariant, Tbody, Td, Tr } from '@patternfly/react-table';
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import {
|
|
5
|
+
genericTableRowKey,
|
|
6
|
+
isDualStack,
|
|
7
|
+
NETWORK_TYPE_LABELS,
|
|
8
|
+
useTranslation,
|
|
9
|
+
} from '../../../../common';
|
|
10
|
+
import { getManagementType, getStackTypeLabel } from './utils';
|
|
6
11
|
import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
|
|
7
12
|
|
|
8
13
|
type ReviewTableRowsType = {
|
|
@@ -11,6 +16,7 @@ type ReviewTableRowsType = {
|
|
|
11
16
|
}[];
|
|
12
17
|
|
|
13
18
|
export const ReviewNetworkingTable = ({ cluster }: { cluster: Cluster }) => {
|
|
19
|
+
const { t } = useTranslation();
|
|
14
20
|
const rows = React.useMemo(() => {
|
|
15
21
|
const networkRows = [
|
|
16
22
|
{
|
|
@@ -197,13 +203,13 @@ export const ReviewNetworkingTable = ({ cluster }: { cluster: Cluster }) => {
|
|
|
197
203
|
cells: [
|
|
198
204
|
{ title: 'Networking type' },
|
|
199
205
|
{
|
|
200
|
-
title: cluster.networkType ? NETWORK_TYPE_LABELS[cluster.networkType] : '-',
|
|
206
|
+
title: cluster.networkType ? NETWORK_TYPE_LABELS(t)[cluster.networkType] : '-',
|
|
201
207
|
props: { 'data-testid': 'networking-type', colSpan: 2 },
|
|
202
208
|
},
|
|
203
209
|
],
|
|
204
210
|
},
|
|
205
211
|
] as ReviewTableRowsType;
|
|
206
|
-
}, [cluster]);
|
|
212
|
+
}, [cluster, t]);
|
|
207
213
|
|
|
208
214
|
return (
|
|
209
215
|
<>
|
|
@@ -19,9 +19,16 @@ import { ReviewCustomManifestsTable } from './ReviewCustomManifestsTable';
|
|
|
19
19
|
import PlatformIntegrationNote from '../platformIntegration/PlatformIntegrationNote';
|
|
20
20
|
import useClusterCustomManifests from '../../../hooks/useClusterCustomManifests';
|
|
21
21
|
import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
|
|
22
|
+
import { ListManifestsExtended } from '../manifestsConfiguration/data/dataTypes';
|
|
23
|
+
|
|
24
|
+
const userProvidedManifests = (manifests: ListManifestsExtended | undefined) =>
|
|
25
|
+
(manifests ?? []).filter((m) => m.manifestSource !== 'system');
|
|
22
26
|
|
|
23
27
|
export const ReviewSummaryContent = ({ cluster }: { cluster: Cluster }) => {
|
|
24
28
|
const { customManifests } = useClusterCustomManifests(cluster.id, false);
|
|
29
|
+
const manifestsForReview = userProvidedManifests(customManifests);
|
|
30
|
+
const showCustomManifests = manifestsForReview.length > 0;
|
|
31
|
+
|
|
25
32
|
return (
|
|
26
33
|
<>
|
|
27
34
|
<TableSummaryExpandable title={'Cluster details'} id={'cluster-details-expandable'}>
|
|
@@ -57,9 +64,9 @@ export const ReviewSummaryContent = ({ cluster }: { cluster: Cluster }) => {
|
|
|
57
64
|
<ReviewNetworkingTable cluster={cluster} />
|
|
58
65
|
</TableSummaryExpandable>
|
|
59
66
|
|
|
60
|
-
{
|
|
67
|
+
{showCustomManifests && (
|
|
61
68
|
<TableSummaryExpandable title={'Custom manifests'} id={'custom-manifests-expandable'}>
|
|
62
|
-
<ReviewCustomManifestsTable manifests={
|
|
69
|
+
<ReviewCustomManifestsTable manifests={manifestsForReview} />
|
|
63
70
|
</TableSummaryExpandable>
|
|
64
71
|
)}
|
|
65
72
|
</>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { test, describe, expect } from 'vitest';
|
|
2
|
-
import { getStackTypeLabel } from './
|
|
2
|
+
import { getStackTypeLabel } from './utils';
|
|
3
3
|
import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
|
|
4
4
|
|
|
5
5
|
const createCluster = (overrides: Partial<Cluster> = {}): Cluster =>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { isDualStack } from '../../../../common';
|
|
3
|
+
import { Cluster, DiskEncryption } from '@openshift-assisted/types/assisted-installer-service';
|
|
4
|
+
|
|
5
|
+
export const getManagementType = ({ userManagedNetworking }: Cluster): string =>
|
|
6
|
+
userManagedNetworking ? 'User-Managed networking' : 'Cluster-managed networking';
|
|
7
|
+
|
|
8
|
+
export const getStackTypeLabel = (cluster: Cluster): string =>
|
|
9
|
+
isDualStack(cluster) ? 'Dual-stack' : 'IPv4';
|
|
10
|
+
|
|
11
|
+
export const getDiskEncryptionEnabledOnStatus = (diskEncryption: DiskEncryption['enableOn']) => {
|
|
12
|
+
let diskEncryptionType = null;
|
|
13
|
+
switch (diskEncryption) {
|
|
14
|
+
case undefined:
|
|
15
|
+
case 'none':
|
|
16
|
+
break;
|
|
17
|
+
case 'all':
|
|
18
|
+
diskEncryptionType = (
|
|
19
|
+
<>
|
|
20
|
+
Enabled on control plane nodes
|
|
21
|
+
<br />
|
|
22
|
+
Enabled on workers
|
|
23
|
+
</>
|
|
24
|
+
);
|
|
25
|
+
break;
|
|
26
|
+
case 'masters':
|
|
27
|
+
diskEncryptionType = <>Enabled on control plane nodes</>;
|
|
28
|
+
break;
|
|
29
|
+
case 'workers':
|
|
30
|
+
diskEncryptionType = <>Enabled on workers</>;
|
|
31
|
+
break;
|
|
32
|
+
case 'arbiters':
|
|
33
|
+
diskEncryptionType = <>Enabled on arbiters</>;
|
|
34
|
+
break;
|
|
35
|
+
case 'masters,arbiters':
|
|
36
|
+
diskEncryptionType = <>Enabled on control plane nodes and arbiters</>;
|
|
37
|
+
break;
|
|
38
|
+
case 'masters,workers':
|
|
39
|
+
diskEncryptionType = <>Enabled on control plane nodes and workers</>;
|
|
40
|
+
break;
|
|
41
|
+
case 'arbiters,workers':
|
|
42
|
+
diskEncryptionType = <>Enabled on arbiters and workers</>;
|
|
43
|
+
break;
|
|
44
|
+
case 'masters,arbiters,workers':
|
|
45
|
+
diskEncryptionType = (
|
|
46
|
+
<>
|
|
47
|
+
Enabled on control plane nodes
|
|
48
|
+
<br />
|
|
49
|
+
Enabled on arbiters
|
|
50
|
+
<br />
|
|
51
|
+
Enabled on workers
|
|
52
|
+
</>
|
|
53
|
+
);
|
|
54
|
+
break;
|
|
55
|
+
default: {
|
|
56
|
+
const _exhaustive: never = diskEncryption;
|
|
57
|
+
return _exhaustive;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return diskEncryptionType;
|
|
61
|
+
};
|
|
@@ -73,6 +73,7 @@ const getNmstateObject = (
|
|
|
73
73
|
realProtocolConfigs[protocolVersion] = getNmstateProtocolConfig(
|
|
74
74
|
hostIp,
|
|
75
75
|
getPrefixLength(networkWide, protocolVersion),
|
|
76
|
+
protocolVersion,
|
|
76
77
|
);
|
|
77
78
|
if (networkWide.useVlan && networkWide.vlanId) {
|
|
78
79
|
if (bondType && hasBondsConfigured) {
|
|
@@ -94,6 +95,7 @@ const getNmstateObject = (
|
|
|
94
95
|
[protocolVersion]: getNmstateProtocolConfig(
|
|
95
96
|
DUMMY_NMSTATE_ADDRESSES[protocolVersion].ip,
|
|
96
97
|
DUMMY_NMSTATE_ADDRESSES[protocolVersion].prefixLength,
|
|
98
|
+
protocolVersion,
|
|
97
99
|
),
|
|
98
100
|
};
|
|
99
101
|
nicName = getDummyNicName(protocolVersion);
|
|
@@ -80,6 +80,7 @@ export const getProtocolType = (comments: string[]): StaticProtocolType | null =
|
|
|
80
80
|
export const getNmstateProtocolConfig = (
|
|
81
81
|
ipAddress: string,
|
|
82
82
|
prefixLength: number,
|
|
83
|
+
protocolVersion?: ProtocolVersion,
|
|
83
84
|
): NmstateProtocolConfig => {
|
|
84
85
|
return {
|
|
85
86
|
address: [
|
|
@@ -90,6 +91,7 @@ export const getNmstateProtocolConfig = (
|
|
|
90
91
|
],
|
|
91
92
|
enabled: true,
|
|
92
93
|
dhcp: false,
|
|
94
|
+
...(protocolVersion === ProtocolVersion.ipv6 && { autoconf: false }),
|
|
93
95
|
};
|
|
94
96
|
};
|
|
95
97
|
|
|
@@ -7,13 +7,15 @@ import {
|
|
|
7
7
|
RenderIf,
|
|
8
8
|
canOpenConsole,
|
|
9
9
|
} from '../../../common';
|
|
10
|
+
import { ExternalLinkAltIcon } from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
|
|
10
11
|
import { downloadClusterInstallationLogs } from './utils';
|
|
11
12
|
import { useModalDialogsContext } from '../hosts/ModalDialogsContext';
|
|
12
13
|
import { canAbortInstallation } from '../clusters/utils';
|
|
13
14
|
import { onFetchEvents } from '../fetching/fetchEvents';
|
|
14
15
|
import ViewClusterEventsButton from '../../../common/components/ui/ViewClusterEventsButton';
|
|
15
|
-
import {
|
|
16
|
+
import { ToolbarButton } from '../../../common/components/ui/Toolbar';
|
|
16
17
|
import { Cluster, Credentials } from '@openshift-assisted/types/assisted-installer-service';
|
|
18
|
+
import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
|
|
17
19
|
|
|
18
20
|
import './ClusterDetailsButtonGroup.css';
|
|
19
21
|
|
|
@@ -24,6 +26,30 @@ type ClusterDetailsButtonGroupProps = {
|
|
|
24
26
|
showKubeConfig?: boolean;
|
|
25
27
|
};
|
|
26
28
|
|
|
29
|
+
const LaunchOpenshiftConsoleButton: React.FC<{
|
|
30
|
+
consoleUrl?: string;
|
|
31
|
+
isDisabled: boolean;
|
|
32
|
+
id?: string;
|
|
33
|
+
}> = ({ consoleUrl, isDisabled, id }) => {
|
|
34
|
+
const { t } = useTranslation();
|
|
35
|
+
return (
|
|
36
|
+
<ToolbarButton
|
|
37
|
+
variant={ButtonVariant.primary}
|
|
38
|
+
component="a"
|
|
39
|
+
href={consoleUrl}
|
|
40
|
+
target="_blank"
|
|
41
|
+
rel="noopener"
|
|
42
|
+
isDisabled={isDisabled}
|
|
43
|
+
icon={<ExternalLinkAltIcon />}
|
|
44
|
+
iconPosition="right"
|
|
45
|
+
id={id}
|
|
46
|
+
data-testid={id}
|
|
47
|
+
>
|
|
48
|
+
{t('ai:Launch OpenShift Console')}
|
|
49
|
+
</ToolbarButton>
|
|
50
|
+
);
|
|
51
|
+
};
|
|
52
|
+
|
|
27
53
|
const getID = (suffix: string) => `cluster-detail-${suffix}`;
|
|
28
54
|
|
|
29
55
|
const ClusterDetailsButtonGroup: React.FC<ClusterDetailsButtonGroupProps> = ({
|
|
@@ -60,7 +86,6 @@ const ClusterDetailsButtonGroup: React.FC<ClusterDetailsButtonGroupProps> = ({
|
|
|
60
86
|
<FlexItem>
|
|
61
87
|
<LaunchOpenshiftConsoleButton
|
|
62
88
|
isDisabled={false}
|
|
63
|
-
cluster={cluster}
|
|
64
89
|
consoleUrl={credentials?.consoleUrl}
|
|
65
90
|
id={getID('button-launch-console')}
|
|
66
91
|
/>
|
|
@@ -2,4 +2,3 @@ export * from './utils';
|
|
|
2
2
|
export { default as ClusterDetail } from './ClusterDetail';
|
|
3
3
|
export { default as ClusterInstallationProgressCard } from './ClusterInstallationProgressCard';
|
|
4
4
|
export { default as AssistedInstallerDetailCard } from './AssistedInstallerDetailCard';
|
|
5
|
-
export { default as AssistedInstallerExtraDetailCard } from './AssistedInstallerExtraDetailCard';
|
|
@@ -123,8 +123,17 @@ const ClusterDetailsForm = (props: ClusterDetailsFormProps) => {
|
|
|
123
123
|
managedDomains,
|
|
124
124
|
ocpVersions,
|
|
125
125
|
urlSearchParams: search,
|
|
126
|
+
isSingleClusterFeatureEnabled,
|
|
126
127
|
}),
|
|
127
|
-
[
|
|
128
|
+
[
|
|
129
|
+
infraEnv,
|
|
130
|
+
cluster,
|
|
131
|
+
pullSecret,
|
|
132
|
+
managedDomains,
|
|
133
|
+
ocpVersions,
|
|
134
|
+
search,
|
|
135
|
+
isSingleClusterFeatureEnabled,
|
|
136
|
+
],
|
|
128
137
|
);
|
|
129
138
|
|
|
130
139
|
const { t } = useTranslation();
|
|
@@ -32,6 +32,7 @@ const HostDiscoveryForm = ({ cluster }: { cluster: Cluster }) => {
|
|
|
32
32
|
const errorFields = getFormikErrorFields(errors, touched);
|
|
33
33
|
const isBinding = useLateBinding(cluster);
|
|
34
34
|
|
|
35
|
+
const hasHosts = (cluster.hosts?.length ?? 0) > 0;
|
|
35
36
|
const isNextDisabled =
|
|
36
37
|
!isValid ||
|
|
37
38
|
!!alerts.length ||
|
|
@@ -40,12 +41,15 @@ const HostDiscoveryForm = ({ cluster }: { cluster: Cluster }) => {
|
|
|
40
41
|
isBinding ||
|
|
41
42
|
!canNextHostDiscovery({ cluster });
|
|
42
43
|
|
|
44
|
+
const isWaitingForHosts = hasHosts && (isBinding || !canNextHostDiscovery({ cluster }));
|
|
45
|
+
|
|
43
46
|
const footer = (
|
|
44
47
|
<ClusterWizardFooter
|
|
45
48
|
cluster={cluster}
|
|
46
49
|
errorFields={errorFields}
|
|
47
50
|
isSubmitting={isSubmitting}
|
|
48
51
|
isNextDisabled={isNextDisabled}
|
|
52
|
+
isWaitingForHosts={isWaitingForHosts}
|
|
49
53
|
onNext={() => clusterWizardContext.moveNext()}
|
|
50
54
|
onBack={() => clusterWizardContext.moveBack()}
|
|
51
55
|
isBackDisabled={isSubmitting || isAutoSaveRunning}
|