@openshift-assisted/ui-lib 2.8.2-cim → 2.8.3-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/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/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.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 +1 -0
- package/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.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/validationSchemas.d.ts +5 -1
- package/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
- package/@types/common/config/constants.d.ts +1 -0
- 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/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/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/build/build.json +1 -1
- package/build/cim/components/Agent/BMCForm.js +1 -1
- package/build/cim/components/Agent/BMCForm.js.map +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDeploymentDetails.js +1 -1
- package/build/cim/components/ClusterDeployment/ClusterDeploymentDetails.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/helpers.js +42 -5
- 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 +10 -2
- package/build/cim/components/InfraEnv/InfraEnvFormPage.js.map +1 -1
- package/build/cim/components/modals/AddHostModal.js +1 -1
- 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 +5 -5
- package/build/common/components/clusterConfiguration/DiscoveryImageConfigForm.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/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 +2 -0
- 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 +1 -1
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetails.tsx +1 -0
- 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/helpers.ts +52 -5
- 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 +10 -2
- package/lib/cim/components/modals/AddHostModal.tsx +1 -0
- package/lib/cim/components/modals/EditProxyModal.tsx +15 -3
- package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +12 -9
- 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/UploadField.tsx +2 -3
- package/lib/common/components/ui/formik/validationSchemas.ts +33 -15
- package/lib/common/config/constants.ts +4 -0
- 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
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Button,
|
|
4
|
+
Modal,
|
|
5
|
+
ButtonVariant,
|
|
6
|
+
ModalVariant,
|
|
7
|
+
ModalBoxBody,
|
|
8
|
+
Spinner,
|
|
9
|
+
Title,
|
|
10
|
+
} from '@patternfly/react-core';
|
|
3
11
|
import { ExclamationTriangleIcon } from '@patternfly/react-icons';
|
|
4
12
|
import { global_warning_color_100 as globalWarningColor100 } from '@patternfly/react-tokens';
|
|
5
13
|
import { ToolbarButton } from './Toolbar';
|
|
@@ -12,17 +20,14 @@ import ErrorState from './uiState/ErrorState';
|
|
|
12
20
|
import './EventsModal.css';
|
|
13
21
|
import { useTranslation } from '../../hooks/use-translation-wrapper';
|
|
14
22
|
import { Trans } from 'react-i18next';
|
|
23
|
+
import { useStateSafely } from '../../hooks';
|
|
15
24
|
|
|
16
|
-
type EventsModalButtonProps = React.ComponentProps<typeof Button> &
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
entityKind: EventsEntityKind;
|
|
23
|
-
title: string;
|
|
24
|
-
fallbackEventsURL?: string;
|
|
25
|
-
};
|
|
25
|
+
type EventsModalButtonProps = React.ComponentProps<typeof Button> &
|
|
26
|
+
Omit<EventsModalProps, 'onClose' | 'isOpen' | 'hostId'> & {
|
|
27
|
+
ButtonComponent?: typeof Button | typeof ToolbarButton;
|
|
28
|
+
onClick?: () => void;
|
|
29
|
+
hostId?: Event['hostId'];
|
|
30
|
+
};
|
|
26
31
|
|
|
27
32
|
export const EventsModalButton = ({
|
|
28
33
|
ButtonComponent = ToolbarButton,
|
|
@@ -34,6 +39,7 @@ export const EventsModalButton = ({
|
|
|
34
39
|
children,
|
|
35
40
|
title,
|
|
36
41
|
fallbackEventsURL,
|
|
42
|
+
disablePagination,
|
|
37
43
|
...props
|
|
38
44
|
}: EventsModalButtonProps) => {
|
|
39
45
|
const [isModalOpen, setIsModalOpen] = React.useState(false);
|
|
@@ -53,6 +59,7 @@ export const EventsModalButton = ({
|
|
|
53
59
|
entityKind={entityKind}
|
|
54
60
|
onFetchEvents={onFetchEvents}
|
|
55
61
|
fallbackEventsURL={fallbackEventsURL}
|
|
62
|
+
disablePagination={disablePagination}
|
|
56
63
|
/>
|
|
57
64
|
</>
|
|
58
65
|
);
|
|
@@ -67,22 +74,26 @@ type EventsModalProps = {
|
|
|
67
74
|
isOpen: boolean;
|
|
68
75
|
title: string;
|
|
69
76
|
fallbackEventsURL?: string;
|
|
77
|
+
disablePagination?: boolean;
|
|
70
78
|
};
|
|
71
79
|
|
|
72
80
|
export const EventsModal = ({
|
|
73
|
-
onFetchEvents,
|
|
74
|
-
hostId,
|
|
75
|
-
cluster,
|
|
76
|
-
entityKind,
|
|
77
81
|
onClose,
|
|
78
82
|
isOpen,
|
|
79
83
|
title,
|
|
80
84
|
fallbackEventsURL,
|
|
85
|
+
...rest
|
|
81
86
|
}: EventsModalProps) => {
|
|
82
87
|
const { t } = useTranslation();
|
|
88
|
+
const [isLoading, setLoading] = useStateSafely(true);
|
|
89
|
+
|
|
83
90
|
return (
|
|
84
91
|
<Modal
|
|
85
|
-
|
|
92
|
+
header={
|
|
93
|
+
<Title headingLevel={'h1'}>
|
|
94
|
+
{title} {isLoading && <Spinner isSVG size="lg" />}
|
|
95
|
+
</Title>
|
|
96
|
+
}
|
|
86
97
|
isOpen={isOpen}
|
|
87
98
|
aria-label={t('ai:Displays events')}
|
|
88
99
|
hasNoBodyWrapper
|
|
@@ -111,13 +122,7 @@ export const EventsModal = ({
|
|
|
111
122
|
iconColor={globalWarningColor100.value}
|
|
112
123
|
/>
|
|
113
124
|
) : (
|
|
114
|
-
<EventListFetch
|
|
115
|
-
hostId={hostId}
|
|
116
|
-
cluster={cluster}
|
|
117
|
-
entityKind={entityKind}
|
|
118
|
-
onFetchEvents={onFetchEvents}
|
|
119
|
-
className="events-modal__event-list"
|
|
120
|
-
/>
|
|
125
|
+
<EventListFetch className="events-modal__event-list" setLoading={setLoading} {...rest} />
|
|
121
126
|
)}
|
|
122
127
|
</ModalBoxBody>
|
|
123
128
|
</Modal>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useField } from 'formik';
|
|
3
3
|
import { FormGroup, FileUpload, Stack, StackItem } from '@patternfly/react-core';
|
|
4
4
|
import { UploadFieldProps } from './types';
|
|
5
5
|
import { getFieldId } from './utils';
|
|
@@ -80,8 +80,7 @@ const UploadField: React.FC<UploadFieldProps> = ({
|
|
|
80
80
|
dropzoneProps={{
|
|
81
81
|
...dropzoneProps,
|
|
82
82
|
onDropRejected:
|
|
83
|
-
dropzoneProps?.onDropRejected &&
|
|
84
|
-
dropzoneProps?.onDropRejected(helpers as FieldHelperProps<string>),
|
|
83
|
+
dropzoneProps?.onDropRejected && dropzoneProps?.onDropRejected(helpers),
|
|
85
84
|
}}
|
|
86
85
|
allowEditingUploadedText={allowEdittingUploadedText}
|
|
87
86
|
/>
|
|
@@ -34,7 +34,7 @@ const BASE_DOMAIN_REGEX = /^([a-z0-9]+(-[a-z0-9]+)*)$/;
|
|
|
34
34
|
const DNS_NAME_REGEX_OCM = /^([a-z0-9]+(-[a-z0-9]+)*[.])+[a-z]{2,}$/;
|
|
35
35
|
|
|
36
36
|
const PROXY_DNS_REGEX =
|
|
37
|
-
/(^\.?([a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62}
|
|
37
|
+
/(^\.?([a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62}){1}(\.[a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62})+$)/;
|
|
38
38
|
const IP_V4_ZERO = '0.0.0.0';
|
|
39
39
|
const IP_V6_ZERO = '0000:0000:0000:0000:0000:0000:0000:0000';
|
|
40
40
|
const MAC_REGEX = /^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$/;
|
|
@@ -504,28 +504,46 @@ export const richHostnameValidationSchema = (
|
|
|
504
504
|
};
|
|
505
505
|
|
|
506
506
|
const httpProxyValidationMessage = 'Provide a valid HTTP URL.';
|
|
507
|
-
export const httpProxyValidationSchema = (
|
|
508
|
-
values
|
|
509
|
-
pairValueName
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
507
|
+
export const httpProxyValidationSchema = ({
|
|
508
|
+
values,
|
|
509
|
+
pairValueName,
|
|
510
|
+
allowEmpty,
|
|
511
|
+
}: {
|
|
512
|
+
values: ProxyFieldsType;
|
|
513
|
+
pairValueName: 'httpProxy' | 'httpsProxy';
|
|
514
|
+
allowEmpty?: boolean;
|
|
515
|
+
}) => {
|
|
516
|
+
const validation = Yup.string().test(
|
|
517
|
+
'http-proxy-validation',
|
|
518
|
+
httpProxyValidationMessage,
|
|
519
|
+
(value: string) => {
|
|
518
520
|
if (!value) {
|
|
519
521
|
return true;
|
|
520
522
|
}
|
|
521
523
|
|
|
524
|
+
if (!value.startsWith('http://')) {
|
|
525
|
+
return false;
|
|
526
|
+
}
|
|
527
|
+
|
|
522
528
|
try {
|
|
523
|
-
|
|
524
|
-
return url.protocol === 'http:';
|
|
529
|
+
new URL(value);
|
|
525
530
|
} catch {
|
|
526
531
|
return false;
|
|
527
532
|
}
|
|
528
|
-
|
|
533
|
+
return true;
|
|
534
|
+
},
|
|
535
|
+
);
|
|
536
|
+
|
|
537
|
+
if (allowEmpty) {
|
|
538
|
+
return validation;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
return validation.test(
|
|
542
|
+
'http-proxy-no-empty-validation',
|
|
543
|
+
'At least one of the HTTP or HTTPS proxy URLs is required.',
|
|
544
|
+
(value) => !values.enableProxy || !!value || !!values[pairValueName],
|
|
545
|
+
);
|
|
546
|
+
};
|
|
529
547
|
|
|
530
548
|
const isIPorDN = (value: string, dnsRegex = DNS_NAME_REGEX) => {
|
|
531
549
|
if (value.match(dnsRegex)) {
|
|
@@ -366,3 +366,7 @@ export const CHANGE_ISO_PASSWORD_FILE_LINK =
|
|
|
366
366
|
|
|
367
367
|
export const CUSTOM_MANIFESTS_HELP_LINK =
|
|
368
368
|
'https://docs.openshift.com/container-platform/4.12/installing/install_config/installing-customizing.html';
|
|
369
|
+
|
|
370
|
+
//TODO (mortegag): Change the link. Related to https://issues.redhat.com/browse/MGMT-13976
|
|
371
|
+
export const HOW_TO_KNOW_IF_CLUSTER_SUPPORTS_MULTIPLE_CPU_ARCHS =
|
|
372
|
+
'https://57587--docspreview.netlify.app/openshift-enterprise/latest/post_installation_configuration/multi-architecture-configuration.html#multi-architecture-verifying-cluster-compatibility_multi-architecture-configuration';
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { AxiosResponse } from 'axios';
|
|
2
1
|
import { Cluster, Event, EventList, V2Events } from '../api';
|
|
3
2
|
|
|
4
3
|
export type EventsEntityKind = 'cluster' | 'host';
|
|
@@ -16,12 +15,20 @@ export type EventFetchProps = {
|
|
|
16
15
|
cluster: Cluster;
|
|
17
16
|
};
|
|
18
17
|
|
|
18
|
+
type OnSuccessResponse = {
|
|
19
|
+
data: EventList;
|
|
20
|
+
totalEvents: number;
|
|
21
|
+
severities: Record<Event['severity'], number>;
|
|
22
|
+
};
|
|
23
|
+
|
|
19
24
|
export type EventListFetchProps = EventFetchProps & {
|
|
20
25
|
entityKind: EventsEntityKind;
|
|
21
26
|
onFetchEvents: (
|
|
22
27
|
params: V2Events,
|
|
23
|
-
onSuccess: (
|
|
28
|
+
onSuccess: (response: OnSuccessResponse) => void,
|
|
24
29
|
onError: (message: string) => void,
|
|
25
|
-
) =>
|
|
30
|
+
) => void;
|
|
26
31
|
className?: string;
|
|
32
|
+
setLoading: (loading: boolean) => void;
|
|
33
|
+
disablePagination?: boolean;
|
|
27
34
|
};
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import { Grid, GridItem } from '@patternfly/react-core';
|
|
1
|
+
import { Alert, Grid, GridItem } from '@patternfly/react-core';
|
|
2
2
|
import { Form, Formik } from 'formik';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import {
|
|
5
5
|
Cluster,
|
|
6
|
+
ClusterCpuArchitecture,
|
|
6
7
|
ClusterWizardStep,
|
|
7
8
|
ClusterWizardStepHeader,
|
|
8
9
|
CpuArchitecture,
|
|
9
10
|
ErrorState,
|
|
11
|
+
ExternalLink,
|
|
10
12
|
getSupportedCpuArchitectures,
|
|
13
|
+
HOW_TO_KNOW_IF_CLUSTER_SUPPORTS_MULTIPLE_CPU_ARCHS,
|
|
14
|
+
InfraEnv,
|
|
11
15
|
LoadingState,
|
|
16
|
+
SupportedCpuArchitecture,
|
|
12
17
|
useFeature,
|
|
13
18
|
} from '../../../../common';
|
|
14
19
|
import { HostsNetworkConfigurationType, InfraEnvsService } from '../../../services';
|
|
@@ -21,24 +26,50 @@ import Day2WizardFooter from './Day2WizardFooter';
|
|
|
21
26
|
import Day2HostStaticIpConfigurations from './Day2StaticIpHostConfigurations';
|
|
22
27
|
import { mapClusterCpuArchToInfraEnvCpuArch } from '../../../services/CpuArchitectureService';
|
|
23
28
|
import CpuArchitectureDropdown from '../../clusterConfiguration/CpuArchitectureDropdown';
|
|
24
|
-
import { useOpenshiftVersions } from '../../../hooks';
|
|
29
|
+
import { useOpenshiftVersions, usePullSecret } from '../../../hooks';
|
|
25
30
|
|
|
26
31
|
const getDay2ClusterDetailInitialValues = async (
|
|
27
32
|
clusterId: Cluster['id'],
|
|
28
33
|
day1CpuArchitecture: CpuArchitecture,
|
|
29
|
-
|
|
34
|
+
pullSecret?: string,
|
|
35
|
+
name?: string,
|
|
36
|
+
openshiftVersion?: string,
|
|
37
|
+
): Promise<Day2ClusterDetailValues | Error> => {
|
|
30
38
|
try {
|
|
31
39
|
const infraEnv = await InfraEnvsService.getInfraEnv(clusterId, day1CpuArchitecture);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
if (infraEnv && !(infraEnv instanceof Error)) {
|
|
41
|
+
return {
|
|
42
|
+
cpuArchitecture: day1CpuArchitecture as SupportedCpuArchitecture,
|
|
43
|
+
hostsNetworkConfigurationType: infraEnv.staticNetworkConfig
|
|
44
|
+
? HostsNetworkConfigurationType.STATIC
|
|
45
|
+
: HostsNetworkConfigurationType.DHCP,
|
|
46
|
+
};
|
|
47
|
+
} else {
|
|
48
|
+
//Create a new InfraEnv because is not found
|
|
49
|
+
if (pullSecret) {
|
|
50
|
+
const infraEnv = await InfraEnvsService.create({
|
|
51
|
+
name: InfraEnvsService.makeInfraEnvName(
|
|
52
|
+
day1CpuArchitecture as ClusterCpuArchitecture,
|
|
53
|
+
name,
|
|
54
|
+
),
|
|
55
|
+
pullSecret,
|
|
56
|
+
clusterId,
|
|
57
|
+
openshiftVersion,
|
|
58
|
+
cpuArchitecture: day1CpuArchitecture as ClusterCpuArchitecture,
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
cpuArchitecture: day1CpuArchitecture as SupportedCpuArchitecture,
|
|
62
|
+
hostsNetworkConfigurationType: infraEnv.staticNetworkConfig
|
|
63
|
+
? HostsNetworkConfigurationType.STATIC
|
|
64
|
+
: HostsNetworkConfigurationType.DHCP,
|
|
65
|
+
};
|
|
66
|
+
} else {
|
|
67
|
+
return new Error('Could not get infraEnv for this cpu architecture');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
39
70
|
} catch (error) {
|
|
40
71
|
handleApiError(error);
|
|
41
|
-
return
|
|
72
|
+
return new Error('Could not get infraEnv for this cpu architecture');
|
|
42
73
|
}
|
|
43
74
|
};
|
|
44
75
|
|
|
@@ -49,15 +80,16 @@ const Day2ClusterDetails = () => {
|
|
|
49
80
|
data: { cluster: day2Cluster },
|
|
50
81
|
} = day2DiscoveryImageDialog;
|
|
51
82
|
const wizardContext = useDay2WizardContext();
|
|
52
|
-
const [initialValues, setInitialValues] = React.useState<
|
|
53
|
-
Day2ClusterDetailValues | Error | null
|
|
54
|
-
>();
|
|
83
|
+
const [initialValues, setInitialValues] = React.useState<Day2ClusterDetailValues | null>(null);
|
|
55
84
|
const [isSubmitting, setSubmitting] = React.useState(false);
|
|
56
|
-
|
|
85
|
+
const [isAlternativeCpuSelected, setIsAlternativeCpuSelected] = React.useState(false);
|
|
57
86
|
const canSelectCpuArch = useFeature('ASSISTED_INSTALLER_MULTIARCH_SUPPORTED');
|
|
58
87
|
const { getCpuArchitectures } = useOpenshiftVersions();
|
|
59
88
|
const cpuArchitecturesByVersionImage = getCpuArchitectures(day2Cluster.openshiftVersion);
|
|
60
89
|
const day1CpuArchitecture = mapClusterCpuArchToInfraEnvCpuArch(day2Cluster.cpuArchitecture);
|
|
90
|
+
const [errorState, setErrorState] = React.useState<Error | null>(null);
|
|
91
|
+
const pullSecret = usePullSecret();
|
|
92
|
+
|
|
61
93
|
const cpuArchitectures = React.useMemo(
|
|
62
94
|
() =>
|
|
63
95
|
getSupportedCpuArchitectures(
|
|
@@ -72,13 +104,26 @@ const Day2ClusterDetails = () => {
|
|
|
72
104
|
const initialValues = await getDay2ClusterDetailInitialValues(
|
|
73
105
|
day2Cluster.id,
|
|
74
106
|
day1CpuArchitecture,
|
|
107
|
+
pullSecret,
|
|
108
|
+
day2Cluster.name,
|
|
109
|
+
day2Cluster.openshiftVersion,
|
|
75
110
|
);
|
|
76
111
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
77
112
|
// @ts-ignore
|
|
78
|
-
|
|
113
|
+
if (initialValues instanceof Error) {
|
|
114
|
+
setErrorState(initialValues);
|
|
115
|
+
} else {
|
|
116
|
+
setInitialValues(initialValues);
|
|
117
|
+
}
|
|
79
118
|
};
|
|
80
119
|
void fetchAndSetInitialValues();
|
|
81
|
-
}, [
|
|
120
|
+
}, [
|
|
121
|
+
day2Cluster.id,
|
|
122
|
+
day1CpuArchitecture,
|
|
123
|
+
pullSecret,
|
|
124
|
+
day2Cluster.name,
|
|
125
|
+
day2Cluster.openshiftVersion,
|
|
126
|
+
]);
|
|
82
127
|
|
|
83
128
|
const handleSubmit = React.useCallback(
|
|
84
129
|
async (values: Day2ClusterDetailValues) => {
|
|
@@ -102,10 +147,54 @@ const Day2ClusterDetails = () => {
|
|
|
102
147
|
[day2Cluster.id, wizardContext],
|
|
103
148
|
);
|
|
104
149
|
|
|
105
|
-
|
|
150
|
+
const changeCpuArchitectureDropdownAsync = React.useCallback(
|
|
151
|
+
async (value: string, initialValues: Day2ClusterDetailValues) => {
|
|
152
|
+
if (pullSecret === undefined) {
|
|
153
|
+
setErrorState(new Error('Pull secret is missing'));
|
|
154
|
+
} else {
|
|
155
|
+
if (value !== initialValues.cpuArchitecture) {
|
|
156
|
+
//Fetch infraEnv by clusterId and cpu architecture
|
|
157
|
+
let infraEnv: InfraEnv | Error;
|
|
158
|
+
try {
|
|
159
|
+
infraEnv = await InfraEnvsService.getInfraEnv(
|
|
160
|
+
day2Cluster.id,
|
|
161
|
+
value as SupportedCpuArchitecture,
|
|
162
|
+
);
|
|
163
|
+
if (!infraEnv || infraEnv instanceof Error) {
|
|
164
|
+
try {
|
|
165
|
+
infraEnv = await InfraEnvsService.create({
|
|
166
|
+
name: InfraEnvsService.makeInfraEnvName(
|
|
167
|
+
value as ClusterCpuArchitecture,
|
|
168
|
+
day2Cluster.name,
|
|
169
|
+
),
|
|
170
|
+
pullSecret,
|
|
171
|
+
clusterId: day2Cluster.id,
|
|
172
|
+
openshiftVersion: day2Cluster.openshiftVersion,
|
|
173
|
+
cpuArchitecture: value as ClusterCpuArchitecture,
|
|
174
|
+
});
|
|
175
|
+
} catch {
|
|
176
|
+
setErrorState(new Error('Could not get infraEnv for this cpu architecture'));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
} catch {
|
|
180
|
+
setErrorState(new Error('Could not get infraEnv for this cpu architecture'));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
setIsAlternativeCpuSelected(value !== initialValues.cpuArchitecture);
|
|
185
|
+
},
|
|
186
|
+
[day2Cluster.id, day2Cluster.name, day2Cluster.openshiftVersion, pullSecret],
|
|
187
|
+
);
|
|
188
|
+
const handleChangeCpuArchitectureDropdown = React.useCallback(
|
|
189
|
+
(value: string, initialValues: Day2ClusterDetailValues) =>
|
|
190
|
+
void changeCpuArchitectureDropdownAsync(value, initialValues),
|
|
191
|
+
[changeCpuArchitectureDropdownAsync],
|
|
192
|
+
);
|
|
193
|
+
|
|
194
|
+
if (initialValues === null) {
|
|
106
195
|
return <LoadingState />;
|
|
107
|
-
} else if (
|
|
108
|
-
return <ErrorState content=
|
|
196
|
+
} else if (errorState !== null) {
|
|
197
|
+
return <ErrorState content={errorState.message} />;
|
|
109
198
|
}
|
|
110
199
|
|
|
111
200
|
return (
|
|
@@ -129,13 +218,32 @@ const Day2ClusterDetails = () => {
|
|
|
129
218
|
<GridItem>
|
|
130
219
|
<ClusterWizardStepHeader>Cluster details</ClusterWizardStepHeader>
|
|
131
220
|
</GridItem>
|
|
132
|
-
<GridItem span={12}
|
|
221
|
+
<GridItem span={12} xl={10}>
|
|
133
222
|
<CpuArchitectureDropdown
|
|
134
223
|
openshiftVersion={day2Cluster.openshiftVersion}
|
|
135
224
|
day1CpuArchitecture={initialValues.cpuArchitecture}
|
|
136
225
|
cpuArchitectures={cpuArchitectures}
|
|
226
|
+
onChange={(value) => handleChangeCpuArchitectureDropdown(value, initialValues)}
|
|
137
227
|
/>
|
|
138
228
|
</GridItem>
|
|
229
|
+
{isAlternativeCpuSelected && (
|
|
230
|
+
<GridItem span={12} xl={10}>
|
|
231
|
+
<Alert
|
|
232
|
+
isInline
|
|
233
|
+
variant="info"
|
|
234
|
+
title={
|
|
235
|
+
'To check if the current version of your cluster supports multiple CPU architectures,'
|
|
236
|
+
}
|
|
237
|
+
>
|
|
238
|
+
<>
|
|
239
|
+
<ExternalLink href={HOW_TO_KNOW_IF_CLUSTER_SUPPORTS_MULTIPLE_CPU_ARCHS}>
|
|
240
|
+
follow these steps
|
|
241
|
+
</ExternalLink>
|
|
242
|
+
</>
|
|
243
|
+
</Alert>
|
|
244
|
+
</GridItem>
|
|
245
|
+
)}
|
|
246
|
+
|
|
139
247
|
<GridItem>
|
|
140
248
|
<Day2HostStaticIpConfigurations />
|
|
141
249
|
</GridItem>
|
|
@@ -13,7 +13,7 @@ const Day2DownloadISO = () => {
|
|
|
13
13
|
const wizardContext = useDay2WizardContext();
|
|
14
14
|
const isoDownloadUrl = wizardContext.selectedIsoUrl;
|
|
15
15
|
const ipxeDownloadUrl = wizardContext.selectedIpxeUrl;
|
|
16
|
-
const nameImageSuffix = `${cluster.name || ''}
|
|
16
|
+
const nameImageSuffix = `${cluster.name || ''}`;
|
|
17
17
|
return (
|
|
18
18
|
<ClusterWizardStep navigation={<Day2WizardNav />}>
|
|
19
19
|
<Stack hasGutter>
|
|
@@ -65,18 +65,23 @@ const Day2StaticIP = () => {
|
|
|
65
65
|
setInfraEnv(undefined);
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
if (infraEnv && !(infraEnv instanceof Error)) {
|
|
69
|
+
if (!infraEnv.staticNetworkConfig) {
|
|
70
|
+
// Make sure the infraEnv we store in the state has staticIP config
|
|
71
|
+
// This is required to be able to reuse the StaticIP services
|
|
72
|
+
infraEnv = await InfraEnvsService.setDummyStaticConfigToInfraEnv(infraEnv.id);
|
|
73
|
+
}
|
|
74
|
+
const staticIpInfo = getStaticIpInfo(infraEnv);
|
|
75
|
+
if (staticIpInfo) {
|
|
76
|
+
setInfraEnv(infraEnv);
|
|
77
|
+
setInitialStaticIpInfo(staticIpInfo);
|
|
78
|
+
} else {
|
|
79
|
+
setHasLoadError(true);
|
|
80
|
+
}
|
|
78
81
|
} else {
|
|
79
82
|
setHasLoadError(true);
|
|
83
|
+
setInfraEnv(undefined);
|
|
84
|
+
return;
|
|
80
85
|
}
|
|
81
86
|
};
|
|
82
87
|
void setCurrentStaticConfig();
|
|
@@ -18,6 +18,7 @@ import { AddHosts } from '../AddHosts';
|
|
|
18
18
|
import { HostsClusterDetailTabProps } from './types';
|
|
19
19
|
import { NewFeatureSupportLevelProvider } from '../newFeatureSupportLevels';
|
|
20
20
|
import useInfraEnv from '../../hooks/useInfraEnv';
|
|
21
|
+
import { mapOcmArchToCpuArchitecture } from '../../services/CpuArchitectureService';
|
|
21
22
|
|
|
22
23
|
export const HostsClusterDetailTabContent = ({
|
|
23
24
|
cluster: ocmCluster,
|
|
@@ -37,7 +38,12 @@ export const HostsClusterDetailTabContent = ({
|
|
|
37
38
|
|
|
38
39
|
const { infraEnv } = useInfraEnv(
|
|
39
40
|
ocmCluster.id ? ocmCluster.id : '',
|
|
40
|
-
|
|
41
|
+
ocmCluster.cpu_architecture
|
|
42
|
+
? (mapOcmArchToCpuArchitecture(ocmCluster.cpu_architecture) as CpuArchitecture)
|
|
43
|
+
: CpuArchitecture.USE_DAY1_ARCHITECTURE,
|
|
44
|
+
ocmCluster.name,
|
|
45
|
+
pullSecret,
|
|
46
|
+
ocmCluster.openshift_version,
|
|
41
47
|
);
|
|
42
48
|
React.useEffect(() => {
|
|
43
49
|
if (!isVisible && day2Cluster) {
|
|
@@ -106,8 +112,6 @@ export const HostsClusterDetailTabContent = ({
|
|
|
106
112
|
ocmCluster,
|
|
107
113
|
pullSecret,
|
|
108
114
|
normalizedVersion,
|
|
109
|
-
cpuArchitecturesByVersionImage,
|
|
110
|
-
canSelectCpuArch,
|
|
111
115
|
);
|
|
112
116
|
const aiCluster = Day2ClusterService.completeAiClusterWithOcmCluster(
|
|
113
117
|
day2Cluster,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Day2ClusterService from '../../services/Day2ClusterService';
|
|
2
1
|
import { getFeatureSupported } from '../featureSupportLevels/FeatureSupportLevelProvider';
|
|
3
2
|
import { OcmClusterType } from '../AddHosts/types';
|
|
3
|
+
import { AddHostsTabState } from './types';
|
|
4
4
|
|
|
5
5
|
const isSNOExpansionAllowed = (cluster: OcmClusterType) => {
|
|
6
6
|
return getFeatureSupported(
|
|
@@ -10,46 +10,52 @@ const isSNOExpansionAllowed = (cluster: OcmClusterType) => {
|
|
|
10
10
|
);
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return hiddenTabResult;
|
|
13
|
+
const makeState = (
|
|
14
|
+
state: 'hidden' | 'visible' | 'disabled',
|
|
15
|
+
tooltipMessage = '',
|
|
16
|
+
): AddHostsTabState => {
|
|
17
|
+
switch (state) {
|
|
18
|
+
case 'hidden':
|
|
19
|
+
return {
|
|
20
|
+
showTab: false,
|
|
21
|
+
isDisabled: false,
|
|
22
|
+
tabTooltip: '',
|
|
23
|
+
};
|
|
24
|
+
case 'visible':
|
|
25
|
+
return {
|
|
26
|
+
showTab: true,
|
|
27
|
+
isDisabled: false,
|
|
28
|
+
tabTooltip: tooltipMessage,
|
|
29
|
+
};
|
|
30
|
+
case 'disabled':
|
|
31
|
+
return {
|
|
32
|
+
showTab: true,
|
|
33
|
+
isDisabled: true,
|
|
34
|
+
tabTooltip: tooltipMessage,
|
|
35
|
+
};
|
|
37
36
|
}
|
|
37
|
+
};
|
|
38
38
|
|
|
39
|
+
export const getAddHostsTabState = (cluster: OcmClusterType): AddHostsTabState => {
|
|
40
|
+
const isClusterStateReady = /ready|installed/.test(cluster.state);
|
|
41
|
+
const wasInstalledUsingAssistedInstaller = cluster.product?.id === 'OCP-AssistedInstall';
|
|
39
42
|
// Checking if the Day1 cluster has reported metrics, so it can be determined if it's an SNO / multi node and has required information
|
|
40
|
-
// If that's not the case, we will still show the tab, and the content will be an ErrorState with an explanation message
|
|
41
43
|
const day1ClusterHostCount = cluster.metrics?.nodes?.total || 0;
|
|
42
|
-
if (day1ClusterHostCount === 0 || !Day2ClusterService.getOpenshiftClusterId(cluster)) {
|
|
43
|
-
return visibleTabResult;
|
|
44
|
-
}
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
if (isClusterStateReady && wasInstalledUsingAssistedInstaller) {
|
|
46
|
+
let tabState = makeState('visible');
|
|
47
|
+
if (day1ClusterHostCount === 1 && !isSNOExpansionAllowed(cluster)) {
|
|
48
|
+
// The cluster has metrics etc., but it's an SNO with an OpenshiftVersion that doesn't support Day2 flow
|
|
49
|
+
tabState = makeState(
|
|
50
|
+
'disabled',
|
|
51
|
+
'OpenShift version not supported for SNO expansion. Hosts cannot be added to an existing SNO cluster that was installed with any OpenShift version older than 4.11. Upgrade to a newer OpenShift version and try again.',
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return tabState;
|
|
56
|
+
} else {
|
|
57
|
+
// The cluster is not ready or was not installed using Assisted Installer.
|
|
58
|
+
// (see: https://issues.redhat.com/browse/HAC-3989)
|
|
59
|
+
return makeState('hidden');
|
|
51
60
|
}
|
|
52
|
-
|
|
53
|
-
// This is a cluster that supports the AI Day2 flow
|
|
54
|
-
return visibleTabResult;
|
|
55
61
|
};
|