@openshift-assisted/ui-lib 2.52.1 → 2.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/NetworkConfiguration.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/NetworkConfiguration.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/customManifests/ClusterDeploymentCustomManifestsStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.d.ts +5 -0
- package/build/@types/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.d.ts.map +1 -0
- package/build/@types/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/types.d.ts +0 -1
- package/build/@types/cim/components/ClusterDeployment/types.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts +4 -4
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
- package/build/@types/cim/components/featureSupportLevels/ACMFeatureSupportLevelProvider.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/clusterDeployment.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/versions.d.ts +2 -2
- package/build/@types/cim/components/helpers/versions.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/versions.test.d.ts +2 -0
- package/build/@types/cim/components/helpers/versions.test.d.ts.map +1 -0
- package/build/@types/cim/components/modals/CimConfiguration/CimConfigurationModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/CimConfiguration/persist.d.ts +14 -17
- package/build/@types/cim/components/modals/CimConfiguration/persist.d.ts.map +1 -1
- package/build/@types/cim/hooks/index.d.ts +1 -0
- package/build/@types/cim/hooks/index.d.ts.map +1 -1
- package/build/@types/cim/hooks/useAgents.d.ts +4 -0
- package/build/@types/cim/hooks/useAgents.d.ts.map +1 -0
- package/build/@types/cim/types/k8s/agent-cluster-install.d.ts +1 -1
- package/build/@types/cim/types/k8s/agent-cluster-install.d.ts.map +1 -1
- package/build/@types/common/components/clusterDetail/ClusterCredentials.d.ts.map +1 -1
- package/build/@types/common/components/clusterDetail/ConsoleModal.d.ts +0 -5
- package/build/@types/common/components/clusterDetail/ConsoleModal.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/customManifests/CustomManifestsAlert.d.ts +6 -0
- package/build/@types/common/components/clusterWizard/customManifests/CustomManifestsAlert.d.ts.map +1 -0
- package/build/@types/common/components/clusterWizard/customManifests/index.d.ts +2 -0
- package/build/@types/common/components/clusterWizard/customManifests/index.d.ts.map +1 -0
- package/build/@types/common/components/clusterWizard/index.d.ts +2 -0
- package/build/@types/common/components/clusterWizard/index.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts +2 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts +2 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.d.ts +3 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.d.ts.map +1 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/index.d.ts +1 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/index.d.ts.map +1 -1
- package/build/@types/common/components/clusters/PullSecret.d.ts +0 -1
- package/build/@types/common/components/clusters/PullSecret.d.ts.map +1 -1
- package/build/@types/common/components/hosts/HostsTable.d.ts.map +1 -1
- package/build/@types/common/components/ui/WizardFooter.d.ts +1 -0
- package/build/@types/common/components/ui/WizardFooter.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/utils.d.ts +1 -0
- package/build/@types/common/components/ui/formik/utils.d.ts.map +1 -1
- package/build/@types/common/config/constants.d.ts +2 -2
- package/build/@types/common/config/constants.d.ts.map +1 -1
- package/build/@types/common/types/networkType.d.ts +2 -1
- package/build/@types/common/types/networkType.d.ts.map +1 -1
- package/build/@types/common/validationSchemas/networkingValidation.d.ts +10 -0
- package/build/@types/common/validationSchemas/networkingValidation.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/review/ReviewSummary.d.ts.map +1 -1
- package/build/@types/ocm/components/{clusterDetail/ClusterProperties.d.ts → clusterConfiguration/review/utils.d.ts} +1 -8
- package/build/@types/ocm/components/clusterConfiguration/review/utils.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/review/utils.test.d.ts +2 -0
- package/build/@types/ocm/components/clusterConfiguration/review/utils.test.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.d.ts +1 -0
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.d.ts +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ClusterDetailsButtonGroup.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/index.d.ts +0 -1
- package/build/@types/ocm/components/clusterDetail/index.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterDetailsForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/HostDiscovery.d.ts.map +1 -1
- package/build/@types/ocm/components/clusters/AssistedInstallerHeader.d.ts +5 -1
- package/build/@types/ocm/components/clusters/AssistedInstallerHeader.d.ts.map +1 -1
- package/build/@types/ocm/components/clusters/ClustersTable.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/HostsTableEmptyState.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useClusterCustomManifests.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useLateBinding.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useUISettings.d.ts.map +1 -1
- package/build/@types/ocm/services/ClusterDetailsService.d.ts +2 -1
- package/build/@types/ocm/services/ClusterDetailsService.d.ts.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js +9 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js +46 -7
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/customManifests/ClusterDeploymentCustomManifestsStep.js +22 -21
- package/build/cjs/cim/components/ClusterDeployment/customManifests/ClusterDeploymentCustomManifestsStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js +25 -9
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.js +35 -0
- package/build/cjs/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.js.map +1 -0
- package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js +4 -4
- package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js +13 -18
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/wizardTransition.js +5 -1
- package/build/cjs/cim/components/ClusterDeployment/wizardTransition.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/modals/NodePoolForm.js +1 -1
- package/build/cjs/cim/components/Hypershift/modals/NodePoolForm.js.map +1 -1
- package/build/cjs/cim/components/featureSupportLevels/ACMFeatureSupportLevelProvider.js +1 -4
- package/build/cjs/cim/components/featureSupportLevels/ACMFeatureSupportLevelProvider.js.map +1 -1
- package/build/cjs/cim/components/helpers/clusterDeployment.js +14 -10
- package/build/cjs/cim/components/helpers/clusterDeployment.js.map +1 -1
- package/build/cjs/cim/components/helpers/versions.js +39 -28
- package/build/cjs/cim/components/helpers/versions.js.map +1 -1
- package/build/cjs/cim/components/helpers/versions.test.js +423 -0
- package/build/cjs/cim/components/helpers/versions.test.js.map +1 -0
- package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js +39 -16
- package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js.map +1 -1
- package/build/cjs/cim/components/modals/CimConfiguration/persist.js +96 -136
- package/build/cjs/cim/components/modals/CimConfiguration/persist.js.map +1 -1
- package/build/cjs/cim/hooks/index.js +1 -0
- package/build/cjs/cim/hooks/index.js.map +1 -1
- package/build/cjs/cim/hooks/useAgents.js +13 -0
- package/build/cjs/cim/hooks/useAgents.js.map +1 -0
- package/build/cjs/common/components/clusterDetail/ClusterCredentials.js +10 -9
- package/build/cjs/common/components/clusterDetail/ClusterCredentials.js.map +1 -1
- package/build/cjs/common/components/clusterDetail/ConsoleModal.js +1 -10
- package/build/cjs/common/components/clusterDetail/ConsoleModal.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/customManifests/CustomManifestsAlert.js +32 -0
- package/build/cjs/common/components/clusterWizard/customManifests/CustomManifestsAlert.js.map +1 -0
- package/build/cjs/common/components/clusterWizard/customManifests/index.js +5 -0
- package/build/cjs/common/components/clusterWizard/customManifests/index.js.map +1 -0
- package/build/cjs/common/components/clusterWizard/index.js +2 -0
- package/build/cjs/common/components/clusterWizard/index.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js +8 -2
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.js +2 -2
- package/build/cjs/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js +29 -19
- package/build/cjs/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.js +20 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.js.map +1 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/index.js +1 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/index.js.map +1 -1
- package/build/cjs/common/components/clusters/PullSecret.js +17 -19
- package/build/cjs/common/components/clusters/PullSecret.js.map +1 -1
- package/build/cjs/common/components/hosts/HostsTable.js +2 -1
- package/build/cjs/common/components/hosts/HostsTable.js.map +1 -1
- package/build/cjs/common/components/ui/WizardFooter.js +6 -1
- package/build/cjs/common/components/ui/WizardFooter.js.map +1 -1
- package/build/cjs/common/components/ui/formik/utils.js +5 -1
- package/build/cjs/common/components/ui/formik/utils.js.map +1 -1
- package/build/cjs/common/config/constants.js +13 -2
- package/build/cjs/common/config/constants.js.map +1 -1
- package/build/cjs/common/types/networkType.js +9 -8
- package/build/cjs/common/types/networkType.js.map +1 -1
- package/build/cjs/common/validationSchemas/networkingValidation.js +19 -1
- package/build/cjs/common/validationSchemas/networkingValidation.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js +4 -1
- package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js +1 -20
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +7 -6
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.js +6 -9
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js +4 -4
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewClusterDetailTable.js +2 -2
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewClusterDetailTable.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js +6 -5
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewSummary.js +5 -2
- package/build/cjs/ocm/components/clusterConfiguration/review/ReviewSummary.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/review/utils.js +57 -0
- package/build/cjs/ocm/components/clusterConfiguration/review/utils.js.map +1 -0
- package/build/cjs/ocm/components/{clusterDetail/ClusterProperties.test.js → clusterConfiguration/review/utils.test.js} +13 -13
- package/build/cjs/ocm/components/clusterConfiguration/review/utils.test.js.map +1 -0
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.js +2 -2
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.js +3 -7
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailsButtonGroup.js +8 -2
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailsButtonGroup.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/index.js +1 -3
- package/build/cjs/ocm/components/clusterDetail/index.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js +10 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/HostDiscovery.js +4 -1
- package/build/cjs/ocm/components/clusterWizard/HostDiscovery.js.map +1 -1
- package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js +2 -2
- package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js.map +1 -1
- package/build/cjs/ocm/components/clusters/ClusterPage.js +1 -1
- package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
- package/build/cjs/ocm/components/clusters/ClustersTable.js +3 -2
- package/build/cjs/ocm/components/clusters/ClustersTable.js.map +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +1 -1
- package/build/cjs/ocm/components/hosts/HostsTableEmptyState.js +2 -1
- package/build/cjs/ocm/components/hosts/HostsTableEmptyState.js.map +1 -1
- package/build/cjs/ocm/hooks/useClusterCustomManifests.js +3 -15
- package/build/cjs/ocm/hooks/useClusterCustomManifests.js.map +1 -1
- package/build/cjs/ocm/hooks/useLateBinding.js +41 -26
- package/build/cjs/ocm/hooks/useLateBinding.js.map +1 -1
- package/build/cjs/ocm/hooks/usePullSecret.js +2 -2
- package/build/cjs/ocm/hooks/useUISettings.js +1 -1
- package/build/cjs/ocm/hooks/useUISettings.js.map +1 -1
- package/build/cjs/ocm/services/ClusterDetailsService.js +4 -2
- package/build/cjs/ocm/services/ClusterDetailsService.js.map +1 -1
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizard.tsx +10 -2
- package/lib/cim/components/ClusterDeployment/NetworkConfiguration.tsx +55 -6
- package/lib/cim/components/ClusterDeployment/customManifests/ClusterDeploymentCustomManifestsStep.tsx +18 -2
- package/lib/cim/components/ClusterDeployment/networkConfigurationValidation.ts +22 -8
- package/lib/cim/components/ClusterDeployment/networking/NetworkTypeDropdown.tsx +81 -0
- package/lib/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.tsx +18 -14
- package/lib/cim/components/ClusterDeployment/types.ts +0 -1
- package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +14 -22
- package/lib/cim/components/ClusterDeployment/wizardTransition.ts +5 -1
- package/lib/cim/components/Hypershift/modals/NodePoolForm.tsx +2 -2
- package/lib/cim/components/featureSupportLevels/ACMFeatureSupportLevelProvider.tsx +2 -5
- package/lib/cim/components/helpers/clusterDeployment.ts +9 -4
- package/lib/cim/components/helpers/versions.test.ts +465 -0
- package/lib/cim/components/helpers/versions.ts +37 -31
- package/lib/cim/components/modals/CimConfiguration/CimConfigurationModal.tsx +45 -18
- package/lib/cim/components/modals/CimConfiguration/persist.ts +97 -199
- package/lib/cim/hooks/index.tsx +1 -0
- package/lib/cim/hooks/useAgents.tsx +15 -0
- package/lib/cim/types/k8s/agent-cluster-install.ts +1 -1
- package/lib/common/components/clusterDetail/ClusterCredentials.tsx +49 -53
- package/lib/common/components/clusterDetail/ConsoleModal.tsx +0 -35
- package/lib/common/components/clusterWizard/customManifests/CustomManifestsAlert.tsx +39 -0
- package/lib/common/components/clusterWizard/customManifests/index.tsx +1 -0
- package/lib/common/components/clusterWizard/index.ts +2 -0
- package/lib/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.tsx +8 -1
- package/lib/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.tsx +2 -2
- package/lib/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.tsx +36 -26
- package/lib/common/components/clusterWizard/networkingSteps/ThirdPartyCNIBanner.tsx +28 -0
- package/lib/common/components/clusterWizard/networkingSteps/index.ts +1 -0
- package/lib/common/components/clusters/PullSecret.tsx +28 -38
- package/lib/common/components/hosts/HostsTable.tsx +2 -0
- package/lib/common/components/ui/WizardFooter.tsx +10 -0
- package/lib/common/components/ui/formik/utils.ts +6 -0
- package/lib/common/config/constants.ts +14 -1
- package/lib/common/types/networkType.ts +9 -8
- package/lib/common/validationSchemas/networkingValidation.tsx +39 -1
- package/lib/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +6 -3
- package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +7 -6
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.tsx +10 -45
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +11 -9
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.tsx +7 -24
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts +6 -5
- package/lib/ocm/components/clusterConfiguration/review/ReviewClusterDetailTable.tsx +1 -1
- package/lib/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.tsx +10 -4
- package/lib/ocm/components/clusterConfiguration/review/ReviewSummary.tsx +9 -2
- package/lib/ocm/components/{clusterDetail/ClusterProperties.test.ts → clusterConfiguration/review/utils.test.ts} +1 -1
- package/lib/ocm/components/clusterConfiguration/review/utils.tsx +61 -0
- package/lib/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.ts +2 -0
- package/lib/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.ts +1 -0
- package/lib/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.ts +2 -0
- package/lib/ocm/components/clusterDetail/ClusterDetailsButtonGroup.tsx +27 -2
- package/lib/ocm/components/clusterDetail/index.ts +0 -1
- package/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx +10 -1
- package/lib/ocm/components/clusterWizard/HostDiscovery.tsx +4 -0
- package/lib/ocm/components/clusters/AssistedInstallerHeader.tsx +6 -2
- package/lib/ocm/components/clusters/ClusterPage.tsx +1 -1
- package/lib/ocm/components/clusters/ClustersTable.tsx +59 -49
- package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +1 -1
- package/lib/ocm/components/hosts/HostsTableEmptyState.tsx +2 -0
- package/lib/ocm/hooks/useClusterCustomManifests.ts +3 -0
- package/lib/ocm/hooks/useLateBinding.ts +45 -24
- package/lib/ocm/hooks/usePullSecret.ts +2 -2
- package/lib/ocm/hooks/useUISettings.ts +3 -1
- package/lib/ocm/services/ClusterDetailsService.ts +6 -0
- package/package.json +9 -9
- package/build/@types/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.d.ts +0 -7
- package/build/@types/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts +0 -8
- package/build/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.test.d.ts +0 -2
- package/build/@types/ocm/components/clusterDetail/ClusterProperties.test.d.ts.map +0 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js +0 -33
- package/build/cjs/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js.map +0 -1
- package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js +0 -40
- package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js.map +0 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js +0 -77
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js.map +0 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterProperties.test.js.map +0 -1
- package/lib/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.tsx +0 -74
- package/lib/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.tsx +0 -69
- package/lib/ocm/components/clusterDetail/ClusterProperties.tsx +0 -169
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
GridItem,
|
|
4
|
-
ClipboardCopy,
|
|
5
|
-
clipboardCopyFunc,
|
|
6
|
-
Button,
|
|
7
|
-
Alert,
|
|
8
|
-
TextInput,
|
|
9
|
-
} from '@patternfly/react-core';
|
|
2
|
+
import { GridItem, ClipboardCopy, clipboardCopyFunc, Alert } from '@patternfly/react-core';
|
|
10
3
|
import { Credentials, Cluster } from '@openshift-assisted/types/assisted-installer-service';
|
|
11
4
|
import { LoadingState, ErrorState } from '../../components/ui/uiState';
|
|
12
5
|
import { DetailList, DetailItem } from '../../components/ui/DetailList';
|
|
13
6
|
import { TroubleshootingOpenshiftConsoleButton } from './ConsoleModal';
|
|
14
|
-
import { ExternalLinkAltIcon } from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
|
|
15
7
|
import { useTranslation } from '../../hooks/use-translation-wrapper';
|
|
16
8
|
|
|
17
9
|
type ClusterCredentialsProps = {
|
|
@@ -74,55 +66,59 @@ const ClusterCredentials: React.FC<ClusterCredentialsProps> = ({
|
|
|
74
66
|
const consoleUrl = credentials.consoleUrl
|
|
75
67
|
? getConsoleUrl(credentials.consoleUrl, isMceEnabled)
|
|
76
68
|
: '';
|
|
69
|
+
const hasVips = Boolean(cluster.apiVips?.length && cluster.ingressVips?.length);
|
|
77
70
|
credentialsBody = (
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
title={t('ai:Web Console URL')}
|
|
82
|
-
value={
|
|
83
|
-
<>
|
|
84
|
-
<Button
|
|
85
|
-
variant="link"
|
|
86
|
-
icon={<ExternalLinkAltIcon />}
|
|
87
|
-
iconPosition="right"
|
|
88
|
-
isInline
|
|
89
|
-
onClick={() => window.open(consoleUrl, '_blank', 'noopener')}
|
|
90
|
-
data-testid={`${idPrefix}-link-console-url`}
|
|
91
|
-
>
|
|
92
|
-
{consoleUrl}
|
|
93
|
-
</Button>
|
|
94
|
-
<br />
|
|
95
|
-
{!!cluster.apiVips && !!cluster.ingressVips && (
|
|
96
|
-
<TroubleshootingOpenshiftConsoleButton
|
|
97
|
-
consoleUrl={consoleUrl}
|
|
98
|
-
cluster={cluster}
|
|
99
|
-
idPrefix={idPrefix}
|
|
100
|
-
/>
|
|
101
|
-
)}
|
|
102
|
-
</>
|
|
103
|
-
}
|
|
104
|
-
/>
|
|
105
|
-
)}
|
|
106
|
-
{credentials.username && (
|
|
107
|
-
<>
|
|
71
|
+
<>
|
|
72
|
+
<DetailList>
|
|
73
|
+
{credentials.consoleUrl && (
|
|
108
74
|
<DetailItem
|
|
109
|
-
title={t('ai:
|
|
110
|
-
value={<TextInput value={credentials.username} readOnlyVariant="default" />}
|
|
111
|
-
/>
|
|
112
|
-
<DetailItem
|
|
113
|
-
title={t('ai:Password')}
|
|
75
|
+
title={t('ai:Web Console URL')}
|
|
114
76
|
value={
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
77
|
+
<>
|
|
78
|
+
<ClipboardCopy
|
|
79
|
+
isReadOnly
|
|
80
|
+
className="pf-v6-u-my-sm"
|
|
81
|
+
data-testid={`${idPrefix}-link-console-url`}
|
|
82
|
+
>
|
|
83
|
+
{consoleUrl}
|
|
84
|
+
</ClipboardCopy>
|
|
85
|
+
{hasVips && (
|
|
86
|
+
<TroubleshootingOpenshiftConsoleButton
|
|
87
|
+
consoleUrl={consoleUrl}
|
|
88
|
+
cluster={cluster}
|
|
89
|
+
idPrefix={idPrefix}
|
|
90
|
+
/>
|
|
91
|
+
)}
|
|
92
|
+
</>
|
|
121
93
|
}
|
|
122
94
|
/>
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
95
|
+
)}
|
|
96
|
+
{credentials.username && (
|
|
97
|
+
<>
|
|
98
|
+
<DetailItem
|
|
99
|
+
title={t('ai:Username')}
|
|
100
|
+
value={
|
|
101
|
+
<ClipboardCopy isReadOnly className="pf-v6-u-my-sm">
|
|
102
|
+
{credentials.username}
|
|
103
|
+
</ClipboardCopy>
|
|
104
|
+
}
|
|
105
|
+
/>
|
|
106
|
+
<DetailItem
|
|
107
|
+
title={t('ai:Password')}
|
|
108
|
+
value={
|
|
109
|
+
<ClipboardCopy
|
|
110
|
+
isReadOnly
|
|
111
|
+
className="pf-v6-u-my-sm"
|
|
112
|
+
onCopy={(event) => clipboardCopyFunc(event, credentials.password)}
|
|
113
|
+
>
|
|
114
|
+
•••••
|
|
115
|
+
</ClipboardCopy>
|
|
116
|
+
}
|
|
117
|
+
/>
|
|
118
|
+
</>
|
|
119
|
+
)}
|
|
120
|
+
</DetailList>
|
|
121
|
+
</>
|
|
126
122
|
);
|
|
127
123
|
}
|
|
128
124
|
|
|
@@ -12,7 +12,6 @@ import {
|
|
|
12
12
|
} from '@patternfly/react-core';
|
|
13
13
|
import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
14
14
|
import { removeProtocolFromURL } from '../../api';
|
|
15
|
-
import { ToolbarButton } from '../ui/Toolbar';
|
|
16
15
|
import PrismCode from '../ui/PrismCode';
|
|
17
16
|
import { useTranslation } from '../../hooks/use-translation-wrapper';
|
|
18
17
|
import { selectApiVip, selectIngressVip } from '../../selectors';
|
|
@@ -24,11 +23,6 @@ type WebConsoleHintProps = {
|
|
|
24
23
|
idPrefix?: string;
|
|
25
24
|
};
|
|
26
25
|
|
|
27
|
-
type LaunchOpenshiftConsoleButtonProps = WebConsoleHintProps & {
|
|
28
|
-
isDisabled: boolean;
|
|
29
|
-
id?: string;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
26
|
type ConsoleModalProps = WebConsoleHintProps & {
|
|
33
27
|
closeModal: () => void;
|
|
34
28
|
isOpen: boolean;
|
|
@@ -103,35 +97,6 @@ export const WebConsoleHint: React.FC<WebConsoleHintProps> = ({ cluster, console
|
|
|
103
97
|
);
|
|
104
98
|
};
|
|
105
99
|
|
|
106
|
-
export const LaunchOpenshiftConsoleButton: React.FC<LaunchOpenshiftConsoleButtonProps> = ({
|
|
107
|
-
cluster,
|
|
108
|
-
consoleUrl,
|
|
109
|
-
isDisabled,
|
|
110
|
-
id,
|
|
111
|
-
}) => {
|
|
112
|
-
const [isOpen, setOpen] = React.useState(false);
|
|
113
|
-
const { t } = useTranslation();
|
|
114
|
-
return (
|
|
115
|
-
<>
|
|
116
|
-
<ToolbarButton
|
|
117
|
-
type="button"
|
|
118
|
-
variant={ButtonVariant.primary}
|
|
119
|
-
isDisabled={isDisabled}
|
|
120
|
-
onClick={() => setOpen(true)}
|
|
121
|
-
data-testid={id}
|
|
122
|
-
>
|
|
123
|
-
{t('ai:Launch OpenShift Console')}
|
|
124
|
-
</ToolbarButton>
|
|
125
|
-
<ConsoleModal
|
|
126
|
-
closeModal={() => setOpen(false)}
|
|
127
|
-
consoleUrl={consoleUrl}
|
|
128
|
-
cluster={cluster}
|
|
129
|
-
isOpen={isOpen}
|
|
130
|
-
/>
|
|
131
|
-
</>
|
|
132
|
-
);
|
|
133
|
-
};
|
|
134
|
-
|
|
135
100
|
export const TroubleshootingOpenshiftConsoleButton: React.FC<WebConsoleHintProps> = ({
|
|
136
101
|
cluster,
|
|
137
102
|
consoleUrl,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Alert, AlertVariant, Stack, StackItem } from '@patternfly/react-core';
|
|
3
|
+
import { useTranslation } from '../../../hooks';
|
|
4
|
+
|
|
5
|
+
export const CustomManifestsAlert = ({
|
|
6
|
+
usesExternalPlatform,
|
|
7
|
+
usesThirdPartyCNI,
|
|
8
|
+
}: {
|
|
9
|
+
usesExternalPlatform: boolean;
|
|
10
|
+
usesThirdPartyCNI: boolean;
|
|
11
|
+
}) => {
|
|
12
|
+
const { t } = useTranslation();
|
|
13
|
+
|
|
14
|
+
let title: string;
|
|
15
|
+
let body: string;
|
|
16
|
+
|
|
17
|
+
if (usesExternalPlatform && usesExternalPlatform) {
|
|
18
|
+
title = t("ai:You're using an external platform and a third-party CNI");
|
|
19
|
+
body = t('ai:Make sure to upload the required custom and CNI manifests in this step.');
|
|
20
|
+
} else if (usesExternalPlatform) {
|
|
21
|
+
title = t("ai:You're using an external platform");
|
|
22
|
+
body = t('ai:Make sure to upload the required custom manifests in this step.');
|
|
23
|
+
} else if (usesThirdPartyCNI) {
|
|
24
|
+
title = t("ai:You're using a third-party CNI");
|
|
25
|
+
body = t('ai:Make sure to upload the required CNI manifests in this step.');
|
|
26
|
+
} else {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<Stack>
|
|
32
|
+
<StackItem>
|
|
33
|
+
<Alert variant={AlertVariant.info} isInline title={title}>
|
|
34
|
+
{body}
|
|
35
|
+
</Alert>
|
|
36
|
+
</StackItem>
|
|
37
|
+
</Stack>
|
|
38
|
+
);
|
|
39
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './CustomManifestsAlert';
|
|
@@ -59,6 +59,7 @@ export interface AvailableSubnetsControlProps {
|
|
|
59
59
|
isViewerMode?: boolean;
|
|
60
60
|
hosts?: Host[];
|
|
61
61
|
isMultiNodeCluster?: boolean;
|
|
62
|
+
allowSingleStackIPv6?: boolean;
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
export const AvailableSubnetsControl = ({
|
|
@@ -70,6 +71,7 @@ export const AvailableSubnetsControl = ({
|
|
|
70
71
|
isViewerMode = false,
|
|
71
72
|
hosts,
|
|
72
73
|
isMultiNodeCluster = true,
|
|
74
|
+
allowSingleStackIPv6 = false,
|
|
73
75
|
}: AvailableSubnetsControlProps) => {
|
|
74
76
|
const { t } = useTranslation();
|
|
75
77
|
const { values, errors, setFieldValue } = useFormikContext<NetworkConfigurationValues>();
|
|
@@ -207,7 +209,12 @@ export const AvailableSubnetsControl = ({
|
|
|
207
209
|
isDualStack && values.machineNetworks && values.machineNetworks.length > 1;
|
|
208
210
|
|
|
209
211
|
// Determine available subnets for primary dropdown
|
|
210
|
-
|
|
212
|
+
let primaryMachineSubnets: HostSubnet[];
|
|
213
|
+
if ((isDualStack && supportsIPv6Primary) || (!isDualStack && allowSingleStackIPv6)) {
|
|
214
|
+
primaryMachineSubnets = allSubnets;
|
|
215
|
+
} else {
|
|
216
|
+
primaryMachineSubnets = IPv4Subnets;
|
|
217
|
+
}
|
|
211
218
|
|
|
212
219
|
// Determine available subnets for secondary dropdown
|
|
213
220
|
const secondaryMachineSubnets = React.useMemo(() => {
|
package/lib/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.tsx
CHANGED
|
@@ -55,10 +55,10 @@ export const ManagedNetworkingControlGroup = ({
|
|
|
55
55
|
value={'userManaged'}
|
|
56
56
|
label={
|
|
57
57
|
<>
|
|
58
|
-
<span>{t('ai:User-Managed
|
|
58
|
+
<span>{t('ai:User-Managed networking')}</span>{' '}
|
|
59
59
|
<PopoverIcon
|
|
60
60
|
bodyContent={t(
|
|
61
|
-
"ai:With User-Managed
|
|
61
|
+
"ai:With User-Managed networking, you'll need to provide and configure a load balancer for the API and ingress endpoints.",
|
|
62
62
|
)}
|
|
63
63
|
/>
|
|
64
64
|
</>
|
|
@@ -10,9 +10,10 @@ import {
|
|
|
10
10
|
NETWORK_TYPE_SDN,
|
|
11
11
|
} from '../../../types';
|
|
12
12
|
import { getFieldId } from '../../ui';
|
|
13
|
-
import { DUAL_STACK,
|
|
13
|
+
import { DUAL_STACK, NO_SUBNET_SET, SINGLE_STACK } from '../../../config';
|
|
14
14
|
import { RadioField } from '../../ui/formik';
|
|
15
15
|
import { ConfirmationModal, PopoverIcon } from '../../ui';
|
|
16
|
+
import { useTranslation } from '../../../hooks/use-translation-wrapper';
|
|
16
17
|
import { reorderNetworksByCurrentPrimary } from './reorderNetworks';
|
|
17
18
|
import {
|
|
18
19
|
Cluster,
|
|
@@ -36,6 +37,7 @@ export type StackTypeControlGroupProps = {
|
|
|
36
37
|
hostSubnets: HostSubnets;
|
|
37
38
|
defaultNetworkValues: StackTypeDefaultNetworkValues;
|
|
38
39
|
isViewerMode?: boolean;
|
|
40
|
+
allowSingleStackIPv6?: boolean;
|
|
39
41
|
};
|
|
40
42
|
|
|
41
43
|
const hasDualStackConfigurationChanged = (
|
|
@@ -60,17 +62,21 @@ export const StackTypeControlGroup = ({
|
|
|
60
62
|
hostSubnets,
|
|
61
63
|
defaultNetworkValues,
|
|
62
64
|
isViewerMode = false,
|
|
65
|
+
allowSingleStackIPv6 = false,
|
|
63
66
|
}: StackTypeControlGroupProps) => {
|
|
67
|
+
const { t } = useTranslation();
|
|
64
68
|
const { setFieldValue, values, validateForm } = useFormikContext<NetworkConfigurationValues>();
|
|
65
69
|
const [openConfirmModal, setConfirmModal] = React.useState(false);
|
|
66
70
|
|
|
71
|
+
const singleStackLabel = allowSingleStackIPv6 ? t('ai:Single stack') : t('ai:IPv4');
|
|
72
|
+
|
|
67
73
|
const IPv6Subnets = hostSubnets.filter((subnet) => Address6.isValid(subnet.subnet));
|
|
68
74
|
const cidrIPv6 = IPv6Subnets.length >= 1 ? IPv6Subnets[0].subnet : NO_SUBNET_SET;
|
|
69
75
|
const shouldSetSingleStack =
|
|
70
76
|
!isViewerMode && !isDualStackSelectable && values.stackType === DUAL_STACK;
|
|
71
77
|
|
|
72
78
|
const setSingleStack = React.useCallback(() => {
|
|
73
|
-
setFieldValue('stackType',
|
|
79
|
+
setFieldValue('stackType', SINGLE_STACK);
|
|
74
80
|
|
|
75
81
|
// Determine whether the first machine network is IPv4
|
|
76
82
|
const firstNetwork = values.machineNetworks?.[0];
|
|
@@ -94,7 +100,8 @@ export const StackTypeControlGroup = ({
|
|
|
94
100
|
}
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
|
-
|
|
103
|
+
|
|
104
|
+
// Set cluster/service to IPv4 defaults when switching to single-stack
|
|
98
105
|
if (values.clusterNetworks && values.clusterNetworks.length >= 1) {
|
|
99
106
|
const defaultCluster =
|
|
100
107
|
defaultNetworkValues.clusterNetworksIpv4 && defaultNetworkValues.clusterNetworksIpv4[0];
|
|
@@ -196,28 +203,27 @@ export const StackTypeControlGroup = ({
|
|
|
196
203
|
}
|
|
197
204
|
}
|
|
198
205
|
if (values.clusterNetworks && values.clusterNetworks?.length < 2) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
);
|
|
206
|
+
const firstClusterCidr = values.clusterNetworks[0]?.cidr;
|
|
207
|
+
const isPrimaryIPv6 = firstClusterCidr && Address6.isValid(firstClusterCidr);
|
|
208
|
+
const missingFamilyNetworkDefault =
|
|
209
|
+
defaultNetworkValues.clusterNetworksDualstack?.[isPrimaryIPv6 ? 0 : 1];
|
|
210
|
+
const secondClusterNetwork = missingFamilyNetworkDefault ?? {
|
|
211
|
+
cidr: '',
|
|
212
|
+
hostPrefix: '',
|
|
213
|
+
clusterId: clusterId,
|
|
214
|
+
};
|
|
215
|
+
setFieldValue('clusterNetworks', [...values.clusterNetworks, secondClusterNetwork], false);
|
|
209
216
|
}
|
|
210
217
|
if (values.serviceNetworks && values.serviceNetworks?.length < 2) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
);
|
|
218
|
+
const firstServiceCidr = values.serviceNetworks[0]?.cidr;
|
|
219
|
+
const isPrimaryIPv6 = firstServiceCidr && Address6.isValid(firstServiceCidr);
|
|
220
|
+
const missingFamilyNetworkDefault =
|
|
221
|
+
defaultNetworkValues.serviceNetworksDualstack?.[isPrimaryIPv6 ? 0 : 1];
|
|
222
|
+
const secondServiceNetwork = missingFamilyNetworkDefault ?? {
|
|
223
|
+
cidr: '',
|
|
224
|
+
clusterId: clusterId,
|
|
225
|
+
};
|
|
226
|
+
setFieldValue('serviceNetworks', [...values.serviceNetworks, secondServiceNetwork], false);
|
|
221
227
|
}
|
|
222
228
|
// Initialize VIPs for dual-stack
|
|
223
229
|
if (values.apiVips && values.apiVips.length < 2) {
|
|
@@ -290,14 +296,18 @@ export const StackTypeControlGroup = ({
|
|
|
290
296
|
<SplitItem>
|
|
291
297
|
<RadioField
|
|
292
298
|
name={'stackType'}
|
|
293
|
-
value={
|
|
299
|
+
value={SINGLE_STACK}
|
|
294
300
|
isDisabled={!isDualStackSelectable || isViewerMode}
|
|
295
|
-
label=
|
|
301
|
+
label={`${singleStackLabel}\u00A0`}
|
|
296
302
|
/>
|
|
297
303
|
</SplitItem>
|
|
298
304
|
<SplitItem>
|
|
299
305
|
<PopoverIcon
|
|
300
|
-
bodyContent=
|
|
306
|
+
bodyContent={
|
|
307
|
+
allowSingleStackIPv6
|
|
308
|
+
? t('ai:Select a single address family (IPv4 or IPv6) for your machine network.')
|
|
309
|
+
: t('ai:Select this when your hosts are using only IPv4.')
|
|
310
|
+
}
|
|
301
311
|
buttonStyle={{ top: '-4px' }}
|
|
302
312
|
/>
|
|
303
313
|
</SplitItem>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useTranslation } from '../../../hooks';
|
|
3
|
+
import { Alert, AlertVariant, Stack, StackItem } from '@patternfly/react-core';
|
|
4
|
+
import { RED_HAT_CNI_SUPPORT_MATRIX_LINK } from '../../../config';
|
|
5
|
+
import { ExternalLink } from '../../ui';
|
|
6
|
+
|
|
7
|
+
export const ThirdPartyCNIBanner = () => {
|
|
8
|
+
const { t } = useTranslation();
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<StackItem>
|
|
12
|
+
<Alert variant={AlertVariant.warning} isInline title={t('ai:Third-party CNI')}>
|
|
13
|
+
<Stack hasGutter>
|
|
14
|
+
<StackItem>
|
|
15
|
+
{t(
|
|
16
|
+
'ai:Third-party CNIs require uploading CNI manifests. Please verify you have the required manifests and that the chosen CNI is compatible with your platform and OpenShift version.',
|
|
17
|
+
)}
|
|
18
|
+
</StackItem>
|
|
19
|
+
<StackItem>
|
|
20
|
+
<ExternalLink href={RED_HAT_CNI_SUPPORT_MATRIX_LINK}>
|
|
21
|
+
{t('ai:Red Hat CNI Support Matrix')}
|
|
22
|
+
</ExternalLink>
|
|
23
|
+
</StackItem>
|
|
24
|
+
</Stack>
|
|
25
|
+
</Alert>
|
|
26
|
+
</StackItem>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
@@ -14,3 +14,4 @@ export { VirtualIPControlGroup } from './VirtualIPControlGroup';
|
|
|
14
14
|
export type { VirtualIPControlGroupProps } from './VirtualIPControlGroup';
|
|
15
15
|
export { default as AdvancedNetworkFields } from './AdvancedNetworkFields';
|
|
16
16
|
export type { AdvancedNetworkFieldsProps } from './AdvancedNetworkFields';
|
|
17
|
+
export * from './ThirdPartyCNIBanner';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Checkbox } from '@patternfly/react-core';
|
|
3
3
|
import { useFormikContext } from 'formik';
|
|
4
4
|
import { ClusterCreateParams } from '@openshift-assisted/types/assisted-installer-service';
|
|
5
5
|
import { PullSecretField, PullSecretInfo } from '../ui';
|
|
@@ -8,56 +8,46 @@ import { useTranslation } from '../../hooks/use-translation-wrapper';
|
|
|
8
8
|
export type PullSecretProps = {
|
|
9
9
|
defaultPullSecret?: string;
|
|
10
10
|
isOcm?: boolean;
|
|
11
|
-
isPullSecretSet?: boolean;
|
|
12
11
|
isSingleClusterFeatureEnabled?: boolean;
|
|
13
12
|
};
|
|
14
13
|
|
|
15
14
|
const PullSecret: React.FC<PullSecretProps> = ({
|
|
16
15
|
defaultPullSecret,
|
|
17
16
|
isOcm = false,
|
|
18
|
-
isPullSecretSet = false,
|
|
19
17
|
isSingleClusterFeatureEnabled = false,
|
|
20
18
|
}) => {
|
|
21
|
-
|
|
22
|
-
const [isExpanded, setExpanded] = React.useState(() =>
|
|
23
|
-
isPullSecretSet ? false : !defaultPullSecret,
|
|
24
|
-
);
|
|
19
|
+
const [isExpanded, setExpanded] = React.useState(!defaultPullSecret);
|
|
25
20
|
const { setFieldValue } = useFormikContext<ClusterCreateParams>();
|
|
26
21
|
const { t } = useTranslation();
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
22
|
+
if (isOcm || isSingleClusterFeatureEnabled) {
|
|
23
|
+
const onCheckboxChange = () => {
|
|
24
|
+
if (isExpanded) {
|
|
25
|
+
// about to collapse, reset to original value
|
|
26
|
+
setFieldValue('pullSecret', defaultPullSecret);
|
|
27
|
+
}
|
|
28
|
+
setExpanded(!isExpanded);
|
|
29
|
+
};
|
|
34
30
|
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
return (
|
|
32
|
+
<>
|
|
33
|
+
<Checkbox
|
|
34
|
+
id="checkbox-pull-secret"
|
|
35
|
+
className="pf-v6-u-display-inline-flex"
|
|
36
|
+
aria-label={t('ai:edit pull secret')}
|
|
37
|
+
isChecked={isExpanded}
|
|
38
|
+
onChange={onCheckboxChange}
|
|
39
|
+
label={
|
|
40
|
+
<>
|
|
41
|
+
{t('ai:Edit pull secret')} <PullSecretInfo isOcm={isOcm} />
|
|
42
|
+
</>
|
|
43
|
+
}
|
|
44
|
+
/>
|
|
45
|
+
{isExpanded && <PullSecretField isOcm={isOcm} />}
|
|
46
|
+
</>
|
|
47
|
+
);
|
|
37
48
|
}
|
|
38
49
|
|
|
39
|
-
return
|
|
40
|
-
<>
|
|
41
|
-
{isPullSecretSet && (
|
|
42
|
-
<Alert variant={AlertVariant.success} isInline title={t('ai:Pull secret configured')}>
|
|
43
|
-
{t('ai:A pull secret has already been set for this cluster. You can edit it below.')}
|
|
44
|
-
</Alert>
|
|
45
|
-
)}
|
|
46
|
-
<Checkbox
|
|
47
|
-
id="checkbox-pull-secret"
|
|
48
|
-
className="pf-v6-u-display-inline-flex"
|
|
49
|
-
aria-label={t('ai:edit pull secret')}
|
|
50
|
-
isChecked={isExpanded}
|
|
51
|
-
onChange={onCheckboxChange}
|
|
52
|
-
label={
|
|
53
|
-
<>
|
|
54
|
-
{t('ai:Edit pull secret')} <PullSecretInfo isOcm={isOcm} />
|
|
55
|
-
</>
|
|
56
|
-
}
|
|
57
|
-
/>
|
|
58
|
-
{isExpanded && <PullSecretField isOcm={isOcm} />}
|
|
59
|
-
</>
|
|
60
|
-
);
|
|
50
|
+
return <PullSecretField isOcm={isOcm} />;
|
|
61
51
|
};
|
|
62
52
|
|
|
63
53
|
export default PullSecret;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { Spinner } from '@patternfly/react-core';
|
|
2
3
|
import { ConnectedIcon } from '@patternfly/react-icons/dist/js/icons/connected-icon';
|
|
3
4
|
import { HostsNotShowingLink, HostsNotShowingLinkProps } from '../clusterConfiguration';
|
|
4
5
|
import { Host } from '@openshift-assisted/types/assisted-installer-service';
|
|
@@ -29,6 +30,7 @@ export const HostsTableEmptyState = ({
|
|
|
29
30
|
icon={ConnectedIcon}
|
|
30
31
|
title={t('ai:Waiting for host...', { count: +isSNO })}
|
|
31
32
|
content={t('ai:Hosts may take a few minutes to appear here after booting.')}
|
|
33
|
+
primaryAction={<Spinner size="xl" />}
|
|
32
34
|
secondaryActions={
|
|
33
35
|
setDiscoveryHintModalOpen && [
|
|
34
36
|
<HostsNotShowingLink
|
|
@@ -27,6 +27,7 @@ export type WizardFooterGenericProps = {
|
|
|
27
27
|
submittingText?: string;
|
|
28
28
|
nextButtonText?: string;
|
|
29
29
|
isNextButtonLoading?: boolean;
|
|
30
|
+
isWaitingForHosts?: boolean;
|
|
30
31
|
};
|
|
31
32
|
|
|
32
33
|
type WizardFooterProps = WizardFooterGenericProps & {
|
|
@@ -53,6 +54,7 @@ export const WizardFooter: React.FC<WizardFooterProps> = ({
|
|
|
53
54
|
cluster,
|
|
54
55
|
onFetchEvents,
|
|
55
56
|
isNextButtonLoading,
|
|
57
|
+
isWaitingForHosts,
|
|
56
58
|
}) => {
|
|
57
59
|
const { t } = useTranslation();
|
|
58
60
|
submittingText = submittingText || t('ai:Saving changes...');
|
|
@@ -119,6 +121,14 @@ export const WizardFooter: React.FC<WizardFooterProps> = ({
|
|
|
119
121
|
</Content>
|
|
120
122
|
</ActionListItem>
|
|
121
123
|
)}
|
|
124
|
+
{isWaitingForHosts && !isSubmitting && (
|
|
125
|
+
<ActionListItem>
|
|
126
|
+
<Content component={ContentVariants.small}>
|
|
127
|
+
<Spinner size="sm" data-testid="wizard-footer-hosts-spinner" />{' '}
|
|
128
|
+
{t('ai:Waiting for hosts to be ready...')}
|
|
129
|
+
</Content>
|
|
130
|
+
</ActionListItem>
|
|
131
|
+
)}
|
|
122
132
|
<SplitItem isFilled />
|
|
123
133
|
{cluster && onFetchEvents && (
|
|
124
134
|
<ActionListItem>
|
|
@@ -126,6 +126,12 @@ export const allSubnetsIPv4 = (
|
|
|
126
126
|
return !!networks?.every((network) => network.cidr && Address4.isValid(network.cidr));
|
|
127
127
|
};
|
|
128
128
|
|
|
129
|
+
export const allSubnetsIPv6 = (
|
|
130
|
+
networks: (MachineNetwork | ClusterNetwork | ServiceNetwork)[] | undefined,
|
|
131
|
+
) => {
|
|
132
|
+
return !!networks?.every((network) => network.cidr && Address6.isValid(network.cidr));
|
|
133
|
+
};
|
|
134
|
+
|
|
129
135
|
export const labelsToArray = (labels: { [key in string]: string } = {}): string[] => {
|
|
130
136
|
const result: string[] = [];
|
|
131
137
|
for (const key in labels) {
|
|
@@ -289,8 +289,10 @@ export const CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV6 = {
|
|
|
289
289
|
export const CLUSTER_DEFAULT_NETWORK_SETTINGS: Pick<
|
|
290
290
|
ClusterDefaultConfig,
|
|
291
291
|
| 'clusterNetworksIpv4'
|
|
292
|
+
| 'clusterNetworksIpv6'
|
|
292
293
|
| 'clusterNetworksDualstack'
|
|
293
294
|
| 'serviceNetworksIpv4'
|
|
295
|
+
| 'serviceNetworksIpv6'
|
|
294
296
|
| 'serviceNetworksDualstack'
|
|
295
297
|
> = {
|
|
296
298
|
clusterNetworksIpv4: [
|
|
@@ -299,6 +301,12 @@ export const CLUSTER_DEFAULT_NETWORK_SETTINGS: Pick<
|
|
|
299
301
|
hostPrefix: CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV4.clusterNetworkHostPrefix,
|
|
300
302
|
},
|
|
301
303
|
],
|
|
304
|
+
clusterNetworksIpv6: [
|
|
305
|
+
{
|
|
306
|
+
cidr: CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV6.clusterNetworkCidr,
|
|
307
|
+
hostPrefix: CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV6.clusterNetworkHostPrefix,
|
|
308
|
+
},
|
|
309
|
+
],
|
|
302
310
|
clusterNetworksDualstack: [
|
|
303
311
|
{
|
|
304
312
|
cidr: CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV4.clusterNetworkCidr,
|
|
@@ -310,6 +318,7 @@ export const CLUSTER_DEFAULT_NETWORK_SETTINGS: Pick<
|
|
|
310
318
|
},
|
|
311
319
|
],
|
|
312
320
|
serviceNetworksIpv4: [{ cidr: CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV4.serviceNetworkCidr }],
|
|
321
|
+
serviceNetworksIpv6: [{ cidr: CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV6.serviceNetworkCidr }],
|
|
313
322
|
serviceNetworksDualstack: [
|
|
314
323
|
{ cidr: CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV4.serviceNetworkCidr },
|
|
315
324
|
{ cidr: CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV6.serviceNetworkCidr },
|
|
@@ -333,7 +342,7 @@ export const MS_PER_DAY = 1000 * 60 * 60 * 24;
|
|
|
333
342
|
|
|
334
343
|
export const NO_SUBNET_SET = 'NO_SUBNET_SET';
|
|
335
344
|
|
|
336
|
-
export const
|
|
345
|
+
export const SINGLE_STACK = 'singleStack';
|
|
337
346
|
export const DUAL_STACK = 'dualStack';
|
|
338
347
|
|
|
339
348
|
export const PREFIX_MAX_RESTRICTION = {
|
|
@@ -384,7 +393,11 @@ export const singleClusterOperators = [
|
|
|
384
393
|
OPERATOR_NAME_NODE_MAINTENANCE,
|
|
385
394
|
OPERATOR_NAME_FENCE_AGENTS_REMEDIATION,
|
|
386
395
|
OPERATOR_NAME_KUBE_DESCHEDULER,
|
|
396
|
+
OPERATOR_NAME_METALLB,
|
|
387
397
|
OPERATOR_NAME_CLUSTER_OBSERVABILITY,
|
|
398
|
+
OPERATOR_NAME_OADP,
|
|
399
|
+
OPERATOR_NAME_LSO,
|
|
400
|
+
OPERATOR_NAME_NUMA_RESOURCES,
|
|
388
401
|
OPERATOR_NAME_LOKI,
|
|
389
402
|
OPERATOR_NAME_OPENSHIFT_LOGGING,
|
|
390
403
|
];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FeatureSupportLevelId } from '@openshift-assisted/types/assisted-installer-service';
|
|
2
|
+
import { TFunction } from 'i18next';
|
|
2
3
|
|
|
3
4
|
export type NetworkTypeKey =
|
|
4
5
|
| 'OVNKubernetes'
|
|
@@ -15,14 +16,14 @@ export const NETWORK_TYPE_CILIUM: NetworkTypeKey = 'Cilium';
|
|
|
15
16
|
export const NETWORK_TYPE_CALICO: NetworkTypeKey = 'Calico';
|
|
16
17
|
export const NETWORK_TYPE_NONE: NetworkTypeKey = 'None';
|
|
17
18
|
|
|
18
|
-
export const NETWORK_TYPE_LABELS: Record<string, string>
|
|
19
|
-
[NETWORK_TYPE_OVN]: 'Open Virtual Networking (OVN)',
|
|
20
|
-
[NETWORK_TYPE_SDN]: 'Software-Defined Networking (SDN)',
|
|
21
|
-
[NETWORK_TYPE_CISCO_ACI]: 'Cisco ACI',
|
|
22
|
-
[NETWORK_TYPE_CILIUM]: 'Isovalent Cilium',
|
|
23
|
-
[NETWORK_TYPE_CALICO]: 'Tigera Calico',
|
|
24
|
-
[NETWORK_TYPE_NONE]: 'None (Custom CNI)',
|
|
25
|
-
};
|
|
19
|
+
export const NETWORK_TYPE_LABELS = (t: TFunction): Record<string, string> => ({
|
|
20
|
+
[NETWORK_TYPE_OVN]: t('ai:Open Virtual Networking (OVN)'),
|
|
21
|
+
[NETWORK_TYPE_SDN]: t('ai:Software-Defined Networking (SDN)'),
|
|
22
|
+
[NETWORK_TYPE_CISCO_ACI]: t('ai:Cisco ACI'),
|
|
23
|
+
[NETWORK_TYPE_CILIUM]: t('ai:Isovalent Cilium'),
|
|
24
|
+
[NETWORK_TYPE_CALICO]: t('ai:Tigera Calico'),
|
|
25
|
+
[NETWORK_TYPE_NONE]: t('ai:None (Custom CNI)'),
|
|
26
|
+
});
|
|
26
27
|
|
|
27
28
|
export const NETWORK_TYPE_FEATURE_IDS: Record<string, FeatureSupportLevelId> = {
|
|
28
29
|
[NETWORK_TYPE_OVN]: 'OVN_NETWORK_TYPE',
|