@openshift-assisted/ui-lib 2.8.2-cim → 2.8.4-cim
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@types/cim/components/ClusterDeployment/ClusterDeploymentDetails.d.ts.map +1 -1
- package/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.d.ts +6 -1
- package/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.d.ts.map +1 -1
- package/@types/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.d.ts.map +1 -1
- package/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.d.ts.map +1 -1
- package/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsSelectionBasic.d.ts.map +1 -1
- package/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.d.ts.map +1 -1
- package/@types/cim/components/ClusterDeployment/ClusterDetailsFormFields.d.ts.map +1 -1
- package/@types/cim/components/ClusterDeployment/helpers.d.ts +1 -1
- package/@types/cim/components/ClusterDeployment/helpers.d.ts.map +1 -1
- package/@types/cim/components/ClusterDeployment/validationSchemas.d.ts.map +1 -1
- package/@types/cim/components/Hypershift/HostedClusterWizard/NetworkStep/types.d.ts +0 -1
- package/@types/cim/components/Hypershift/HostedClusterWizard/NetworkStep/types.d.ts.map +1 -1
- package/@types/cim/components/Hypershift/modals/ManageHostsModal.d.ts.map +1 -1
- package/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts +2 -0
- package/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts.map +1 -1
- package/@types/cim/components/helpers/versions.d.ts +1 -0
- package/@types/cim/components/helpers/versions.d.ts.map +1 -1
- package/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
- package/@types/cim/components/modals/EditProxyModal.d.ts.map +1 -1
- package/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts +5 -1
- package/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
- package/@types/common/components/clusterConfiguration/DownloadIso.d.ts +2 -1
- package/@types/common/components/clusterConfiguration/DownloadIso.d.ts.map +1 -1
- package/@types/common/components/clusterConfiguration/OpenShiftVersionSelect.d.ts +2 -0
- package/@types/common/components/clusterConfiguration/OpenShiftVersionSelect.d.ts.map +1 -1
- package/@types/common/components/clusterWizard/ClusterWizardStep.d.ts +1 -1
- package/@types/common/components/clusterWizard/ClusterWizardStep.d.ts.map +1 -1
- package/@types/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.d.ts.map +1 -1
- package/@types/common/components/fetching/EventListFetch.d.ts +1 -1
- package/@types/common/components/fetching/EventListFetch.d.ts.map +1 -1
- package/@types/common/components/hosts/TableToolbar.d.ts.map +1 -1
- package/@types/common/components/ui/ClusterEventsToolbar.d.ts.map +1 -1
- package/@types/common/components/ui/StaticTextField.d.ts +1 -1
- package/@types/common/components/ui/StaticTextField.d.ts.map +1 -1
- package/@types/common/components/ui/eventsModal.d.ts +4 -8
- package/@types/common/components/ui/eventsModal.d.ts.map +1 -1
- package/@types/common/components/ui/formik/UploadField.d.ts.map +1 -1
- package/@types/common/components/ui/formik/types.d.ts +2 -2
- package/@types/common/components/ui/formik/types.d.ts.map +1 -1
- package/@types/common/components/ui/formik/validationSchemas.d.ts +5 -1
- package/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
- package/@types/common/config/constants.d.ts +2 -1
- package/@types/common/config/constants.d.ts.map +1 -1
- package/@types/common/types/events.d.ts +9 -2
- package/@types/common/types/events.d.ts.map +1 -1
- package/@types/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.d.ts.map +1 -1
- package/@types/ocm/components/AddHosts/day2Wizard/Day2StaticIP.d.ts.map +1 -1
- package/@types/ocm/components/AddHosts/day2Wizard/Day2Wizard.d.ts.map +1 -1
- package/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.d.ts.map +1 -1
- package/@types/ocm/components/HostsClusterDetailTab/types.d.ts +5 -0
- package/@types/ocm/components/HostsClusterDetailTab/types.d.ts.map +1 -1
- package/@types/ocm/components/HostsClusterDetailTab/utils.d.ts +2 -7
- package/@types/ocm/components/HostsClusterDetailTab/utils.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts +2 -1
- package/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/DiscoveryImageForm.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.d.ts +1 -0
- package/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.d.ts.map +1 -1
- package/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts.map +1 -1
- package/@types/ocm/components/clusterDetail/AssistedInstallerDetailCard.d.ts.map +1 -1
- package/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts.map +1 -1
- package/@types/ocm/components/clusterWizard/ClusterWizardContextProvider.d.ts.map +1 -1
- package/@types/ocm/components/clusterWizard/wizardTransition.d.ts +2 -1
- package/@types/ocm/components/clusterWizard/wizardTransition.d.ts.map +1 -1
- package/@types/ocm/components/clusters/ClusterPage.d.ts.map +1 -1
- package/@types/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.d.ts.map +1 -1
- package/@types/ocm/components/fetching/fetchEvents.d.ts.map +1 -1
- package/@types/ocm/components/newFeatureSupportLevels/NewFeatureSupportLevelProvider.d.ts.map +1 -1
- package/@types/ocm/components/ui/OcmFormFields.d.ts +1 -1
- package/@types/ocm/hooks/useClusterCustomManifests.d.ts +1 -1
- package/@types/ocm/hooks/useClusterCustomManifests.d.ts.map +1 -1
- package/@types/ocm/hooks/useInfraEnv.d.ts +1 -1
- package/@types/ocm/hooks/useInfraEnv.d.ts.map +1 -1
- package/@types/ocm/hooks/useInfraEnvId.d.ts +1 -1
- package/@types/ocm/hooks/useInfraEnvId.d.ts.map +1 -1
- package/@types/ocm/selectors/clusters.d.ts +3 -3
- package/@types/ocm/services/Day2ClusterService.d.ts +3 -3
- package/@types/ocm/services/Day2ClusterService.d.ts.map +1 -1
- package/@types/ocm/services/InfraEnvIdsCacheService.d.ts +1 -1
- package/@types/ocm/services/InfraEnvIdsCacheService.d.ts.map +1 -1
- package/@types/ocm/services/InfraEnvsService.d.ts +4 -3
- package/@types/ocm/services/InfraEnvsService.d.ts.map +1 -1
- package/@types/ocm/services/apis/EventsAPI.d.ts +1 -0
- package/@types/ocm/services/apis/EventsAPI.d.ts.map +1 -1
- package/@types/ocm/store/slices/infraEnvs/selectors.d.ts +1 -1
- package/build/build.json +1 -1
- package/build/cim/components/Agent/BMCForm.js +2 -2
- package/build/cim/components/Agent/BMCForm.js.map +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDeploymentDetails.js +59 -56
- package/build/cim/components/ClusterDeployment/ClusterDeploymentDetails.js.map +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js +10 -6
- package/build/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js.map +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js +1 -9
- package/build/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js.map +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.js +1 -2
- package/build/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.js.map +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDeploymentHostsSelectionBasic.js +3 -10
- package/build/cim/components/ClusterDeployment/ClusterDeploymentHostsSelectionBasic.js.map +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.js +2 -2
- package/build/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.js.map +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDetailsFormFields.js +6 -2
- package/build/cim/components/ClusterDeployment/ClusterDetailsFormFields.js.map +1 -1
- package/build/cim/components/ClusterDeployment/helpers.js +46 -7
- package/build/cim/components/ClusterDeployment/helpers.js.map +1 -1
- package/build/cim/components/ClusterDeployment/use-networking-formik.js +2 -2
- package/build/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
- package/build/cim/components/ClusterDeployment/validationSchemas.js +0 -1
- package/build/cim/components/ClusterDeployment/validationSchemas.js.map +1 -1
- package/build/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.js +2 -2
- package/build/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.js.map +1 -1
- package/build/cim/components/Hypershift/modals/ManageHostsModal.js +1 -6
- package/build/cim/components/Hypershift/modals/ManageHostsModal.js.map +1 -1
- package/build/cim/components/Hypershift/utils/nodepool.js +5 -5
- package/build/cim/components/Hypershift/utils/nodepool.js.map +1 -1
- package/build/cim/components/InfraEnv/InfraEnvFormPage.js +13 -5
- package/build/cim/components/InfraEnv/InfraEnvFormPage.js.map +1 -1
- package/build/cim/components/helpers/versions.js +1 -0
- package/build/cim/components/helpers/versions.js.map +1 -1
- package/build/cim/components/modals/AddHostModal.js +4 -4
- package/build/cim/components/modals/AddHostModal.js.map +1 -1
- package/build/cim/components/modals/EditProxyModal.js +18 -7
- package/build/cim/components/modals/EditProxyModal.js.map +1 -1
- package/build/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +9 -9
- package/build/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
- package/build/common/components/clusterConfiguration/DownloadIso.js +2 -2
- package/build/common/components/clusterConfiguration/DownloadIso.js.map +1 -1
- package/build/common/components/clusterConfiguration/OpenShiftVersionSelect.js +2 -2
- package/build/common/components/clusterConfiguration/OpenShiftVersionSelect.js.map +1 -1
- package/build/common/components/clusterWizard/ClusterWizardStep.js +1 -1
- package/build/common/components/clusterWizard/ClusterWizardStep.js.map +1 -1
- package/build/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.js +5 -2
- package/build/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.js.map +1 -1
- package/build/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js +1 -1
- package/build/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js.map +1 -1
- package/build/common/components/fetching/EventListFetch.js +14 -25
- package/build/common/components/fetching/EventListFetch.js.map +1 -1
- package/build/common/components/hosts/TableToolbar.js +3 -3
- package/build/common/components/hosts/TableToolbar.js.map +1 -1
- package/build/common/components/hosts/status.js +1 -1
- package/build/common/components/hosts/status.js.map +1 -1
- package/build/common/components/ui/ClusterEventsToolbar.js +1 -1
- package/build/common/components/ui/ClusterEventsToolbar.js.map +1 -1
- package/build/common/components/ui/eventsModal.js +12 -6
- package/build/common/components/ui/eventsModal.js.map +1 -1
- package/build/common/components/ui/formik/CodeField.js +1 -1
- package/build/common/components/ui/formik/CodeField.js.map +1 -1
- package/build/common/components/ui/formik/SelectField.js +1 -1
- package/build/common/components/ui/formik/SelectField.js.map +1 -1
- package/build/common/components/ui/formik/UploadField.js +1 -2
- package/build/common/components/ui/formik/UploadField.js.map +1 -1
- package/build/common/components/ui/formik/validationSchemas.js +20 -13
- package/build/common/components/ui/formik/validationSchemas.js.map +1 -1
- package/build/common/config/constants.js +3 -1
- package/build/common/config/constants.js.map +1 -1
- package/build/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.js +94 -20
- package/build/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.js.map +1 -1
- package/build/ocm/components/AddHosts/day2Wizard/Day2DownloadISO.js +1 -1
- package/build/ocm/components/AddHosts/day2Wizard/Day2DownloadISO.js.map +1 -1
- package/build/ocm/components/AddHosts/day2Wizard/Day2StaticIP.js +16 -9
- package/build/ocm/components/AddHosts/day2Wizard/Day2StaticIP.js.map +1 -1
- package/build/ocm/components/AddHosts/day2Wizard/Day2Wizard.js +1 -1
- package/build/ocm/components/AddHosts/day2Wizard/Day2Wizard.js.map +1 -1
- package/build/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js +5 -2
- package/build/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js.map +1 -1
- package/build/ocm/components/HostsClusterDetailTab/utils.js +35 -29
- package/build/ocm/components/HostsClusterDetailTab/utils.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js +5 -4
- package/build/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/DiscoveryImageForm.js +3 -1
- package/build/ocm/components/clusterConfiguration/DiscoveryImageForm.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js +11 -8
- package/build/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js +49 -21
- package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.js +3 -9
- package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.js +37 -2
- package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js +16 -5
- package/build/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +5 -2
- package/build/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js +1 -2
- package/build/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js +27 -16
- package/build/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js.map +1 -1
- package/build/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegration.js +1 -1
- package/build/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegration.js.map +1 -1
- package/build/ocm/components/clusterDetail/AssistedInstallerDetailCard.js +7 -2
- package/build/ocm/components/clusterDetail/AssistedInstallerDetailCard.js.map +1 -1
- package/build/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js +7 -2
- package/build/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js.map +1 -1
- package/build/ocm/components/clusterWizard/ClusterWizardContextProvider.js +13 -3
- package/build/ocm/components/clusterWizard/ClusterWizardContextProvider.js.map +1 -1
- package/build/ocm/components/clusterWizard/wizardTransition.js +10 -2
- package/build/ocm/components/clusterWizard/wizardTransition.js.map +1 -1
- package/build/ocm/components/clusters/ClusterPage.js +10 -4
- package/build/ocm/components/clusters/ClusterPage.js.map +1 -1
- package/build/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js +5 -2
- package/build/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js.map +1 -1
- package/build/ocm/components/fetching/fetchEvents.js +25 -4
- package/build/ocm/components/fetching/fetchEvents.js.map +1 -1
- package/build/ocm/components/newFeatureSupportLevels/NewFeatureSupportLevelProvider.js +5 -2
- package/build/ocm/components/newFeatureSupportLevels/NewFeatureSupportLevelProvider.js.map +1 -1
- package/build/ocm/hooks/useClusterCustomManifests.js +5 -3
- package/build/ocm/hooks/useClusterCustomManifests.js.map +1 -1
- package/build/ocm/hooks/useInfraEnv.js +2 -2
- package/build/ocm/hooks/useInfraEnv.js.map +1 -1
- package/build/ocm/hooks/useInfraEnvId.js +18 -3
- package/build/ocm/hooks/useInfraEnvId.js.map +1 -1
- package/build/ocm/hooks/useInfraEnvImageUrl.js +1 -1
- package/build/ocm/hooks/useInfraEnvImageUrl.js.map +1 -1
- package/build/ocm/hooks/useInfraEnvIpxeImageUrl.js +1 -1
- package/build/ocm/hooks/useInfraEnvIpxeImageUrl.js.map +1 -1
- package/build/ocm/services/ClustersService.js +2 -2
- package/build/ocm/services/ClustersService.js.map +1 -1
- package/build/ocm/services/Day2ClusterService.js +11 -20
- package/build/ocm/services/Day2ClusterService.js.map +1 -1
- package/build/ocm/services/InfraEnvIdsCacheService.js +5 -4
- package/build/ocm/services/InfraEnvIdsCacheService.js.map +1 -1
- package/build/ocm/services/InfraEnvsService.js +7 -4
- package/build/ocm/services/InfraEnvsService.js.map +1 -1
- package/build/ocm/services/apis/EventsAPI.js +13 -1
- package/build/ocm/services/apis/EventsAPI.js.map +1 -1
- package/lib/cim/components/Agent/BMCForm.tsx +2 -2
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetails.tsx +112 -101
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.tsx +17 -5
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.tsx +1 -12
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.tsx +1 -2
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsSelectionBasic.tsx +2 -10
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.tsx +7 -2
- package/lib/cim/components/ClusterDeployment/ClusterDetailsFormFields.tsx +9 -2
- package/lib/cim/components/ClusterDeployment/helpers.ts +65 -15
- package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +2 -2
- package/lib/cim/components/ClusterDeployment/validationSchemas.ts +0 -1
- package/lib/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.tsx +2 -2
- package/lib/cim/components/Hypershift/HostedClusterWizard/NetworkStep/types.ts +0 -1
- package/lib/cim/components/Hypershift/modals/ManageHostsModal.tsx +1 -6
- package/lib/cim/components/Hypershift/utils/nodepool.ts +1 -1
- package/lib/cim/components/InfraEnv/InfraEnvFormPage.tsx +21 -4
- package/lib/cim/components/helpers/versions.ts +5 -0
- package/lib/cim/components/modals/AddHostModal.tsx +6 -0
- package/lib/cim/components/modals/EditProxyModal.tsx +15 -3
- package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +18 -13
- package/lib/common/components/clusterConfiguration/DownloadIso.tsx +3 -1
- package/lib/common/components/clusterConfiguration/OpenShiftVersionSelect.tsx +4 -1
- package/lib/common/components/clusterWizard/ClusterWizardStep.tsx +5 -1
- package/lib/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.tsx +11 -2
- package/lib/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.tsx +1 -1
- package/lib/common/components/fetching/EventListFetch.tsx +31 -41
- package/lib/common/components/hosts/TableToolbar.tsx +3 -3
- package/lib/common/components/hosts/status.tsx +1 -1
- package/lib/common/components/ui/ClusterEventsToolbar.tsx +3 -0
- package/lib/common/components/ui/StaticTextField.tsx +1 -1
- package/lib/common/components/ui/eventsModal.tsx +28 -23
- package/lib/common/components/ui/formik/CodeField.tsx +1 -1
- package/lib/common/components/ui/formik/SelectField.tsx +1 -1
- package/lib/common/components/ui/formik/UploadField.tsx +2 -3
- package/lib/common/components/ui/formik/types.ts +2 -1
- package/lib/common/components/ui/formik/validationSchemas.test.ts +6 -0
- package/lib/common/components/ui/formik/validationSchemas.ts +33 -15
- package/lib/common/config/constants.ts +6 -2
- package/lib/common/types/events.ts +10 -3
- package/lib/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.tsx +129 -21
- package/lib/ocm/components/AddHosts/day2Wizard/Day2DownloadISO.tsx +1 -1
- package/lib/ocm/components/AddHosts/day2Wizard/Day2StaticIP.tsx +15 -10
- package/lib/ocm/components/AddHosts/day2Wizard/Day2Wizard.tsx +1 -0
- package/lib/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.tsx +7 -3
- package/lib/ocm/components/HostsClusterDetailTab/types.ts +6 -0
- package/lib/ocm/components/HostsClusterDetailTab/utils.ts +43 -37
- package/lib/ocm/components/clusterConfiguration/CpuArchitectureDropdown.tsx +6 -3
- package/lib/ocm/components/clusterConfiguration/DiscoveryImageForm.tsx +9 -1
- package/lib/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.tsx +25 -16
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.tsx +69 -32
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.tsx +3 -14
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.tsx +59 -24
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx +29 -8
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +11 -2
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx +6 -13
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx +30 -32
- package/lib/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegration.tsx +1 -1
- package/lib/ocm/components/clusterDetail/AssistedInstallerDetailCard.tsx +14 -2
- package/lib/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.tsx +11 -2
- package/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx +20 -2
- package/lib/ocm/components/clusterWizard/wizardTransition.ts +13 -1
- package/lib/ocm/components/clusters/ClusterPage.tsx +19 -5
- package/lib/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.tsx +8 -2
- package/lib/ocm/components/fetching/fetchEvents.ts +31 -5
- package/lib/ocm/components/newFeatureSupportLevels/NewFeatureSupportLevelProvider.tsx +8 -2
- package/lib/ocm/hooks/useClusterCustomManifests.ts +9 -3
- package/lib/ocm/hooks/useInfraEnv.ts +10 -1
- package/lib/ocm/hooks/useInfraEnvId.ts +24 -4
- package/lib/ocm/hooks/useInfraEnvImageUrl.ts +1 -1
- package/lib/ocm/hooks/useInfraEnvIpxeImageUrl.ts +1 -1
- package/lib/ocm/services/ClustersService.ts +2 -2
- package/lib/ocm/services/Day2ClusterService.ts +12 -42
- package/lib/ocm/services/InfraEnvIdsCacheService.ts +9 -6
- package/lib/ocm/services/InfraEnvsService.ts +12 -13
- package/lib/ocm/services/apis/EventsAPI.ts +15 -1
- package/package.json +1 -1
|
@@ -50,8 +50,8 @@ export type OcmDiscoveryImageFormValues = OcmImageCreateParams &
|
|
|
50
50
|
const validationSchema = Yup.lazy<OcmDiscoveryImageFormValues>((values) =>
|
|
51
51
|
Yup.object<OcmDiscoveryImageFormValues>().shape({
|
|
52
52
|
sshPublicKey: sshPublicKeyListValidationSchema,
|
|
53
|
-
httpProxy: httpProxyValidationSchema(values, 'httpProxy'),
|
|
54
|
-
httpsProxy: httpProxyValidationSchema(values, 'httpsProxy'), // share the schema, httpS is currently not supported
|
|
53
|
+
httpProxy: httpProxyValidationSchema({ values, pairValueName: 'httpProxy' }),
|
|
54
|
+
httpsProxy: httpProxyValidationSchema({ values, pairValueName: 'httpsProxy' }), // share the schema, httpS is currently not supported
|
|
55
55
|
noProxy: noProxyValidationSchema,
|
|
56
56
|
}),
|
|
57
57
|
);
|
|
@@ -131,7 +131,7 @@ export const OcmDiscoveryImageConfigForm = ({
|
|
|
131
131
|
validationSchema={validationSchema}
|
|
132
132
|
onSubmit={handleSubmit}
|
|
133
133
|
>
|
|
134
|
-
{({ submitForm, isSubmitting, status }) => {
|
|
134
|
+
{({ submitForm, isSubmitting, status, setStatus }) => {
|
|
135
135
|
return (
|
|
136
136
|
<>
|
|
137
137
|
<ModalBoxBody>
|
|
@@ -142,7 +142,6 @@ export const OcmDiscoveryImageConfigForm = ({
|
|
|
142
142
|
|
|
143
143
|
<StackItem>
|
|
144
144
|
<Form>
|
|
145
|
-
<AlertFormikError status={status as StatusErrorType} />
|
|
146
145
|
<DiscoveryImageTypeDropdown
|
|
147
146
|
name="imageType"
|
|
148
147
|
defaultValue={discoveryImageTypes[imageTypeValue]}
|
|
@@ -161,18 +160,28 @@ export const OcmDiscoveryImageConfigForm = ({
|
|
|
161
160
|
</Stack>
|
|
162
161
|
</ModalBoxBody>
|
|
163
162
|
<ModalBoxFooter>
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
163
|
+
<Stack hasGutter style={{ width: '100%' }}>
|
|
164
|
+
<StackItem>
|
|
165
|
+
<AlertFormikError
|
|
166
|
+
status={status as StatusErrorType}
|
|
167
|
+
onClose={() => setStatus(undefined)}
|
|
168
|
+
/>
|
|
169
|
+
</StackItem>
|
|
170
|
+
<StackItem>
|
|
171
|
+
<Button
|
|
172
|
+
onClick={() => {
|
|
173
|
+
void submitForm();
|
|
174
|
+
}}
|
|
175
|
+
isDisabled={isSubmitting}
|
|
176
|
+
isLoading={isSubmitting}
|
|
177
|
+
>
|
|
178
|
+
{isSubmitting ? t('ai:Generating') : buttonText}
|
|
179
|
+
</Button>
|
|
180
|
+
<Button key="cancel" variant="link" onClick={onCancel}>
|
|
181
|
+
{t('ai:Cancel')}
|
|
182
|
+
</Button>
|
|
183
|
+
</StackItem>
|
|
184
|
+
</Stack>
|
|
176
185
|
</ModalBoxFooter>
|
|
177
186
|
</>
|
|
178
187
|
);
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import { useSelector } from 'react-redux';
|
|
3
|
-
import { Form } from '@patternfly/react-core';
|
|
3
|
+
import { Form, debounce } from '@patternfly/react-core';
|
|
4
4
|
import {
|
|
5
5
|
FieldArray,
|
|
6
6
|
FieldArrayRenderProps,
|
|
7
7
|
Formik,
|
|
8
8
|
FormikConfig,
|
|
9
|
+
FormikErrors,
|
|
10
|
+
FormikHelpers,
|
|
9
11
|
useFormikContext,
|
|
10
12
|
yupToFormErrors,
|
|
11
13
|
} from 'formik';
|
|
@@ -68,6 +70,33 @@ const getManifestDetails = (
|
|
|
68
70
|
};
|
|
69
71
|
};
|
|
70
72
|
|
|
73
|
+
const handleApiErrorInForm = (
|
|
74
|
+
manifests: CustomManifestValues[],
|
|
75
|
+
manifestsThatExists: CustomManifestValues[],
|
|
76
|
+
actions: FormikHelpers<ManifestFormData>,
|
|
77
|
+
) => {
|
|
78
|
+
const errors: FormikErrors<ManifestFormData> = {};
|
|
79
|
+
errors.manifests = [];
|
|
80
|
+
manifests.forEach((manifest) => {
|
|
81
|
+
(errors.manifests as FormikErrors<CustomManifestValues>[]).push({
|
|
82
|
+
fakeId: manifest.fakeId,
|
|
83
|
+
folder: '',
|
|
84
|
+
filename: '',
|
|
85
|
+
manifestYaml: '',
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
errors.manifests.forEach((errorManifest) => {
|
|
89
|
+
manifestsThatExists.forEach((updatedManifest) => {
|
|
90
|
+
if ((errorManifest as CustomManifestValues).fakeId === updatedManifest.fakeId) {
|
|
91
|
+
(errorManifest as CustomManifestValues).manifestYaml =
|
|
92
|
+
'Failed to update the existing manifest';
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
actions.setErrors(errors);
|
|
98
|
+
};
|
|
99
|
+
|
|
71
100
|
export const CustomManifestsForm = ({
|
|
72
101
|
onFormStateChange,
|
|
73
102
|
getEmptyValues,
|
|
@@ -78,36 +107,42 @@ export const CustomManifestsForm = ({
|
|
|
78
107
|
const { isViewerMode } = useSelector(selectCurrentClusterPermissionsState);
|
|
79
108
|
const [initialValues, setInitialValues] = React.useState<ManifestFormData | undefined>();
|
|
80
109
|
const { addAlert, clearAlerts } = useAlerts();
|
|
81
|
-
const
|
|
110
|
+
const [refreshFlag, setRefreshFlag] = React.useState<boolean>(true);
|
|
111
|
+
const { customManifests, isLoading, error } = useClusterCustomManifests(
|
|
112
|
+
cluster.id || '',
|
|
113
|
+
true,
|
|
114
|
+
refreshFlag,
|
|
115
|
+
);
|
|
82
116
|
React.useEffect(() => {
|
|
83
117
|
if (customManifests) {
|
|
84
118
|
setInitialValues(getInitialValues(customManifests));
|
|
85
119
|
}
|
|
86
120
|
}, [customManifests, getInitialValues]);
|
|
87
121
|
|
|
122
|
+
const refreshCustomManifests = () => {
|
|
123
|
+
setRefreshFlag((refreshFlag) => !refreshFlag);
|
|
124
|
+
};
|
|
125
|
+
|
|
88
126
|
const handleSubmit: FormikConfig<ManifestFormData>['onSubmit'] = React.useCallback(
|
|
89
127
|
async (values, actions) => {
|
|
90
128
|
clearAlerts();
|
|
91
129
|
actions.setSubmitting(true);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const newManifestsToCreate = manifestsModified.filter(
|
|
109
|
-
(manifest) => manifest.fakeId === '',
|
|
110
|
-
);
|
|
130
|
+
|
|
131
|
+
const manifests = values.manifests;
|
|
132
|
+
const manifestsModified = manifests.filter(
|
|
133
|
+
(manifest) =>
|
|
134
|
+
!customManifests?.some(
|
|
135
|
+
(customManifest) =>
|
|
136
|
+
customManifest.folder === manifest.folder &&
|
|
137
|
+
customManifest.fileName === manifest.filename &&
|
|
138
|
+
customManifest.yamlContent === manifest.manifestYaml,
|
|
139
|
+
),
|
|
140
|
+
);
|
|
141
|
+
if (cluster && manifestsModified.length > 0) {
|
|
142
|
+
//See if manifests exists previously to make a patch or create a new one
|
|
143
|
+
const manifestsThatExists = manifestsModified.filter((manifest) => manifest.fakeId !== '');
|
|
144
|
+
const newManifestsToCreate = manifestsModified.filter((manifest) => manifest.fakeId === '');
|
|
145
|
+
try {
|
|
111
146
|
const manifestsRequests = manifestsThatExists.map((updatedManifest) => {
|
|
112
147
|
const { folderName, fileName } = getManifestDetails(updatedManifest);
|
|
113
148
|
|
|
@@ -124,26 +159,28 @@ export const CustomManifestsForm = ({
|
|
|
124
159
|
);
|
|
125
160
|
});
|
|
126
161
|
await Promise.all(manifestsRequests);
|
|
127
|
-
|
|
162
|
+
refreshCustomManifests();
|
|
128
163
|
if (newManifestsToCreate.length > 0) {
|
|
129
164
|
await ClustersService.createClusterManifests(newManifestsToCreate, cluster?.id);
|
|
165
|
+
refreshCustomManifests();
|
|
130
166
|
}
|
|
167
|
+
} catch (e) {
|
|
168
|
+
handleApiErrorInForm(manifests, manifestsThatExists, actions);
|
|
169
|
+
handleApiError(e, () =>
|
|
170
|
+
addAlert({
|
|
171
|
+
title: 'Failed to update the custom manifests',
|
|
172
|
+
message: getApiErrorMessage(e),
|
|
173
|
+
}),
|
|
174
|
+
);
|
|
175
|
+
} finally {
|
|
176
|
+
actions.setSubmitting(false);
|
|
131
177
|
}
|
|
132
|
-
} catch (e) {
|
|
133
|
-
handleApiError(e, () =>
|
|
134
|
-
addAlert({
|
|
135
|
-
title: 'Failed to update the custom manifests',
|
|
136
|
-
message: getApiErrorMessage(e),
|
|
137
|
-
}),
|
|
138
|
-
);
|
|
139
|
-
} finally {
|
|
140
|
-
actions.setSubmitting(false);
|
|
141
178
|
}
|
|
142
179
|
},
|
|
143
180
|
[addAlert, clearAlerts, cluster, customManifests],
|
|
144
181
|
);
|
|
145
182
|
|
|
146
|
-
const onSubmit = isViewerMode ? () => Promise.resolve() : handleSubmit;
|
|
183
|
+
const onSubmit = isViewerMode ? () => Promise.resolve() : debounce(handleSubmit, 1000);
|
|
147
184
|
|
|
148
185
|
const validate = (values: ManifestFormData) => {
|
|
149
186
|
try {
|
package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.tsx
CHANGED
|
@@ -6,28 +6,17 @@ import {
|
|
|
6
6
|
HelperText,
|
|
7
7
|
FormGroup,
|
|
8
8
|
} from '@patternfly/react-core';
|
|
9
|
-
import { CaretDownIcon
|
|
9
|
+
import { CaretDownIcon } from '@patternfly/react-icons';
|
|
10
10
|
import { useField } from 'formik';
|
|
11
11
|
import { getFieldId } from '../../../../../common/components/ui/formik';
|
|
12
|
-
import {
|
|
12
|
+
import { PopoverIcon } from '../../../../../common';
|
|
13
13
|
|
|
14
14
|
const FolderLabel = () => {
|
|
15
15
|
return (
|
|
16
16
|
<>
|
|
17
17
|
Folder{' '}
|
|
18
18
|
<PopoverIcon
|
|
19
|
-
bodyContent={
|
|
20
|
-
<>
|
|
21
|
-
Use documentation to help you select the right folder for the manifest you want to add.{' '}
|
|
22
|
-
<a
|
|
23
|
-
href={CUSTOM_MANIFESTS_HELP_LINK as string}
|
|
24
|
-
target="_blank"
|
|
25
|
-
rel="noopener noreferrer"
|
|
26
|
-
>
|
|
27
|
-
{'Learn more'} <ExternalLinkAltIcon />
|
|
28
|
-
</a>
|
|
29
|
-
</>
|
|
30
|
-
}
|
|
19
|
+
bodyContent={<>To overwrite a manifest, select the folder the existing manifest is in.</>}
|
|
31
20
|
/>
|
|
32
21
|
</>
|
|
33
22
|
);
|
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
import * as Yup from 'yup';
|
|
2
2
|
import { UniqueStringArrayExtractor } from '../../staticIp/commonValidationSchemas';
|
|
3
3
|
import { CustomManifestValues, ManifestFormData } from '../data/dataTypes';
|
|
4
|
+
import { load } from 'js-yaml';
|
|
4
5
|
|
|
6
|
+
const MAX_FILE_SIZE = 100000; //100 kb
|
|
5
7
|
const FILENAME_REGEX = /^[^/]*\.(yaml|yml|json)$/;
|
|
6
8
|
const INCORRECT_FILENAME = 'Must have a yaml, yml or json extension and can not contain /.';
|
|
9
|
+
const INCORRECT_TYPE_FILE = 'File type is not supported. File type must be yaml, yml or json.';
|
|
10
|
+
const UNIQUE_FOLDER_FILENAME =
|
|
11
|
+
'Ensure unique file names within each folder to avoid conflicts and errors.';
|
|
7
12
|
|
|
8
13
|
export const getUniqueValidationSchema = <FormValues,>(
|
|
9
14
|
uniqueStringArrayExtractor: UniqueStringArrayExtractor<FormValues>,
|
|
10
15
|
) => {
|
|
11
|
-
return Yup.string().test(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
return values.length === setValues.size;
|
|
32
|
-
},
|
|
33
|
-
);
|
|
16
|
+
return Yup.string().test('unique', UNIQUE_FOLDER_FILENAME, function (value: string) {
|
|
17
|
+
const context = this.options.context as Yup.TestContext & { values?: FormValues };
|
|
18
|
+
if (!context || !context.values) {
|
|
19
|
+
return this.createError({
|
|
20
|
+
message: 'Unexpected error: Yup test context should contain form values',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const values = uniqueStringArrayExtractor(context.values, this, value);
|
|
25
|
+
|
|
26
|
+
const setValues = new Set(values);
|
|
27
|
+
|
|
28
|
+
if (!values) {
|
|
29
|
+
return this.createError({
|
|
30
|
+
message: 'Unexpected error: Failed to get values to test uniqueness',
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return values.length === setValues.size;
|
|
34
|
+
});
|
|
34
35
|
};
|
|
35
36
|
|
|
36
37
|
const getAllManifests: UniqueStringArrayExtractor<ManifestFormData> = (values: ManifestFormData) =>
|
|
@@ -49,7 +50,10 @@ export const getFormViewManifestsValidationSchema = Yup.lazy<ManifestFormData>((
|
|
|
49
50
|
return validateFileName(value);
|
|
50
51
|
})
|
|
51
52
|
.concat(getUniqueValidationSchema(getAllManifests)),
|
|
52
|
-
manifestYaml: Yup.string()
|
|
53
|
+
manifestYaml: Yup.string()
|
|
54
|
+
.required('Required')
|
|
55
|
+
.test('not-big-file', getMaxFileSizeMessage, validateFileSize)
|
|
56
|
+
.test('not-valid-file', INCORRECT_TYPE_FILE, validateFileType),
|
|
53
57
|
}),
|
|
54
58
|
),
|
|
55
59
|
}),
|
|
@@ -58,3 +62,34 @@ export const getFormViewManifestsValidationSchema = Yup.lazy<ManifestFormData>((
|
|
|
58
62
|
export const validateFileName = (fileName: string) => {
|
|
59
63
|
return new RegExp(FILENAME_REGEX).test((fileName || '').toString());
|
|
60
64
|
};
|
|
65
|
+
|
|
66
|
+
export const validateFileType = (value: string) => {
|
|
67
|
+
return isStringValidYAML(value) || isStringValidJSON(value);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const isStringValidYAML = (input: string): boolean => {
|
|
71
|
+
try {
|
|
72
|
+
load(input);
|
|
73
|
+
return true;
|
|
74
|
+
} catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const isStringValidJSON = (input: string): boolean => {
|
|
80
|
+
try {
|
|
81
|
+
JSON.parse(input);
|
|
82
|
+
return true;
|
|
83
|
+
} catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const validateFileSize = (value: string): boolean => {
|
|
89
|
+
const contentFile = new Blob([value], { type: 'text/plain;charset=utf-8' });
|
|
90
|
+
return contentFile.size <= MAX_FILE_SIZE;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const getMaxFileSizeMessage = (): string => {
|
|
94
|
+
return `File size is too big. Upload a new ${MAX_FILE_SIZE / 1000} or less.`;
|
|
95
|
+
};
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
CHANGED
|
@@ -21,11 +21,14 @@ const getNetworkLabelSuffix = (index: number, isDualStack: boolean) => {
|
|
|
21
21
|
return isDualStack ? ` (${index === 0 ? 'IPv4' : 'IPv6'})` : '';
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const
|
|
25
|
-
'
|
|
24
|
+
const IPv4PrefixPopoverText =
|
|
25
|
+
'For example, if Cluster Network Host Prefix is set to 23, then each node is assigned a /23 subnet out of the given cidr (clusterNetworkCIDR), which allows for 510 (2^(32 - 23) - 2) pod IPs addresses.';
|
|
26
26
|
|
|
27
|
-
const
|
|
28
|
-
'
|
|
27
|
+
const IPv6PrefixPopoverText =
|
|
28
|
+
'For example, if Cluster Network Host Prefix is set to 116, then each node is assigned a /116 subnet out of the given cidr (clusterNetworkCIDR), which allows for 4,094 (2^(128 - 116) - 2) pod IPs addresses.';
|
|
29
|
+
|
|
30
|
+
const ClusterPrefixHelperText =
|
|
31
|
+
'Defines how big the subnets for each individual node are out of the given CIDR. Must enter a whole number.';
|
|
29
32
|
|
|
30
33
|
const clusterCidrHelperText =
|
|
31
34
|
'The block must not overlap with existing physical networks. To access the Pods from an external network, configure load balancers and routers to manage the traffic.';
|
|
@@ -45,8 +48,18 @@ const AdvancedNetworkFields = () => {
|
|
|
45
48
|
|
|
46
49
|
const isSubnetIPv6 = (index: number) => (isDualStack ? !!index : false);
|
|
47
50
|
|
|
48
|
-
const
|
|
49
|
-
|
|
51
|
+
const clusterNetworkHostPrefixPopoverText = (index: number) => (
|
|
52
|
+
<>
|
|
53
|
+
<p>
|
|
54
|
+
The subnet prefix length to assign to each individual node.{' '}
|
|
55
|
+
{isSubnetIPv6(index) ? IPv6PrefixPopoverText : IPv4PrefixPopoverText}
|
|
56
|
+
</p>
|
|
57
|
+
<p>
|
|
58
|
+
If you are required to provide access to nodes from an external network, configure load
|
|
59
|
+
balancers and routers to manage the traffic.
|
|
60
|
+
</p>
|
|
61
|
+
</>
|
|
62
|
+
);
|
|
50
63
|
|
|
51
64
|
return (
|
|
52
65
|
<Grid hasGutter className="pf-u-ml-lg">
|
|
@@ -76,7 +89,15 @@ const AdvancedNetworkFields = () => {
|
|
|
76
89
|
<StackItem className={'network-field-group pf-u-pb-md'}>
|
|
77
90
|
<OcmInputField
|
|
78
91
|
name={`clusterNetworks.${index}.hostPrefix`}
|
|
79
|
-
label={
|
|
92
|
+
label={
|
|
93
|
+
<>
|
|
94
|
+
<span>Cluster network host prefix{networkSuffix} </span>
|
|
95
|
+
<PopoverIcon
|
|
96
|
+
bodyContent={clusterNetworkHostPrefixPopoverText(index)}
|
|
97
|
+
minWidth="30rem"
|
|
98
|
+
/>
|
|
99
|
+
</>
|
|
100
|
+
}
|
|
80
101
|
type={TextInputTypes.number}
|
|
81
102
|
min={clusterNetworkCidrPrefix(index)}
|
|
82
103
|
max={
|
|
@@ -84,7 +105,7 @@ const AdvancedNetworkFields = () => {
|
|
|
84
105
|
? PREFIX_MAX_RESTRICTION.IPv6
|
|
85
106
|
: PREFIX_MAX_RESTRICTION.IPv4
|
|
86
107
|
}
|
|
87
|
-
helperText={
|
|
108
|
+
helperText={ClusterPrefixHelperText}
|
|
88
109
|
isRequired
|
|
89
110
|
/>
|
|
90
111
|
</StackItem>
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx
CHANGED
|
@@ -38,7 +38,7 @@ import { captureException } from '../../../sentry';
|
|
|
38
38
|
import { ClustersService } from '../../../services';
|
|
39
39
|
import { setServerUpdateError, updateClusterBase } from '../../../reducers/clusters';
|
|
40
40
|
import { isUnknownServerError, getApiErrorMessage, handleApiError } from '../../../api';
|
|
41
|
-
import { useClusterSupportedPlatforms } from '../../../hooks';
|
|
41
|
+
import { useClusterSupportedPlatforms, usePullSecret } from '../../../hooks';
|
|
42
42
|
|
|
43
43
|
const NetworkConfigurationForm: React.FC<{
|
|
44
44
|
cluster: Cluster;
|
|
@@ -127,11 +127,20 @@ const NetworkConfigurationForm: React.FC<{
|
|
|
127
127
|
};
|
|
128
128
|
|
|
129
129
|
const NetworkConfigurationPage = ({ cluster }: { cluster: Cluster }) => {
|
|
130
|
+
const pullSecret = usePullSecret();
|
|
130
131
|
const {
|
|
131
132
|
infraEnv,
|
|
132
133
|
error: infraEnvError,
|
|
133
134
|
isLoading,
|
|
134
|
-
} = useInfraEnv(
|
|
135
|
+
} = useInfraEnv(
|
|
136
|
+
cluster.id,
|
|
137
|
+
cluster.cpuArchitecture
|
|
138
|
+
? (cluster.cpuArchitecture as CpuArchitecture)
|
|
139
|
+
: CpuArchitecture.USE_DAY1_ARCHITECTURE,
|
|
140
|
+
cluster.name,
|
|
141
|
+
pullSecret,
|
|
142
|
+
cluster.openshiftVersion,
|
|
143
|
+
);
|
|
135
144
|
const defaultNetworkValues = useDefaultConfiguration([
|
|
136
145
|
'clusterNetworksDualstack',
|
|
137
146
|
'clusterNetworksIpv4',
|
|
@@ -159,19 +159,12 @@ export const StackTypeControlGroup = ({
|
|
|
159
159
|
>
|
|
160
160
|
<Split>
|
|
161
161
|
<SplitItem>
|
|
162
|
-
<
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
<OcmRadioField
|
|
169
|
-
name={'stackType'}
|
|
170
|
-
value={IPV4_STACK}
|
|
171
|
-
isDisabled={!isDualStackSelectable}
|
|
172
|
-
label="IPv4 "
|
|
173
|
-
/>
|
|
174
|
-
</Tooltip>
|
|
162
|
+
<OcmRadioField
|
|
163
|
+
name={'stackType'}
|
|
164
|
+
value={IPV4_STACK}
|
|
165
|
+
isDisabled={!isDualStackSelectable}
|
|
166
|
+
label="IPv4 "
|
|
167
|
+
/>
|
|
175
168
|
</SplitItem>
|
|
176
169
|
<SplitItem>
|
|
177
170
|
<PopoverIcon
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
getVipValidationsById,
|
|
12
12
|
DUAL_STACK,
|
|
13
13
|
SupportLevel,
|
|
14
|
+
PopoverIcon,
|
|
14
15
|
} from '../../../../common';
|
|
15
16
|
import { selectCurrentClusterPermissionsState } from '../../../selectors';
|
|
16
17
|
import { OcmCheckboxField, OcmInputField } from '../../ui/OcmFormFields';
|
|
@@ -59,20 +60,6 @@ const VipStaticValue = ({
|
|
|
59
60
|
return <i>This IP will be allocated by the DHCP server</i>;
|
|
60
61
|
};
|
|
61
62
|
|
|
62
|
-
const getVipHelperSuffix = (
|
|
63
|
-
vip?: string,
|
|
64
|
-
vipDhcpAllocation?: boolean,
|
|
65
|
-
vipDhcpAllocationFormValue?: boolean,
|
|
66
|
-
): string => {
|
|
67
|
-
if (!vipDhcpAllocationFormValue) {
|
|
68
|
-
return 'Make sure that the VIP is unique and not used by any other device on your network.';
|
|
69
|
-
}
|
|
70
|
-
if (vipDhcpAllocation && vip) {
|
|
71
|
-
return 'This IP was allocated by the DHCP server.';
|
|
72
|
-
}
|
|
73
|
-
return '';
|
|
74
|
-
};
|
|
75
|
-
|
|
76
63
|
export type VirtualIPControlGroupProps = {
|
|
77
64
|
cluster: Cluster;
|
|
78
65
|
isVipDhcpAllocationDisabled?: boolean;
|
|
@@ -88,16 +75,9 @@ export const VirtualIPControlGroup = ({
|
|
|
88
75
|
const { isViewerMode } = useSelector(selectCurrentClusterPermissionsState);
|
|
89
76
|
const { t } = useTranslation();
|
|
90
77
|
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
values.vipDhcpAllocation,
|
|
95
|
-
)}`;
|
|
96
|
-
const ingressVipHelperText = `Provide an endpoint for application traffic flowing in from outside the cluster. If needed, contact your IT manager for more information. ${getVipHelperSuffix(
|
|
97
|
-
cluster.ingressVip,
|
|
98
|
-
cluster.vipDhcpAllocation,
|
|
99
|
-
values.vipDhcpAllocation,
|
|
100
|
-
)}`;
|
|
78
|
+
const ipHelperText = 'Make sure the IP is not used by any other device on your network.';
|
|
79
|
+
const ipPopoverContent =
|
|
80
|
+
'Provides an endpoint for users, both human and machine, to interact with and configure the platform.';
|
|
101
81
|
|
|
102
82
|
const {
|
|
103
83
|
'api-vip-defined': apiVipFailedValidationMessage,
|
|
@@ -150,9 +130,13 @@ export const VirtualIPControlGroup = ({
|
|
|
150
130
|
{values.vipDhcpAllocation ? (
|
|
151
131
|
<>
|
|
152
132
|
<FormikStaticField
|
|
153
|
-
label={
|
|
133
|
+
label={
|
|
134
|
+
<>
|
|
135
|
+
<span>API IP{ipFieldsSuffix}</span> <PopoverIcon bodyContent={ipPopoverContent} />
|
|
136
|
+
</>
|
|
137
|
+
}
|
|
154
138
|
name="apiVip"
|
|
155
|
-
helperText={
|
|
139
|
+
helperText={ipHelperText}
|
|
156
140
|
value={values.apiVip || ''}
|
|
157
141
|
isValid={!apiVipFailedValidationMessage}
|
|
158
142
|
isRequired
|
|
@@ -165,9 +149,14 @@ export const VirtualIPControlGroup = ({
|
|
|
165
149
|
/>
|
|
166
150
|
</FormikStaticField>
|
|
167
151
|
<FormikStaticField
|
|
168
|
-
label={
|
|
152
|
+
label={
|
|
153
|
+
<>
|
|
154
|
+
<span>Ingress IP{ipFieldsSuffix}</span>{' '}
|
|
155
|
+
<PopoverIcon bodyContent={ipPopoverContent} />
|
|
156
|
+
</>
|
|
157
|
+
}
|
|
169
158
|
name="ingressVip"
|
|
170
|
-
helperText={
|
|
159
|
+
helperText={ipHelperText}
|
|
171
160
|
value={values.ingressVip || ''}
|
|
172
161
|
isValid={!ingressVipFailedValidationMessage}
|
|
173
162
|
isRequired
|
|
@@ -183,15 +172,24 @@ export const VirtualIPControlGroup = ({
|
|
|
183
172
|
) : (
|
|
184
173
|
<>
|
|
185
174
|
<OcmInputField
|
|
186
|
-
label={
|
|
175
|
+
label={
|
|
176
|
+
<>
|
|
177
|
+
<span>API IP{ipFieldsSuffix}</span> <PopoverIcon bodyContent={ipPopoverContent} />
|
|
178
|
+
</>
|
|
179
|
+
}
|
|
187
180
|
name="apiVip"
|
|
188
|
-
helperText={
|
|
181
|
+
helperText={ipHelperText}
|
|
189
182
|
isRequired
|
|
190
183
|
/>
|
|
191
184
|
<OcmInputField
|
|
192
185
|
name="ingressVip"
|
|
193
|
-
label={
|
|
194
|
-
|
|
186
|
+
label={
|
|
187
|
+
<>
|
|
188
|
+
<span>Ingress IP{ipFieldsSuffix}</span>{' '}
|
|
189
|
+
<PopoverIcon bodyContent={ipPopoverContent} />
|
|
190
|
+
</>
|
|
191
|
+
}
|
|
192
|
+
helperText={ipHelperText}
|
|
195
193
|
isRequired
|
|
196
194
|
/>
|
|
197
195
|
</>
|
|
@@ -20,7 +20,7 @@ const nutanixPlatformMessage =
|
|
|
20
20
|
'Enable Nutanix platform integration to access features like node auto-scaling directly inside OpenShift.';
|
|
21
21
|
|
|
22
22
|
const platformIntegrationTooltip =
|
|
23
|
-
'
|
|
23
|
+
'Virtualization platform integration is only applicable on non-SNO deployments and when all discovered hosts originated from the same platform.';
|
|
24
24
|
|
|
25
25
|
const messages: KeyType = {
|
|
26
26
|
'no-active-integrations': undeterminedPlatformMessage,
|
|
@@ -28,6 +28,7 @@ import { SentryErrorMonitorContextProvider } from '../SentryErrorMonitorContextP
|
|
|
28
28
|
import ClusterWizardContextProvider from '../clusterWizard/ClusterWizardContextProvider';
|
|
29
29
|
import { BackButton } from '../ui/Buttons/BackButton';
|
|
30
30
|
import { NewFeatureSupportLevelProvider } from '../newFeatureSupportLevels';
|
|
31
|
+
import { usePullSecret } from '../../hooks';
|
|
31
32
|
|
|
32
33
|
type AssistedInstallerDetailCardProps = {
|
|
33
34
|
aiClusterId: string;
|
|
@@ -90,12 +91,21 @@ const AssistedInstallerDetailCard = ({
|
|
|
90
91
|
permissions,
|
|
91
92
|
}: AssistedInstallerDetailCardProps) => {
|
|
92
93
|
const { cluster, uiState } = useClusterPolling(aiClusterId);
|
|
94
|
+
const pullSecret = usePullSecret();
|
|
93
95
|
const {
|
|
94
96
|
infraEnv,
|
|
95
97
|
isLoading: infraEnvLoading,
|
|
96
98
|
error: infraEnvError,
|
|
97
99
|
updateInfraEnv,
|
|
98
|
-
} = useInfraEnv(
|
|
100
|
+
} = useInfraEnv(
|
|
101
|
+
aiClusterId,
|
|
102
|
+
cluster?.cpuArchitecture
|
|
103
|
+
? (cluster.cpuArchitecture as CpuArchitecture)
|
|
104
|
+
: CpuArchitecture.USE_DAY1_ARCHITECTURE,
|
|
105
|
+
cluster?.name,
|
|
106
|
+
pullSecret,
|
|
107
|
+
cluster?.openshiftVersion,
|
|
108
|
+
);
|
|
99
109
|
if (uiState === ResourceUIState.LOADING || infraEnvLoading) {
|
|
100
110
|
return <LoadingCard />;
|
|
101
111
|
} else if ((uiState === ResourceUIState.POLLING_ERROR && !cluster) || infraEnvError) {
|
|
@@ -151,7 +161,9 @@ const AssistedInstallerDetailCard = ({
|
|
|
151
161
|
|
|
152
162
|
const Wrapper = (props: AssistedInstallerDetailCardProps) => (
|
|
153
163
|
<Provider store={store}>
|
|
154
|
-
<
|
|
164
|
+
<AlertsContextProvider>
|
|
165
|
+
<AssistedInstallerDetailCard {...props} />
|
|
166
|
+
</AlertsContextProvider>
|
|
155
167
|
</Provider>
|
|
156
168
|
);
|
|
157
169
|
|