@openshift-assisted/ui-lib 2.46.2 → 2.47.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/ClusterDeploymentHostsDiscovery.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDetailsFormFields.d.ts.map +1 -1
- package/build/@types/cim/components/InfraEnv/EnvironmentDetails.d.ts.map +1 -1
- package/build/@types/cim/components/common/ResourceAlerts.d.ts.map +1 -1
- package/build/@types/cim/types/k8s/agent-cluster-install.d.ts +1 -0
- package/build/@types/cim/types/k8s/agent-cluster-install.d.ts.map +1 -1
- package/build/@types/common/api/assisted-service/BundleAPI.d.ts +2 -2
- package/build/@types/common/api/assisted-service/ClustersAPI.d.ts +25 -25
- package/build/@types/common/api/assisted-service/ComponentVersionsAPI.d.ts +1 -1
- package/build/@types/common/api/assisted-service/EventsAPI.d.ts +1 -1
- package/build/@types/common/api/assisted-service/HostsAPI.d.ts +6 -6
- package/build/@types/common/api/assisted-service/InfraEnvsAPI.d.ts +7 -7
- package/build/@types/common/api/assisted-service/ManagedDomainsAPI.d.ts +1 -1
- package/build/@types/common/api/assisted-service/NewFeatureSupportLevelsAPI.d.ts +2 -2
- package/build/@types/common/api/assisted-service/OperatorsAPI.d.ts +1 -1
- package/build/@types/common/api/assisted-service/SupportedOpenshiftVersionsAPI.d.ts +1 -1
- package/build/@types/common/api/assisted-service/UISettingsAPI.d.ts +2 -2
- package/build/@types/common/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts +2 -1
- package/build/@types/common/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DownloadIpxeScript.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DownloadIso.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DownloadIsoModal.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/OcmTNADisclaimer.d.ts.map +1 -0
- package/build/@types/common/components/clusterConfiguration/utils.d.ts +3 -1
- package/build/@types/common/components/clusterConfiguration/utils.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/utils.test.d.ts +2 -0
- package/build/@types/common/components/clusterConfiguration/utils.test.d.ts.map +1 -0
- package/build/@types/common/components/clusterDetail/ConsoleModal.d.ts.map +1 -1
- package/build/@types/common/components/clusterDetail/FinalizingProgress.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/ClusterWizardStepHeader.d.ts.map +1 -1
- package/build/@types/common/components/hosts/AITableMemo.d.ts.map +1 -1
- package/build/@types/common/components/hosts/AdditionalNTPSourcesDialog.d.ts.map +1 -1
- package/build/@types/common/components/hosts/EditHostForm.d.ts.map +1 -1
- package/build/@types/common/components/hosts/EditHostModal.d.ts.map +1 -1
- package/build/@types/common/components/hosts/HostRequirements.d.ts.map +1 -1
- package/build/@types/common/components/hosts/MassChangeHostnameModal.d.ts.map +1 -1
- package/build/@types/common/components/hosts/MassDeleteHostModal.d.ts.map +1 -1
- package/build/@types/common/components/storage/DisksTable.d.ts.map +1 -1
- package/build/@types/common/components/storage/StorageUtils.d.ts.map +1 -1
- package/build/@types/common/components/ui/ConfirmationModal.d.ts +2 -3
- package/build/@types/common/components/ui/ConfirmationModal.d.ts.map +1 -1
- package/build/@types/common/components/ui/OpenShiftVersionModal.d.ts.map +1 -1
- package/build/@types/common/components/ui/SectionTitle.d.ts.map +1 -1
- package/build/@types/common/components/ui/StaticTextField.d.ts.map +1 -1
- package/build/@types/common/components/ui/eventsModal.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/AlertFormikError.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/RichInputField.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/TextAreaField.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts +1 -1
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
- package/build/@types/common/config/constants.d.ts.map +1 -1
- package/build/@types/ocm/components/AddHosts/InventoryAddHost.d.ts.map +1 -1
- package/build/@types/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.d.ts.map +1 -1
- package/build/@types/ocm/components/AddHosts/day2Wizard/Day2Wizard.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/DiscoveryImageModal.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/HostInventory.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/DeleteCustomManifestModal.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.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/StackTypeControl.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts +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/ReviewPreflightChecks.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/CollapsedHost.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/BondsConfirmationModal.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlViewFields.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/CancelInstallationModal.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterDetail.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterDetailStatusMessages.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterInstallationError.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterPollingErrorModal.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.test.d.ts +2 -0
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.test.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterDetail/ClusterUpdateErrorModal.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/OpenShiftVersionDetail.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ProgressBarAlerts.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ResetClusterModal.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/disconnected/BasicStep.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/disconnected/ReviewStep.d.ts.map +1 -1
- package/build/@types/ocm/components/clusters/ClusterPage.d.ts.map +1 -1
- package/build/@types/ocm/components/clusters/Clusters.d.ts.map +1 -1
- package/build/@types/ocm/components/clusters/DeleteClusterModal.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/DeleteHostModal.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/HostRequirementsContent.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/ResetHostModal.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/UpdateDay2ApiVipForm.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/UpdateDay2ApiVipModal.d.ts.map +1 -1
- package/build/@types/ocm/components/ui/InfoLinkWithModal.d.ts +1 -2
- package/build/@types/ocm/components/ui/InfoLinkWithModal.d.ts.map +1 -1
- package/build/@types/ocm/services/ClustersService.d.ts +5 -5
- package/build/@types/ocm/services/HostsService.d.ts +11 -11
- package/build/@types/ocm/services/InfraEnvsService.d.ts +2 -2
- package/build/@types/ocm/services/UISettingsService.d.ts +1 -1
- package/build/@types/ocm/store/slices/infra-envs/thunks.d.ts +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.js +2 -3
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.js +4 -6
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js +9 -5
- package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js +1 -2
- package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js.map +1 -1
- package/build/cjs/cim/components/common/ResourceAlerts.js +15 -16
- package/build/cjs/cim/components/common/ResourceAlerts.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/ControlPlaneNodesDropdown.js +23 -6
- package/build/cjs/common/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +2 -3
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryInstructions.js +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryInstructions.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryIpxeInstructions.js +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryIpxeInstructions.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js +7 -6
- package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.js +1 -2
- package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DownloadIpxeScript.js +2 -3
- package/build/cjs/common/components/clusterConfiguration/DownloadIpxeScript.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DownloadIso.js +5 -6
- package/build/cjs/common/components/clusterConfiguration/DownloadIso.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DownloadIsoModal.js +3 -2
- package/build/cjs/common/components/clusterConfiguration/DownloadIsoModal.js.map +1 -1
- package/build/cjs/{ocm → common}/components/clusterConfiguration/OcmTNADisclaimer.js +1 -1
- package/build/cjs/common/components/clusterConfiguration/OcmTNADisclaimer.js.map +1 -0
- package/build/cjs/common/components/clusterConfiguration/utils.js +23 -12
- package/build/cjs/common/components/clusterConfiguration/utils.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/utils.test.js +242 -0
- package/build/cjs/common/components/clusterConfiguration/utils.test.js.map +1 -0
- package/build/cjs/common/components/clusterDetail/ConsoleModal.js +5 -3
- package/build/cjs/common/components/clusterDetail/ConsoleModal.js.map +1 -1
- package/build/cjs/common/components/clusterDetail/FinalizingProgress.js +1 -2
- package/build/cjs/common/components/clusterDetail/FinalizingProgress.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/ClusterWizardStepHeader.js +1 -2
- package/build/cjs/common/components/clusterWizard/ClusterWizardStepHeader.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js +1 -1
- package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/UserManagedNetworkingTextContent.js +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/UserManagedNetworkingTextContent.js.map +1 -1
- package/build/cjs/common/components/hosts/AITableMemo.js +2 -1
- package/build/cjs/common/components/hosts/AITableMemo.js.map +1 -1
- package/build/cjs/common/components/hosts/AdditionalNTPSourcesDialog.js +4 -4
- package/build/cjs/common/components/hosts/AdditionalNTPSourcesDialog.js.map +1 -1
- package/build/cjs/common/components/hosts/EditHostForm.js +2 -3
- package/build/cjs/common/components/hosts/EditHostForm.js.map +1 -1
- package/build/cjs/common/components/hosts/EditHostModal.js +3 -2
- package/build/cjs/common/components/hosts/EditHostModal.js.map +1 -1
- package/build/cjs/common/components/hosts/HostRequirements.js +1 -2
- package/build/cjs/common/components/hosts/HostRequirements.js.map +1 -1
- package/build/cjs/common/components/hosts/HostStatus.js +2 -2
- package/build/cjs/common/components/hosts/HostStatus.js.map +1 -1
- package/build/cjs/common/components/hosts/MassChangeHostnameModal.js +4 -4
- package/build/cjs/common/components/hosts/MassChangeHostnameModal.js.map +1 -1
- package/build/cjs/common/components/hosts/MassDeleteHostModal.js +4 -4
- package/build/cjs/common/components/hosts/MassDeleteHostModal.js.map +1 -1
- package/build/cjs/common/components/storage/DisksTable.js +1 -2
- package/build/cjs/common/components/storage/DisksTable.js.map +1 -1
- package/build/cjs/common/components/storage/StorageUtils.js +1 -2
- package/build/cjs/common/components/storage/StorageUtils.js.map +1 -1
- package/build/cjs/common/components/ui/ConfirmationModal.js +5 -4
- package/build/cjs/common/components/ui/ConfirmationModal.js.map +1 -1
- package/build/cjs/common/components/ui/OpenShiftVersionModal.js +7 -6
- package/build/cjs/common/components/ui/OpenShiftVersionModal.js.map +1 -1
- package/build/cjs/common/components/ui/SectionTitle.js +1 -2
- package/build/cjs/common/components/ui/SectionTitle.js.map +1 -1
- package/build/cjs/common/components/ui/StaticTextField.js +1 -2
- package/build/cjs/common/components/ui/StaticTextField.js.map +1 -1
- package/build/cjs/common/components/ui/eventsModal.js +9 -9
- package/build/cjs/common/components/ui/eventsModal.js.map +1 -1
- package/build/cjs/common/components/ui/formik/AlertFormikError.js +1 -2
- package/build/cjs/common/components/ui/formik/AlertFormikError.js.map +1 -1
- package/build/cjs/common/components/ui/formik/RichInputField.css +0 -7
- package/build/cjs/common/components/ui/formik/RichInputField.js +1 -1
- package/build/cjs/common/components/ui/formik/RichInputField.js.map +1 -1
- package/build/cjs/common/components/ui/formik/TextAreaField.js +2 -1
- package/build/cjs/common/components/ui/formik/TextAreaField.js.map +1 -1
- package/build/cjs/common/components/ui/formik/validationSchemas.js +13 -3
- package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
- package/build/cjs/common/config/constants.js +5 -10
- package/build/cjs/common/config/constants.js.map +1 -1
- package/build/cjs/ocm/components/AddHosts/InventoryAddHost.js +3 -4
- package/build/cjs/ocm/components/AddHosts/InventoryAddHost.js.map +1 -1
- package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.js +1 -2
- package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.js.map +1 -1
- package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2Wizard.js +1 -2
- package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2Wizard.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageModal.js +2 -2
- package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageModal.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/HostInventory.js +3 -5
- package/build/cjs/ocm/components/clusterConfiguration/HostInventory.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js +11 -9
- package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/DeleteCustomManifestModal.js +7 -7
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/DeleteCustomManifestModal.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.js +0 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js +60 -18
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js +49 -12
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +3 -3
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +2 -3
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js +67 -7
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.js +31 -6
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js +7 -16
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js +8 -8
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js +26 -8
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.js +5 -5
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/CollapsedHost.js +1 -2
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/CollapsedHost.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/BondsConfirmationModal.js +4 -4
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/BondsConfirmationModal.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.js +1 -2
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.js +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlViewFields.js +6 -7
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlViewFields.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/CancelInstallationModal.js +6 -6
- package/build/cjs/ocm/components/clusterDetail/CancelInstallationModal.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterDetail.js +1 -2
- package/build/cjs/ocm/components/clusterDetail/ClusterDetail.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js +17 -14
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterInstallationError.js +4 -5
- package/build/cjs/ocm/components/clusterDetail/ClusterInstallationError.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterPollingErrorModal.js +5 -4
- package/build/cjs/ocm/components/clusterDetail/ClusterPollingErrorModal.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js +3 -4
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.test.js +180 -0
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.test.js.map +1 -0
- package/build/cjs/ocm/components/clusterDetail/ClusterUpdateErrorModal.js +5 -4
- package/build/cjs/ocm/components/clusterDetail/ClusterUpdateErrorModal.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/OpenShiftVersionDetail.js +1 -2
- package/build/cjs/ocm/components/clusterDetail/OpenShiftVersionDetail.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ProgressBarAlerts.js +4 -5
- package/build/cjs/ocm/components/clusterDetail/ProgressBarAlerts.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js +5 -3
- package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/disconnected/BasicStep.js +1 -2
- package/build/cjs/ocm/components/clusterWizard/disconnected/BasicStep.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js +1 -2
- package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js.map +1 -1
- package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js +1 -1
- package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js.map +1 -1
- package/build/cjs/ocm/components/clusters/ClusterPage.js +1 -2
- package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
- package/build/cjs/ocm/components/clusters/Clusters.js +1 -2
- package/build/cjs/ocm/components/clusters/Clusters.js.map +1 -1
- package/build/cjs/ocm/components/clusters/DeleteClusterModal.js +8 -7
- package/build/cjs/ocm/components/clusters/DeleteClusterModal.js.map +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js.map +1 -1
- package/build/cjs/ocm/components/hosts/DeleteHostModal.js +5 -4
- package/build/cjs/ocm/components/hosts/DeleteHostModal.js.map +1 -1
- package/build/cjs/ocm/components/hosts/HostRequirementsContent.js +1 -2
- package/build/cjs/ocm/components/hosts/HostRequirementsContent.js.map +1 -1
- package/build/cjs/ocm/components/hosts/ResetHostModal.js +8 -7
- package/build/cjs/ocm/components/hosts/ResetHostModal.js.map +1 -1
- package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipForm.js +2 -3
- package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipForm.js.map +1 -1
- package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipModal.js +3 -2
- package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipModal.js.map +1 -1
- package/build/cjs/ocm/components/ui/InfoLinkWithModal.js +5 -4
- package/build/cjs/ocm/components/ui/InfoLinkWithModal.js.map +1 -1
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.tsx +3 -5
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.tsx +8 -12
- package/lib/cim/components/ClusterDeployment/ClusterDetailsFormFields.tsx +17 -35
- package/lib/cim/components/InfraEnv/EnvironmentDetails.tsx +1 -5
- package/lib/cim/components/common/ResourceAlerts.tsx +26 -28
- package/lib/cim/types/k8s/agent-cluster-install.ts +1 -0
- package/lib/common/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +61 -31
- package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +14 -6
- package/lib/common/components/clusterConfiguration/DiscoveryInstructions.tsx +2 -2
- package/lib/common/components/clusterConfiguration/DiscoveryIpxeInstructions.tsx +2 -2
- package/lib/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.tsx +15 -12
- package/lib/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.tsx +1 -3
- package/lib/common/components/clusterConfiguration/DownloadIpxeScript.tsx +6 -5
- package/lib/common/components/clusterConfiguration/DownloadIso.tsx +13 -7
- package/lib/common/components/clusterConfiguration/DownloadIsoModal.tsx +2 -3
- package/lib/{ocm → common}/components/clusterConfiguration/OcmTNADisclaimer.tsx +1 -1
- package/lib/common/components/clusterConfiguration/utils.test.ts +275 -0
- package/lib/common/components/clusterConfiguration/utils.ts +28 -9
- package/lib/common/components/clusterDetail/ConsoleModal.tsx +17 -10
- package/lib/common/components/clusterDetail/FinalizingProgress.tsx +4 -6
- package/lib/common/components/clusterWizard/ClusterWizardStepHeader.tsx +1 -3
- package/lib/common/components/clusterWizard/clusterDetailsValidation.ts +1 -1
- package/lib/common/components/clusterWizard/networkingSteps/UserManagedNetworkingTextContent.tsx +2 -2
- package/lib/common/components/hosts/AITableMemo.tsx +1 -0
- package/lib/common/components/hosts/AdditionalNTPSourcesDialog.tsx +11 -10
- package/lib/common/components/hosts/EditHostForm.tsx +6 -5
- package/lib/common/components/hosts/EditHostModal.tsx +2 -3
- package/lib/common/components/hosts/HostRequirements.tsx +2 -4
- package/lib/common/components/hosts/HostStatus.tsx +5 -5
- package/lib/common/components/hosts/MassChangeHostnameModal.tsx +9 -7
- package/lib/common/components/hosts/MassDeleteHostModal.tsx +15 -9
- package/lib/common/components/storage/DisksTable.tsx +1 -3
- package/lib/common/components/storage/StorageUtils.tsx +1 -3
- package/lib/common/components/ui/ConfirmationModal.tsx +18 -15
- package/lib/common/components/ui/OpenShiftVersionModal.tsx +32 -22
- package/lib/common/components/ui/SectionTitle.tsx +2 -4
- package/lib/common/components/ui/StaticTextField.tsx +2 -4
- package/lib/common/components/ui/eventsModal.tsx +29 -20
- package/lib/common/components/ui/formik/AlertFormikError.tsx +8 -10
- package/lib/common/components/ui/formik/RichInputField.css +0 -7
- package/lib/common/components/ui/formik/RichInputField.tsx +2 -1
- package/lib/common/components/ui/formik/TextAreaField.tsx +13 -4
- package/lib/common/components/ui/formik/_validationSchemas.test.ts +82 -0
- package/lib/common/components/ui/formik/validationSchemas.ts +16 -10
- package/lib/common/config/constants.ts +5 -11
- package/lib/ocm/components/AddHosts/InventoryAddHost.tsx +4 -6
- package/lib/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.tsx +1 -5
- package/lib/ocm/components/AddHosts/day2Wizard/Day2Wizard.tsx +2 -4
- package/lib/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +1 -1
- package/lib/ocm/components/clusterConfiguration/DiscoveryImageModal.tsx +6 -7
- package/lib/ocm/components/clusterConfiguration/HostInventory.tsx +7 -11
- package/lib/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.tsx +43 -25
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/DeleteCustomManifestModal.tsx +22 -16
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.tsx +1 -7
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx +64 -18
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx +98 -36
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +3 -2
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +4 -5
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx +78 -11
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx +79 -11
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx +4 -9
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts +17 -6
- package/lib/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.tsx +34 -4
- package/lib/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.tsx +7 -9
- package/lib/ocm/components/clusterConfiguration/staticIp/components/CollapsedHost.tsx +1 -3
- package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/BondsConfirmationModal.tsx +15 -9
- package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.tsx +1 -3
- package/lib/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.tsx +10 -3
- package/lib/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlViewFields.tsx +6 -8
- package/lib/ocm/components/clusterDetail/CancelInstallationModal.tsx +19 -17
- package/lib/ocm/components/clusterDetail/ClusterDetail.tsx +1 -3
- package/lib/ocm/components/clusterDetail/ClusterDetailStatusMessages.tsx +34 -26
- package/lib/ocm/components/clusterDetail/ClusterInstallationError.tsx +5 -7
- package/lib/ocm/components/clusterDetail/ClusterPollingErrorModal.tsx +15 -13
- package/lib/ocm/components/clusterDetail/ClusterProperties.test.ts +215 -0
- package/lib/ocm/components/clusterDetail/ClusterProperties.tsx +3 -5
- package/lib/ocm/components/clusterDetail/ClusterUpdateErrorModal.tsx +17 -13
- package/lib/ocm/components/clusterDetail/OpenShiftVersionDetail.tsx +2 -4
- package/lib/ocm/components/clusterDetail/ProgressBarAlerts.tsx +5 -7
- package/lib/ocm/components/clusterDetail/ResetClusterModal.tsx +16 -12
- package/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx +1 -3
- package/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx +1 -3
- package/lib/ocm/components/clusters/AssistedInstallerHeader.tsx +2 -2
- package/lib/ocm/components/clusters/ClusterPage.tsx +1 -3
- package/lib/ocm/components/clusters/Clusters.tsx +1 -3
- package/lib/ocm/components/clusters/DeleteClusterModal.tsx +16 -11
- package/lib/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.tsx +2 -2
- package/lib/ocm/components/hosts/DeleteHostModal.tsx +18 -9
- package/lib/ocm/components/hosts/HostRequirementsContent.tsx +3 -5
- package/lib/ocm/components/hosts/ResetHostModal.tsx +16 -13
- package/lib/ocm/components/hosts/UpdateDay2ApiVipForm.tsx +12 -6
- package/lib/ocm/components/hosts/UpdateDay2ApiVipModal.tsx +2 -3
- package/lib/ocm/components/ui/InfoLinkWithModal.tsx +16 -13
- package/package.json +3 -3
- package/build/@types/ocm/components/clusterConfiguration/OcmTNADisclaimer.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.d.ts +0 -6
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.d.ts.map +0 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmTNADisclaimer.js.map +0 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.js +0 -25
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.js.map +0 -1
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.tsx +0 -30
- /package/build/@types/{ocm → common}/components/clusterConfiguration/OcmTNADisclaimer.d.ts +0 -0
package/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
NetworkConfigurationValues,
|
|
10
10
|
DUAL_STACK,
|
|
11
11
|
NO_SUBNET_SET,
|
|
12
|
+
isMajorMinorVersionEqualOrGreater,
|
|
12
13
|
} from '../../../../common';
|
|
13
14
|
import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
|
|
14
15
|
import { SubnetsDropdown } from './SubnetsDropdown';
|
|
@@ -35,6 +36,7 @@ export interface AvailableSubnetsControlProps {
|
|
|
35
36
|
hostSubnets: HostSubnet[];
|
|
36
37
|
isRequired: boolean;
|
|
37
38
|
isDisabled: boolean;
|
|
39
|
+
openshiftVersion?: string;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
export const AvailableSubnetsControl = ({
|
|
@@ -42,11 +44,16 @@ export const AvailableSubnetsControl = ({
|
|
|
42
44
|
hostSubnets,
|
|
43
45
|
isRequired = false,
|
|
44
46
|
isDisabled,
|
|
47
|
+
openshiftVersion,
|
|
45
48
|
}: AvailableSubnetsControlProps) => {
|
|
46
49
|
const { values, errors, setFieldValue } = useFormikContext<NetworkConfigurationValues>();
|
|
47
50
|
const isDualStack = values.stackType === DUAL_STACK;
|
|
48
51
|
const { isViewerMode } = useSelector(selectCurrentClusterPermissionsState);
|
|
49
52
|
|
|
53
|
+
// Check if OCP version supports IPv6 as primary network
|
|
54
|
+
const supportsIPv6Primary =
|
|
55
|
+
openshiftVersion && isMajorMinorVersionEqualOrGreater(openshiftVersion, '4.12');
|
|
56
|
+
|
|
50
57
|
const IPv4Subnets = hostSubnets
|
|
51
58
|
.filter((subnet) => Address4.isValid(subnet.subnet))
|
|
52
59
|
.sort(subnetSort);
|
|
@@ -54,51 +61,106 @@ export const AvailableSubnetsControl = ({
|
|
|
54
61
|
.filter((subnet) => Address6.isValid(subnet.subnet))
|
|
55
62
|
.sort(subnetSort);
|
|
56
63
|
|
|
64
|
+
// For OCP >= 4.12, both networks can use either IPv4 or IPv6
|
|
65
|
+
const allSubnets = supportsIPv6Primary
|
|
66
|
+
? [...IPv4Subnets, ...IPv6Subnets].sort(subnetSort)
|
|
67
|
+
: IPv4Subnets;
|
|
68
|
+
|
|
69
|
+
// For auto-selection, always use IPv4 subnets for single-stack
|
|
57
70
|
const cidr = IPv4Subnets.length >= 1 ? IPv4Subnets[0].subnet : NO_SUBNET_SET;
|
|
58
71
|
const hasEmptySelection = (values.machineNetworks ?? []).length === 0;
|
|
59
72
|
const autoSelectNetwork = !isViewerMode && hasEmptySelection;
|
|
60
73
|
useAutoSelectSingleAvailableSubnet(autoSelectNetwork, setFieldValue, cidr, clusterId);
|
|
61
74
|
|
|
62
75
|
return (
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
76
|
+
<>
|
|
77
|
+
<FormGroup
|
|
78
|
+
label="Machine network"
|
|
79
|
+
labelInfo={isDualStack && 'Primary'}
|
|
80
|
+
fieldId="machine-networks"
|
|
81
|
+
isRequired={isRequired}
|
|
82
|
+
>
|
|
83
|
+
<FieldArray name="machineNetworks">
|
|
84
|
+
{() => (
|
|
85
|
+
<Stack>
|
|
86
|
+
{isDualStack ? (
|
|
87
|
+
values.machineNetworks?.map((machineNetwork, index) => {
|
|
88
|
+
if (index > 0) return null;
|
|
89
|
+
|
|
90
|
+
const machineSubnets = supportsIPv6Primary ? allSubnets : IPv4Subnets;
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
<StackItem key={index}>
|
|
94
|
+
<SubnetsDropdown
|
|
95
|
+
name={`machineNetworks.${index}.cidr`}
|
|
96
|
+
machineSubnets={machineSubnets}
|
|
97
|
+
isDisabled={isDisabled}
|
|
98
|
+
data-testid={`subnets-dropdown-toggle-${index ? 'ipv6' : 'ipv4'}`}
|
|
99
|
+
/>
|
|
100
|
+
</StackItem>
|
|
101
|
+
);
|
|
102
|
+
})
|
|
103
|
+
) : (
|
|
104
|
+
<StackItem>
|
|
105
|
+
<SubnetsDropdown
|
|
106
|
+
name={`machineNetworks.0.cidr`}
|
|
107
|
+
machineSubnets={IPv4Subnets}
|
|
108
|
+
isDisabled={isDisabled}
|
|
109
|
+
data-testid={'subnets-dropdown-toggle-primary'}
|
|
110
|
+
/>
|
|
111
|
+
</StackItem>
|
|
112
|
+
)}
|
|
113
|
+
</Stack>
|
|
114
|
+
)}
|
|
115
|
+
</FieldArray>
|
|
116
|
+
|
|
117
|
+
{typeof errors.machineNetworks === 'string' && (
|
|
118
|
+
<Alert variant={AlertVariant.warning} title={errors.machineNetworks} isInline />
|
|
119
|
+
)}
|
|
120
|
+
</FormGroup>
|
|
121
|
+
|
|
122
|
+
{isDualStack && values.machineNetworks && values.machineNetworks.length > 1 && (
|
|
123
|
+
<FormGroup
|
|
124
|
+
label="Machine network"
|
|
125
|
+
labelInfo="Secondary"
|
|
126
|
+
fieldId="machine-networks-secondary"
|
|
127
|
+
isRequired={isRequired}
|
|
128
|
+
>
|
|
129
|
+
<FieldArray name="machineNetworks">
|
|
130
|
+
{() => {
|
|
131
|
+
const index = 1;
|
|
132
|
+
let machineSubnets;
|
|
133
|
+
|
|
134
|
+
if (supportsIPv6Primary) {
|
|
135
|
+
// For OCP >= 4.12, smart filtering based on the other network's selection
|
|
136
|
+
const firstNetworkCidr = values.machineNetworks?.[0]?.cidr;
|
|
137
|
+
if (firstNetworkCidr && Address6.isValid(firstNetworkCidr)) {
|
|
138
|
+
// If first is IPv6, second should be IPv4
|
|
139
|
+
machineSubnets = IPv4Subnets;
|
|
140
|
+
} else if (firstNetworkCidr && Address4.isValid(firstNetworkCidr)) {
|
|
141
|
+
// If first is IPv4, second should be IPv6
|
|
142
|
+
machineSubnets = IPv6Subnets;
|
|
143
|
+
} else {
|
|
144
|
+
// If first is not selected yet, show all subnets
|
|
145
|
+
machineSubnets = allSubnets;
|
|
146
|
+
}
|
|
147
|
+
} else {
|
|
148
|
+
// For older versions, second network is IPv6
|
|
149
|
+
machineSubnets = IPv6Subnets;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return (
|
|
88
153
|
<SubnetsDropdown
|
|
89
|
-
name={`machineNetworks.
|
|
90
|
-
machineSubnets={
|
|
154
|
+
name={`machineNetworks.${index}.cidr`}
|
|
155
|
+
machineSubnets={machineSubnets}
|
|
91
156
|
isDisabled={isDisabled}
|
|
157
|
+
data-testid={`subnets-dropdown-toggle-${index ? 'ipv6' : 'ipv4'}`}
|
|
92
158
|
/>
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
</
|
|
96
|
-
|
|
97
|
-
</FieldArray>
|
|
98
|
-
|
|
99
|
-
{typeof errors.machineNetworks === 'string' && (
|
|
100
|
-
<Alert variant={AlertVariant.warning} title={errors.machineNetworks} isInline />
|
|
159
|
+
);
|
|
160
|
+
}}
|
|
161
|
+
</FieldArray>
|
|
162
|
+
</FormGroup>
|
|
101
163
|
)}
|
|
102
|
-
|
|
164
|
+
</>
|
|
103
165
|
);
|
|
104
166
|
};
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx
CHANGED
|
@@ -224,10 +224,10 @@ const NetworkConfiguration = ({
|
|
|
224
224
|
);
|
|
225
225
|
|
|
226
226
|
React.useEffect(() => {
|
|
227
|
-
if (!isViewerMode && isDualStack
|
|
227
|
+
if (!isViewerMode && isDualStack) {
|
|
228
228
|
toggleAdvConfiguration(true);
|
|
229
229
|
}
|
|
230
|
-
}, [isDualStack,
|
|
230
|
+
}, [isDualStack, isViewerMode, toggleAdvConfiguration]);
|
|
231
231
|
|
|
232
232
|
const managedNetworkingState = React.useMemo(
|
|
233
233
|
() =>
|
|
@@ -292,6 +292,7 @@ const NetworkConfiguration = ({
|
|
|
292
292
|
hostSubnets.length === 0 ||
|
|
293
293
|
false
|
|
294
294
|
}
|
|
295
|
+
openshiftVersion={cluster.openshiftVersion}
|
|
295
296
|
/>
|
|
296
297
|
</StackItem>
|
|
297
298
|
)}
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx
CHANGED
|
@@ -153,9 +153,7 @@ const NetworkConfigurationForm: React.FC<{
|
|
|
153
153
|
</Grid>
|
|
154
154
|
</GridItem>
|
|
155
155
|
<GridItem>
|
|
156
|
-
<Content>
|
|
157
|
-
<Content component="h2">Host inventory</Content>
|
|
158
|
-
</Content>
|
|
156
|
+
<Content component="h2">Host inventory</Content>
|
|
159
157
|
<NetworkConfigurationTable cluster={cluster} />
|
|
160
158
|
</GridItem>
|
|
161
159
|
</Grid>
|
|
@@ -202,8 +200,9 @@ const NetworkConfigurationPage = ({ cluster }: { cluster: Cluster }) => {
|
|
|
202
200
|
);
|
|
203
201
|
|
|
204
202
|
const memoizedValidationSchema = React.useMemo(
|
|
205
|
-
() =>
|
|
206
|
-
|
|
203
|
+
() =>
|
|
204
|
+
getNetworkConfigurationValidationSchema(initialValues, hostSubnets, cluster.openshiftVersion),
|
|
205
|
+
[hostSubnets, initialValues, cluster.openshiftVersion],
|
|
207
206
|
);
|
|
208
207
|
|
|
209
208
|
React.useEffect(() => {
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { useSelector } from 'react-redux';
|
|
3
3
|
import { ButtonVariant, FormGroup, Split, SplitItem, Tooltip } from '@patternfly/react-core';
|
|
4
4
|
import { useFormikContext } from 'formik';
|
|
5
|
-
import { Address6 } from 'ip-address';
|
|
5
|
+
import { Address4, Address6 } from 'ip-address';
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
HostSubnets,
|
|
@@ -69,19 +69,67 @@ export const StackTypeControlGroup = ({
|
|
|
69
69
|
setFieldValue('stackType', IPV4_STACK);
|
|
70
70
|
|
|
71
71
|
if (values.machineNetworks && values.machineNetworks?.length >= 2) {
|
|
72
|
-
|
|
72
|
+
// For single-stack IPv4, prefer IPv4 machine network
|
|
73
|
+
const firstNetwork = values.machineNetworks[0];
|
|
74
|
+
const isFirstIPv4 = firstNetwork?.cidr && Address4.isValid(firstNetwork.cidr);
|
|
75
|
+
|
|
76
|
+
if (isFirstIPv4) {
|
|
77
|
+
// Keep the first network if it's IPv4
|
|
78
|
+
setFieldValue('machineNetworks', [firstNetwork]);
|
|
79
|
+
} else {
|
|
80
|
+
// If first is IPv6, look for IPv4 network or set empty for auto-selection
|
|
81
|
+
const ipv4Network = values.machineNetworks.find(
|
|
82
|
+
(network) => network.cidr && Address4.isValid(network.cidr),
|
|
83
|
+
);
|
|
84
|
+
if (ipv4Network) {
|
|
85
|
+
setFieldValue('machineNetworks', [ipv4Network]);
|
|
86
|
+
} else {
|
|
87
|
+
// No IPv4 network found, set empty for auto-selection
|
|
88
|
+
setFieldValue('machineNetworks', []);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
73
91
|
}
|
|
74
|
-
|
|
75
|
-
|
|
92
|
+
// Ensure single-stack inputs are IPv4 after switching from dual-stack
|
|
93
|
+
if (values.clusterNetworks && values.clusterNetworks.length >= 1) {
|
|
94
|
+
const defaultCluster =
|
|
95
|
+
defaultNetworkValues.clusterNetworksIpv4 && defaultNetworkValues.clusterNetworksIpv4[0];
|
|
96
|
+
const firstCluster = values.clusterNetworks[0];
|
|
97
|
+
const ipv4Cluster = defaultCluster
|
|
98
|
+
? {
|
|
99
|
+
cidr: defaultCluster.cidr,
|
|
100
|
+
hostPrefix: defaultCluster.hostPrefix,
|
|
101
|
+
clusterId: firstCluster.clusterId, // ← Preserve clusterId from original network
|
|
102
|
+
}
|
|
103
|
+
: {
|
|
104
|
+
cidr: '',
|
|
105
|
+
hostPrefix: '',
|
|
106
|
+
clusterId: clusterId, // ← Use current clusterId
|
|
107
|
+
};
|
|
108
|
+
setFieldValue('clusterNetworks', [ipv4Cluster]);
|
|
76
109
|
}
|
|
77
|
-
if (values.serviceNetworks && values.serviceNetworks
|
|
78
|
-
|
|
110
|
+
if (values.serviceNetworks && values.serviceNetworks.length >= 1) {
|
|
111
|
+
const defaultService =
|
|
112
|
+
defaultNetworkValues.serviceNetworksIpv4 && defaultNetworkValues.serviceNetworksIpv4[0];
|
|
113
|
+
const firstService = values.serviceNetworks[0];
|
|
114
|
+
const ipv4Service = defaultService
|
|
115
|
+
? {
|
|
116
|
+
cidr: defaultService.cidr,
|
|
117
|
+
clusterId: firstService.clusterId, // ← Preserve clusterId from original network
|
|
118
|
+
}
|
|
119
|
+
: {
|
|
120
|
+
cidr: '',
|
|
121
|
+
clusterId: clusterId, // ← Use current clusterId
|
|
122
|
+
};
|
|
123
|
+
setFieldValue('serviceNetworks', [ipv4Service]);
|
|
79
124
|
}
|
|
80
125
|
|
|
81
126
|
void validateForm();
|
|
82
127
|
}, [
|
|
83
128
|
setFieldValue,
|
|
84
129
|
validateForm,
|
|
130
|
+
clusterId,
|
|
131
|
+
defaultNetworkValues.clusterNetworksIpv4,
|
|
132
|
+
defaultNetworkValues.serviceNetworksIpv4,
|
|
85
133
|
values.clusterNetworks,
|
|
86
134
|
values.machineNetworks,
|
|
87
135
|
values.serviceNetworks,
|
|
@@ -96,11 +144,30 @@ export const StackTypeControlGroup = ({
|
|
|
96
144
|
}
|
|
97
145
|
|
|
98
146
|
if (values.machineNetworks && values.machineNetworks?.length < 2) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
)
|
|
147
|
+
// Ensure IPv4 is primary when switching to dual-stack
|
|
148
|
+
const firstNetwork = values.machineNetworks[0];
|
|
149
|
+
const isFirstIPv6 = firstNetwork?.cidr && Address6.isValid(firstNetwork.cidr);
|
|
150
|
+
|
|
151
|
+
if (isFirstIPv6) {
|
|
152
|
+
// If first network is IPv6, make IPv4 primary and IPv6 secondary
|
|
153
|
+
const IPv4Subnets = hostSubnets.filter((subnet) => Address4.isValid(subnet.subnet));
|
|
154
|
+
const cidrIPv4 = IPv4Subnets.length >= 1 ? IPv4Subnets[0].subnet : NO_SUBNET_SET;
|
|
155
|
+
setFieldValue(
|
|
156
|
+
'machineNetworks',
|
|
157
|
+
[
|
|
158
|
+
{ cidr: cidrIPv4, clusterId: clusterId },
|
|
159
|
+
{ cidr: firstNetwork.cidr, clusterId: clusterId },
|
|
160
|
+
],
|
|
161
|
+
false,
|
|
162
|
+
);
|
|
163
|
+
} else {
|
|
164
|
+
// If first network is IPv4, add IPv6 as secondary
|
|
165
|
+
setFieldValue(
|
|
166
|
+
'machineNetworks',
|
|
167
|
+
[...values.machineNetworks, { cidr: cidrIPv6, clusterId: clusterId }],
|
|
168
|
+
false,
|
|
169
|
+
);
|
|
170
|
+
}
|
|
104
171
|
}
|
|
105
172
|
if (values.clusterNetworks && values.clusterNetworks?.length < 2) {
|
|
106
173
|
setFieldValue(
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Dropdown,
|
|
4
|
+
DropdownItem,
|
|
5
|
+
DropdownGroup,
|
|
6
|
+
MenuToggle,
|
|
7
|
+
MenuToggleElement,
|
|
8
|
+
MenuToggleProps,
|
|
9
|
+
} from '@patternfly/react-core';
|
|
3
10
|
import { useField } from 'formik';
|
|
4
11
|
import { getFieldId, HostSubnet, NO_SUBNET_SET } from '../../../../common';
|
|
12
|
+
import { Address4, Address6 } from 'ip-address';
|
|
5
13
|
|
|
6
14
|
type SubnetsDropdownProps = {
|
|
7
15
|
name: string;
|
|
@@ -32,12 +40,17 @@ const noSubnetAvailableOption = {
|
|
|
32
40
|
id: 'form-input-hostSubnet-field-option-no-subnet-available',
|
|
33
41
|
};
|
|
34
42
|
|
|
35
|
-
export const SubnetsDropdown = ({
|
|
43
|
+
export const SubnetsDropdown = ({
|
|
44
|
+
name,
|
|
45
|
+
machineSubnets,
|
|
46
|
+
isDisabled,
|
|
47
|
+
...props
|
|
48
|
+
}: SubnetsDropdownProps & MenuToggleProps) => {
|
|
36
49
|
const [field, , { setValue }] = useField(name);
|
|
37
50
|
const [isOpen, setOpen] = React.useState(false);
|
|
38
51
|
const fieldId = getFieldId(name, 'input');
|
|
39
52
|
|
|
40
|
-
const { itemsSubnets, currentDisplayValue } = React.useMemo(() => {
|
|
53
|
+
const { itemsSubnets, ipv4Subnets, ipv6Subnets, currentDisplayValue } = React.useMemo(() => {
|
|
41
54
|
const itemsSubnets =
|
|
42
55
|
machineSubnets.length === 0
|
|
43
56
|
? [noSubnetAvailableOption]
|
|
@@ -45,6 +58,10 @@ export const SubnetsDropdown = ({ name, machineSubnets, isDisabled }: SubnetsDro
|
|
|
45
58
|
toFormSelectOptions(machineSubnets),
|
|
46
59
|
);
|
|
47
60
|
|
|
61
|
+
// Separate IPv4 and IPv6 subnets
|
|
62
|
+
const ipv4Subnets = machineSubnets.filter((subnet) => Address4.isValid(subnet.subnet));
|
|
63
|
+
const ipv6Subnets = machineSubnets.filter((subnet) => Address6.isValid(subnet.subnet));
|
|
64
|
+
|
|
48
65
|
let currentDisplayValue = itemsSubnets[0].label; // The placeholder is the fallback
|
|
49
66
|
if (field.value) {
|
|
50
67
|
const subnetItem = itemsSubnets.find((item) => item.value === field.value);
|
|
@@ -56,14 +73,65 @@ export const SubnetsDropdown = ({ name, machineSubnets, isDisabled }: SubnetsDro
|
|
|
56
73
|
currentDisplayValue = itemsSubnets[1].label;
|
|
57
74
|
}
|
|
58
75
|
|
|
59
|
-
return { itemsSubnets, currentDisplayValue: currentDisplayValue };
|
|
76
|
+
return { itemsSubnets, ipv4Subnets, ipv6Subnets, currentDisplayValue: currentDisplayValue };
|
|
60
77
|
}, [machineSubnets, field.value]);
|
|
61
78
|
|
|
62
|
-
const dropdownItems =
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
79
|
+
const dropdownItems = React.useMemo(() => {
|
|
80
|
+
if (machineSubnets.length === 0) {
|
|
81
|
+
return [
|
|
82
|
+
<DropdownItem
|
|
83
|
+
key={noSubnetAvailableOption.value}
|
|
84
|
+
id={noSubnetAvailableOption.value}
|
|
85
|
+
isDisabled={noSubnetAvailableOption.isDisabled}
|
|
86
|
+
value={noSubnetAvailableOption.value}
|
|
87
|
+
>
|
|
88
|
+
{noSubnetAvailableOption.label}
|
|
89
|
+
</DropdownItem>,
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const hasIpv4 = ipv4Subnets.length > 0;
|
|
94
|
+
const hasIpv6 = ipv6Subnets.length > 0;
|
|
95
|
+
|
|
96
|
+
// If we have both IPv4 and IPv6, group them
|
|
97
|
+
if (hasIpv4 && hasIpv6) {
|
|
98
|
+
const ipv4Items = toFormSelectOptions(ipv4Subnets).map(({ value, label, isDisabled }) => (
|
|
99
|
+
<DropdownItem key={value} id={value} isDisabled={isDisabled} value={value}>
|
|
100
|
+
{label}
|
|
101
|
+
</DropdownItem>
|
|
102
|
+
));
|
|
103
|
+
|
|
104
|
+
const ipv6Items = toFormSelectOptions(ipv6Subnets).map(({ value, label, isDisabled }) => (
|
|
105
|
+
<DropdownItem key={value} id={value} isDisabled={isDisabled} value={value}>
|
|
106
|
+
{label}
|
|
107
|
+
</DropdownItem>
|
|
108
|
+
));
|
|
109
|
+
|
|
110
|
+
return [
|
|
111
|
+
<DropdownItem
|
|
112
|
+
key={makeNoSubnetSelectedOption(machineSubnets.length).value}
|
|
113
|
+
id={makeNoSubnetSelectedOption(machineSubnets.length).value}
|
|
114
|
+
isDisabled={makeNoSubnetSelectedOption(machineSubnets.length).isDisabled}
|
|
115
|
+
value={makeNoSubnetSelectedOption(machineSubnets.length).value}
|
|
116
|
+
>
|
|
117
|
+
{makeNoSubnetSelectedOption(machineSubnets.length).label}
|
|
118
|
+
</DropdownItem>,
|
|
119
|
+
<DropdownGroup label="IPv4" key="ipv4-group">
|
|
120
|
+
{ipv4Items}
|
|
121
|
+
</DropdownGroup>,
|
|
122
|
+
<DropdownGroup label="IPv6" key="ipv6-group">
|
|
123
|
+
{ipv6Items}
|
|
124
|
+
</DropdownGroup>,
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// If only one type, don't group
|
|
129
|
+
return itemsSubnets.map(({ value, label, isDisabled }) => (
|
|
130
|
+
<DropdownItem key={value} id={value} isDisabled={isDisabled} value={value}>
|
|
131
|
+
{label}
|
|
132
|
+
</DropdownItem>
|
|
133
|
+
));
|
|
134
|
+
}, [machineSubnets, ipv4Subnets, ipv6Subnets, itemsSubnets]);
|
|
67
135
|
|
|
68
136
|
const onSelect = (event?: React.MouseEvent<Element, MouseEvent>): void => {
|
|
69
137
|
setValue(event?.currentTarget.id);
|
|
@@ -79,7 +147,7 @@ export const SubnetsDropdown = ({ name, machineSubnets, isDisabled }: SubnetsDro
|
|
|
79
147
|
id={fieldId}
|
|
80
148
|
className="pf-v6-u-w-100"
|
|
81
149
|
style={{ minWidth: '100%' }}
|
|
82
|
-
|
|
150
|
+
{...props}
|
|
83
151
|
>
|
|
84
152
|
{currentDisplayValue}
|
|
85
153
|
</MenuToggle>
|
|
@@ -89,7 +157,7 @@ export const SubnetsDropdown = ({ name, machineSubnets, isDisabled }: SubnetsDro
|
|
|
89
157
|
<Dropdown
|
|
90
158
|
{...field}
|
|
91
159
|
id={`${fieldId}-dropdown`}
|
|
92
|
-
onOpenChange={() => setOpen(
|
|
160
|
+
onOpenChange={(isOpen: boolean) => setOpen(isOpen)}
|
|
93
161
|
onSelect={onSelect}
|
|
94
162
|
toggle={toggle}
|
|
95
163
|
isOpen={isOpen}
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx
CHANGED
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
NETWORK_TYPE_SDN,
|
|
17
17
|
selectMachineNetworkCIDR,
|
|
18
18
|
getVipValidationsById,
|
|
19
|
-
DUAL_STACK,
|
|
20
19
|
PopoverIcon,
|
|
21
20
|
selectApiVip,
|
|
22
21
|
selectIngressVip,
|
|
@@ -117,7 +116,6 @@ export const VirtualIPControlGroup = ({
|
|
|
117
116
|
setFieldValue(field, [{ ip: e.target.value, clusterId: cluster.id }], true);
|
|
118
117
|
};
|
|
119
118
|
|
|
120
|
-
const ipFieldsSuffix = values.stackType === DUAL_STACK ? ' (IPv4)' : '';
|
|
121
119
|
return (
|
|
122
120
|
<>
|
|
123
121
|
{!isVipDhcpAllocationDisabled && (
|
|
@@ -145,7 +143,7 @@ export const VirtualIPControlGroup = ({
|
|
|
145
143
|
<FormikStaticField
|
|
146
144
|
label={
|
|
147
145
|
<>
|
|
148
|
-
<span>API IP
|
|
146
|
+
<span>API IP</span> <PopoverIcon bodyContent={ipPopoverContent} />
|
|
149
147
|
</>
|
|
150
148
|
}
|
|
151
149
|
name="apiVip"
|
|
@@ -164,8 +162,7 @@ export const VirtualIPControlGroup = ({
|
|
|
164
162
|
<FormikStaticField
|
|
165
163
|
label={
|
|
166
164
|
<>
|
|
167
|
-
<span>Ingress IP
|
|
168
|
-
<PopoverIcon bodyContent={ipPopoverContent} />
|
|
165
|
+
<span>Ingress IP</span> <PopoverIcon bodyContent={ipPopoverContent} />
|
|
169
166
|
</>
|
|
170
167
|
}
|
|
171
168
|
name="ingressVip"
|
|
@@ -191,8 +188,7 @@ export const VirtualIPControlGroup = ({
|
|
|
191
188
|
<OcmInputField
|
|
192
189
|
label={
|
|
193
190
|
<>
|
|
194
|
-
<span>API IP
|
|
195
|
-
<PopoverIcon bodyContent={ipPopoverContent} />
|
|
191
|
+
<span>API IP</span> <PopoverIcon bodyContent={ipPopoverContent} />
|
|
196
192
|
</>
|
|
197
193
|
}
|
|
198
194
|
name="apiVips.0.ip"
|
|
@@ -208,8 +204,7 @@ export const VirtualIPControlGroup = ({
|
|
|
208
204
|
name="ingressVips.0.ip"
|
|
209
205
|
label={
|
|
210
206
|
<>
|
|
211
|
-
<span>Ingress IP
|
|
212
|
-
<PopoverIcon bodyContent={ipPopoverContent} />
|
|
207
|
+
<span>Ingress IP</span> <PopoverIcon bodyContent={ipPopoverContent} />
|
|
213
208
|
</>
|
|
214
209
|
}
|
|
215
210
|
helperText={ipHelperText}
|
|
@@ -34,7 +34,7 @@ export const getNetworkInitialValues = (
|
|
|
34
34
|
isClusterManagedNetworkingUnsupported: boolean,
|
|
35
35
|
): NetworkConfigurationValues => {
|
|
36
36
|
const isSNOCluster = isSNO(cluster);
|
|
37
|
-
const isDualStackType = isDualStack(cluster);
|
|
37
|
+
const isDualStackType = isDualStack({ ...cluster, openshiftVersion: cluster.openshiftVersion });
|
|
38
38
|
|
|
39
39
|
return {
|
|
40
40
|
apiVips: cluster.apiVips,
|
|
@@ -54,18 +54,25 @@ export const getNetworkInitialValues = (
|
|
|
54
54
|
cluster.clusterNetworks ||
|
|
55
55
|
(isDualStackType
|
|
56
56
|
? defaultNetworkValues.clusterNetworksDualstack
|
|
57
|
-
: defaultNetworkValues.clusterNetworksIpv4)
|
|
57
|
+
: defaultNetworkValues.clusterNetworksIpv4?.map((network) => ({
|
|
58
|
+
...network,
|
|
59
|
+
clusterId: cluster.id,
|
|
60
|
+
}))),
|
|
58
61
|
serviceNetworks:
|
|
59
62
|
cluster.serviceNetworks ||
|
|
60
63
|
(isDualStackType
|
|
61
64
|
? defaultNetworkValues.serviceNetworksDualstack
|
|
62
|
-
: defaultNetworkValues.serviceNetworksIpv4)
|
|
65
|
+
: defaultNetworkValues.serviceNetworksIpv4?.map((network) => ({
|
|
66
|
+
...network,
|
|
67
|
+
clusterId: cluster.id,
|
|
68
|
+
}))),
|
|
63
69
|
};
|
|
64
70
|
};
|
|
65
71
|
|
|
66
72
|
export const getNetworkConfigurationValidationSchema = (
|
|
67
73
|
initialValues: NetworkConfigurationValues,
|
|
68
74
|
hostSubnets: HostSubnets,
|
|
75
|
+
openshiftVersion?: string,
|
|
69
76
|
) =>
|
|
70
77
|
Yup.lazy((values: NetworkConfigurationValues) =>
|
|
71
78
|
Yup.object<NetworkConfigurationValues>().shape({
|
|
@@ -85,7 +92,7 @@ export const getNetworkConfigurationValidationSchema = (
|
|
|
85
92
|
otherwise: () =>
|
|
86
93
|
values.machineNetworks && values.machineNetworks?.length >= 2
|
|
87
94
|
? machineNetworksValidationSchema.concat(
|
|
88
|
-
dualStackValidationSchema('machine networks'),
|
|
95
|
+
dualStackValidationSchema('machine networks', openshiftVersion),
|
|
89
96
|
)
|
|
90
97
|
: Yup.array(),
|
|
91
98
|
}),
|
|
@@ -94,7 +101,9 @@ export const getNetworkConfigurationValidationSchema = (
|
|
|
94
101
|
then: () => clusterNetworksValidationSchema.concat(IPv4ValidationSchema),
|
|
95
102
|
otherwise: () =>
|
|
96
103
|
values.clusterNetworks && values.clusterNetworks?.length >= 2
|
|
97
|
-
? clusterNetworksValidationSchema.concat(
|
|
104
|
+
? clusterNetworksValidationSchema.concat(
|
|
105
|
+
dualStackValidationSchema('cluster network', openshiftVersion),
|
|
106
|
+
)
|
|
98
107
|
: Yup.array(),
|
|
99
108
|
}),
|
|
100
109
|
serviceNetworks: serviceNetworkValidationSchema.when('stackType', {
|
|
@@ -102,7 +111,9 @@ export const getNetworkConfigurationValidationSchema = (
|
|
|
102
111
|
then: () => serviceNetworkValidationSchema.concat(IPv4ValidationSchema),
|
|
103
112
|
otherwise: () =>
|
|
104
113
|
values.serviceNetworks && values.serviceNetworks?.length >= 2
|
|
105
|
-
? serviceNetworkValidationSchema.concat(
|
|
114
|
+
? serviceNetworkValidationSchema.concat(
|
|
115
|
+
dualStackValidationSchema('service network', openshiftVersion),
|
|
116
|
+
)
|
|
106
117
|
: Yup.array(),
|
|
107
118
|
}),
|
|
108
119
|
}),
|
|
@@ -58,7 +58,16 @@ export const ReviewNetworkingTable = ({ cluster }: { cluster: Cluster }) => {
|
|
|
58
58
|
)),
|
|
59
59
|
props: { 'data-testid': 'machine-networks' },
|
|
60
60
|
},
|
|
61
|
-
isDualStack(
|
|
61
|
+
isDualStack({ ...cluster, openshiftVersion: cluster.openshiftVersion })
|
|
62
|
+
? {
|
|
63
|
+
title: cluster.machineNetworks?.map((network, index) => (
|
|
64
|
+
<span key={network.cidr}>
|
|
65
|
+
{index === 0 ? 'Primary' : 'Secondary'}
|
|
66
|
+
<br />
|
|
67
|
+
</span>
|
|
68
|
+
)),
|
|
69
|
+
}
|
|
70
|
+
: { title: '' },
|
|
62
71
|
],
|
|
63
72
|
});
|
|
64
73
|
|
|
@@ -106,7 +115,14 @@ export const ReviewNetworkingTable = ({ cluster }: { cluster: Cluster }) => {
|
|
|
106
115
|
)),
|
|
107
116
|
props: { 'data-testid': 'cluster-network-cidr' },
|
|
108
117
|
},
|
|
109
|
-
isDualStack(cluster) && {
|
|
118
|
+
isDualStack({ ...cluster, openshiftVersion: cluster.openshiftVersion }) && {
|
|
119
|
+
title: cluster.clusterNetworks?.map((network, index) => (
|
|
120
|
+
<span key={network.cidr}>
|
|
121
|
+
{index === 0 ? 'Primary' : 'Secondary'}
|
|
122
|
+
<br />
|
|
123
|
+
</span>
|
|
124
|
+
)),
|
|
125
|
+
},
|
|
110
126
|
].filter(Boolean),
|
|
111
127
|
},
|
|
112
128
|
{
|
|
@@ -122,7 +138,14 @@ export const ReviewNetworkingTable = ({ cluster }: { cluster: Cluster }) => {
|
|
|
122
138
|
)),
|
|
123
139
|
props: { 'data-testid': 'cluster-network-prefix' },
|
|
124
140
|
},
|
|
125
|
-
isDualStack(cluster) && {
|
|
141
|
+
isDualStack({ ...cluster, openshiftVersion: cluster.openshiftVersion }) && {
|
|
142
|
+
title: cluster.clusterNetworks?.map((network, index) => (
|
|
143
|
+
<span key={network.hostPrefix}>
|
|
144
|
+
{index === 0 ? 'Primary' : 'Secondary'}
|
|
145
|
+
<br />
|
|
146
|
+
</span>
|
|
147
|
+
)),
|
|
148
|
+
},
|
|
126
149
|
].filter(Boolean),
|
|
127
150
|
},
|
|
128
151
|
{
|
|
@@ -138,7 +161,14 @@ export const ReviewNetworkingTable = ({ cluster }: { cluster: Cluster }) => {
|
|
|
138
161
|
)),
|
|
139
162
|
props: { 'data-testid': 'service-network-cidr' },
|
|
140
163
|
},
|
|
141
|
-
isDualStack(cluster) && {
|
|
164
|
+
isDualStack({ ...cluster, openshiftVersion: cluster.openshiftVersion }) && {
|
|
165
|
+
title: cluster.serviceNetworks?.map((network, index) => (
|
|
166
|
+
<span key={network.cidr}>
|
|
167
|
+
{index === 0 ? 'Primary' : 'Secondary'}
|
|
168
|
+
<br />
|
|
169
|
+
</span>
|
|
170
|
+
)),
|
|
171
|
+
},
|
|
142
172
|
].filter(Boolean),
|
|
143
173
|
},
|
|
144
174
|
{
|