@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.
Files changed (397) hide show
  1. package/build/@types/cim/components/Agent/AgentStatus.d.ts +1 -0
  2. package/build/@types/cim/components/Agent/AgentStatus.d.ts.map +1 -1
  3. package/build/@types/cim/components/Agent/AgentTable.d.ts.map +1 -1
  4. package/build/@types/cim/components/Agent/AgentsSelectionTable.d.ts.map +1 -1
  5. package/build/@types/cim/components/Agent/BMCForm.d.ts.map +1 -1
  6. package/build/@types/cim/components/Agent/BMHEventsModal.d.ts +8 -0
  7. package/build/@types/cim/components/Agent/BMHEventsModal.d.ts.map +1 -0
  8. package/build/@types/cim/components/Agent/BMHStatus.d.ts +2 -0
  9. package/build/@types/cim/components/Agent/BMHStatus.d.ts.map +1 -1
  10. package/build/@types/cim/components/Agent/BMHStatusInfo.d.ts +8 -0
  11. package/build/@types/cim/components/Agent/BMHStatusInfo.d.ts.map +1 -0
  12. package/build/@types/cim/components/Agent/MinimalHWRequirements.d.ts.map +1 -1
  13. package/build/@types/cim/components/Agent/index.d.ts +2 -0
  14. package/build/@types/cim/components/Agent/index.d.ts.map +1 -1
  15. package/build/@types/cim/components/Agent/tableColumns.d.ts +29 -0
  16. package/build/@types/cim/components/Agent/tableColumns.d.ts.map +1 -0
  17. package/build/@types/cim/components/Agent/tableUtils.d.ts +2 -22
  18. package/build/@types/cim/components/Agent/tableUtils.d.ts.map +1 -1
  19. package/build/@types/cim/components/ClusterDeployment/NetworkConfiguration.d.ts +1 -1
  20. package/build/@types/cim/components/ClusterDeployment/NetworkConfiguration.d.ts.map +1 -1
  21. package/build/@types/cim/components/ClusterDeployment/hostDiscovery/ClusterDeploymentHostDiscoveryTable.d.ts.map +1 -1
  22. package/build/@types/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.d.ts.map +1 -1
  23. package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts +1 -1
  24. package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts.map +1 -1
  25. package/build/@types/cim/components/ClusterDeployment/networking/ClusterDeploymentHostsNetworkTable.d.ts.map +1 -1
  26. package/build/@types/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.d.ts.map +1 -1
  27. package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts +9 -5
  28. package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts.map +1 -1
  29. package/build/@types/cim/components/Hypershift/HostedClusterWizard/NetworkStep/AdvancedNetworkFields.d.ts.map +1 -0
  30. package/build/@types/cim/components/Hypershift/modals/AddNodePoolModal.d.ts.map +1 -1
  31. package/build/@types/cim/components/Hypershift/modals/ManageHostsModal.d.ts.map +1 -1
  32. package/build/@types/cim/components/Hypershift/modals/RemoveNodePoolModal.d.ts.map +1 -1
  33. package/build/@types/cim/components/InfraEnv/EnvironmentDetails.d.ts.map +1 -1
  34. package/build/@types/cim/components/InfraEnv/EnvironmentErrors.d.ts +0 -1
  35. package/build/@types/cim/components/InfraEnv/EnvironmentErrors.d.ts.map +1 -1
  36. package/build/@types/cim/components/helpers/agentStatus.d.ts.map +1 -1
  37. package/build/@types/cim/components/modals/AddBmcHostModal.d.ts.map +1 -1
  38. package/build/@types/cim/components/modals/AddBmcHostYamlForm.d.ts.map +1 -1
  39. package/build/@types/cim/components/modals/AddBmcHostYamlModal.d.ts.map +1 -1
  40. package/build/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
  41. package/build/@types/cim/components/modals/CimConfiguration/CimConfigurationModal.d.ts.map +1 -1
  42. package/build/@types/cim/components/modals/EditBMHModal.d.ts.map +1 -1
  43. package/build/@types/cim/components/modals/EditNtpSourcesModal.d.ts.map +1 -1
  44. package/build/@types/cim/components/modals/EditProxyModal.d.ts.map +1 -1
  45. package/build/@types/cim/components/modals/EditPullSecretModal.d.ts.map +1 -1
  46. package/build/@types/cim/components/modals/EditSSHKeyModal.d.ts.map +1 -1
  47. package/build/@types/cim/components/modals/MassApproveAgentModal.d.ts.map +1 -1
  48. package/build/@types/cim/components/modals/ScaleUpModal.d.ts.map +1 -1
  49. package/build/@types/cim/hooks/index.d.ts +1 -0
  50. package/build/@types/cim/hooks/index.d.ts.map +1 -1
  51. package/build/@types/cim/hooks/types.d.ts +1 -1
  52. package/build/@types/cim/hooks/types.d.ts.map +1 -1
  53. package/build/@types/cim/hooks/useEvents.d.ts +4 -0
  54. package/build/@types/cim/hooks/useEvents.d.ts.map +1 -0
  55. package/build/@types/cim/types/fromOCP/k8sTypes.d.ts +12 -0
  56. package/build/@types/cim/types/fromOCP/k8sTypes.d.ts.map +1 -1
  57. package/build/@types/cim/types/k8s/agent-cluster-install.d.ts +4 -0
  58. package/build/@types/cim/types/k8s/agent-cluster-install.d.ts.map +1 -1
  59. package/build/@types/cim/types/k8s/bare-metal-host.d.ts +20 -0
  60. package/build/@types/cim/types/k8s/bare-metal-host.d.ts.map +1 -1
  61. package/build/@types/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.d.ts.map +1 -1
  62. package/build/@types/common/components/clusterConfiguration/utils.d.ts +2 -2
  63. package/build/@types/common/components/clusterConfiguration/utils.d.ts.map +1 -1
  64. package/build/@types/common/components/clusterWizard/networkingSteps/AdvancedNetworkFields.d.ts +7 -0
  65. package/build/@types/common/components/clusterWizard/networkingSteps/AdvancedNetworkFields.d.ts.map +1 -0
  66. package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts +10 -6
  67. package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts.map +1 -1
  68. package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts +13 -0
  69. package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts.map +1 -0
  70. package/build/@types/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/SubnetsDropdown.d.ts +1 -1
  71. package/build/@types/common/components/clusterWizard/networkingSteps/SubnetsDropdown.d.ts.map +1 -0
  72. package/build/@types/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.d.ts +4 -2
  73. package/build/@types/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.d.ts.map +1 -1
  74. package/build/@types/common/components/clusterWizard/networkingSteps/index.d.ts +7 -2
  75. package/build/@types/common/components/clusterWizard/networkingSteps/index.d.ts.map +1 -1
  76. package/build/@types/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/reorderNetworks.d.ts +1 -1
  77. package/build/@types/common/components/clusterWizard/networkingSteps/reorderNetworks.d.ts.map +1 -0
  78. package/build/@types/common/components/hosts/HostStatus.d.ts.map +1 -1
  79. package/build/@types/common/components/hosts/HostValidationGroups.d.ts.map +1 -1
  80. package/build/@types/common/components/hosts/MassChangeHostnameModal.d.ts.map +1 -1
  81. package/build/@types/common/components/hosts/index.d.ts +2 -0
  82. package/build/@types/common/components/hosts/index.d.ts.map +1 -1
  83. package/build/@types/common/components/hosts/tableColumns.d.ts +21 -0
  84. package/build/@types/common/components/hosts/tableColumns.d.ts.map +1 -0
  85. package/build/@types/common/components/hosts/tableUtils.d.ts +3 -21
  86. package/build/@types/common/components/hosts/tableUtils.d.ts.map +1 -1
  87. package/build/@types/common/components/hosts/types.d.ts +1 -0
  88. package/build/@types/common/components/hosts/types.d.ts.map +1 -1
  89. package/build/@types/common/components/ui/EventsList.d.ts.map +1 -1
  90. package/build/@types/common/components/ui/PrismCode.d.ts +13 -11
  91. package/build/@types/common/components/ui/PrismCode.d.ts.map +1 -1
  92. package/build/@types/common/components/ui/formik/LabelField.d.ts +3 -11
  93. package/build/@types/common/components/ui/formik/LabelField.d.ts.map +1 -1
  94. package/build/@types/common/components/ui/formik/validationSchemas.d.ts +3 -5
  95. package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
  96. package/build/@types/common/components/ui/index.d.ts +1 -1
  97. package/build/@types/common/components/ui/index.d.ts.map +1 -1
  98. package/build/@types/common/config/constants.d.ts +2 -1
  99. package/build/@types/common/config/constants.d.ts.map +1 -1
  100. package/build/@types/common/types/clusters.d.ts +0 -1
  101. package/build/@types/common/types/clusters.d.ts.map +1 -1
  102. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts +1 -1
  103. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts.map +1 -1
  104. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationTableBase.d.ts.map +1 -1
  105. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts.map +1 -1
  106. package/build/@types/ocm/components/clusterDetail/ResetClusterModal.d.ts.map +1 -1
  107. package/build/@types/ocm/components/hosts/ClusterHostsTable.d.ts.map +1 -1
  108. package/build/@types/ocm/components/hosts/HostsDiscoveryTable.d.ts.map +1 -1
  109. package/build/@types/ocm/components/hosts/HostsStorageTable.d.ts.map +1 -1
  110. package/build/@types/ocm/components/hosts/use-hosts-table.d.ts.map +1 -1
  111. package/build/cjs/cim/components/Agent/AgentStatus.js +2 -2
  112. package/build/cjs/cim/components/Agent/AgentStatus.js.map +1 -1
  113. package/build/cjs/cim/components/Agent/AgentTable.js +10 -9
  114. package/build/cjs/cim/components/Agent/AgentTable.js.map +1 -1
  115. package/build/cjs/cim/components/Agent/AgentsSelectionTable.js +9 -8
  116. package/build/cjs/cim/components/Agent/AgentsSelectionTable.js.map +1 -1
  117. package/build/cjs/cim/components/Agent/BMCForm.js +4 -5
  118. package/build/cjs/cim/components/Agent/BMCForm.js.map +1 -1
  119. package/build/cjs/cim/components/Agent/BMHEventsModal.js +54 -0
  120. package/build/cjs/cim/components/Agent/BMHEventsModal.js.map +1 -0
  121. package/build/cjs/cim/components/Agent/BMHStatus.js +3 -2
  122. package/build/cjs/cim/components/Agent/BMHStatus.js.map +1 -1
  123. package/build/cjs/cim/components/Agent/BMHStatusInfo.js +59 -0
  124. package/build/cjs/cim/components/Agent/BMHStatusInfo.js.map +1 -0
  125. package/build/cjs/cim/components/Agent/MinimalHWRequirements.js +6 -5
  126. package/build/cjs/cim/components/Agent/MinimalHWRequirements.js.map +1 -1
  127. package/build/cjs/cim/components/Agent/index.js +2 -0
  128. package/build/cjs/cim/components/Agent/index.js.map +1 -1
  129. package/build/cjs/cim/components/Agent/tableColumns.js +184 -0
  130. package/build/cjs/cim/components/Agent/tableColumns.js.map +1 -0
  131. package/build/cjs/cim/components/Agent/tableUtils.js +4 -174
  132. package/build/cjs/cim/components/Agent/tableUtils.js.map +1 -1
  133. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsTable.js +10 -10
  134. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsTable.js.map +1 -1
  135. package/build/cjs/cim/components/ClusterDeployment/LocationsSelector.js +2 -2
  136. package/build/cjs/cim/components/ClusterDeployment/LocationsSelector.js.map +1 -1
  137. package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js +28 -38
  138. package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js.map +1 -1
  139. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.js +1 -1
  140. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.js.map +1 -1
  141. package/build/cjs/cim/components/ClusterDeployment/hostDiscovery/ClusterDeploymentHostDiscoveryTable.js +13 -14
  142. package/build/cjs/cim/components/ClusterDeployment/hostDiscovery/ClusterDeploymentHostDiscoveryTable.js.map +1 -1
  143. package/build/cjs/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.js +13 -10
  144. package/build/cjs/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.js.map +1 -1
  145. package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js +19 -18
  146. package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js.map +1 -1
  147. package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentHostsNetworkTable.js +9 -10
  148. package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentHostsNetworkTable.js.map +1 -1
  149. package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingForm.js +2 -2
  150. package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingForm.js.map +1 -1
  151. package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingStep.js +12 -8
  152. package/build/cjs/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingStep.js.map +1 -1
  153. package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js +6 -4
  154. package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js.map +1 -1
  155. package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js +15 -9
  156. package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
  157. package/build/cjs/cim/components/Hypershift/DetailsPage/NodePoolsTable.js +2 -2
  158. package/build/cjs/cim/components/Hypershift/HostedClusterWizard/HostsStep/HostsForm.js +1 -1
  159. package/build/cjs/{common/components/clusterConfiguration → cim/components/Hypershift/HostedClusterWizard/NetworkStep}/AdvancedNetworkFields.js +3 -3
  160. package/build/cjs/cim/components/Hypershift/HostedClusterWizard/NetworkStep/AdvancedNetworkFields.js.map +1 -0
  161. package/build/cjs/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkForm.js +1 -1
  162. package/build/cjs/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkForm.js.map +1 -1
  163. package/build/cjs/cim/components/Hypershift/modals/AddNodePoolModal.js +4 -4
  164. package/build/cjs/cim/components/Hypershift/modals/AddNodePoolModal.js.map +1 -1
  165. package/build/cjs/cim/components/Hypershift/modals/ManageHostsModal.js +4 -4
  166. package/build/cjs/cim/components/Hypershift/modals/ManageHostsModal.js.map +1 -1
  167. package/build/cjs/cim/components/Hypershift/modals/NodePoolForm.js +1 -1
  168. package/build/cjs/cim/components/Hypershift/modals/NodePoolForm.js.map +1 -1
  169. package/build/cjs/cim/components/Hypershift/modals/RemoveNodePoolModal.js +4 -4
  170. package/build/cjs/cim/components/Hypershift/modals/RemoveNodePoolModal.js.map +1 -1
  171. package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js +5 -2
  172. package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js.map +1 -1
  173. package/build/cjs/cim/components/InfraEnv/EnvironmentErrors.js +2 -4
  174. package/build/cjs/cim/components/InfraEnv/EnvironmentErrors.js.map +1 -1
  175. package/build/cjs/cim/components/InfraEnv/InfraEnvAgentTable.js +11 -11
  176. package/build/cjs/cim/components/InfraEnv/InfraEnvAgentTable.js.map +1 -1
  177. package/build/cjs/cim/components/common/ResourceAlerts.js +2 -4
  178. package/build/cjs/cim/components/common/ResourceAlerts.js.map +1 -1
  179. package/build/cjs/cim/components/helpers/agentStatus.js +5 -0
  180. package/build/cjs/cim/components/helpers/agentStatus.js.map +1 -1
  181. package/build/cjs/cim/components/helpers/toAssisted.js +28 -26
  182. package/build/cjs/cim/components/helpers/toAssisted.js.map +1 -1
  183. package/build/cjs/cim/components/modals/AddBmcHostModal.js +7 -5
  184. package/build/cjs/cim/components/modals/AddBmcHostModal.js.map +1 -1
  185. package/build/cjs/cim/components/modals/AddBmcHostYamlForm.js +2 -3
  186. package/build/cjs/cim/components/modals/AddBmcHostYamlForm.js.map +1 -1
  187. package/build/cjs/cim/components/modals/AddBmcHostYamlModal.js +7 -5
  188. package/build/cjs/cim/components/modals/AddBmcHostYamlModal.js.map +1 -1
  189. package/build/cjs/cim/components/modals/AddHostModal.js +9 -7
  190. package/build/cjs/cim/components/modals/AddHostModal.js.map +1 -1
  191. package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js +17 -22
  192. package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js.map +1 -1
  193. package/build/cjs/cim/components/modals/EditBMHModal.js +4 -2
  194. package/build/cjs/cim/components/modals/EditBMHModal.js.map +1 -1
  195. package/build/cjs/cim/components/modals/EditNtpSourcesModal.js +4 -4
  196. package/build/cjs/cim/components/modals/EditNtpSourcesModal.js.map +1 -1
  197. package/build/cjs/cim/components/modals/EditProxyModal.js +4 -4
  198. package/build/cjs/cim/components/modals/EditProxyModal.js.map +1 -1
  199. package/build/cjs/cim/components/modals/EditPullSecretModal.js +4 -4
  200. package/build/cjs/cim/components/modals/EditPullSecretModal.js.map +1 -1
  201. package/build/cjs/cim/components/modals/EditSSHKeyModal.js +5 -5
  202. package/build/cjs/cim/components/modals/EditSSHKeyModal.js.map +1 -1
  203. package/build/cjs/cim/components/modals/MassApproveAgentModal.js +4 -4
  204. package/build/cjs/cim/components/modals/MassApproveAgentModal.js.map +1 -1
  205. package/build/cjs/cim/components/modals/MassDeleteAgentModal.js +1 -1
  206. package/build/cjs/cim/components/modals/MassDeleteAgentModal.js.map +1 -1
  207. package/build/cjs/cim/components/modals/ScaleUpModal.js +4 -4
  208. package/build/cjs/cim/components/modals/ScaleUpModal.js.map +1 -1
  209. package/build/cjs/cim/hooks/index.js +1 -0
  210. package/build/cjs/cim/hooks/index.js.map +1 -1
  211. package/build/cjs/cim/hooks/useEvents.js +12 -0
  212. package/build/cjs/cim/hooks/useEvents.js.map +1 -0
  213. package/build/cjs/common/components/clusterConfiguration/DiscoveryInstructions.js +1 -1
  214. package/build/cjs/common/components/clusterConfiguration/DiscoveryInstructions.js.map +1 -1
  215. package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js +9 -9
  216. package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js.map +1 -1
  217. package/build/cjs/common/components/clusterConfiguration/ProxyFields.js +3 -3
  218. package/build/cjs/common/components/clusterConfiguration/ProxyFields.js.map +1 -1
  219. package/build/cjs/common/components/clusterConfiguration/utils.js +3 -4
  220. package/build/cjs/common/components/clusterConfiguration/utils.js.map +1 -1
  221. package/build/cjs/common/components/clusterWizard/networkingSteps/AdvancedNetworkFields.js +62 -0
  222. package/build/cjs/common/components/clusterWizard/networkingSteps/AdvancedNetworkFields.js.map +1 -0
  223. package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js +130 -46
  224. package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js.map +1 -1
  225. package/build/cjs/{ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js → common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js} +59 -38
  226. package/build/cjs/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js.map +1 -0
  227. package/build/cjs/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/SubnetsDropdown.js +7 -5
  228. package/build/cjs/common/components/clusterWizard/networkingSteps/SubnetsDropdown.js.map +1 -0
  229. package/build/cjs/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.js +96 -38
  230. package/build/cjs/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.js.map +1 -1
  231. package/build/cjs/common/components/clusterWizard/networkingSteps/index.js +13 -3
  232. package/build/cjs/common/components/clusterWizard/networkingSteps/index.js.map +1 -1
  233. package/build/cjs/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/reorderNetworks.js +2 -2
  234. package/build/cjs/common/components/clusterWizard/networkingSteps/reorderNetworks.js.map +1 -0
  235. package/build/cjs/common/components/hosts/HostStatus.js +8 -6
  236. package/build/cjs/common/components/hosts/HostStatus.js.map +1 -1
  237. package/build/cjs/common/components/hosts/HostValidationGroups.js +2 -3
  238. package/build/cjs/common/components/hosts/HostValidationGroups.js.map +1 -1
  239. package/build/cjs/common/components/hosts/MassChangeHostnameModal.js +7 -13
  240. package/build/cjs/common/components/hosts/MassChangeHostnameModal.js.map +1 -1
  241. package/build/cjs/common/components/hosts/index.js +2 -0
  242. package/build/cjs/common/components/hosts/index.js.map +1 -1
  243. package/build/cjs/common/components/hosts/tableColumns.js +336 -0
  244. package/build/cjs/common/components/hosts/tableColumns.js.map +1 -0
  245. package/build/cjs/common/components/hosts/tableUtils.js +1 -331
  246. package/build/cjs/common/components/hosts/tableUtils.js.map +1 -1
  247. package/build/cjs/common/components/ui/EventsList.js +1 -1
  248. package/build/cjs/common/components/ui/EventsList.js.map +1 -1
  249. package/build/cjs/common/components/ui/PrismCode.js +29 -20
  250. package/build/cjs/common/components/ui/PrismCode.js.map +1 -1
  251. package/build/cjs/common/components/ui/formik/LabelField.js +34 -26
  252. package/build/cjs/common/components/ui/formik/LabelField.js.map +1 -1
  253. package/build/cjs/common/components/ui/formik/validationSchemas.js +60 -78
  254. package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
  255. package/build/cjs/common/components/ui/index.js +1 -2
  256. package/build/cjs/common/components/ui/index.js.map +1 -1
  257. package/build/cjs/common/config/constants.js +27 -4
  258. package/build/cjs/common/config/constants.js.map +1 -1
  259. package/build/cjs/common/types/clusters.js.map +1 -1
  260. package/build/cjs/ocm/components/clusterConfiguration/OcmBaseDomainField.js +1 -1
  261. package/build/cjs/ocm/components/clusterConfiguration/OcmBaseDomainField.js.map +1 -1
  262. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +6 -12
  263. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
  264. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationTableBase.js +8 -9
  265. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationTableBase.js.map +1 -1
  266. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js +6 -16
  267. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js.map +1 -1
  268. package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js +1 -1
  269. package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js.map +1 -1
  270. package/build/cjs/ocm/components/clusterWizard/OperatorsSelect.js +1 -1
  271. package/build/cjs/ocm/components/clusterWizard/OperatorsSelect.js.map +1 -1
  272. package/build/cjs/ocm/components/hosts/ClusterHostsTable.js +7 -8
  273. package/build/cjs/ocm/components/hosts/ClusterHostsTable.js.map +1 -1
  274. package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js +7 -8
  275. package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js.map +1 -1
  276. package/build/cjs/ocm/components/hosts/HostsStorageTable.js +5 -6
  277. package/build/cjs/ocm/components/hosts/HostsStorageTable.js.map +1 -1
  278. package/build/cjs/ocm/components/hosts/use-hosts-table.js +2 -3
  279. package/build/cjs/ocm/components/hosts/use-hosts-table.js.map +1 -1
  280. package/lib/cim/components/Agent/AgentStatus.tsx +3 -0
  281. package/lib/cim/components/Agent/AgentTable.tsx +3 -2
  282. package/lib/cim/components/Agent/AgentsSelectionTable.tsx +3 -12
  283. package/lib/cim/components/Agent/BMCForm.tsx +8 -7
  284. package/lib/cim/components/Agent/BMHEventsModal.tsx +87 -0
  285. package/lib/cim/components/Agent/BMHStatus.tsx +17 -17
  286. package/lib/cim/components/Agent/BMHStatusInfo.tsx +94 -0
  287. package/lib/cim/components/Agent/MinimalHWRequirements.tsx +17 -12
  288. package/lib/cim/components/Agent/index.ts +2 -0
  289. package/lib/cim/components/Agent/tableColumns.tsx +257 -0
  290. package/lib/cim/components/Agent/tableUtils.tsx +4 -243
  291. package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsTable.tsx +2 -2
  292. package/lib/cim/components/ClusterDeployment/LocationsSelector.tsx +2 -2
  293. package/lib/cim/components/ClusterDeployment/NetworkConfiguration.tsx +61 -44
  294. package/lib/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.tsx +2 -2
  295. package/lib/cim/components/ClusterDeployment/hostDiscovery/ClusterDeploymentHostDiscoveryTable.tsx +3 -5
  296. package/lib/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.tsx +27 -28
  297. package/lib/cim/components/ClusterDeployment/networkConfigurationValidation.ts +30 -36
  298. package/lib/cim/components/ClusterDeployment/networking/ClusterDeploymentHostsNetworkTable.tsx +2 -7
  299. package/lib/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingForm.tsx +3 -3
  300. package/lib/cim/components/ClusterDeployment/networking/ClusterDeploymentNetworkingStep.tsx +26 -26
  301. package/lib/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.tsx +20 -6
  302. package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +32 -12
  303. package/lib/cim/components/Hypershift/DetailsPage/NodePoolsTable.tsx +2 -2
  304. package/lib/cim/components/Hypershift/HostedClusterWizard/HostsStep/HostsForm.tsx +1 -1
  305. package/lib/{common/components/clusterConfiguration → cim/components/Hypershift/HostedClusterWizard/NetworkStep}/AdvancedNetworkFields.tsx +4 -4
  306. package/lib/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkForm.tsx +1 -1
  307. package/lib/cim/components/Hypershift/modals/AddNodePoolModal.tsx +15 -16
  308. package/lib/cim/components/Hypershift/modals/ManageHostsModal.tsx +15 -16
  309. package/lib/cim/components/Hypershift/modals/NodePoolForm.tsx +1 -1
  310. package/lib/cim/components/Hypershift/modals/RemoveNodePoolModal.tsx +14 -11
  311. package/lib/cim/components/InfraEnv/EnvironmentDetails.tsx +6 -3
  312. package/lib/cim/components/InfraEnv/EnvironmentErrors.tsx +1 -6
  313. package/lib/cim/components/InfraEnv/InfraEnvAgentTable.tsx +6 -6
  314. package/lib/cim/components/common/ResourceAlerts.tsx +4 -4
  315. package/lib/cim/components/helpers/agentStatus.tsx +5 -0
  316. package/lib/cim/components/helpers/toAssisted.ts +15 -15
  317. package/lib/cim/components/modals/AddBmcHostModal.tsx +14 -13
  318. package/lib/cim/components/modals/AddBmcHostYamlForm.tsx +6 -5
  319. package/lib/cim/components/modals/AddBmcHostYamlModal.tsx +8 -7
  320. package/lib/cim/components/modals/AddHostModal.tsx +22 -11
  321. package/lib/cim/components/modals/CimConfiguration/CimConfigurationModal.tsx +70 -66
  322. package/lib/cim/components/modals/EditBMHModal.tsx +2 -3
  323. package/lib/cim/components/modals/EditNtpSourcesModal.tsx +15 -10
  324. package/lib/cim/components/modals/EditProxyModal.tsx +16 -10
  325. package/lib/cim/components/modals/EditPullSecretModal.tsx +14 -10
  326. package/lib/cim/components/modals/EditSSHKeyModal.tsx +16 -13
  327. package/lib/cim/components/modals/MassApproveAgentModal.tsx +16 -8
  328. package/lib/cim/components/modals/MassDeleteAgentModal.tsx +1 -1
  329. package/lib/cim/components/modals/ScaleUpModal.tsx +9 -7
  330. package/lib/cim/hooks/index.tsx +1 -0
  331. package/lib/cim/hooks/types.tsx +4 -1
  332. package/lib/cim/hooks/useEvents.tsx +14 -0
  333. package/lib/cim/types/fromOCP/k8sTypes.ts +13 -0
  334. package/lib/cim/types/k8s/agent-cluster-install.ts +4 -0
  335. package/lib/cim/types/k8s/bare-metal-host.ts +20 -0
  336. package/lib/common/components/clusterConfiguration/DiscoveryInstructions.tsx +1 -1
  337. package/lib/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.tsx +7 -10
  338. package/lib/common/components/clusterConfiguration/ProxyFields.tsx +3 -3
  339. package/lib/common/components/clusterConfiguration/utils.ts +22 -12
  340. package/lib/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/AdvancedNetworkFields.tsx +54 -38
  341. package/lib/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.tsx +221 -53
  342. package/lib/{ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx → common/components/clusterWizard/networkingSteps/StackTypeControlGroup.tsx} +64 -28
  343. package/lib/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/SubnetsDropdown.tsx +4 -7
  344. package/lib/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.tsx +199 -80
  345. package/lib/common/components/clusterWizard/networkingSteps/index.ts +10 -2
  346. package/lib/{ocm/components/clusterConfiguration/networkConfiguration → common/components/clusterWizard/networkingSteps}/reorderNetworks.ts +2 -1
  347. package/lib/common/components/hosts/HostStatus.tsx +14 -3
  348. package/lib/common/components/hosts/HostValidationGroups.tsx +5 -4
  349. package/lib/common/components/hosts/MassChangeHostnameModal.tsx +44 -38
  350. package/lib/common/components/hosts/index.ts +2 -0
  351. package/lib/common/components/hosts/tableColumns.tsx +411 -0
  352. package/lib/common/components/hosts/tableUtils.tsx +4 -409
  353. package/lib/common/components/hosts/types.ts +1 -0
  354. package/lib/common/components/ui/EventsList.tsx +4 -2
  355. package/lib/common/components/ui/PrismCode.tsx +35 -22
  356. package/lib/common/components/ui/formik/LabelField.tsx +77 -60
  357. package/lib/common/components/ui/formik/validationSchemas.ts +64 -107
  358. package/lib/common/components/ui/index.ts +1 -1
  359. package/lib/common/config/constants.ts +33 -2
  360. package/lib/common/types/clusters.ts +0 -1
  361. package/lib/ocm/components/clusterConfiguration/OcmBaseDomainField.tsx +2 -2
  362. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +12 -23
  363. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationTableBase.tsx +3 -2
  364. package/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts +10 -18
  365. package/lib/ocm/components/clusterDetail/ResetClusterModal.tsx +2 -1
  366. package/lib/ocm/components/clusterWizard/OperatorsSelect.tsx +2 -2
  367. package/lib/ocm/components/hosts/ClusterHostsTable.tsx +4 -3
  368. package/lib/ocm/components/hosts/HostsDiscoveryTable.tsx +2 -4
  369. package/lib/ocm/components/hosts/HostsStorageTable.tsx +5 -7
  370. package/lib/ocm/components/hosts/use-hosts-table.tsx +2 -1
  371. package/package.json +3 -3
  372. package/build/@types/common/components/clusterConfiguration/AdvancedNetworkFields.d.ts.map +0 -1
  373. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.d.ts +0 -4
  374. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.d.ts.map +0 -1
  375. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.d.ts +0 -12
  376. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.d.ts.map +0 -1
  377. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.d.ts +0 -11
  378. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.d.ts.map +0 -1
  379. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.d.ts.map +0 -1
  380. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts +0 -9
  381. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts.map +0 -1
  382. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.d.ts.map +0 -1
  383. package/build/cjs/common/components/clusterConfiguration/AdvancedNetworkFields.js.map +0 -1
  384. package/build/cjs/common/components/ui/formik/LabelField.css +0 -43
  385. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js +0 -53
  386. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js.map +0 -1
  387. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js +0 -124
  388. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js.map +0 -1
  389. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js.map +0 -1
  390. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.js.map +0 -1
  391. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js +0 -98
  392. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js.map +0 -1
  393. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.js.map +0 -1
  394. package/lib/common/components/ui/formik/LabelField.css +0 -43
  395. package/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx +0 -208
  396. package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx +0 -283
  397. /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
