@openshift-assisted/ui-lib 2.9.8-cim → 2.9.9-cim
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.d.ts +6 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDetailsFormFields.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/versions.d.ts +1 -0
- package/build/@types/cim/components/helpers/versions.d.ts.map +1 -1
- package/build/@types/common/api/accounts-management-service/current-account-api.d.ts +6 -0
- package/build/@types/common/api/accounts-management-service/current-account-api.d.ts.map +1 -0
- package/build/@types/common/api/accounts-management-service/organizations-api.d.ts +6 -0
- package/build/@types/common/api/accounts-management-service/organizations-api.d.ts.map +1 -0
- package/build/@types/common/api/assisted-service/UISettingsAPI.d.ts +8 -0
- package/build/@types/common/api/assisted-service/UISettingsAPI.d.ts.map +1 -0
- package/build/@types/common/api/assisted-service/index.d.ts +1 -0
- package/build/@types/common/api/assisted-service/index.d.ts.map +1 -1
- package/build/@types/common/api/authorization-service/all-apis.d.ts +7 -0
- package/build/@types/common/api/authorization-service/all-apis.d.ts.map +1 -0
- package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.d.ts +3 -1
- package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/TangServers.d.ts +3 -1
- package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/TangServers.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/OpenShiftVersionSelect.d.ts +2 -0
- package/build/@types/common/components/clusterConfiguration/OpenShiftVersionSelect.d.ts.map +1 -1
- package/build/@types/common/components/clusterDetail/PostInstallAlert.d.ts +6 -0
- package/build/@types/common/components/clusterDetail/PostInstallAlert.d.ts.map +1 -0
- package/build/@types/common/components/clusterDetail/index.d.ts +1 -0
- package/build/@types/common/components/clusterDetail/index.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/ReviewValidations.d.ts.map +1 -1
- package/build/@types/common/components/ui/NoPermissionsError.d.ts +3 -0
- package/build/@types/common/components/ui/NoPermissionsError.d.ts.map +1 -0
- package/build/@types/common/components/ui/formik/InputField.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/RichInputField.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/types.d.ts +2 -2
- package/build/@types/common/components/ui/formik/types.d.ts.map +1 -1
- package/build/@types/common/components/ui/index.d.ts +1 -0
- package/build/@types/common/components/ui/index.d.ts.map +1 -1
- package/build/@types/common/config/constants.d.ts.map +1 -1
- package/build/@types/common/features/featureGate.d.ts +1 -1
- package/build/@types/common/features/featureGate.d.ts.map +1 -1
- package/build/@types/common/types/cpuArchitecture.d.ts +1 -1
- package/build/@types/common/types/cpuArchitecture.d.ts.map +1 -1
- package/build/@types/ocm/components/AddHosts/AddHosts.d.ts.map +1 -1
- package/build/@types/ocm/components/AddHosts/InventoryAddHost.d.ts +1 -2
- package/build/@types/ocm/components/AddHosts/InventoryAddHost.d.ts.map +1 -1
- package/build/@types/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.d.ts.map +1 -1
- package/build/@types/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.d.ts +3 -1
- package/build/@types/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.d.ts.map +1 -1
- package/build/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.d.ts.map +1 -1
- package/build/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContentErrors.d.ts +1 -4
- package/build/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContentErrors.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts +3 -2
- package/build/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/CustomManifestCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/OcmBaseDomainField.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/OcmBaseDomainField.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.d.ts +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.d.ts +3 -4
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/data/dataTypes.d.ts +0 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/data/dataTypes.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterDetailStatusMessages.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterDetails.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterDetailsForm.d.ts +1 -2
- package/build/@types/ocm/components/clusterWizard/ClusterDetailsForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterWizardContext.d.ts +5 -3
- package/build/@types/ocm/components/clusterWizard/ClusterWizardContext.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterWizardContextProvider.d.ts.map +1 -1
- package/build/@types/ocm/components/ui/OcmFormFields.d.ts +1 -1
- package/build/@types/ocm/hooks/index.d.ts +1 -0
- package/build/@types/ocm/hooks/index.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useOpenshiftVersions.d.ts +1 -2
- package/build/@types/ocm/hooks/useOpenshiftVersions.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useSupportLevelsAPI.d.ts +4 -4
- package/build/@types/ocm/hooks/useSupportLevelsAPI.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useUISettings.d.ts +10 -0
- package/build/@types/ocm/hooks/useUISettings.d.ts.map +1 -0
- package/build/@types/ocm/services/ClusterDetailsService.d.ts +2 -1
- package/build/@types/ocm/services/ClusterDetailsService.d.ts.map +1 -1
- package/build/@types/ocm/services/ClustersService.d.ts +0 -1
- package/build/@types/ocm/services/ClustersService.d.ts.map +1 -1
- package/build/@types/ocm/services/Day2ClusterService.d.ts +3 -2
- package/build/@types/ocm/services/Day2ClusterService.d.ts.map +1 -1
- package/build/@types/ocm/services/UISettingsService.d.ts +8 -0
- package/build/@types/ocm/services/UISettingsService.d.ts.map +1 -0
- package/build/@types/ocm/services/index.d.ts +1 -0
- package/build/@types/ocm/services/index.d.ts.map +1 -1
- package/build/@types/ocm/services/types.d.ts +4 -0
- package/build/@types/ocm/services/types.d.ts.map +1 -1
- package/build/cjs/cim/components/Agent/BMCForm.js +3 -3
- package/build/cjs/cim/components/Agent/BMCForm.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js +9 -5
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js +6 -2
- package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/cim/components/helpers/versions.js +3 -1
- package/build/cjs/cim/components/helpers/versions.js.map +1 -1
- package/build/cjs/common/api/accounts-management-service/access-token-api.js +1 -1
- package/build/cjs/common/api/accounts-management-service/current-account-api.js +17 -0
- package/build/cjs/common/api/accounts-management-service/current-account-api.js.map +1 -0
- package/build/cjs/common/api/accounts-management-service/organizations-api.js +19 -0
- package/build/cjs/common/api/accounts-management-service/organizations-api.js.map +1 -0
- package/build/cjs/common/api/assisted-service/UISettingsAPI.js +21 -0
- package/build/cjs/common/api/assisted-service/UISettingsAPI.js.map +1 -0
- package/build/cjs/common/api/assisted-service/index.js +3 -1
- package/build/cjs/common/api/assisted-service/index.js.map +1 -1
- package/build/cjs/common/api/authorization-service/all-apis.js +23 -0
- package/build/cjs/common/api/authorization-service/all-apis.js.map +1 -0
- package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.js +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.js +6 -4
- package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/TangServers.js +5 -3
- package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/TangServers.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/OpenShiftVersionSelect.js +2 -2
- package/build/cjs/common/components/clusterConfiguration/OpenShiftVersionSelect.js.map +1 -1
- package/build/cjs/common/components/clusterDetail/PostInstallAlert.js +16 -0
- package/build/cjs/common/components/clusterDetail/PostInstallAlert.js.map +1 -0
- package/build/cjs/common/components/clusterDetail/index.js +3 -1
- package/build/cjs/common/components/clusterDetail/index.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/ReviewValidations.js +3 -0
- package/build/cjs/common/components/clusterWizard/ReviewValidations.js.map +1 -1
- package/build/cjs/common/components/ui/NoPermissionsError.js +14 -0
- package/build/cjs/common/components/ui/NoPermissionsError.js.map +1 -0
- package/build/cjs/common/components/ui/formik/InputField.js +5 -5
- package/build/cjs/common/components/ui/formik/InputField.js.map +1 -1
- package/build/cjs/common/components/ui/formik/RichInputField.js +5 -2
- package/build/cjs/common/components/ui/formik/RichInputField.js.map +1 -1
- package/build/cjs/common/components/ui/formik/SelectField.js +1 -1
- package/build/cjs/common/components/ui/formik/SelectField.js.map +1 -1
- package/build/cjs/common/components/ui/index.js +3 -1
- package/build/cjs/common/components/ui/index.js.map +1 -1
- package/build/cjs/common/config/constants.js +1 -0
- package/build/cjs/common/config/constants.js.map +1 -1
- package/build/cjs/common/features/featureGate.js +1 -3
- package/build/cjs/common/features/featureGate.js.map +1 -1
- package/build/cjs/common/types/cpuArchitecture.js +5 -9
- package/build/cjs/common/types/cpuArchitecture.js.map +1 -1
- package/build/cjs/ocm/components/AddHosts/AddHosts.js +1 -2
- package/build/cjs/ocm/components/AddHosts/AddHosts.js.map +1 -1
- package/build/cjs/ocm/components/AddHosts/InventoryAddHost.js +2 -2
- package/build/cjs/ocm/components/AddHosts/InventoryAddHost.js.map +1 -1
- package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.js +4 -4
- package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.js.map +1 -1
- package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.js +7 -6
- package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.js.map +1 -1
- package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js +3 -20
- package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js.map +1 -1
- package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContentErrors.js +1 -13
- package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContentErrors.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js +24 -3
- package/build/cjs/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/CustomManifestCheckbox.js +22 -32
- package/build/cjs/ocm/components/clusterConfiguration/CustomManifestCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmBaseDomainField.js +7 -5
- package/build/cjs/ocm/components/clusterConfiguration/OcmBaseDomainField.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js +3 -4
- package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js +6 -12
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifests.js +2 -2
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifests.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsArray.js +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsArray.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js +49 -123
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.js +1 -0
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.js +14 -19
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js +2 -7
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js +5 -12
- package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js +18 -13
- package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterWizardContext.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterWizardContextProvider.js +45 -36
- package/build/cjs/ocm/components/clusterWizard/ClusterWizardContextProvider.js.map +1 -1
- package/build/cjs/ocm/hooks/index.js +3 -1
- package/build/cjs/ocm/hooks/index.js.map +1 -1
- package/build/cjs/ocm/hooks/useOpenshiftVersions.js +0 -5
- package/build/cjs/ocm/hooks/useOpenshiftVersions.js.map +1 -1
- package/build/cjs/ocm/hooks/useSupportLevelsAPI.js +34 -1
- package/build/cjs/ocm/hooks/useSupportLevelsAPI.js.map +1 -1
- package/build/cjs/ocm/hooks/useUISettings.js +62 -0
- package/build/cjs/ocm/hooks/useUISettings.js.map +1 -0
- package/build/cjs/ocm/services/ClusterDetailsService.js +2 -2
- package/build/cjs/ocm/services/ClusterDetailsService.js.map +1 -1
- package/build/cjs/ocm/services/ClustersService.js +0 -8
- package/build/cjs/ocm/services/ClustersService.js.map +1 -1
- package/build/cjs/ocm/services/Day2ClusterService.js +13 -4
- package/build/cjs/ocm/services/Day2ClusterService.js.map +1 -1
- package/build/cjs/ocm/services/UISettingsService.js +18 -0
- package/build/cjs/ocm/services/UISettingsService.js.map +1 -0
- package/build/cjs/ocm/services/index.js +3 -1
- package/build/cjs/ocm/services/index.js.map +1 -1
- package/lib/cim/components/Agent/BMCForm.tsx +3 -3
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.tsx +17 -5
- package/lib/cim/components/ClusterDeployment/ClusterDetailsFormFields.tsx +9 -2
- package/lib/cim/components/helpers/versions.ts +5 -0
- package/lib/common/api/accounts-management-service/access-token-api.ts +1 -1
- package/lib/common/api/accounts-management-service/current-account-api.ts +13 -0
- package/lib/common/api/accounts-management-service/organizations-api.ts +15 -0
- package/lib/common/api/assisted-service/UISettingsAPI.ts +24 -0
- package/lib/common/api/assisted-service/index.ts +1 -0
- package/lib/common/api/authorization-service/all-apis.ts +28 -0
- package/lib/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.tsx +5 -1
- package/lib/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.tsx +27 -16
- package/lib/common/components/clusterConfiguration/DiskEncryptionFields/TangServers.tsx +27 -17
- package/lib/common/components/clusterConfiguration/OpenShiftVersionSelect.tsx +4 -1
- package/lib/common/components/clusterDetail/PostInstallAlert.tsx +29 -0
- package/lib/common/components/clusterDetail/index.ts +1 -0
- package/lib/common/components/clusterWizard/ReviewValidations.tsx +3 -0
- package/lib/common/components/ui/NoPermissionsError.tsx +19 -0
- package/lib/common/components/ui/formik/InputField.tsx +4 -5
- package/lib/common/components/ui/formik/RichInputField.tsx +6 -2
- package/lib/common/components/ui/formik/SelectField.tsx +1 -1
- package/lib/common/components/ui/formik/types.ts +2 -1
- package/lib/common/components/ui/index.ts +1 -0
- package/lib/common/config/constants.ts +1 -0
- package/lib/common/features/featureGate.tsx +0 -4
- package/lib/common/types/cpuArchitecture.ts +3 -8
- package/lib/ocm/components/AddHosts/AddHosts.tsx +1 -3
- package/lib/ocm/components/AddHosts/InventoryAddHost.tsx +2 -8
- package/lib/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.tsx +6 -11
- package/lib/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.tsx +34 -19
- package/lib/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.tsx +4 -36
- package/lib/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContentErrors.tsx +1 -15
- package/lib/ocm/components/clusterConfiguration/CpuArchitectureDropdown.tsx +58 -3
- package/lib/ocm/components/clusterConfiguration/CustomManifestCheckbox.tsx +25 -32
- package/lib/ocm/components/clusterConfiguration/OcmBaseDomainField.tsx +23 -12
- package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +4 -5
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.tsx +20 -27
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifests.tsx +3 -3
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsArray.tsx +2 -2
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.tsx +69 -182
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.tsx +1 -1
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.tsx +9 -15
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/data/dataTypes.ts +0 -1
- package/lib/ocm/components/clusterDetail/ClusterDetailStatusMessages.tsx +2 -16
- package/lib/ocm/components/clusterWizard/ClusterDetails.tsx +9 -16
- package/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx +18 -16
- package/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx +5 -3
- package/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx +75 -54
- package/lib/ocm/hooks/index.ts +1 -0
- package/lib/ocm/hooks/useOpenshiftVersions.tsx +1 -15
- package/lib/ocm/hooks/useSupportLevelsAPI.ts +54 -2
- package/lib/ocm/hooks/useUISettings.ts +71 -0
- package/lib/ocm/services/ClusterDetailsService.ts +3 -1
- package/lib/ocm/services/ClustersService.ts +0 -10
- package/lib/ocm/services/Day2ClusterService.ts +17 -3
- package/lib/ocm/services/UISettingsService.ts +17 -0
- package/lib/ocm/services/index.ts +1 -0
- package/lib/ocm/services/types.ts +5 -0
- package/package.json +3 -3
|
@@ -152,7 +152,7 @@ const getValidationSchema = (usedHostnames: string[], origHostname: string, t: T
|
|
|
152
152
|
return Yup.object({
|
|
153
153
|
name: Yup.string().required(t('ai:Required field')),
|
|
154
154
|
hostname: richNameValidationSchema(t, usedHostnames, origHostname),
|
|
155
|
-
bmcAddress: bmcAddressValidationSchema(t)
|
|
155
|
+
bmcAddress: bmcAddressValidationSchema(t),
|
|
156
156
|
username: Yup.string().required(t('ai:Required field')),
|
|
157
157
|
password: Yup.string().required(t('ai:Required field')),
|
|
158
158
|
bootMACAddress: macAddressValidationSchema,
|
|
@@ -278,7 +278,7 @@ const BMCForm: React.FC<BMCFormProps> = ({
|
|
|
278
278
|
name="bootMACAddress"
|
|
279
279
|
placeholder={t('ai:Enter an address')}
|
|
280
280
|
description={t(
|
|
281
|
-
"ai:The MAC address of the host's network connected NIC that
|
|
281
|
+
"ai:The MAC address of the host's network connected NIC that will be used to provision the host. Required for libvirt VMs driven by vbmc.",
|
|
282
282
|
)}
|
|
283
283
|
/>
|
|
284
284
|
<InputField
|
|
@@ -301,7 +301,7 @@ const BMCForm: React.FC<BMCFormProps> = ({
|
|
|
301
301
|
name="nmState"
|
|
302
302
|
language={Language.yaml}
|
|
303
303
|
description={t(
|
|
304
|
-
'ai:Upload a YAML file in NMstate format that includes your network configuration (static IPs, bonds, etc.).',
|
|
304
|
+
'ai:Upload a YAML file in NMstate format (not the entire NMstate config CR) that includes your network configuration (static IPs, bonds, etc.).',
|
|
305
305
|
)}
|
|
306
306
|
/>
|
|
307
307
|
<MacMapping />
|
|
@@ -17,7 +17,7 @@ import { ClusterDeploymentDetailsStepProps, ClusterDeploymentDetailsValues } fro
|
|
|
17
17
|
import ClusterDeploymentWizardFooter from './ClusterDeploymentWizardFooter';
|
|
18
18
|
import ClusterDeploymentWizardContext from './ClusterDeploymentWizardContext';
|
|
19
19
|
import ClusterDeploymentWizardStep from './ClusterDeploymentWizardStep';
|
|
20
|
-
import { getAICluster, getOCPVersions } from '../helpers';
|
|
20
|
+
import { getAICluster, getNetworkType, getOCPVersions } from '../helpers';
|
|
21
21
|
import {
|
|
22
22
|
AgentClusterInstallK8sResource,
|
|
23
23
|
AgentK8sResource,
|
|
@@ -47,7 +47,10 @@ export const useDetailsFormik = ({
|
|
|
47
47
|
usedClusterNames,
|
|
48
48
|
infraEnv,
|
|
49
49
|
isNutanix,
|
|
50
|
-
}: UseDetailsFormikArgs): [
|
|
50
|
+
}: UseDetailsFormikArgs): [
|
|
51
|
+
ClusterDetailsValues & { networkType: 'OpenShiftSDN' | 'OVNKubernetes' },
|
|
52
|
+
Lazy,
|
|
53
|
+
] => {
|
|
51
54
|
const { t } = useTranslation();
|
|
52
55
|
const featureSupportLevels = useFeatureSupportLevel();
|
|
53
56
|
const ocpVersions = getOCPVersions(clusterImages, isNutanix);
|
|
@@ -64,12 +67,21 @@ export const useDetailsFormik = ({
|
|
|
64
67
|
[agentClusterInstall, clusterDeployment, agents, infraEnv],
|
|
65
68
|
);
|
|
66
69
|
const initialValues = React.useMemo(
|
|
67
|
-
() =>
|
|
68
|
-
getClusterDetailsInitialValues({
|
|
70
|
+
() => {
|
|
71
|
+
const initValues = getClusterDetailsInitialValues({
|
|
69
72
|
managedDomains: [], // not supported
|
|
70
73
|
cluster,
|
|
71
74
|
ocpVersions,
|
|
72
|
-
})
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const ocpVersion = ocpVersions.find(
|
|
78
|
+
(ocpVersion) => ocpVersion.value === initValues.openshiftVersion,
|
|
79
|
+
);
|
|
80
|
+
return {
|
|
81
|
+
...initValues,
|
|
82
|
+
networkType: getNetworkType(ocpVersion),
|
|
83
|
+
};
|
|
84
|
+
},
|
|
73
85
|
[], // eslint-disable-line react-hooks/exhaustive-deps
|
|
74
86
|
);
|
|
75
87
|
|
|
@@ -15,6 +15,7 @@ import { ClusterDetailsValues } from '../../../common/components/clusterWizard/t
|
|
|
15
15
|
import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
|
|
16
16
|
import ArmCheckbox from './ArmCheckbox';
|
|
17
17
|
import { SNOControlGroup } from '../../../common';
|
|
18
|
+
import { getNetworkType } from '../helpers';
|
|
18
19
|
|
|
19
20
|
export type ClusterDetailsFormFieldsProps = {
|
|
20
21
|
isEditFlow: boolean;
|
|
@@ -49,7 +50,7 @@ export const ClusterDetailsFormFields: React.FC<ClusterDetailsFormFieldsProps> =
|
|
|
49
50
|
extensionAfter,
|
|
50
51
|
isNutanix,
|
|
51
52
|
}) => {
|
|
52
|
-
const { values } = useFormikContext<ClusterDetailsValues>();
|
|
53
|
+
const { values, setFieldValue } = useFormikContext<ClusterDetailsValues>();
|
|
53
54
|
const { name, baseDnsDomain, highAvailabilityMode } = values;
|
|
54
55
|
const nameInputRef = React.useRef<HTMLInputElement>();
|
|
55
56
|
React.useEffect(() => {
|
|
@@ -99,7 +100,13 @@ export const ClusterDetailsFormFields: React.FC<ClusterDetailsFormFieldsProps> =
|
|
|
99
100
|
{t('ai:OpenShift')} {forceOpenshiftVersion}
|
|
100
101
|
</StaticTextField>
|
|
101
102
|
) : (
|
|
102
|
-
<OpenShiftVersionSelect
|
|
103
|
+
<OpenShiftVersionSelect
|
|
104
|
+
versions={versions}
|
|
105
|
+
onChange={(value) => {
|
|
106
|
+
const ocpVersion = versions.find((v) => v.value === value);
|
|
107
|
+
setFieldValue('networkType', getNetworkType(ocpVersion));
|
|
108
|
+
}}
|
|
109
|
+
/>
|
|
103
110
|
)}
|
|
104
111
|
{!isNutanix && (
|
|
105
112
|
<>
|
|
@@ -88,3 +88,8 @@ export const getMajorMinorVersion = (version = '') => {
|
|
|
88
88
|
const match = /[0-9].[0-9][0-9]?/g.exec(version);
|
|
89
89
|
return match?.[0] || '';
|
|
90
90
|
};
|
|
91
|
+
|
|
92
|
+
export const getNetworkType = (
|
|
93
|
+
ocpVersion: OpenshiftVersionOptionType | undefined,
|
|
94
|
+
): 'OVNKubernetes' | 'OpenShiftSDN' =>
|
|
95
|
+
parseFloat(getMajorMinorVersion(ocpVersion?.version)) >= 4.12 ? 'OVNKubernetes' : 'OpenShiftSDN';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ocmClient as client } from '../axiosClient';
|
|
2
|
+
import { Account } from '@openshift-assisted/types/accounts-management-service';
|
|
3
|
+
|
|
4
|
+
export const CurrentAccountApi = {
|
|
5
|
+
makeBaseURI() {
|
|
6
|
+
return '/api/accounts_mgmt/v1/current_account';
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
async getCurrentAccount() {
|
|
10
|
+
const response = await client?.get<Account>(CurrentAccountApi.makeBaseURI());
|
|
11
|
+
return response?.data;
|
|
12
|
+
},
|
|
13
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ocmClient as client } from '../axiosClient';
|
|
2
|
+
import { Organization } from '@openshift-assisted/types/accounts-management-service';
|
|
3
|
+
|
|
4
|
+
export const OrganizationsApi = {
|
|
5
|
+
makeBaseURI() {
|
|
6
|
+
return '/api/accounts_mgmt/v1/organizations';
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
async getOrganization(orgId: string, fetchCapabilities = true, fetchLabels = false) {
|
|
10
|
+
const response = await client?.get<Organization>(`${OrganizationsApi.makeBaseURI()}/${orgId}`, {
|
|
11
|
+
params: { fetchCapabilities, fetchLabels },
|
|
12
|
+
});
|
|
13
|
+
return response?.data;
|
|
14
|
+
},
|
|
15
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { clientWithoutCaseConverter as client } from '../../api/axiosClient';
|
|
2
|
+
import { Cluster } from '@openshift-assisted/types/./assisted-installer-service';
|
|
3
|
+
|
|
4
|
+
const config = {
|
|
5
|
+
headers: {
|
|
6
|
+
'Content-Type': 'application/json',
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const UISettingsAPI = {
|
|
11
|
+
makeBaseURI(clusterId: Cluster['id']) {
|
|
12
|
+
return `/v2/clusters/${clusterId ? clusterId : ''}/ui-settings`;
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
get(clusterId: Cluster['id']) {
|
|
16
|
+
return client.get<string>(UISettingsAPI.makeBaseURI(clusterId));
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
put(clusterId: Cluster['id'], data: string) {
|
|
20
|
+
return client.put<string>(UISettingsAPI.makeBaseURI(clusterId), data, config);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default UISettingsAPI;
|
|
@@ -6,3 +6,4 @@ export { default as HostsAPI } from './HostsAPI';
|
|
|
6
6
|
export { default as InfraEnvsAPI } from './InfraEnvsAPI';
|
|
7
7
|
export { default as EventsAPI } from './EventsAPI';
|
|
8
8
|
export { default as NewFeatureSupportLevelsAPI } from './NewFeatureSupportLevelsAPI';
|
|
9
|
+
export { default as UISettingsAPI } from './UISettingsAPI';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ocmClient as client } from '../axiosClient';
|
|
2
|
+
import {
|
|
3
|
+
AccessReviewResponse,
|
|
4
|
+
FeatureReviewResponse,
|
|
5
|
+
SelfAccessReview,
|
|
6
|
+
} from '@openshift-assisted/types/authorization-service';
|
|
7
|
+
|
|
8
|
+
export const AuthorizationApi = {
|
|
9
|
+
makeBaseURI() {
|
|
10
|
+
return '/api/authorizations/v1/';
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
async selfFeatureReview(featureId: string) {
|
|
14
|
+
const response = await client?.post<FeatureReviewResponse>(
|
|
15
|
+
`${AuthorizationApi.makeBaseURI()}/self_feature_review`,
|
|
16
|
+
{ feature: featureId },
|
|
17
|
+
);
|
|
18
|
+
return response?.data;
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
async selfAccessReview(params: SelfAccessReview) {
|
|
22
|
+
const response = await client?.post<AccessReviewResponse>(
|
|
23
|
+
`${AuthorizationApi.makeBaseURI()}/self_access_review`,
|
|
24
|
+
params,
|
|
25
|
+
);
|
|
26
|
+
return response?.data;
|
|
27
|
+
},
|
|
28
|
+
};
|
|
@@ -104,7 +104,11 @@ const DiskEncryptionControlGroup = ({
|
|
|
104
104
|
condition={enableDiskEncryptionOnMasters || (enableDiskEncryptionOnWorkers && !isSNO)}
|
|
105
105
|
>
|
|
106
106
|
<StackItem>
|
|
107
|
-
<DiskEncryptionMode
|
|
107
|
+
<DiskEncryptionMode
|
|
108
|
+
diskEncryptionMode={diskEncryptionMode}
|
|
109
|
+
isDisabled={isDisabled}
|
|
110
|
+
tooltipProps={tooltipProps}
|
|
111
|
+
/>
|
|
108
112
|
</StackItem>
|
|
109
113
|
</RenderIf>
|
|
110
114
|
</Stack>
|
package/lib/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.tsx
CHANGED
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
Text,
|
|
9
9
|
TextVariants,
|
|
10
10
|
TextContent,
|
|
11
|
+
TooltipProps,
|
|
12
|
+
Tooltip,
|
|
11
13
|
} from '@patternfly/react-core';
|
|
12
14
|
import { ENCRYPTING_DISK_DURING_INSTALLATION } from '../../../config';
|
|
13
15
|
import PopoverIcon from '../../ui/PopoverIcon';
|
|
@@ -64,31 +66,40 @@ const DiskEncryptionModeTang = () => {
|
|
|
64
66
|
export interface DiskEncryptionModeProps {
|
|
65
67
|
isDisabled: boolean;
|
|
66
68
|
diskEncryptionMode: DiskEncryption['mode'];
|
|
69
|
+
tooltipProps: TooltipProps;
|
|
67
70
|
}
|
|
68
71
|
|
|
69
|
-
export const DiskEncryptionMode = ({
|
|
72
|
+
export const DiskEncryptionMode = ({
|
|
73
|
+
diskEncryptionMode,
|
|
74
|
+
isDisabled,
|
|
75
|
+
tooltipProps,
|
|
76
|
+
}: DiskEncryptionModeProps) => {
|
|
70
77
|
const { t } = useTranslation();
|
|
71
78
|
return (
|
|
72
79
|
<Stack>
|
|
73
80
|
<StackItem>
|
|
74
81
|
<Flex>
|
|
75
82
|
<FlexItem spacer={{ default: 'spacer3xl' }}>
|
|
76
|
-
<
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
<Tooltip {...tooltipProps}>
|
|
84
|
+
<RadioField
|
|
85
|
+
isDisabled={isDisabled}
|
|
86
|
+
name="diskEncryptionMode"
|
|
87
|
+
label={<DiskEncryptionModeTPMv2 />}
|
|
88
|
+
id="TPMV2-button"
|
|
89
|
+
value="tpmv2"
|
|
90
|
+
/>
|
|
91
|
+
</Tooltip>
|
|
83
92
|
</FlexItem>
|
|
84
93
|
<FlexItem spacer={{ default: 'spacer3xl' }}>
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
94
|
+
<Tooltip {...tooltipProps}>
|
|
95
|
+
<RadioField
|
|
96
|
+
isDisabled={isDisabled}
|
|
97
|
+
name="diskEncryptionMode"
|
|
98
|
+
label={<DiskEncryptionModeTang />}
|
|
99
|
+
id="tang-button"
|
|
100
|
+
value="tang"
|
|
101
|
+
/>
|
|
102
|
+
</Tooltip>
|
|
92
103
|
</FlexItem>
|
|
93
104
|
</Flex>
|
|
94
105
|
</StackItem>
|
|
@@ -101,7 +112,7 @@ export const DiskEncryptionMode = ({ diskEncryptionMode, isDisabled }: DiskEncry
|
|
|
101
112
|
</TextContent>
|
|
102
113
|
</StackItem>
|
|
103
114
|
|
|
104
|
-
<TangServers isDisabled={isDisabled} />
|
|
115
|
+
<TangServers isDisabled={isDisabled} tooltipProps={tooltipProps} />
|
|
105
116
|
</Stack>
|
|
106
117
|
)}
|
|
107
118
|
</Stack>
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FieldArray, useFormikContext } from 'formik';
|
|
3
|
-
import { Stack, StackItem, TextInputTypes } from '@patternfly/react-core';
|
|
3
|
+
import { Stack, StackItem, TextInputTypes, Tooltip, TooltipProps } from '@patternfly/react-core';
|
|
4
4
|
import { ClusterDetailsValues } from '../../clusterWizard';
|
|
5
5
|
import { InputField } from '../../ui';
|
|
6
6
|
import { AddButton, RemovableField } from '../../ui/formik';
|
|
7
7
|
import { useTranslation } from '../../../hooks/use-translation-wrapper';
|
|
8
8
|
|
|
9
|
-
export const TangServers = ({
|
|
9
|
+
export const TangServers = ({
|
|
10
|
+
isDisabled = false,
|
|
11
|
+
tooltipProps,
|
|
12
|
+
}: {
|
|
13
|
+
isDisabled: boolean;
|
|
14
|
+
tooltipProps: TooltipProps;
|
|
15
|
+
}) => {
|
|
10
16
|
const { values } = useFormikContext<ClusterDetailsValues>();
|
|
11
17
|
const { t } = useTranslation();
|
|
12
18
|
return (
|
|
@@ -20,22 +26,26 @@ export const TangServers = ({ isDisabled = false }: { isDisabled: boolean }) =>
|
|
|
20
26
|
onRemove={() => remove(index)}
|
|
21
27
|
>
|
|
22
28
|
<div>
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
<Tooltip {...tooltipProps}>
|
|
30
|
+
<InputField
|
|
31
|
+
type={TextInputTypes.url}
|
|
32
|
+
name={`diskEncryptionTangServers.${index}.url`}
|
|
33
|
+
helperText={`Must start with "http://" or "https://". Optionally, end with ":<port>"`}
|
|
34
|
+
label="Server URL"
|
|
35
|
+
isRequired
|
|
36
|
+
isDisabled={isDisabled}
|
|
37
|
+
/>
|
|
38
|
+
</Tooltip>
|
|
31
39
|
 
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
<Tooltip {...tooltipProps}>
|
|
41
|
+
<InputField
|
|
42
|
+
type={TextInputTypes.text}
|
|
43
|
+
name={`diskEncryptionTangServers.${index}.thumbprint`}
|
|
44
|
+
label="Server Thumbprint"
|
|
45
|
+
isRequired
|
|
46
|
+
isDisabled={isDisabled}
|
|
47
|
+
/>
|
|
48
|
+
</Tooltip>
|
|
39
49
|
</div>
|
|
40
50
|
</RemovableField>{' '}
|
|
41
51
|
</StackItem>
|
|
@@ -12,6 +12,7 @@ import { OPENSHIFT_LIFE_CYCLE_DATES_LINK } from '../../config';
|
|
|
12
12
|
import { OpenshiftVersionOptionType } from '../../types';
|
|
13
13
|
import { SelectField } from '../ui';
|
|
14
14
|
import { useTranslation } from '../../hooks/use-translation-wrapper';
|
|
15
|
+
import { SelectFieldProps } from '../ui/formik/types';
|
|
15
16
|
|
|
16
17
|
const OpenShiftLifeCycleDatesLink = () => {
|
|
17
18
|
const { t } = useTranslation();
|
|
@@ -54,8 +55,9 @@ const getOpenshiftVersionHelperText =
|
|
|
54
55
|
|
|
55
56
|
type OpenShiftVersionSelectProps = {
|
|
56
57
|
versions: OpenshiftVersionOptionType[];
|
|
58
|
+
onChange?: SelectFieldProps['onChange'];
|
|
57
59
|
};
|
|
58
|
-
const OpenShiftVersionSelect: React.FC<OpenShiftVersionSelectProps> = ({ versions }) => {
|
|
60
|
+
const OpenShiftVersionSelect: React.FC<OpenShiftVersionSelectProps> = ({ versions, onChange }) => {
|
|
59
61
|
const selectOptions = React.useMemo(
|
|
60
62
|
() =>
|
|
61
63
|
versions
|
|
@@ -75,6 +77,7 @@ const OpenShiftVersionSelect: React.FC<OpenShiftVersionSelectProps> = ({ version
|
|
|
75
77
|
getHelperText={getOpenshiftVersionHelperText(versions)}
|
|
76
78
|
isDisabled={versions.length === 0}
|
|
77
79
|
isRequired
|
|
80
|
+
onChange={onChange}
|
|
78
81
|
/>
|
|
79
82
|
);
|
|
80
83
|
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Alert } from '@patternfly/react-core';
|
|
3
|
+
import { ExternalLink } from '../ui';
|
|
4
|
+
import { useTranslation } from '../../hooks/use-translation-wrapper';
|
|
5
|
+
|
|
6
|
+
type PostInstallAlertProps = {
|
|
7
|
+
link: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const PostInstallAlert = ({ link }: PostInstallAlertProps) => {
|
|
11
|
+
const { t } = useTranslation();
|
|
12
|
+
return (
|
|
13
|
+
<Alert
|
|
14
|
+
variant="warning"
|
|
15
|
+
isInline
|
|
16
|
+
data-testid="alert-modify-platform-config"
|
|
17
|
+
title={
|
|
18
|
+
<p>
|
|
19
|
+
{t(
|
|
20
|
+
"ai:Modify your platform configuration to access your platform's features directly in OpenShift.",
|
|
21
|
+
)}{' '}
|
|
22
|
+
<ExternalLink href={link}>{t('ai:Learn more about configuration.')}</ExternalLink>
|
|
23
|
+
</p>
|
|
24
|
+
}
|
|
25
|
+
/>
|
|
26
|
+
);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export default PostInstallAlert;
|
|
@@ -2,3 +2,4 @@ export { default as ClusterPropertiesList } from './ClusterPropertiesList';
|
|
|
2
2
|
export { default as ClusterProgress } from './ClusterProgress';
|
|
3
3
|
export { default as ClusterCredentials } from './ClusterCredentials';
|
|
4
4
|
export { default as KubeconfigDownload } from './KubeconfigDownload';
|
|
5
|
+
export { default as PostInstallAlert } from './PostInstallAlert';
|
|
@@ -112,6 +112,9 @@ const FailingValidation = <S extends string>({
|
|
|
112
112
|
</>
|
|
113
113
|
);
|
|
114
114
|
} else {
|
|
115
|
+
if (validation.id === 'platform-requirements-satisfied') {
|
|
116
|
+
fix = validation.message;
|
|
117
|
+
}
|
|
115
118
|
// console.error(
|
|
116
119
|
// 'Unknown validation ID detected in the ',
|
|
117
120
|
// clusterGroup || hostGroup,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { EmptyState, EmptyStateBody, EmptyStateIcon, Title } from '@patternfly/react-core';
|
|
3
|
+
import { ExclamationTriangleIcon } from '@patternfly/react-icons';
|
|
4
|
+
import { global_disabled_color_100 as iconColor } from '@patternfly/react-tokens';
|
|
5
|
+
|
|
6
|
+
const NoPermissionsError = () => (
|
|
7
|
+
<EmptyState id="not-found">
|
|
8
|
+
<EmptyStateBody>
|
|
9
|
+
<EmptyStateIcon icon={ExclamationTriangleIcon} color={iconColor.value} />
|
|
10
|
+
<Title headingLevel="h2">Access permissions needed</Title>
|
|
11
|
+
<EmptyStateBody>
|
|
12
|
+
To create a cluster using the Assisted Installer, ask your organization administrator to
|
|
13
|
+
adjust your permissions.
|
|
14
|
+
</EmptyStateBody>
|
|
15
|
+
</EmptyStateBody>
|
|
16
|
+
</EmptyState>
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export default NoPermissionsError;
|
|
@@ -29,7 +29,6 @@ const InputField: React.FC<
|
|
|
29
29
|
idPostfix,
|
|
30
30
|
children,
|
|
31
31
|
noDefaultOnChange,
|
|
32
|
-
inputError,
|
|
33
32
|
description,
|
|
34
33
|
labelInfo,
|
|
35
34
|
showErrorMessage = true,
|
|
@@ -37,15 +36,15 @@ const InputField: React.FC<
|
|
|
37
36
|
},
|
|
38
37
|
ref: React.Ref<HTMLInputElement>,
|
|
39
38
|
) => {
|
|
40
|
-
const [field] = useField({
|
|
39
|
+
const [field, { error, touched }] = useField({
|
|
41
40
|
name: props.name,
|
|
42
41
|
validate,
|
|
43
42
|
});
|
|
44
43
|
|
|
45
44
|
const fieldId = getFieldId(props.name, 'input', idPostfix);
|
|
46
|
-
const errorMessage = useFieldErrorMsg({ name: props.name, inputError, validate });
|
|
45
|
+
const errorMessage = useFieldErrorMsg({ name: props.name, inputError: error, validate });
|
|
47
46
|
const fieldHelperText = <HelperText fieldId={fieldId}>{helperText}</HelperText>;
|
|
48
|
-
const isValid = !
|
|
47
|
+
const isValid = !(touched && error);
|
|
49
48
|
|
|
50
49
|
return (
|
|
51
50
|
<Stack id={`form-control__${fieldId}`}>
|
|
@@ -88,7 +87,7 @@ const InputField: React.FC<
|
|
|
88
87
|
</FormGroup>
|
|
89
88
|
</StackItem>
|
|
90
89
|
<StackItem>
|
|
91
|
-
{showErrorMessage &&
|
|
90
|
+
{showErrorMessage && !isValid && (
|
|
92
91
|
<HelperText fieldId={fieldId} isError>
|
|
93
92
|
{errorMessage}
|
|
94
93
|
</HelperText>
|
|
@@ -99,7 +99,8 @@ const RichInputField: React.FC<RichInputFieldPropsProps> = React.forwardRef(
|
|
|
99
99
|
validate,
|
|
100
100
|
});
|
|
101
101
|
const fieldId = getFieldId(props.name, 'input', idPostfix);
|
|
102
|
-
const isValid = !touched
|
|
102
|
+
const isValid = !(touched && error?.length);
|
|
103
|
+
|
|
103
104
|
return (
|
|
104
105
|
<FormGroup
|
|
105
106
|
id={`form-control__${fieldId}`}
|
|
@@ -133,7 +134,10 @@ const RichInputField: React.FC<RichInputFieldPropsProps> = React.forwardRef(
|
|
|
133
134
|
onChange && onChange(event);
|
|
134
135
|
}}
|
|
135
136
|
className="rich-input__text"
|
|
136
|
-
onBlur={() =>
|
|
137
|
+
onBlur={() => {
|
|
138
|
+
setTouched(true, false);
|
|
139
|
+
setPopoverOpen(false);
|
|
140
|
+
}}
|
|
137
141
|
/>
|
|
138
142
|
<Popover
|
|
139
143
|
isVisible={popoverOpen}
|
|
@@ -49,7 +49,7 @@ const SelectField: React.FC<SelectFieldProps> = ({
|
|
|
49
49
|
onChange={(value, event) => {
|
|
50
50
|
//customHandleChange enables calling formik change handler explicitly, useful for example to have the previous value
|
|
51
51
|
callFormikOnChange && field.onChange(event);
|
|
52
|
-
onChange && onChange(event);
|
|
52
|
+
onChange && onChange(value, event);
|
|
53
53
|
}}
|
|
54
54
|
>
|
|
55
55
|
{options.map((option, index) => (
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
SelectOptionProps,
|
|
6
6
|
TooltipProps,
|
|
7
7
|
RadioProps,
|
|
8
|
+
FormSelectProps,
|
|
8
9
|
} from '@patternfly/react-core';
|
|
9
10
|
import { FieldValidator, FieldHelperProps } from 'formik';
|
|
10
11
|
import { DropzoneProps, DropFileEventHandler } from 'react-dropzone';
|
|
@@ -37,7 +38,7 @@ export interface FieldProps {
|
|
|
37
38
|
|
|
38
39
|
export interface SelectFieldProps extends FieldProps {
|
|
39
40
|
options: FormSelectOptionProps[];
|
|
40
|
-
onChange?:
|
|
41
|
+
onChange?: FormSelectProps['onChange'];
|
|
41
42
|
getHelperText?: (value: string) => React.ReactNode | undefined;
|
|
42
43
|
// onBlur?: (event: React.FormEvent<HTMLSelectElement>) => void;
|
|
43
44
|
}
|
|
@@ -22,3 +22,4 @@ export { default as EventsList } from './EventsList';
|
|
|
22
22
|
export { default as ClusterEventsToolbar } from './ClusterEventsToolbar';
|
|
23
23
|
export { default as ModalProgress } from './ModalProgress';
|
|
24
24
|
export { default as ConfirmationModal } from './ConfirmationModal';
|
|
25
|
+
export { default as NoPermissionsError } from './NoPermissionsError';
|
|
@@ -250,6 +250,7 @@ export const clusterValidationLabels = (
|
|
|
250
250
|
'lvm-requirements-satisfied': t('ai:Logical Volume Manager requirements'),
|
|
251
251
|
'cnv-requirements-satisfied': t('ai:CNV requirements'),
|
|
252
252
|
'mce-requirements-satisfied': t('ai:MCE requirements'),
|
|
253
|
+
'platform-requirements-satisfied': t('ai:Platform requirements'),
|
|
253
254
|
});
|
|
254
255
|
|
|
255
256
|
export const clusterValidationGroupLabels = (
|
|
@@ -3,7 +3,6 @@ import React from 'react';
|
|
|
3
3
|
// Must conform Unleash constants
|
|
4
4
|
export type AssistedInstallerFeatureType =
|
|
5
5
|
| 'ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE'
|
|
6
|
-
| 'ASSISTED_INSTALLER_MULTIARCH_SUPPORTED'
|
|
7
6
|
| 'ASSISTED_INSTALLER_PLATFORM_OCI';
|
|
8
7
|
|
|
9
8
|
export type FeatureListType = {
|
|
@@ -22,13 +21,11 @@ export type AssistedInstallerPermissionTypesListType = {
|
|
|
22
21
|
// Hardcoded for ACM
|
|
23
22
|
export const ACM_ENABLED_FEATURES: FeatureListType = {
|
|
24
23
|
ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE: false,
|
|
25
|
-
ASSISTED_INSTALLER_MULTIARCH_SUPPORTED: true,
|
|
26
24
|
};
|
|
27
25
|
|
|
28
26
|
// Hardcoded outside OCM
|
|
29
27
|
export const STANDALONE_DEPLOYMENT_ENABLED_FEATURES: FeatureListType = {
|
|
30
28
|
ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE: false,
|
|
31
|
-
ASSISTED_INSTALLER_MULTIARCH_SUPPORTED: true,
|
|
32
29
|
ASSISTED_INSTALLER_PLATFORM_OCI: true,
|
|
33
30
|
};
|
|
34
31
|
|
|
@@ -46,7 +43,6 @@ export const FeatureGateContextProvider: React.FC<{
|
|
|
46
43
|
// hardcoded defaults
|
|
47
44
|
// TODO (mortegag): Remove all multiarch capacity related code in the UI.
|
|
48
45
|
const featuresWithDefaults: FeatureListType = {
|
|
49
|
-
ASSISTED_INSTALLER_MULTIARCH_SUPPORTED: true,
|
|
50
46
|
...features,
|
|
51
47
|
};
|
|
52
48
|
|
|
@@ -44,29 +44,24 @@ export const getAllCpuArchitectures = (): SupportedCpuArchitecture[] => [
|
|
|
44
44
|
];
|
|
45
45
|
|
|
46
46
|
export const getSupportedCpuArchitectures = (
|
|
47
|
-
canSelectCpuArch: boolean,
|
|
48
47
|
cpuArchitectures: CpuArchitecture[],
|
|
49
48
|
day1CpuArchitecture?: SupportedCpuArchitecture,
|
|
50
49
|
): SupportedCpuArchitecture[] => {
|
|
51
50
|
const newSupportedCpuArchs: SupportedCpuArchitecture[] = [];
|
|
52
51
|
//Power/Z clusters can be only homogeneous clusters
|
|
53
52
|
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
canSelectCpuArch
|
|
53
|
+
day1CpuArchitecture === CpuArchitecture.ppc64le ||
|
|
54
|
+
day1CpuArchitecture === CpuArchitecture.s390x
|
|
57
55
|
) {
|
|
58
56
|
newSupportedCpuArchs.push(day1CpuArchitecture);
|
|
59
57
|
} else {
|
|
60
58
|
cpuArchitectures.forEach((cpuArch) => {
|
|
61
59
|
if (
|
|
62
60
|
day1CpuArchitecture === undefined &&
|
|
63
|
-
(cpuArch === CpuArchitecture.ppc64le || cpuArch === CpuArchitecture.s390x)
|
|
64
|
-
canSelectCpuArch
|
|
61
|
+
(cpuArch === CpuArchitecture.ppc64le || cpuArch === CpuArchitecture.s390x)
|
|
65
62
|
) {
|
|
66
63
|
newSupportedCpuArchs.push(cpuArch);
|
|
67
64
|
} else if (
|
|
68
|
-
day1CpuArchitecture !== CpuArchitecture.ppc64le &&
|
|
69
|
-
day1CpuArchitecture !== CpuArchitecture.s390x &&
|
|
70
65
|
cpuArch !== CpuArchitecture.MULTI &&
|
|
71
66
|
cpuArch !== CpuArchitecture.USE_DAY1_ARCHITECTURE
|
|
72
67
|
) {
|
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
AddHostsContext,
|
|
23
23
|
alertsSlice,
|
|
24
24
|
canInstallHost,
|
|
25
|
-
useFeature,
|
|
26
25
|
} from '../../../common';
|
|
27
26
|
import InventoryAddHosts from './InventoryAddHost';
|
|
28
27
|
import { onFetchEvents } from '../fetching/fetchEvents';
|
|
@@ -38,7 +37,6 @@ export const AddHosts = () => {
|
|
|
38
37
|
const { cluster, resetCluster, canEdit } = React.useContext(AddHostsContext);
|
|
39
38
|
const [isSubmitting, setSubmitting] = React.useState(false);
|
|
40
39
|
const clusterVarieties = useClusterStatusVarieties(cluster);
|
|
41
|
-
const canSelectCpuArch = useFeature('ASSISTED_INSTALLER_MULTIARCH_SUPPORTED');
|
|
42
40
|
const handleHostsInstall = React.useCallback(async () => {
|
|
43
41
|
setSubmitting(true);
|
|
44
42
|
try {
|
|
@@ -89,7 +87,7 @@ export const AddHosts = () => {
|
|
|
89
87
|
</Grid>
|
|
90
88
|
</StackItem>
|
|
91
89
|
<StackItem>
|
|
92
|
-
<InventoryAddHosts cluster={cluster}
|
|
90
|
+
<InventoryAddHosts cluster={cluster} />
|
|
93
91
|
</StackItem>
|
|
94
92
|
</Stack>
|
|
95
93
|
</CardBody>
|