@openshift-assisted/ui-lib 2.17.0-cim → 2.17.1-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/Agent/AgentStatus.d.ts +1 -0
- package/build/@types/cim/components/Agent/AgentStatus.d.ts.map +1 -1
- package/build/@types/cim/components/Agent/AgentTable.d.ts.map +1 -1
- package/build/@types/cim/components/Agent/AgentsSelectionTable.d.ts.map +1 -1
- package/build/@types/cim/components/Agent/BMCForm.d.ts.map +1 -1
- package/build/@types/cim/components/Agent/BMHEventsModal.d.ts +8 -0
- package/build/@types/cim/components/Agent/BMHEventsModal.d.ts.map +1 -0
- package/build/@types/cim/components/Agent/BMHStatus.d.ts +2 -0
- package/build/@types/cim/components/Agent/BMHStatus.d.ts.map +1 -1
- package/build/@types/cim/components/Agent/BMHStatusInfo.d.ts +8 -0
- package/build/@types/cim/components/Agent/BMHStatusInfo.d.ts.map +1 -0
- package/build/@types/cim/components/Agent/MinimalHWRequirements.d.ts.map +1 -1
- package/build/@types/cim/components/Agent/index.d.ts +2 -0
- package/build/@types/cim/components/Agent/index.d.ts.map +1 -1
- package/build/@types/cim/components/Agent/tableColumns.d.ts +29 -0
- package/build/@types/cim/components/Agent/tableColumns.d.ts.map +1 -0
- package/build/@types/cim/components/Agent/tableUtils.d.ts +2 -22
- package/build/@types/cim/components/Agent/tableUtils.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/hostDiscovery/ClusterDeploymentHostDiscoveryTable.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.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/ClusterDeploymentHostsNetworkTable.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts +9 -5
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/HostedClusterWizard/NetworkStep/AdvancedNetworkFields.d.ts.map +1 -0
- package/build/@types/cim/components/Hypershift/modals/AddNodePoolModal.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/modals/ManageHostsModal.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/modals/RemoveNodePoolModal.d.ts.map +1 -1
- package/build/@types/cim/components/InfraEnv/EnvironmentDetails.d.ts.map +1 -1
- package/build/@types/cim/components/InfraEnv/EnvironmentErrors.d.ts +0 -1
- package/build/@types/cim/components/InfraEnv/EnvironmentErrors.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/agentStatus.d.ts.map +1 -1
- package/build/@types/cim/components/modals/AddBmcHostModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/AddBmcHostYamlForm.d.ts.map +1 -1
- package/build/@types/cim/components/modals/AddBmcHostYamlModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/CimConfiguration/CimConfigurationModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditBMHModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditNtpSourcesModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditProxyModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditPullSecretModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditSSHKeyModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/MassApproveAgentModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/ScaleUpModal.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/types.d.ts +1 -1
- package/build/@types/cim/hooks/types.d.ts.map +1 -1
- package/build/@types/cim/hooks/useEvents.d.ts +4 -0
- package/build/@types/cim/hooks/useEvents.d.ts.map +1 -0
- package/build/@types/cim/types/fromOCP/k8sTypes.d.ts +12 -0
- package/build/@types/cim/types/fromOCP/k8sTypes.d.ts.map +1 -1
- package/build/@types/cim/types/k8s/agent-cluster-install.d.ts +4 -0
- package/build/@types/cim/types/k8s/agent-cluster-install.d.ts.map +1 -1
- package/build/@types/cim/types/k8s/bare-metal-host.d.ts +20 -0
- package/build/@types/cim/types/k8s/bare-metal-host.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/utils.d.ts +2 -2
- package/build/@types/common/components/clusterConfiguration/utils.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/AdvancedNetworkFields.d.ts +7 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/AdvancedNetworkFields.d.ts.map +1 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts +10 -6
- package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts +13 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts.map +1 -0
- package/build/@types/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/SubnetsDropdown.d.ts +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/SubnetsDropdown.d.ts.map +1 -0
- package/build/@types/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.d.ts +4 -2
- package/build/@types/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/index.d.ts +7 -2
- package/build/@types/common/components/clusterWizard/networkingSteps/index.d.ts.map +1 -1
- package/build/@types/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/reorderNetworks.d.ts +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/reorderNetworks.d.ts.map +1 -0
- package/build/@types/common/components/hosts/HostStatus.d.ts.map +1 -1
- package/build/@types/common/components/hosts/HostValidationGroups.d.ts.map +1 -1
- package/build/@types/common/components/hosts/MassChangeHostnameModal.d.ts.map +1 -1
- package/build/@types/common/components/hosts/index.d.ts +2 -0
- package/build/@types/common/components/hosts/index.d.ts.map +1 -1
- package/build/@types/common/components/hosts/tableColumns.d.ts +21 -0
- package/build/@types/common/components/hosts/tableColumns.d.ts.map +1 -0
- package/build/@types/common/components/hosts/tableUtils.d.ts +3 -21
- package/build/@types/common/components/hosts/tableUtils.d.ts.map +1 -1
- package/build/@types/common/components/hosts/types.d.ts +1 -0
- package/build/@types/common/components/hosts/types.d.ts.map +1 -1
- package/build/@types/common/components/ui/EventsList.d.ts.map +1 -1
- package/build/@types/common/components/ui/PrismCode.d.ts +13 -11
- package/build/@types/common/components/ui/PrismCode.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/LabelField.d.ts +3 -11
- package/build/@types/common/components/ui/formik/LabelField.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts +3 -5
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
- package/build/@types/common/components/ui/index.d.ts +1 -1
- package/build/@types/common/components/ui/index.d.ts.map +1 -1
- package/build/@types/common/config/constants.d.ts +2 -1
- package/build/@types/common/config/constants.d.ts.map +1 -1
- package/build/@types/common/types/clusters.d.ts +0 -1
- package/build/@types/common/types/clusters.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationTableBase.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/ResetClusterModal.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/ClusterHostsTable.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/HostsDiscoveryTable.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/HostsStorageTable.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/use-hosts-table.d.ts.map +1 -1
- package/build/cjs/cim/components/Agent/AgentStatus.js +2 -2
- package/build/cjs/cim/components/Agent/AgentStatus.js.map +1 -1
- package/build/cjs/cim/components/Agent/AgentTable.js +10 -9
- package/build/cjs/cim/components/Agent/AgentTable.js.map +1 -1
- package/build/cjs/cim/components/Agent/AgentsSelectionTable.js +9 -8
- package/build/cjs/cim/components/Agent/AgentsSelectionTable.js.map +1 -1
- package/build/cjs/cim/components/Agent/BMCForm.js +4 -5
- package/build/cjs/cim/components/Agent/BMCForm.js.map +1 -1
- package/build/cjs/cim/components/Agent/BMHEventsModal.js +54 -0
- package/build/cjs/cim/components/Agent/BMHEventsModal.js.map +1 -0
- package/build/cjs/cim/components/Agent/BMHStatus.js +3 -2
- package/build/cjs/cim/components/Agent/BMHStatus.js.map +1 -1
- package/build/cjs/cim/components/Agent/BMHStatusInfo.js +59 -0
- package/build/cjs/cim/components/Agent/BMHStatusInfo.js.map +1 -0
- package/build/cjs/cim/components/Agent/MinimalHWRequirements.js +6 -5
- package/build/cjs/cim/components/Agent/MinimalHWRequirements.js.map +1 -1
- package/build/cjs/cim/components/Agent/index.js +2 -0
- package/build/cjs/cim/components/Agent/index.js.map +1 -1
- package/build/cjs/cim/components/Agent/tableColumns.js +184 -0
- package/build/cjs/cim/components/Agent/tableColumns.js.map +1 -0
- package/build/cjs/cim/components/Agent/tableUtils.js +4 -174
- package/build/cjs/cim/components/Agent/tableUtils.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsTable.js +10 -10
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsTable.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/LocationsSelector.js +2 -2
- package/build/cjs/cim/components/ClusterDeployment/LocationsSelector.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js +28 -38
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.js +1 -1
- package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/hostDiscovery/ClusterDeploymentHostDiscoveryTable.js +13 -14
- package/build/cjs/cim/components/ClusterDeployment/hostDiscovery/ClusterDeploymentHostDiscoveryTable.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.js +13 -10
- package/build/cjs/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js +19 -18
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentHostsNetworkTable.js +9 -10
- package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentHostsNetworkTable.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingForm.js +2 -2
- package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingForm.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingStep.js +12 -8
- package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js +6 -4
- package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js +15 -9
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/DetailsPage/NodePoolsTable.js +2 -2
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/HostsStep/HostsForm.js +1 -1
- package/build/cjs/{common/components/clusterConfiguration → cim/components/Hypershift/HostedClusterWizard/NetworkStep}/AdvancedNetworkFields.js +3 -3
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/NetworkStep/AdvancedNetworkFields.js.map +1 -0
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkForm.js +1 -1
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkForm.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/modals/AddNodePoolModal.js +4 -4
- package/build/cjs/cim/components/Hypershift/modals/AddNodePoolModal.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/modals/ManageHostsModal.js +4 -4
- package/build/cjs/cim/components/Hypershift/modals/ManageHostsModal.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/Hypershift/modals/RemoveNodePoolModal.js +4 -4
- package/build/cjs/cim/components/Hypershift/modals/RemoveNodePoolModal.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js +5 -2
- package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/EnvironmentErrors.js +2 -4
- package/build/cjs/cim/components/InfraEnv/EnvironmentErrors.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/InfraEnvAgentTable.js +11 -11
- package/build/cjs/cim/components/InfraEnv/InfraEnvAgentTable.js.map +1 -1
- package/build/cjs/cim/components/common/ResourceAlerts.js +2 -4
- package/build/cjs/cim/components/common/ResourceAlerts.js.map +1 -1
- package/build/cjs/cim/components/helpers/agentStatus.js +5 -0
- package/build/cjs/cim/components/helpers/agentStatus.js.map +1 -1
- package/build/cjs/cim/components/helpers/toAssisted.js +28 -26
- package/build/cjs/cim/components/helpers/toAssisted.js.map +1 -1
- package/build/cjs/cim/components/modals/AddBmcHostModal.js +7 -5
- package/build/cjs/cim/components/modals/AddBmcHostModal.js.map +1 -1
- package/build/cjs/cim/components/modals/AddBmcHostYamlForm.js +2 -3
- package/build/cjs/cim/components/modals/AddBmcHostYamlForm.js.map +1 -1
- package/build/cjs/cim/components/modals/AddBmcHostYamlModal.js +7 -5
- package/build/cjs/cim/components/modals/AddBmcHostYamlModal.js.map +1 -1
- package/build/cjs/cim/components/modals/AddHostModal.js +9 -7
- package/build/cjs/cim/components/modals/AddHostModal.js.map +1 -1
- package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js +17 -22
- package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditBMHModal.js +4 -2
- package/build/cjs/cim/components/modals/EditBMHModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditNtpSourcesModal.js +4 -4
- package/build/cjs/cim/components/modals/EditNtpSourcesModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditProxyModal.js +4 -4
- package/build/cjs/cim/components/modals/EditProxyModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditPullSecretModal.js +4 -4
- package/build/cjs/cim/components/modals/EditPullSecretModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditSSHKeyModal.js +5 -5
- package/build/cjs/cim/components/modals/EditSSHKeyModal.js.map +1 -1
- package/build/cjs/cim/components/modals/MassApproveAgentModal.js +4 -4
- package/build/cjs/cim/components/modals/MassApproveAgentModal.js.map +1 -1
- package/build/cjs/cim/components/modals/MassDeleteAgentModal.js +1 -1
- package/build/cjs/cim/components/modals/MassDeleteAgentModal.js.map +1 -1
- package/build/cjs/cim/components/modals/ScaleUpModal.js +4 -4
- package/build/cjs/cim/components/modals/ScaleUpModal.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/useEvents.js +12 -0
- package/build/cjs/cim/hooks/useEvents.js.map +1 -0
- package/build/cjs/common/components/clusterConfiguration/DiscoveryInstructions.js +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryInstructions.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js +9 -9
- package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/ProxyFields.js +3 -3
- package/build/cjs/common/components/clusterConfiguration/ProxyFields.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/utils.js +3 -4
- package/build/cjs/common/components/clusterConfiguration/utils.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/AdvancedNetworkFields.js +62 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/AdvancedNetworkFields.js.map +1 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js +130 -46
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js.map +1 -1
- package/build/cjs/{ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js → common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js} +59 -38
- package/build/cjs/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js.map +1 -0
- package/build/cjs/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/SubnetsDropdown.js +7 -5
- package/build/cjs/common/components/clusterWizard/networkingSteps/SubnetsDropdown.js.map +1 -0
- package/build/cjs/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.js +96 -38
- package/build/cjs/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/index.js +13 -3
- package/build/cjs/common/components/clusterWizard/networkingSteps/index.js.map +1 -1
- package/build/cjs/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/reorderNetworks.js +2 -2
- package/build/cjs/common/components/clusterWizard/networkingSteps/reorderNetworks.js.map +1 -0
- package/build/cjs/common/components/hosts/HostStatus.js +8 -6
- package/build/cjs/common/components/hosts/HostStatus.js.map +1 -1
- package/build/cjs/common/components/hosts/HostValidationGroups.js +2 -3
- package/build/cjs/common/components/hosts/HostValidationGroups.js.map +1 -1
- package/build/cjs/common/components/hosts/MassChangeHostnameModal.js +7 -13
- package/build/cjs/common/components/hosts/MassChangeHostnameModal.js.map +1 -1
- package/build/cjs/common/components/hosts/index.js +2 -0
- package/build/cjs/common/components/hosts/index.js.map +1 -1
- package/build/cjs/common/components/hosts/tableColumns.js +336 -0
- package/build/cjs/common/components/hosts/tableColumns.js.map +1 -0
- package/build/cjs/common/components/hosts/tableUtils.js +1 -331
- package/build/cjs/common/components/hosts/tableUtils.js.map +1 -1
- package/build/cjs/common/components/ui/EventsList.js +1 -1
- package/build/cjs/common/components/ui/EventsList.js.map +1 -1
- package/build/cjs/common/components/ui/PrismCode.js +29 -20
- package/build/cjs/common/components/ui/PrismCode.js.map +1 -1
- package/build/cjs/common/components/ui/formik/LabelField.js +34 -26
- package/build/cjs/common/components/ui/formik/LabelField.js.map +1 -1
- package/build/cjs/common/components/ui/formik/validationSchemas.js +60 -78
- package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
- package/build/cjs/common/components/ui/index.js +1 -2
- package/build/cjs/common/components/ui/index.js.map +1 -1
- package/build/cjs/common/config/constants.js +27 -4
- package/build/cjs/common/config/constants.js.map +1 -1
- package/build/cjs/common/types/clusters.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmBaseDomainField.js +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmBaseDomainField.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +6 -12
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationTableBase.js +8 -9
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationTableBase.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js +6 -16
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js +1 -1
- package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/OperatorsSelect.js +1 -1
- package/build/cjs/ocm/components/clusterWizard/OperatorsSelect.js.map +1 -1
- package/build/cjs/ocm/components/hosts/ClusterHostsTable.js +7 -8
- package/build/cjs/ocm/components/hosts/ClusterHostsTable.js.map +1 -1
- package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js +7 -8
- package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js.map +1 -1
- package/build/cjs/ocm/components/hosts/HostsStorageTable.js +5 -6
- package/build/cjs/ocm/components/hosts/HostsStorageTable.js.map +1 -1
- package/build/cjs/ocm/components/hosts/use-hosts-table.js +2 -3
- package/build/cjs/ocm/components/hosts/use-hosts-table.js.map +1 -1
- package/lib/cim/components/Agent/AgentStatus.tsx +3 -0
- package/lib/cim/components/Agent/AgentTable.tsx +3 -2
- package/lib/cim/components/Agent/AgentsSelectionTable.tsx +3 -12
- package/lib/cim/components/Agent/BMCForm.tsx +8 -7
- package/lib/cim/components/Agent/BMHEventsModal.tsx +87 -0
- package/lib/cim/components/Agent/BMHStatus.tsx +17 -17
- package/lib/cim/components/Agent/BMHStatusInfo.tsx +94 -0
- package/lib/cim/components/Agent/MinimalHWRequirements.tsx +17 -12
- package/lib/cim/components/Agent/index.ts +2 -0
- package/lib/cim/components/Agent/tableColumns.tsx +257 -0
- package/lib/cim/components/Agent/tableUtils.tsx +4 -243
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsTable.tsx +2 -2
- package/lib/cim/components/ClusterDeployment/LocationsSelector.tsx +2 -2
- package/lib/cim/components/ClusterDeployment/NetworkConfiguration.tsx +61 -44
- package/lib/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.tsx +2 -2
- package/lib/cim/components/ClusterDeployment/hostDiscovery/ClusterDeploymentHostDiscoveryTable.tsx +3 -5
- package/lib/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.tsx +27 -28
- package/lib/cim/components/ClusterDeployment/networkConfigurationValidation.ts +30 -36
- package/lib/cim/components/ClusterDeployment/networking/ClusterDeploymentHostsNetworkTable.tsx +2 -7
- package/lib/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingForm.tsx +3 -3
- package/lib/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingStep.tsx +26 -26
- package/lib/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.tsx +20 -6
- package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +32 -12
- package/lib/cim/components/Hypershift/DetailsPage/NodePoolsTable.tsx +2 -2
- package/lib/cim/components/Hypershift/HostedClusterWizard/HostsStep/HostsForm.tsx +1 -1
- package/lib/{common/components/clusterConfiguration → cim/components/Hypershift/HostedClusterWizard/NetworkStep}/AdvancedNetworkFields.tsx +4 -4
- package/lib/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkForm.tsx +1 -1
- package/lib/cim/components/Hypershift/modals/AddNodePoolModal.tsx +15 -16
- package/lib/cim/components/Hypershift/modals/ManageHostsModal.tsx +15 -16
- package/lib/cim/components/Hypershift/modals/NodePoolForm.tsx +1 -1
- package/lib/cim/components/Hypershift/modals/RemoveNodePoolModal.tsx +14 -11
- package/lib/cim/components/InfraEnv/EnvironmentDetails.tsx +6 -3
- package/lib/cim/components/InfraEnv/EnvironmentErrors.tsx +1 -6
- package/lib/cim/components/InfraEnv/InfraEnvAgentTable.tsx +6 -6
- package/lib/cim/components/common/ResourceAlerts.tsx +4 -4
- package/lib/cim/components/helpers/agentStatus.tsx +5 -0
- package/lib/cim/components/helpers/toAssisted.ts +15 -15
- package/lib/cim/components/modals/AddBmcHostModal.tsx +14 -13
- package/lib/cim/components/modals/AddBmcHostYamlForm.tsx +6 -5
- package/lib/cim/components/modals/AddBmcHostYamlModal.tsx +8 -7
- package/lib/cim/components/modals/AddHostModal.tsx +22 -11
- package/lib/cim/components/modals/CimConfiguration/CimConfigurationModal.tsx +70 -66
- package/lib/cim/components/modals/EditBMHModal.tsx +2 -3
- package/lib/cim/components/modals/EditNtpSourcesModal.tsx +15 -10
- package/lib/cim/components/modals/EditProxyModal.tsx +16 -10
- package/lib/cim/components/modals/EditPullSecretModal.tsx +14 -10
- package/lib/cim/components/modals/EditSSHKeyModal.tsx +16 -13
- package/lib/cim/components/modals/MassApproveAgentModal.tsx +16 -8
- package/lib/cim/components/modals/MassDeleteAgentModal.tsx +1 -1
- package/lib/cim/components/modals/ScaleUpModal.tsx +9 -7
- package/lib/cim/hooks/index.tsx +1 -0
- package/lib/cim/hooks/types.tsx +4 -1
- package/lib/cim/hooks/useEvents.tsx +14 -0
- package/lib/cim/types/fromOCP/k8sTypes.ts +13 -0
- package/lib/cim/types/k8s/agent-cluster-install.ts +4 -0
- package/lib/cim/types/k8s/bare-metal-host.ts +20 -0
- package/lib/common/components/clusterConfiguration/DiscoveryInstructions.tsx +1 -1
- package/lib/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.tsx +7 -10
- package/lib/common/components/clusterConfiguration/ProxyFields.tsx +3 -3
- package/lib/common/components/clusterConfiguration/utils.ts +22 -12
- package/lib/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/AdvancedNetworkFields.tsx +54 -38
- package/lib/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.tsx +221 -53
- package/lib/{ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx → common/components/clusterWizard/networkingSteps/StackTypeControlGroup.tsx} +64 -28
- package/lib/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/SubnetsDropdown.tsx +4 -7
- package/lib/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.tsx +199 -80
- package/lib/common/components/clusterWizard/networkingSteps/index.ts +10 -2
- package/lib/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/reorderNetworks.ts +2 -1
- package/lib/common/components/hosts/HostStatus.tsx +14 -3
- package/lib/common/components/hosts/HostValidationGroups.tsx +5 -4
- package/lib/common/components/hosts/MassChangeHostnameModal.tsx +44 -38
- package/lib/common/components/hosts/index.ts +2 -0
- package/lib/common/components/hosts/tableColumns.tsx +411 -0
- package/lib/common/components/hosts/tableUtils.tsx +4 -409
- package/lib/common/components/hosts/types.ts +1 -0
- package/lib/common/components/ui/EventsList.tsx +4 -2
- package/lib/common/components/ui/PrismCode.tsx +35 -22
- package/lib/common/components/ui/formik/LabelField.tsx +77 -60
- package/lib/common/components/ui/formik/validationSchemas.ts +64 -107
- package/lib/common/components/ui/index.ts +1 -1
- package/lib/common/config/constants.ts +33 -2
- package/lib/common/types/clusters.ts +0 -1
- package/lib/ocm/components/clusterConfiguration/OcmBaseDomainField.tsx +2 -2
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +12 -23
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationTableBase.tsx +3 -2
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts +10 -18
- package/lib/ocm/components/clusterDetail/ResetClusterModal.tsx +2 -1
- package/lib/ocm/components/clusterWizard/OperatorsSelect.tsx +2 -2
- package/lib/ocm/components/hosts/ClusterHostsTable.tsx +4 -3
- package/lib/ocm/components/hosts/HostsDiscoveryTable.tsx +2 -4
- package/lib/ocm/components/hosts/HostsStorageTable.tsx +5 -7
- package/lib/ocm/components/hosts/use-hosts-table.tsx +2 -1
- package/package.json +3 -3
- package/build/@types/common/components/clusterConfiguration/AdvancedNetworkFields.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.d.ts +0 -4
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.d.ts +0 -12
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.d.ts +0 -11
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts +0 -9
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts.map +0 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.d.ts.map +0 -1
- package/build/cjs/common/components/clusterConfiguration/AdvancedNetworkFields.js.map +0 -1
- package/build/cjs/common/components/ui/formik/LabelField.css +0 -43
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js +0 -53
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js.map +0 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js +0 -124
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js.map +0 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js.map +0 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.js.map +0 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js +0 -98
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js.map +0 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.js.map +0 -1
- package/lib/common/components/ui/formik/LabelField.css +0 -43
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx +0 -208
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx +0 -283
- /package/build/@types/{common/components/clusterConfiguration → cim/components/Hypershift/HostedClusterWizard/NetworkStep}/AdvancedNetworkFields.d.ts +0 -0
|
@@ -8,31 +8,19 @@ import {
|
|
|
8
8
|
Grid,
|
|
9
9
|
} from '@patternfly/react-core';
|
|
10
10
|
import { FieldArray, useFormikContext } from 'formik';
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
} from '../../../../common';
|
|
17
|
-
import { OcmInputField } from '../../ui/OcmFormFields';
|
|
18
|
-
|
|
19
|
-
const IPv4PrefixPopoverText =
|
|
20
|
-
'For example, if Cluster Network Host Prefix is set to 23, then each node is assigned a /23 subnet out of the given cidr (clusterNetworkCIDR), which allows for 510 (2^(32 - 23) - 2) pod IPs addresses.';
|
|
21
|
-
|
|
22
|
-
const IPv6PrefixPopoverText =
|
|
23
|
-
'For example, if Cluster Network Host Prefix is set to 116, then each node is assigned a /116 subnet out of the given cidr (clusterNetworkCIDR), which allows for 4,094 (2^(128 - 116) - 2) pod IPs addresses.';
|
|
24
|
-
|
|
25
|
-
const ClusterPrefixHelperText =
|
|
26
|
-
'Defines how big the subnets for each individual node are out of the given CIDR. Must enter a whole number.';
|
|
27
|
-
|
|
28
|
-
const clusterCidrHelperText =
|
|
29
|
-
'The block must not overlap with existing physical networks. To access the Pods from an external network, configure load balancers and routers to manage the traffic.';
|
|
11
|
+
import { NetworkConfigurationValues } from '../../../types';
|
|
12
|
+
import { DUAL_STACK, PREFIX_MAX_RESTRICTION } from '../../../config';
|
|
13
|
+
import { PopoverIcon } from '../../ui';
|
|
14
|
+
import { InputField } from '../../ui/formik';
|
|
15
|
+
import { useTranslation } from '../../../hooks/use-translation-wrapper';
|
|
30
16
|
|
|
31
|
-
|
|
32
|
-
|
|
17
|
+
export type AdvancedNetworkFieldsProps = {
|
|
18
|
+
isDisabled?: boolean;
|
|
19
|
+
};
|
|
33
20
|
|
|
34
|
-
const AdvancedNetworkFields = () => {
|
|
21
|
+
const AdvancedNetworkFields = ({ isDisabled = false }: AdvancedNetworkFieldsProps) => {
|
|
35
22
|
const { values, errors } = useFormikContext<NetworkConfigurationValues>();
|
|
23
|
+
const { t } = useTranslation();
|
|
36
24
|
|
|
37
25
|
const isDualStack = values.stackType === DUAL_STACK;
|
|
38
26
|
|
|
@@ -43,15 +31,36 @@ const AdvancedNetworkFields = () => {
|
|
|
43
31
|
|
|
44
32
|
const isSubnetIPv6 = (index: number) => (isDualStack ? !!index : false);
|
|
45
33
|
|
|
34
|
+
const IPv4PrefixPopoverText = t(
|
|
35
|
+
'ai:For example, if Cluster Network Host Prefix is set to 23, then each node is assigned a /23 subnet out of the given cidr (clusterNetworkCIDR), which allows for 510 (2^(32 - 23) - 2) pod IPs addresses.',
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
const IPv6PrefixPopoverText = t(
|
|
39
|
+
'ai:For example, if Cluster Network Host Prefix is set to 116, then each node is assigned a /116 subnet out of the given cidr (clusterNetworkCIDR), which allows for 4,094 (2^(128 - 116) - 2) pod IPs addresses.',
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
const clusterPrefixHelperText = t(
|
|
43
|
+
'ai:Defines how big the subnets for each individual node are out of the given CIDR. Must enter a whole number.',
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
const clusterCidrHelperText = t(
|
|
47
|
+
'ai:The block must not overlap with existing physical networks. To access the Pods from an external network, configure load balancers and routers to manage the traffic.',
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const serviceCidrHelperText = t(
|
|
51
|
+
'ai:Enter only 1 IP address pool. If you need to access the services from an external network, configure load balancers and routers to manage the traffic.',
|
|
52
|
+
);
|
|
53
|
+
|
|
46
54
|
const clusterNetworkHostPrefixPopoverText = (index: number) => (
|
|
47
55
|
<>
|
|
48
56
|
<p>
|
|
49
|
-
The subnet prefix length to assign to each individual node.{' '}
|
|
57
|
+
{t('ai:The subnet prefix length to assign to each individual node.')}{' '}
|
|
50
58
|
{isSubnetIPv6(index) ? IPv6PrefixPopoverText : IPv4PrefixPopoverText}
|
|
51
59
|
</p>
|
|
52
60
|
<p>
|
|
53
|
-
|
|
54
|
-
|
|
61
|
+
{t(
|
|
62
|
+
'ai:If you are required to provide access to nodes from an external network, configure load balancers and routers to manage the traffic.',
|
|
63
|
+
)}
|
|
55
64
|
</p>
|
|
56
65
|
</>
|
|
57
66
|
);
|
|
@@ -60,32 +69,37 @@ const AdvancedNetworkFields = () => {
|
|
|
60
69
|
<Grid className="pf-v6-u-ml-lg">
|
|
61
70
|
<FieldArray name="clusterNetworks">
|
|
62
71
|
{() => (
|
|
63
|
-
<FormGroup fieldId="clusterNetworks" labelInfo={isDualStack && 'Primary'}>
|
|
72
|
+
<FormGroup fieldId="clusterNetworks" labelInfo={isDualStack && t('ai:Primary')}>
|
|
64
73
|
{values.clusterNetworks?.map((_, index) => {
|
|
65
74
|
return (
|
|
66
75
|
<Grid key={index} className="pf-v6-u-pb-md">
|
|
67
76
|
<GridItem className={'network-field-group'}>
|
|
68
|
-
<
|
|
77
|
+
<InputField
|
|
69
78
|
name={`clusterNetworks.${index}.cidr`}
|
|
70
79
|
label={
|
|
71
80
|
<>
|
|
72
|
-
<span>Cluster network CIDR </span>
|
|
81
|
+
<span>{t('ai:Cluster network CIDR')} </span>
|
|
73
82
|
<PopoverIcon
|
|
74
|
-
bodyContent={
|
|
83
|
+
bodyContent={t(
|
|
84
|
+
'ai:IP address blocks from which Pod IPs are allocated.',
|
|
85
|
+
)}
|
|
75
86
|
/>
|
|
76
87
|
</>
|
|
77
88
|
}
|
|
78
89
|
helperText={clusterCidrHelperText}
|
|
79
90
|
isRequired
|
|
80
|
-
|
|
91
|
+
isDisabled={isDisabled}
|
|
92
|
+
labelInfo={
|
|
93
|
+
isDualStack ? (index === 0 ? t('ai:Primary') : t('ai:Secondary')) : ''
|
|
94
|
+
}
|
|
81
95
|
/>
|
|
82
96
|
</GridItem>
|
|
83
97
|
<GridItem className={'network-field-group'}>
|
|
84
|
-
<
|
|
98
|
+
<InputField
|
|
85
99
|
name={`clusterNetworks.${index}.hostPrefix`}
|
|
86
100
|
label={
|
|
87
101
|
<>
|
|
88
|
-
<span>Cluster network host prefix </span>
|
|
102
|
+
<span>{t('ai:Cluster network host prefix')} </span>
|
|
89
103
|
<PopoverIcon
|
|
90
104
|
bodyContent={clusterNetworkHostPrefixPopoverText(index)}
|
|
91
105
|
minWidth="30rem"
|
|
@@ -99,8 +113,9 @@ const AdvancedNetworkFields = () => {
|
|
|
99
113
|
? PREFIX_MAX_RESTRICTION.IPv6
|
|
100
114
|
: PREFIX_MAX_RESTRICTION.IPv4
|
|
101
115
|
}
|
|
102
|
-
helperText={
|
|
116
|
+
helperText={clusterPrefixHelperText}
|
|
103
117
|
isRequired
|
|
118
|
+
isDisabled={isDisabled}
|
|
104
119
|
/>
|
|
105
120
|
</GridItem>
|
|
106
121
|
</Grid>
|
|
@@ -116,22 +131,23 @@ const AdvancedNetworkFields = () => {
|
|
|
116
131
|
|
|
117
132
|
<FieldArray name="serviceNetworks">
|
|
118
133
|
{() => (
|
|
119
|
-
<FormGroup fieldId="serviceNetworks" labelInfo={isDualStack && 'Primary'}>
|
|
134
|
+
<FormGroup fieldId="serviceNetworks" labelInfo={isDualStack && t('ai:Primary')}>
|
|
120
135
|
{values.serviceNetworks?.map((_, index) => (
|
|
121
136
|
<GridItem key={index} className={'network-field-group'}>
|
|
122
|
-
<
|
|
137
|
+
<InputField
|
|
123
138
|
name={`serviceNetworks.${index}.cidr`}
|
|
124
139
|
label={
|
|
125
140
|
<>
|
|
126
|
-
<span>Service network CIDR </span>
|
|
141
|
+
<span>{t('ai:Service network CIDR')} </span>
|
|
127
142
|
<PopoverIcon
|
|
128
|
-
bodyContent={'The IP address pool used for service IP addresses.'}
|
|
143
|
+
bodyContent={t('ai:The IP address pool used for service IP addresses.')}
|
|
129
144
|
/>
|
|
130
145
|
</>
|
|
131
146
|
}
|
|
132
147
|
helperText={serviceCidrHelperText}
|
|
133
148
|
isRequired
|
|
134
|
-
|
|
149
|
+
isDisabled={isDisabled}
|
|
150
|
+
labelInfo={isDualStack ? (index === 0 ? t('ai:Primary') : t('ai:Secondary')) : ''}
|
|
135
151
|
/>
|
|
136
152
|
</GridItem>
|
|
137
153
|
))}
|
|
@@ -1,30 +1,156 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Alert,
|
|
4
|
+
AlertActionLink,
|
|
5
|
+
AlertVariant,
|
|
6
|
+
FormGroup,
|
|
7
|
+
Popover,
|
|
8
|
+
Stack,
|
|
9
|
+
StackItem,
|
|
10
|
+
} from '@patternfly/react-core';
|
|
11
|
+
import { FieldArray, useFormikContext, FormikHelpers } from 'formik';
|
|
12
|
+
import { Address4, Address6 } from 'ip-address';
|
|
13
|
+
|
|
14
|
+
import { HostSubnet, NetworkConfigurationValues } from '../../../types';
|
|
15
|
+
import { DUAL_STACK, NO_SUBNET_SET } from '../../../config';
|
|
16
|
+
import { isMajorMinorVersionEqualOrGreater } from '../../../utils';
|
|
7
17
|
import { useTranslation } from '../../../hooks/use-translation-wrapper';
|
|
18
|
+
import { SubnetsDropdown } from './SubnetsDropdown';
|
|
19
|
+
import { reorderNetworksForPrimary } from './reorderNetworks';
|
|
20
|
+
import {
|
|
21
|
+
Cluster,
|
|
22
|
+
Host,
|
|
23
|
+
MachineNetwork,
|
|
24
|
+
} from '@openshift-assisted/types/assisted-installer-service';
|
|
25
|
+
|
|
26
|
+
const subnetSort = (subA: HostSubnet, subB: HostSubnet) =>
|
|
27
|
+
subA.humanized.localeCompare(subB.humanized);
|
|
28
|
+
|
|
29
|
+
const useAutoSelectDefaultMachineNetworks = (
|
|
30
|
+
autoSelectNetwork: boolean,
|
|
31
|
+
setFieldValue: FormikHelpers<NetworkConfigurationValues>['setFieldValue'],
|
|
32
|
+
cidrV4: MachineNetwork['cidr'],
|
|
33
|
+
cidrV6: MachineNetwork['cidr'],
|
|
34
|
+
clusterId: string,
|
|
35
|
+
isDualStack: boolean,
|
|
36
|
+
) => {
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (autoSelectNetwork) {
|
|
39
|
+
setFieldValue(
|
|
40
|
+
'machineNetworks',
|
|
41
|
+
isDualStack
|
|
42
|
+
? [
|
|
43
|
+
{ cidr: cidrV4, clusterId },
|
|
44
|
+
{ cidr: cidrV6, clusterId },
|
|
45
|
+
]
|
|
46
|
+
: [{ cidr: cidrV4, clusterId }],
|
|
47
|
+
false,
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
}, [autoSelectNetwork, cidrV4, cidrV6, clusterId, isDualStack, setFieldValue]);
|
|
51
|
+
};
|
|
8
52
|
|
|
9
53
|
export interface AvailableSubnetsControlProps {
|
|
10
|
-
|
|
11
|
-
|
|
54
|
+
clusterId: Cluster['id'];
|
|
55
|
+
hostSubnets: HostSubnet[];
|
|
12
56
|
isRequired: boolean;
|
|
13
|
-
|
|
57
|
+
isDisabled: boolean;
|
|
58
|
+
openshiftVersion?: string;
|
|
59
|
+
isViewerMode?: boolean;
|
|
60
|
+
hosts?: Host[];
|
|
61
|
+
isMultiNodeCluster?: boolean;
|
|
14
62
|
}
|
|
15
63
|
|
|
16
64
|
export const AvailableSubnetsControl = ({
|
|
65
|
+
clusterId,
|
|
17
66
|
hostSubnets,
|
|
18
|
-
hosts,
|
|
19
67
|
isRequired = false,
|
|
20
|
-
|
|
68
|
+
isDisabled,
|
|
69
|
+
openshiftVersion,
|
|
70
|
+
isViewerMode = false,
|
|
71
|
+
hosts,
|
|
72
|
+
isMultiNodeCluster = true,
|
|
21
73
|
}: AvailableSubnetsControlProps) => {
|
|
22
74
|
const { t } = useTranslation();
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
75
|
+
const { values, errors, setFieldValue } = useFormikContext<NetworkConfigurationValues>();
|
|
76
|
+
const isDualStack = values.stackType === DUAL_STACK;
|
|
77
|
+
|
|
78
|
+
// Check if OCP version supports IPv6 as primary network
|
|
79
|
+
const supportsIPv6Primary =
|
|
80
|
+
openshiftVersion && isMajorMinorVersionEqualOrGreater(openshiftVersion, '4.12');
|
|
81
|
+
|
|
82
|
+
const IPv4Subnets = hostSubnets
|
|
83
|
+
.filter((subnet) => Address4.isValid(subnet.subnet))
|
|
84
|
+
.sort(subnetSort);
|
|
85
|
+
const IPv6Subnets = hostSubnets
|
|
86
|
+
.filter((subnet) => Address6.isValid(subnet.subnet))
|
|
87
|
+
.sort(subnetSort);
|
|
88
|
+
|
|
89
|
+
// For OCP >= 4.12, both networks can use either IPv4 or IPv6
|
|
90
|
+
const allSubnets = supportsIPv6Primary
|
|
91
|
+
? [...IPv4Subnets, ...IPv6Subnets].sort(subnetSort)
|
|
92
|
+
: IPv4Subnets;
|
|
93
|
+
|
|
94
|
+
// For auto-selection, prefer IPv4 as primary (even for dual-stack)
|
|
95
|
+
const cidrV4 = IPv4Subnets.length >= 1 ? IPv4Subnets[0].subnet : NO_SUBNET_SET;
|
|
96
|
+
const cidrV6 = IPv6Subnets.length >= 1 ? IPv6Subnets[0].subnet : NO_SUBNET_SET;
|
|
97
|
+
const hasEmptySelection = (values.machineNetworks ?? []).length === 0;
|
|
98
|
+
const autoSelectNetwork = !isViewerMode && hasEmptySelection;
|
|
99
|
+
useAutoSelectDefaultMachineNetworks(
|
|
100
|
+
autoSelectNetwork,
|
|
101
|
+
setFieldValue,
|
|
102
|
+
cidrV4,
|
|
103
|
+
cidrV6,
|
|
104
|
+
clusterId,
|
|
105
|
+
isDualStack,
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
// Ensure primary and secondary machine networks are not in the same stack (IPv4/IPv6).
|
|
109
|
+
// If the user switches primary to the same address family as secondary, adjust secondary to the opposite family
|
|
110
|
+
// (or clear it if no subnet is available).
|
|
111
|
+
React.useEffect(() => {
|
|
112
|
+
if (!isDualStack) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (!values.machineNetworks || values.machineNetworks.length < 2) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const first = values.machineNetworks?.[0]?.cidr || '';
|
|
119
|
+
const second = values.machineNetworks?.[1]?.cidr || '';
|
|
120
|
+
if (!first || !second) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const firstIsV4 = Address4.isValid(first);
|
|
125
|
+
const firstIsV6 = Address6.isValid(first);
|
|
126
|
+
const secondIsV4 = Address4.isValid(second);
|
|
127
|
+
const secondIsV6 = Address6.isValid(second);
|
|
128
|
+
|
|
129
|
+
// If both are the same family, force the secondary to the opposite family.
|
|
130
|
+
if ((firstIsV4 && secondIsV4) || (firstIsV6 && secondIsV6)) {
|
|
131
|
+
const replacement = firstIsV4
|
|
132
|
+
? IPv6Subnets[0]?.subnet ?? NO_SUBNET_SET
|
|
133
|
+
: IPv4Subnets[0]?.subnet ?? NO_SUBNET_SET;
|
|
134
|
+
|
|
135
|
+
if (replacement !== second) {
|
|
136
|
+
setFieldValue('machineNetworks.1.cidr', replacement, false);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}, [isDualStack, values.machineNetworks, IPv4Subnets, IPv6Subnets, setFieldValue]);
|
|
140
|
+
|
|
141
|
+
// Helper text showing excluded hosts
|
|
142
|
+
const getExcludedHostsAlert = React.useCallback(
|
|
143
|
+
(subnetCidr: string | undefined) => {
|
|
144
|
+
if (!hosts || !isMultiNodeCluster || !subnetCidr) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
const matchingSubnet = hostSubnets.find((hn) => hn.subnet === subnetCidr);
|
|
148
|
+
if (!matchingSubnet) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
|
|
26
152
|
const excludedHosts =
|
|
27
|
-
hosts
|
|
153
|
+
hosts.filter(
|
|
28
154
|
(host) =>
|
|
29
155
|
!['disabled', 'disconnected'].includes(host.status) &&
|
|
30
156
|
!matchingSubnet.hostIDs.includes(host.requestedHostname || ''),
|
|
@@ -32,7 +158,7 @@ export const AvailableSubnetsControl = ({
|
|
|
32
158
|
|
|
33
159
|
// Workaround for bug in CIM backend. hostIDs are empty
|
|
34
160
|
if (excludedHosts.length === 0 || !matchingSubnet.hostIDs.length) {
|
|
35
|
-
return
|
|
161
|
+
return null;
|
|
36
162
|
}
|
|
37
163
|
|
|
38
164
|
const actionLinks = (
|
|
@@ -71,45 +197,87 @@ export const AvailableSubnetsControl = ({
|
|
|
71
197
|
{t('ai:Hosts outside of this range will not be included in the new cluster.')}
|
|
72
198
|
</Alert>
|
|
73
199
|
);
|
|
74
|
-
}
|
|
200
|
+
},
|
|
201
|
+
[hosts, isMultiNodeCluster, hostSubnets, t],
|
|
202
|
+
);
|
|
75
203
|
|
|
76
|
-
|
|
77
|
-
|
|
204
|
+
const primaryNetworkCidr = values.machineNetworks?.[0]?.cidr;
|
|
205
|
+
const excludedHostsAlert = getExcludedHostsAlert(primaryNetworkCidr);
|
|
206
|
+
const showSecondaryMachineNetwork =
|
|
207
|
+
isDualStack && values.machineNetworks && values.machineNetworks.length > 1;
|
|
78
208
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
...hostSubnets
|
|
96
|
-
.sort((subA, subB) => subA.humanized.localeCompare(subB.humanized))
|
|
97
|
-
.map((hn, index) => ({
|
|
98
|
-
label: hn.humanized,
|
|
99
|
-
value: hn.subnet,
|
|
100
|
-
id: `form-input-hostSubnet-field-option-${index}`,
|
|
101
|
-
})),
|
|
102
|
-
]
|
|
103
|
-
: [
|
|
104
|
-
{
|
|
105
|
-
label: t('ai:No subnets are currently available'),
|
|
106
|
-
value: NO_SUBNET_SET,
|
|
107
|
-
},
|
|
108
|
-
]
|
|
209
|
+
// Determine available subnets for primary dropdown
|
|
210
|
+
const primaryMachineSubnets = isDualStack && supportsIPv6Primary ? allSubnets : IPv4Subnets;
|
|
211
|
+
|
|
212
|
+
// Determine available subnets for secondary dropdown
|
|
213
|
+
const secondaryMachineSubnets = React.useMemo(() => {
|
|
214
|
+
if (supportsIPv6Primary) {
|
|
215
|
+
// For OCP >= 4.12, smart filtering based on the other network's selection
|
|
216
|
+
if (primaryNetworkCidr && Address6.isValid(primaryNetworkCidr)) {
|
|
217
|
+
// If first is IPv6, second should be IPv4
|
|
218
|
+
return IPv4Subnets;
|
|
219
|
+
} else if (primaryNetworkCidr && Address4.isValid(primaryNetworkCidr)) {
|
|
220
|
+
// If first is IPv4, second should be IPv6
|
|
221
|
+
return IPv6Subnets;
|
|
222
|
+
} else {
|
|
223
|
+
// If first is not selected yet, show all subnets
|
|
224
|
+
return allSubnets;
|
|
109
225
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
226
|
+
} else {
|
|
227
|
+
// For older versions, second network is IPv6
|
|
228
|
+
return IPv6Subnets;
|
|
229
|
+
}
|
|
230
|
+
}, [supportsIPv6Primary, primaryNetworkCidr, IPv4Subnets, IPv6Subnets, allSubnets]);
|
|
231
|
+
|
|
232
|
+
return (
|
|
233
|
+
<>
|
|
234
|
+
<FormGroup
|
|
235
|
+
label="Machine network"
|
|
236
|
+
labelInfo={isDualStack && 'Primary'}
|
|
237
|
+
fieldId="machine-networks"
|
|
238
|
+
isRequired={isRequired}
|
|
239
|
+
>
|
|
240
|
+
<FieldArray name="machineNetworks">
|
|
241
|
+
{() => (
|
|
242
|
+
<Stack>
|
|
243
|
+
<StackItem>
|
|
244
|
+
<SubnetsDropdown
|
|
245
|
+
name="machineNetworks.0.cidr"
|
|
246
|
+
machineSubnets={primaryMachineSubnets}
|
|
247
|
+
isDisabled={isDisabled}
|
|
248
|
+
onAfterSelect={(newSelection) =>
|
|
249
|
+
reorderNetworksForPrimary(newSelection, values, setFieldValue)
|
|
250
|
+
}
|
|
251
|
+
data-testid="subnets-dropdown-toggle-primary"
|
|
252
|
+
/>
|
|
253
|
+
</StackItem>
|
|
254
|
+
</Stack>
|
|
255
|
+
)}
|
|
256
|
+
</FieldArray>
|
|
257
|
+
</FormGroup>
|
|
258
|
+
|
|
259
|
+
{/* Secondary machine network */}
|
|
260
|
+
{showSecondaryMachineNetwork && (
|
|
261
|
+
<FormGroup
|
|
262
|
+
label="Machine network"
|
|
263
|
+
labelInfo="Secondary"
|
|
264
|
+
fieldId="machine-networks-secondary"
|
|
265
|
+
isRequired={isRequired}
|
|
266
|
+
>
|
|
267
|
+
<SubnetsDropdown
|
|
268
|
+
name="machineNetworks.1.cidr"
|
|
269
|
+
machineSubnets={secondaryMachineSubnets}
|
|
270
|
+
isDisabled={isDisabled}
|
|
271
|
+
data-testid="subnets-dropdown-toggle-secondary"
|
|
272
|
+
/>
|
|
273
|
+
</FormGroup>
|
|
274
|
+
)}
|
|
275
|
+
<>
|
|
276
|
+
{typeof errors.machineNetworks === 'string' && (
|
|
277
|
+
<Alert variant={AlertVariant.warning} title={errors.machineNetworks} isInline />
|
|
278
|
+
)}
|
|
279
|
+
{excludedHostsAlert}
|
|
280
|
+
</>
|
|
281
|
+
</>
|
|
114
282
|
);
|
|
115
283
|
};
|
|
@@ -1,35 +1,42 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { useSelector } from 'react-redux';
|
|
3
2
|
import { ButtonVariant, FormGroup, Split, SplitItem, Tooltip } from '@patternfly/react-core';
|
|
4
3
|
import { useFormikContext } from 'formik';
|
|
5
4
|
import { Address4, Address6 } from 'ip-address';
|
|
6
5
|
|
|
6
|
+
import { HostSubnets, NetworkConfigurationValues } from '../../../types';
|
|
7
|
+
import { getFieldId } from '../../ui';
|
|
7
8
|
import {
|
|
8
|
-
HostSubnets,
|
|
9
|
-
NetworkConfigurationValues,
|
|
10
|
-
getFieldId,
|
|
11
9
|
DUAL_STACK,
|
|
12
10
|
IPV4_STACK,
|
|
13
11
|
NETWORK_TYPE_OVN,
|
|
14
12
|
NETWORK_TYPE_SDN,
|
|
15
13
|
NO_SUBNET_SET,
|
|
16
|
-
} from '
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
|
|
20
|
-
import { OcmRadioField } from '../../ui/OcmFormFields';
|
|
14
|
+
} from '../../../config';
|
|
15
|
+
import { RadioField } from '../../ui/formik';
|
|
16
|
+
import { ConfirmationModal, PopoverIcon } from '../../ui';
|
|
21
17
|
import { reorderNetworksByCurrentPrimary } from './reorderNetworks';
|
|
22
18
|
import {
|
|
23
19
|
Cluster,
|
|
20
|
+
ClusterDefaultConfig,
|
|
24
21
|
ClusterNetwork,
|
|
25
22
|
MachineNetwork,
|
|
26
23
|
ServiceNetwork,
|
|
27
24
|
} from '@openshift-assisted/types/assisted-installer-service';
|
|
28
25
|
|
|
29
|
-
type
|
|
26
|
+
export type StackTypeDefaultNetworkValues = Pick<
|
|
27
|
+
ClusterDefaultConfig,
|
|
28
|
+
| 'clusterNetworksDualstack'
|
|
29
|
+
| 'clusterNetworksIpv4'
|
|
30
|
+
| 'serviceNetworksDualstack'
|
|
31
|
+
| 'serviceNetworksIpv4'
|
|
32
|
+
>;
|
|
33
|
+
|
|
34
|
+
export type StackTypeControlGroupProps = {
|
|
30
35
|
clusterId: Cluster['id'];
|
|
31
36
|
isDualStackSelectable: boolean;
|
|
32
37
|
hostSubnets: HostSubnets;
|
|
38
|
+
defaultNetworkValues: StackTypeDefaultNetworkValues;
|
|
39
|
+
isViewerMode?: boolean;
|
|
33
40
|
};
|
|
34
41
|
|
|
35
42
|
const hasDualStackConfigurationChanged = (
|
|
@@ -40,29 +47,26 @@ const hasDualStackConfigurationChanged = (
|
|
|
40
47
|
) =>
|
|
41
48
|
clusterNetworks &&
|
|
42
49
|
serviceNetworks &&
|
|
43
|
-
((values.machineNetworks && values.machineNetworks[1].cidr !== cidrIPv6) ||
|
|
44
|
-
(values.clusterNetworks && values.clusterNetworks[1].cidr !== clusterNetworks[1]
|
|
45
|
-
(values.clusterNetworks &&
|
|
46
|
-
values.clusterNetworks[1].hostPrefix !== clusterNetworks[1]
|
|
47
|
-
(values.serviceNetworks && values.serviceNetworks[1].cidr !== serviceNetworks[1]
|
|
50
|
+
((values.machineNetworks?.[1] && values.machineNetworks[1].cidr !== cidrIPv6) ||
|
|
51
|
+
(values.clusterNetworks?.[1] && values.clusterNetworks[1].cidr !== clusterNetworks[1]?.cidr) ||
|
|
52
|
+
(values.clusterNetworks?.[1] &&
|
|
53
|
+
values.clusterNetworks[1].hostPrefix !== clusterNetworks[1]?.hostPrefix) ||
|
|
54
|
+
(values.serviceNetworks?.[1] && values.serviceNetworks[1].cidr !== serviceNetworks[1]?.cidr) ||
|
|
55
|
+
values.apiVips?.[1]?.ip ||
|
|
56
|
+
values.ingressVips?.[1]?.ip);
|
|
48
57
|
|
|
49
58
|
export const StackTypeControlGroup = ({
|
|
50
59
|
clusterId,
|
|
51
60
|
isDualStackSelectable,
|
|
52
61
|
hostSubnets,
|
|
62
|
+
defaultNetworkValues,
|
|
63
|
+
isViewerMode = false,
|
|
53
64
|
}: StackTypeControlGroupProps) => {
|
|
54
65
|
const { setFieldValue, values, validateForm } = useFormikContext<NetworkConfigurationValues>();
|
|
55
66
|
const [openConfirmModal, setConfirmModal] = React.useState(false);
|
|
56
|
-
const defaultNetworkValues = useDefaultConfiguration([
|
|
57
|
-
'clusterNetworksDualstack',
|
|
58
|
-
'clusterNetworksIpv4',
|
|
59
|
-
'serviceNetworksDualstack',
|
|
60
|
-
'serviceNetworksIpv4',
|
|
61
|
-
]);
|
|
62
67
|
|
|
63
68
|
const IPv6Subnets = hostSubnets.filter((subnet) => Address6.isValid(subnet.subnet));
|
|
64
69
|
const cidrIPv6 = IPv6Subnets.length >= 1 ? IPv6Subnets[0].subnet : NO_SUBNET_SET;
|
|
65
|
-
const { isViewerMode } = useSelector(selectCurrentClusterPermissionsState);
|
|
66
70
|
const shouldSetSingleStack =
|
|
67
71
|
!isViewerMode && !isDualStackSelectable && values.stackType === DUAL_STACK;
|
|
68
72
|
|
|
@@ -216,9 +220,41 @@ export const StackTypeControlGroup = ({
|
|
|
216
220
|
false,
|
|
217
221
|
);
|
|
218
222
|
}
|
|
219
|
-
//
|
|
220
|
-
|
|
223
|
+
// Initialize VIPs for dual-stack
|
|
224
|
+
if (values.apiVips && values.apiVips.length < 2) {
|
|
225
|
+
setFieldValue(
|
|
226
|
+
'apiVips',
|
|
227
|
+
[values.apiVips[0] || { ip: '', clusterId: clusterId }, { ip: '', clusterId: clusterId }],
|
|
228
|
+
false,
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
if (values.ingressVips && values.ingressVips.length < 2) {
|
|
232
|
+
setFieldValue(
|
|
233
|
+
'ingressVips',
|
|
234
|
+
[
|
|
235
|
+
values.ingressVips[0] || { ip: '', clusterId: clusterId },
|
|
236
|
+
{ ip: '', clusterId: clusterId },
|
|
237
|
+
],
|
|
238
|
+
false,
|
|
239
|
+
);
|
|
240
|
+
}
|
|
221
241
|
};
|
|
242
|
+
// Ensure cluster/service networks ordering matches the new primary family
|
|
243
|
+
const primaryCidr = values.machineNetworks?.[0]?.cidr;
|
|
244
|
+
React.useEffect(() => {
|
|
245
|
+
if (isViewerMode) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
reorderNetworksByCurrentPrimary(values, setFieldValue);
|
|
249
|
+
}, [
|
|
250
|
+
isViewerMode,
|
|
251
|
+
setFieldValue,
|
|
252
|
+
values,
|
|
253
|
+
values.stackType,
|
|
254
|
+
primaryCidr,
|
|
255
|
+
values.clusterNetworks,
|
|
256
|
+
values.serviceNetworks,
|
|
257
|
+
]);
|
|
222
258
|
|
|
223
259
|
const setStackType = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
224
260
|
if (e.target.value === DUAL_STACK) {
|
|
@@ -253,10 +289,10 @@ export const StackTypeControlGroup = ({
|
|
|
253
289
|
>
|
|
254
290
|
<Split>
|
|
255
291
|
<SplitItem>
|
|
256
|
-
<
|
|
292
|
+
<RadioField
|
|
257
293
|
name={'stackType'}
|
|
258
294
|
value={IPV4_STACK}
|
|
259
|
-
isDisabled={!isDualStackSelectable}
|
|
295
|
+
isDisabled={!isDualStackSelectable || isViewerMode}
|
|
260
296
|
label="IPv4 "
|
|
261
297
|
/>
|
|
262
298
|
</SplitItem>
|
|
@@ -275,10 +311,10 @@ export const StackTypeControlGroup = ({
|
|
|
275
311
|
}
|
|
276
312
|
hidden={isDualStackSelectable}
|
|
277
313
|
>
|
|
278
|
-
<
|
|
314
|
+
<RadioField
|
|
279
315
|
name={'stackType'}
|
|
280
316
|
value={DUAL_STACK}
|
|
281
|
-
isDisabled={!isDualStackSelectable}
|
|
317
|
+
isDisabled={!isDualStackSelectable || isViewerMode}
|
|
282
318
|
label="Dual-stack "
|
|
283
319
|
/>
|
|
284
320
|
</Tooltip>
|
|
@@ -9,14 +9,11 @@ import {
|
|
|
9
9
|
Divider,
|
|
10
10
|
} from '@patternfly/react-core';
|
|
11
11
|
import { useField } from 'formik';
|
|
12
|
-
import {
|
|
13
|
-
getFieldId,
|
|
14
|
-
HostSubnet,
|
|
15
|
-
NO_SUBNET_SET,
|
|
16
|
-
TechnologyPreview,
|
|
17
|
-
PreviewBadgePosition,
|
|
18
|
-
} from '../../../../common';
|
|
19
12
|
import { Address4, Address6 } from 'ip-address';
|
|
13
|
+
import { getFieldId } from '../../ui';
|
|
14
|
+
import { HostSubnet } from '../../../types';
|
|
15
|
+
import { NO_SUBNET_SET } from '../../../config';
|
|
16
|
+
import { TechnologyPreview, PreviewBadgePosition } from '../../ui';
|
|
20
17
|
|
|
21
18
|
type SubnetsDropdownProps = {
|
|
22
19
|
name: string;
|