- DUAL_STACK,
13
- PREFIX_MAX_RESTRICTION,
14
- NetworkConfigurationValues,
15
- PopoverIcon,
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
- const serviceCidrHelperText =
32
- '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.';
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
- If you are required to provide access to nodes from an external network, configure load
54
- balancers and routers to manage the traffic.
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
- <OcmInputField
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={'IP address blocks from which Pod IPs are allocated.'}
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
- labelInfo={isDualStack ? (index === 0 ? 'Primary' : 'Secondary') : ''}
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
- <OcmInputField
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={ClusterPrefixHelperText}
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
- <OcmInputField
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
- labelInfo={isDualStack ? (index === 0 ? 'Primary' : 'Secondary') : ''}
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 { Alert, AlertActionLink, AlertVariant, Popover } from '@patternfly/react-core';
3
- import { HostSubnets } from '../../../types/clusters';
4
- import { Host } from '@openshift-assisted/types/assisted-installer-service';
5
- import { SelectField } from '../../ui';
6
- import { NO_SUBNET_SET } from '../../../config';
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
- hostSubnets: HostSubnets;
11
- hosts: Host[];
54
+ clusterId: Cluster['id'];
55
+ hostSubnets: HostSubnet[];
12
56
  isRequired: boolean;
13
- isMultiNodeCluster: boolean;
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
- isMultiNodeCluster,
68
+ isDisabled,
69
+ openshiftVersion,
70
+ isViewerMode = false,
71
+ hosts,
72
+ isMultiNodeCluster = true,
21
73
  }: AvailableSubnetsControlProps) => {
22
74
  const { t } = useTranslation();
23
- const getHelperText = (value: string) => {
24
- const matchingSubnet = hostSubnets.find((hn) => hn.subnet === value);
25
- if (matchingSubnet && isMultiNodeCluster) {
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?.filter(
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 undefined;
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
- return undefined;
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
- const hostSubnetLength = hostSubnets.length;
80
- return (
81
- <SelectField
82
- name="hostSubnet"
83
- label={t('ai:Available subnets')}
84
- options={
85
- hostSubnets.length
86
- ? [
87
- {
88
- label: t('ai:Please select a subnet. ({{hostSubnetLength}} available)', {
89
- hostSubnetLength,
90
- }),
91
- value: NO_SUBNET_SET,
92
- isDisabled: true,
93
- id: 'form-input-hostSubnet-field-option-no-subnet',
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
- getHelperText={getHelperText}
111
- isDisabled={!hostSubnets.length}
112
- isRequired={isRequired}
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 '../../../../common';
17
- import { ConfirmationModal, PopoverIcon } from '../../../../common/components/ui';
18
- import { useDefaultConfiguration } from '../ClusterDefaultConfigurationContext';
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 StackTypeControlGroupProps = {
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].cidr) ||
45
- (values.clusterNetworks &&
46
- values.clusterNetworks[1].hostPrefix !== clusterNetworks[1].hostPrefix) ||
47
- (values.serviceNetworks && values.serviceNetworks[1].cidr !== serviceNetworks[1].cidr));
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
- // Ensure cluster/service networks ordering matches the new primary family
220
- reorderNetworksByCurrentPrimary(values, setFieldValue);
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
- <OcmRadioField
292
+ <RadioField
257
293
  name={'stackType'}
258
294
  value={IPV4_STACK}
259
- isDisabled={!isDualStackSelectable}
295
+ isDisabled={!isDualStackSelectable || isViewerMode}
260
296
  label="IPv4&nbsp;"
261
297
  />
262
298
  </SplitItem>
@@ -275,10 +311,10 @@ export const StackTypeControlGroup = ({
275
311
  }
276
312
  hidden={isDualStackSelectable}
277
313
  >
278
- <OcmRadioField
314
+ <RadioField
279
315
  name={'stackType'}
280
316
  value={DUAL_STACK}
281
- isDisabled={!isDualStackSelectable}
317
+ isDisabled={!isDualStackSelectable || isViewerMode}
282
318
  label="Dual-stack&nbsp;"
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;