@openshift-assisted/ui-lib 2.46.2 → 2.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.d.ts.map +1 -1
  2. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.d.ts.map +1 -1
  3. package/build/@types/cim/components/ClusterDeployment/ClusterDetailsFormFields.d.ts.map +1 -1
  4. package/build/@types/cim/components/InfraEnv/EnvironmentDetails.d.ts.map +1 -1
  5. package/build/@types/cim/components/common/ResourceAlerts.d.ts.map +1 -1
  6. package/build/@types/cim/types/k8s/agent-cluster-install.d.ts +1 -0
  7. package/build/@types/cim/types/k8s/agent-cluster-install.d.ts.map +1 -1
  8. package/build/@types/common/api/assisted-service/BundleAPI.d.ts +2 -2
  9. package/build/@types/common/api/assisted-service/ClustersAPI.d.ts +25 -25
  10. package/build/@types/common/api/assisted-service/ComponentVersionsAPI.d.ts +1 -1
  11. package/build/@types/common/api/assisted-service/EventsAPI.d.ts +1 -1
  12. package/build/@types/common/api/assisted-service/HostsAPI.d.ts +6 -6
  13. package/build/@types/common/api/assisted-service/InfraEnvsAPI.d.ts +7 -7
  14. package/build/@types/common/api/assisted-service/ManagedDomainsAPI.d.ts +1 -1
  15. package/build/@types/common/api/assisted-service/NewFeatureSupportLevelsAPI.d.ts +2 -2
  16. package/build/@types/common/api/assisted-service/OperatorsAPI.d.ts +1 -1
  17. package/build/@types/common/api/assisted-service/SupportedOpenshiftVersionsAPI.d.ts +1 -1
  18. package/build/@types/common/api/assisted-service/UISettingsAPI.d.ts +2 -2
  19. package/build/@types/common/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts +2 -1
  20. package/build/@types/common/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts.map +1 -1
  21. package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
  22. package/build/@types/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.d.ts.map +1 -1
  23. package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.d.ts.map +1 -1
  24. package/build/@types/common/components/clusterConfiguration/DownloadIpxeScript.d.ts.map +1 -1
  25. package/build/@types/common/components/clusterConfiguration/DownloadIso.d.ts.map +1 -1
  26. package/build/@types/common/components/clusterConfiguration/DownloadIsoModal.d.ts.map +1 -1
  27. package/build/@types/common/components/clusterConfiguration/OcmTNADisclaimer.d.ts.map +1 -0
  28. package/build/@types/common/components/clusterConfiguration/utils.d.ts +3 -1
  29. package/build/@types/common/components/clusterConfiguration/utils.d.ts.map +1 -1
  30. package/build/@types/common/components/clusterConfiguration/utils.test.d.ts +2 -0
  31. package/build/@types/common/components/clusterConfiguration/utils.test.d.ts.map +1 -0
  32. package/build/@types/common/components/clusterDetail/ConsoleModal.d.ts.map +1 -1
  33. package/build/@types/common/components/clusterDetail/FinalizingProgress.d.ts.map +1 -1
  34. package/build/@types/common/components/clusterWizard/ClusterWizardStepHeader.d.ts.map +1 -1
  35. package/build/@types/common/components/hosts/AITableMemo.d.ts.map +1 -1
  36. package/build/@types/common/components/hosts/AdditionalNTPSourcesDialog.d.ts.map +1 -1
  37. package/build/@types/common/components/hosts/EditHostForm.d.ts.map +1 -1
  38. package/build/@types/common/components/hosts/EditHostModal.d.ts.map +1 -1
  39. package/build/@types/common/components/hosts/HostRequirements.d.ts.map +1 -1
  40. package/build/@types/common/components/hosts/MassChangeHostnameModal.d.ts.map +1 -1
  41. package/build/@types/common/components/hosts/MassDeleteHostModal.d.ts.map +1 -1
  42. package/build/@types/common/components/storage/DisksTable.d.ts.map +1 -1
  43. package/build/@types/common/components/storage/StorageUtils.d.ts.map +1 -1
  44. package/build/@types/common/components/ui/ConfirmationModal.d.ts +2 -3
  45. package/build/@types/common/components/ui/ConfirmationModal.d.ts.map +1 -1
  46. package/build/@types/common/components/ui/OpenShiftVersionModal.d.ts.map +1 -1
  47. package/build/@types/common/components/ui/SectionTitle.d.ts.map +1 -1
  48. package/build/@types/common/components/ui/StaticTextField.d.ts.map +1 -1
  49. package/build/@types/common/components/ui/eventsModal.d.ts.map +1 -1
  50. package/build/@types/common/components/ui/formik/AlertFormikError.d.ts.map +1 -1
  51. package/build/@types/common/components/ui/formik/RichInputField.d.ts.map +1 -1
  52. package/build/@types/common/components/ui/formik/TextAreaField.d.ts.map +1 -1
  53. package/build/@types/common/components/ui/formik/validationSchemas.d.ts +1 -1
  54. package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
  55. package/build/@types/common/config/constants.d.ts.map +1 -1
  56. package/build/@types/ocm/components/AddHosts/InventoryAddHost.d.ts.map +1 -1
  57. package/build/@types/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.d.ts.map +1 -1
  58. package/build/@types/ocm/components/AddHosts/day2Wizard/Day2Wizard.d.ts.map +1 -1
  59. package/build/@types/ocm/components/clusterConfiguration/DiscoveryImageModal.d.ts.map +1 -1
  60. package/build/@types/ocm/components/clusterConfiguration/HostInventory.d.ts.map +1 -1
  61. package/build/@types/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.d.ts.map +1 -1
  62. package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/DeleteCustomManifestModal.d.ts.map +1 -1
  63. package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.d.ts.map +1 -1
  64. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.d.ts.map +1 -1
  65. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.d.ts +2 -1
  66. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.d.ts.map +1 -1
  67. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts.map +1 -1
  68. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.d.ts.map +1 -1
  69. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.d.ts.map +1 -1
  70. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.d.ts +2 -1
  71. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.d.ts.map +1 -1
  72. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts.map +1 -1
  73. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts +1 -1
  74. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts.map +1 -1
  75. package/build/@types/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.d.ts.map +1 -1
  76. package/build/@types/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.d.ts.map +1 -1
  77. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/CollapsedHost.d.ts.map +1 -1
  78. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/BondsConfirmationModal.d.ts.map +1 -1
  79. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.d.ts.map +1 -1
  80. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.d.ts.map +1 -1
  81. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlViewFields.d.ts.map +1 -1
  82. package/build/@types/ocm/components/clusterDetail/CancelInstallationModal.d.ts.map +1 -1
  83. package/build/@types/ocm/components/clusterDetail/ClusterDetail.d.ts.map +1 -1
  84. package/build/@types/ocm/components/clusterDetail/ClusterDetailStatusMessages.d.ts.map +1 -1
  85. package/build/@types/ocm/components/clusterDetail/ClusterInstallationError.d.ts.map +1 -1
  86. package/build/@types/ocm/components/clusterDetail/ClusterPollingErrorModal.d.ts.map +1 -1
  87. package/build/@types/ocm/components/clusterDetail/ClusterProperties.d.ts.map +1 -1
  88. package/build/@types/ocm/components/clusterDetail/ClusterProperties.test.d.ts +2 -0
  89. package/build/@types/ocm/components/clusterDetail/ClusterProperties.test.d.ts.map +1 -0
  90. package/build/@types/ocm/components/clusterDetail/ClusterUpdateErrorModal.d.ts.map +1 -1
  91. package/build/@types/ocm/components/clusterDetail/OpenShiftVersionDetail.d.ts.map +1 -1
  92. package/build/@types/ocm/components/clusterDetail/ProgressBarAlerts.d.ts.map +1 -1
  93. package/build/@types/ocm/components/clusterDetail/ResetClusterModal.d.ts.map +1 -1
  94. package/build/@types/ocm/components/clusterWizard/disconnected/BasicStep.d.ts.map +1 -1
  95. package/build/@types/ocm/components/clusterWizard/disconnected/ReviewStep.d.ts.map +1 -1
  96. package/build/@types/ocm/components/clusters/ClusterPage.d.ts.map +1 -1
  97. package/build/@types/ocm/components/clusters/Clusters.d.ts.map +1 -1
  98. package/build/@types/ocm/components/clusters/DeleteClusterModal.d.ts.map +1 -1
  99. package/build/@types/ocm/components/hosts/DeleteHostModal.d.ts.map +1 -1
  100. package/build/@types/ocm/components/hosts/HostRequirementsContent.d.ts.map +1 -1
  101. package/build/@types/ocm/components/hosts/ResetHostModal.d.ts.map +1 -1
  102. package/build/@types/ocm/components/hosts/UpdateDay2ApiVipForm.d.ts.map +1 -1
  103. package/build/@types/ocm/components/hosts/UpdateDay2ApiVipModal.d.ts.map +1 -1
  104. package/build/@types/ocm/components/ui/InfoLinkWithModal.d.ts +1 -2
  105. package/build/@types/ocm/components/ui/InfoLinkWithModal.d.ts.map +1 -1
  106. package/build/@types/ocm/services/ClustersService.d.ts +5 -5
  107. package/build/@types/ocm/services/HostsService.d.ts +11 -11
  108. package/build/@types/ocm/services/InfraEnvsService.d.ts +2 -2
  109. package/build/@types/ocm/services/UISettingsService.d.ts +1 -1
  110. package/build/@types/ocm/store/slices/infra-envs/thunks.d.ts +1 -1
  111. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.js +2 -3
  112. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.js.map +1 -1
  113. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.js +4 -6
  114. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.js.map +1 -1
  115. package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js +9 -5
  116. package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js.map +1 -1
  117. package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js +1 -2
  118. package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js.map +1 -1
  119. package/build/cjs/cim/components/common/ResourceAlerts.js +15 -16
  120. package/build/cjs/cim/components/common/ResourceAlerts.js.map +1 -1
  121. package/build/cjs/common/components/clusterConfiguration/ControlPlaneNodesDropdown.js +23 -6
  122. package/build/cjs/common/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -1
  123. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +2 -3
  124. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
  125. package/build/cjs/common/components/clusterConfiguration/DiscoveryInstructions.js +1 -1
  126. package/build/cjs/common/components/clusterConfiguration/DiscoveryInstructions.js.map +1 -1
  127. package/build/cjs/common/components/clusterConfiguration/DiscoveryIpxeInstructions.js +1 -1
  128. package/build/cjs/common/components/clusterConfiguration/DiscoveryIpxeInstructions.js.map +1 -1
  129. package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js +7 -6
  130. package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js.map +1 -1
  131. package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.js +1 -2
  132. package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.js.map +1 -1
  133. package/build/cjs/common/components/clusterConfiguration/DownloadIpxeScript.js +2 -3
  134. package/build/cjs/common/components/clusterConfiguration/DownloadIpxeScript.js.map +1 -1
  135. package/build/cjs/common/components/clusterConfiguration/DownloadIso.js +5 -6
  136. package/build/cjs/common/components/clusterConfiguration/DownloadIso.js.map +1 -1
  137. package/build/cjs/common/components/clusterConfiguration/DownloadIsoModal.js +3 -2
  138. package/build/cjs/common/components/clusterConfiguration/DownloadIsoModal.js.map +1 -1
  139. package/build/cjs/{ocm → common}/components/clusterConfiguration/OcmTNADisclaimer.js +1 -1
  140. package/build/cjs/common/components/clusterConfiguration/OcmTNADisclaimer.js.map +1 -0
  141. package/build/cjs/common/components/clusterConfiguration/utils.js +23 -12
  142. package/build/cjs/common/components/clusterConfiguration/utils.js.map +1 -1
  143. package/build/cjs/common/components/clusterConfiguration/utils.test.js +242 -0
  144. package/build/cjs/common/components/clusterConfiguration/utils.test.js.map +1 -0
  145. package/build/cjs/common/components/clusterDetail/ConsoleModal.js +5 -3
  146. package/build/cjs/common/components/clusterDetail/ConsoleModal.js.map +1 -1
  147. package/build/cjs/common/components/clusterDetail/FinalizingProgress.js +1 -2
  148. package/build/cjs/common/components/clusterDetail/FinalizingProgress.js.map +1 -1
  149. package/build/cjs/common/components/clusterWizard/ClusterWizardStepHeader.js +1 -2
  150. package/build/cjs/common/components/clusterWizard/ClusterWizardStepHeader.js.map +1 -1
  151. package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js +1 -1
  152. package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js.map +1 -1
  153. package/build/cjs/common/components/clusterWizard/networkingSteps/UserManagedNetworkingTextContent.js +1 -1
  154. package/build/cjs/common/components/clusterWizard/networkingSteps/UserManagedNetworkingTextContent.js.map +1 -1
  155. package/build/cjs/common/components/hosts/AITableMemo.js +2 -1
  156. package/build/cjs/common/components/hosts/AITableMemo.js.map +1 -1
  157. package/build/cjs/common/components/hosts/AdditionalNTPSourcesDialog.js +4 -4
  158. package/build/cjs/common/components/hosts/AdditionalNTPSourcesDialog.js.map +1 -1
  159. package/build/cjs/common/components/hosts/EditHostForm.js +2 -3
  160. package/build/cjs/common/components/hosts/EditHostForm.js.map +1 -1
  161. package/build/cjs/common/components/hosts/EditHostModal.js +3 -2
  162. package/build/cjs/common/components/hosts/EditHostModal.js.map +1 -1
  163. package/build/cjs/common/components/hosts/HostRequirements.js +1 -2
  164. package/build/cjs/common/components/hosts/HostRequirements.js.map +1 -1
  165. package/build/cjs/common/components/hosts/HostStatus.js +2 -2
  166. package/build/cjs/common/components/hosts/HostStatus.js.map +1 -1
  167. package/build/cjs/common/components/hosts/MassChangeHostnameModal.js +4 -4
  168. package/build/cjs/common/components/hosts/MassChangeHostnameModal.js.map +1 -1
  169. package/build/cjs/common/components/hosts/MassDeleteHostModal.js +4 -4
  170. package/build/cjs/common/components/hosts/MassDeleteHostModal.js.map +1 -1
  171. package/build/cjs/common/components/storage/DisksTable.js +1 -2
  172. package/build/cjs/common/components/storage/DisksTable.js.map +1 -1
  173. package/build/cjs/common/components/storage/StorageUtils.js +1 -2
  174. package/build/cjs/common/components/storage/StorageUtils.js.map +1 -1
  175. package/build/cjs/common/components/ui/ConfirmationModal.js +5 -4
  176. package/build/cjs/common/components/ui/ConfirmationModal.js.map +1 -1
  177. package/build/cjs/common/components/ui/OpenShiftVersionModal.js +7 -6
  178. package/build/cjs/common/components/ui/OpenShiftVersionModal.js.map +1 -1
  179. package/build/cjs/common/components/ui/SectionTitle.js +1 -2
  180. package/build/cjs/common/components/ui/SectionTitle.js.map +1 -1
  181. package/build/cjs/common/components/ui/StaticTextField.js +1 -2
  182. package/build/cjs/common/components/ui/StaticTextField.js.map +1 -1
  183. package/build/cjs/common/components/ui/eventsModal.js +9 -9
  184. package/build/cjs/common/components/ui/eventsModal.js.map +1 -1
  185. package/build/cjs/common/components/ui/formik/AlertFormikError.js +1 -2
  186. package/build/cjs/common/components/ui/formik/AlertFormikError.js.map +1 -1
  187. package/build/cjs/common/components/ui/formik/RichInputField.css +0 -7
  188. package/build/cjs/common/components/ui/formik/RichInputField.js +1 -1
  189. package/build/cjs/common/components/ui/formik/RichInputField.js.map +1 -1
  190. package/build/cjs/common/components/ui/formik/TextAreaField.js +2 -1
  191. package/build/cjs/common/components/ui/formik/TextAreaField.js.map +1 -1
  192. package/build/cjs/common/components/ui/formik/validationSchemas.js +13 -3
  193. package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
  194. package/build/cjs/common/config/constants.js +5 -10
  195. package/build/cjs/common/config/constants.js.map +1 -1
  196. package/build/cjs/ocm/components/AddHosts/InventoryAddHost.js +3 -4
  197. package/build/cjs/ocm/components/AddHosts/InventoryAddHost.js.map +1 -1
  198. package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.js +1 -2
  199. package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.js.map +1 -1
  200. package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2Wizard.js +1 -2
  201. package/build/cjs/ocm/components/AddHosts/day2Wizard/Day2Wizard.js.map +1 -1
  202. package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js +1 -1
  203. package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -1
  204. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageModal.js +2 -2
  205. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageModal.js.map +1 -1
  206. package/build/cjs/ocm/components/clusterConfiguration/HostInventory.js +3 -5
  207. package/build/cjs/ocm/components/clusterConfiguration/HostInventory.js.map +1 -1
  208. package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js +11 -9
  209. package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js.map +1 -1
  210. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/DeleteCustomManifestModal.js +7 -7
  211. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/DeleteCustomManifestModal.js.map +1 -1
  212. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.js +0 -1
  213. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.js.map +1 -1
  214. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js +60 -18
  215. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js.map +1 -1
  216. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js +49 -12
  217. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js.map +1 -1
  218. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +3 -3
  219. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
  220. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +2 -3
  221. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
  222. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js +67 -7
  223. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js.map +1 -1
  224. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.js +31 -6
  225. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.js.map +1 -1
  226. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js +7 -16
  227. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js.map +1 -1
  228. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js +8 -8
  229. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js.map +1 -1
  230. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js +26 -8
  231. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js.map +1 -1
  232. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.js +5 -5
  233. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.js.map +1 -1
  234. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/CollapsedHost.js +1 -2
  235. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/CollapsedHost.js.map +1 -1
  236. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/BondsConfirmationModal.js +4 -4
  237. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/BondsConfirmationModal.js.map +1 -1
  238. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.js +1 -2
  239. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.js.map +1 -1
  240. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.js +1 -1
  241. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.js.map +1 -1
  242. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlViewFields.js +6 -7
  243. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlViewFields.js.map +1 -1
  244. package/build/cjs/ocm/components/clusterDetail/CancelInstallationModal.js +6 -6
  245. package/build/cjs/ocm/components/clusterDetail/CancelInstallationModal.js.map +1 -1
  246. package/build/cjs/ocm/components/clusterDetail/ClusterDetail.js +1 -2
  247. package/build/cjs/ocm/components/clusterDetail/ClusterDetail.js.map +1 -1
  248. package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js +17 -14
  249. package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js.map +1 -1
  250. package/build/cjs/ocm/components/clusterDetail/ClusterInstallationError.js +4 -5
  251. package/build/cjs/ocm/components/clusterDetail/ClusterInstallationError.js.map +1 -1
  252. package/build/cjs/ocm/components/clusterDetail/ClusterPollingErrorModal.js +5 -4
  253. package/build/cjs/ocm/components/clusterDetail/ClusterPollingErrorModal.js.map +1 -1
  254. package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js +3 -4
  255. package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js.map +1 -1
  256. package/build/cjs/ocm/components/clusterDetail/ClusterProperties.test.js +180 -0
  257. package/build/cjs/ocm/components/clusterDetail/ClusterProperties.test.js.map +1 -0
  258. package/build/cjs/ocm/components/clusterDetail/ClusterUpdateErrorModal.js +5 -4
  259. package/build/cjs/ocm/components/clusterDetail/ClusterUpdateErrorModal.js.map +1 -1
  260. package/build/cjs/ocm/components/clusterDetail/OpenShiftVersionDetail.js +1 -2
  261. package/build/cjs/ocm/components/clusterDetail/OpenShiftVersionDetail.js.map +1 -1
  262. package/build/cjs/ocm/components/clusterDetail/ProgressBarAlerts.js +4 -5
  263. package/build/cjs/ocm/components/clusterDetail/ProgressBarAlerts.js.map +1 -1
  264. package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js +5 -3
  265. package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js.map +1 -1
  266. package/build/cjs/ocm/components/clusterWizard/disconnected/BasicStep.js +1 -2
  267. package/build/cjs/ocm/components/clusterWizard/disconnected/BasicStep.js.map +1 -1
  268. package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js +1 -2
  269. package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js.map +1 -1
  270. package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js +1 -1
  271. package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js.map +1 -1
  272. package/build/cjs/ocm/components/clusters/ClusterPage.js +1 -2
  273. package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
  274. package/build/cjs/ocm/components/clusters/Clusters.js +1 -2
  275. package/build/cjs/ocm/components/clusters/Clusters.js.map +1 -1
  276. package/build/cjs/ocm/components/clusters/DeleteClusterModal.js +8 -7
  277. package/build/cjs/ocm/components/clusters/DeleteClusterModal.js.map +1 -1
  278. package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js +1 -1
  279. package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js.map +1 -1
  280. package/build/cjs/ocm/components/hosts/DeleteHostModal.js +5 -4
  281. package/build/cjs/ocm/components/hosts/DeleteHostModal.js.map +1 -1
  282. package/build/cjs/ocm/components/hosts/HostRequirementsContent.js +1 -2
  283. package/build/cjs/ocm/components/hosts/HostRequirementsContent.js.map +1 -1
  284. package/build/cjs/ocm/components/hosts/ResetHostModal.js +8 -7
  285. package/build/cjs/ocm/components/hosts/ResetHostModal.js.map +1 -1
  286. package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipForm.js +2 -3
  287. package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipForm.js.map +1 -1
  288. package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipModal.js +3 -2
  289. package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipModal.js.map +1 -1
  290. package/build/cjs/ocm/components/ui/InfoLinkWithModal.js +5 -4
  291. package/build/cjs/ocm/components/ui/InfoLinkWithModal.js.map +1 -1
  292. package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.tsx +3 -5
  293. package/lib/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.tsx +8 -12
  294. package/lib/cim/components/ClusterDeployment/ClusterDetailsFormFields.tsx +17 -35
  295. package/lib/cim/components/InfraEnv/EnvironmentDetails.tsx +1 -5
  296. package/lib/cim/components/common/ResourceAlerts.tsx +26 -28
  297. package/lib/cim/types/k8s/agent-cluster-install.ts +1 -0
  298. package/lib/common/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +61 -31
  299. package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +14 -6
  300. package/lib/common/components/clusterConfiguration/DiscoveryInstructions.tsx +2 -2
  301. package/lib/common/components/clusterConfiguration/DiscoveryIpxeInstructions.tsx +2 -2
  302. package/lib/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.tsx +15 -12
  303. package/lib/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionMode.tsx +1 -3
  304. package/lib/common/components/clusterConfiguration/DownloadIpxeScript.tsx +6 -5
  305. package/lib/common/components/clusterConfiguration/DownloadIso.tsx +13 -7
  306. package/lib/common/components/clusterConfiguration/DownloadIsoModal.tsx +2 -3
  307. package/lib/{ocm → common}/components/clusterConfiguration/OcmTNADisclaimer.tsx +1 -1
  308. package/lib/common/components/clusterConfiguration/utils.test.ts +275 -0
  309. package/lib/common/components/clusterConfiguration/utils.ts +28 -9
  310. package/lib/common/components/clusterDetail/ConsoleModal.tsx +17 -10
  311. package/lib/common/components/clusterDetail/FinalizingProgress.tsx +4 -6
  312. package/lib/common/components/clusterWizard/ClusterWizardStepHeader.tsx +1 -3
  313. package/lib/common/components/clusterWizard/clusterDetailsValidation.ts +1 -1
  314. package/lib/common/components/clusterWizard/networkingSteps/UserManagedNetworkingTextContent.tsx +2 -2
  315. package/lib/common/components/hosts/AITableMemo.tsx +1 -0
  316. package/lib/common/components/hosts/AdditionalNTPSourcesDialog.tsx +11 -10
  317. package/lib/common/components/hosts/EditHostForm.tsx +6 -5
  318. package/lib/common/components/hosts/EditHostModal.tsx +2 -3
  319. package/lib/common/components/hosts/HostRequirements.tsx +2 -4
  320. package/lib/common/components/hosts/HostStatus.tsx +5 -5
  321. package/lib/common/components/hosts/MassChangeHostnameModal.tsx +9 -7
  322. package/lib/common/components/hosts/MassDeleteHostModal.tsx +15 -9
  323. package/lib/common/components/storage/DisksTable.tsx +1 -3
  324. package/lib/common/components/storage/StorageUtils.tsx +1 -3
  325. package/lib/common/components/ui/ConfirmationModal.tsx +18 -15
  326. package/lib/common/components/ui/OpenShiftVersionModal.tsx +32 -22
  327. package/lib/common/components/ui/SectionTitle.tsx +2 -4
  328. package/lib/common/components/ui/StaticTextField.tsx +2 -4
  329. package/lib/common/components/ui/eventsModal.tsx +29 -20
  330. package/lib/common/components/ui/formik/AlertFormikError.tsx +8 -10
  331. package/lib/common/components/ui/formik/RichInputField.css +0 -7
  332. package/lib/common/components/ui/formik/RichInputField.tsx +2 -1
  333. package/lib/common/components/ui/formik/TextAreaField.tsx +13 -4
  334. package/lib/common/components/ui/formik/_validationSchemas.test.ts +82 -0
  335. package/lib/common/components/ui/formik/validationSchemas.ts +16 -10
  336. package/lib/common/config/constants.ts +5 -11
  337. package/lib/ocm/components/AddHosts/InventoryAddHost.tsx +4 -6
  338. package/lib/ocm/components/AddHosts/day2Wizard/Day2StaticIpHostConfigurations.tsx +1 -5
  339. package/lib/ocm/components/AddHosts/day2Wizard/Day2Wizard.tsx +2 -4
  340. package/lib/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +1 -1
  341. package/lib/ocm/components/clusterConfiguration/DiscoveryImageModal.tsx +6 -7
  342. package/lib/ocm/components/clusterConfiguration/HostInventory.tsx +7 -11
  343. package/lib/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.tsx +43 -25
  344. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/DeleteCustomManifestModal.tsx +22 -16
  345. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/ExpandedManifest.tsx +1 -7
  346. package/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx +64 -18
  347. package/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx +98 -36
  348. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +3 -2
  349. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +4 -5
  350. package/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx +78 -11
  351. package/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx +79 -11
  352. package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx +4 -9
  353. package/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts +17 -6
  354. package/lib/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.tsx +34 -4
  355. package/lib/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.tsx +7 -9
  356. package/lib/ocm/components/clusterConfiguration/staticIp/components/CollapsedHost.tsx +1 -3
  357. package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/BondsConfirmationModal.tsx +15 -9
  358. package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.tsx +1 -3
  359. package/lib/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.tsx +10 -3
  360. package/lib/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlViewFields.tsx +6 -8
  361. package/lib/ocm/components/clusterDetail/CancelInstallationModal.tsx +19 -17
  362. package/lib/ocm/components/clusterDetail/ClusterDetail.tsx +1 -3
  363. package/lib/ocm/components/clusterDetail/ClusterDetailStatusMessages.tsx +34 -26
  364. package/lib/ocm/components/clusterDetail/ClusterInstallationError.tsx +5 -7
  365. package/lib/ocm/components/clusterDetail/ClusterPollingErrorModal.tsx +15 -13
  366. package/lib/ocm/components/clusterDetail/ClusterProperties.test.ts +215 -0
  367. package/lib/ocm/components/clusterDetail/ClusterProperties.tsx +3 -5
  368. package/lib/ocm/components/clusterDetail/ClusterUpdateErrorModal.tsx +17 -13
  369. package/lib/ocm/components/clusterDetail/OpenShiftVersionDetail.tsx +2 -4
  370. package/lib/ocm/components/clusterDetail/ProgressBarAlerts.tsx +5 -7
  371. package/lib/ocm/components/clusterDetail/ResetClusterModal.tsx +16 -12
  372. package/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx +1 -3
  373. package/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx +1 -3
  374. package/lib/ocm/components/clusters/AssistedInstallerHeader.tsx +2 -2
  375. package/lib/ocm/components/clusters/ClusterPage.tsx +1 -3
  376. package/lib/ocm/components/clusters/Clusters.tsx +1 -3
  377. package/lib/ocm/components/clusters/DeleteClusterModal.tsx +16 -11
  378. package/lib/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.tsx +2 -2
  379. package/lib/ocm/components/hosts/DeleteHostModal.tsx +18 -9
  380. package/lib/ocm/components/hosts/HostRequirementsContent.tsx +3 -5
  381. package/lib/ocm/components/hosts/ResetHostModal.tsx +16 -13
  382. package/lib/ocm/components/hosts/UpdateDay2ApiVipForm.tsx +12 -6
  383. package/lib/ocm/components/hosts/UpdateDay2ApiVipModal.tsx +2 -3
  384. package/lib/ocm/components/ui/InfoLinkWithModal.tsx +16 -13
  385. package/package.json +3 -3
  386. package/build/@types/ocm/components/clusterConfiguration/OcmTNADisclaimer.d.ts.map +0 -1
  387. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.d.ts +0 -6
  388. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.d.ts.map +0 -1
  389. package/build/cjs/ocm/components/clusterConfiguration/OcmTNADisclaimer.js.map +0 -1
  390. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.js +0 -25
  391. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.js.map +0 -1
  392. package/lib/ocm/components/clusterConfiguration/networkConfiguration/UserManagedNetworkingTextContent.tsx +0 -30
  393. /package/build/@types/{ocm → common}/components/clusterConfiguration/OcmTNADisclaimer.d.ts +0 -0
@@ -1,7 +1,15 @@
1
1
  import React from 'react';
2
2
  import * as Yup from 'yup';
3
- import { Button, Form, AlertVariant, Alert, Stack, StackItem } from '@patternfly/react-core';
4
- import { ModalBoxBody, ModalBoxFooter } from '@patternfly/react-core/deprecated';
3
+ import {
4
+ Button,
5
+ Form,
6
+ AlertVariant,
7
+ Alert,
8
+ Stack,
9
+ StackItem,
10
+ ModalBody,
11
+ ModalFooter,
12
+ } from '@patternfly/react-core';
5
13
  import { ExternalLinkAltIcon } from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
6
14
  import { Formik, FormikHelpers } from 'formik';
7
15
  import {
@@ -106,7 +114,7 @@ export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> =
106
114
  {({ submitForm, isSubmitting, status }) => {
107
115
  return (
108
116
  <>
109
- <ModalBoxBody>
117
+ <ModalBody>
110
118
  <Stack hasGutter>
111
119
  {hasDHCP === false && (
112
120
  <StackItem>
@@ -131,8 +139,8 @@ export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> =
131
139
  </Form>
132
140
  </StackItem>
133
141
  </Stack>
134
- </ModalBoxBody>
135
- <ModalBoxFooter>
142
+ </ModalBody>
143
+ <ModalFooter>
136
144
  <Button
137
145
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
138
146
  onClick={submitForm}
@@ -148,7 +156,7 @@ export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> =
148
156
  <Button key="cancel" variant="link" onClick={onCancel}>
149
157
  {t('ai:Cancel')}
150
158
  </Button>
151
- </ModalBoxFooter>
159
+ </ModalFooter>
152
160
  </>
153
161
  );
154
162
  }}
@@ -14,7 +14,7 @@ const DiscoveryInstructions = ({
14
14
  }: DiscoveryInstructionsProps) => {
15
15
  const { t } = useTranslation();
16
16
  return (
17
- <Content>
17
+ <>
18
18
  <Content component="h3">{t('ai:Adding hosts instructions')}</Content>
19
19
  <Content component="ol" type={OrderType.number} style={{ marginLeft: 0 }}>
20
20
  <Content component="li" hidden={!showAllInstructions}>
@@ -42,7 +42,7 @@ const DiscoveryInstructions = ({
42
42
  )}
43
43
  </Content>
44
44
  </Content>
45
- </Content>
45
+ </>
46
46
  );
47
47
  };
48
48
 
@@ -5,7 +5,7 @@ import { useTranslation } from '../../hooks/use-translation-wrapper';
5
5
  const DiscoveryIpxeInstructions = () => {
6
6
  const { t } = useTranslation();
7
7
  return (
8
- <Content>
8
+ <>
9
9
  <Content component="h3">{t('ai:Adding hosts instructions')}</Content>
10
10
  <Content component="ol" type={OrderType.number} style={{ marginLeft: 0 }}>
11
11
  <Content component="li">{t('ai:Download the example iPXE script file')}</Content>
@@ -19,7 +19,7 @@ const DiscoveryIpxeInstructions = () => {
19
19
  </Content>
20
20
  <Content component="li">{t('ai:Set all the hosts to boot using iPXE script file')}</Content>
21
21
  </Content>
22
- </Content>
22
+ </>
23
23
  );
24
24
  };
25
25
 
@@ -9,8 +9,12 @@ import {
9
9
  OrderType,
10
10
  HelperText,
11
11
  HelperTextItem,
12
+ Modal,
13
+ ModalVariant,
14
+ ModalHeader,
15
+ ModalFooter,
16
+ ModalBody,
12
17
  } from '@patternfly/react-core';
13
- import { Modal, ModalVariant } from '@patternfly/react-core/deprecated';
14
18
  import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
15
19
  import { PrismCode, SimpleAIPrismTheme, UiIcon } from '../ui';
16
20
  import { useTranslation } from '../../hooks/use-translation-wrapper';
@@ -219,24 +223,23 @@ export const DiscoveryTroubleshootingModal = ({
219
223
  setDiscoveryHintModalOpen,
220
224
  isOpen,
221
225
  }: DiscoveryTroubleshootingModalProps) => {
226
+ const { t } = useTranslation();
222
227
  const onClose = React.useCallback(
223
228
  () => setDiscoveryHintModalOpen(false),
224
229
  [setDiscoveryHintModalOpen],
225
230
  );
226
- const { t } = useTranslation();
231
+
227
232
  return (
228
- <Modal
229
- title={t('ai:Hosts not showing up troubleshooter')}
230
- isOpen={isOpen}
231
- actions={[
233
+ <Modal isOpen={isOpen} onClose={onClose} variant={ModalVariant.large}>
234
+ <ModalHeader title={t('ai:Hosts not showing up troubleshooter')} />
235
+ <ModalBody>
236
+ <DiscoveryTroubleshootingModalContent />
237
+ </ModalBody>
238
+ <ModalFooter>
232
239
  <Button key="close" variant={ButtonVariant.primary} onClick={onClose}>
233
240
  {t('ai:Close')}
234
- </Button>,
235
- ]}
236
- onClose={onClose}
237
- variant={ModalVariant.large}
238
- >
239
- <DiscoveryTroubleshootingModalContent />
241
+ </Button>
242
+ </ModalFooter>
240
243
  </Modal>
241
244
  );
242
245
  };
@@ -116,9 +116,7 @@ export const DiskEncryptionMode = ({
116
116
  <Stack>
117
117
  &nbsp;
118
118
  <StackItem>
119
- <Content>
120
- <Content component={ContentVariants.h6}>{t('ai:Tang servers')}</Content>
121
- </Content>
119
+ <Content component={ContentVariants.h6}>{t('ai:Tang servers')}</Content>
122
120
  </StackItem>
123
121
  &nbsp;
124
122
  <TangServers isDisabled={isDisabled} tooltipProps={tooltipProps} />
@@ -6,10 +6,11 @@ import {
6
6
  ButtonVariant,
7
7
  ClipboardCopy,
8
8
  clipboardCopyFunc,
9
+ ModalBody,
10
+ ModalFooter,
9
11
  Stack,
10
12
  StackItem,
11
13
  } from '@patternfly/react-core';
12
- import { ModalBoxBody, ModalBoxFooter } from '@patternfly/react-core/deprecated';
13
14
  import { DetailItem, DetailList } from '../ui';
14
15
  import DiscoveryIpxeInstructions from './DiscoveryIpxeInstructions';
15
16
  import { useTranslation } from '../../hooks/use-translation-wrapper';
@@ -32,7 +33,7 @@ const DownloadIpxeScript = ({
32
33
  const { t } = useTranslation();
33
34
  return (
34
35
  <>
35
- <ModalBoxBody>
36
+ <ModalBody>
36
37
  <Stack hasGutter>
37
38
  <StackItem>
38
39
  <Alert
@@ -73,8 +74,8 @@ const DownloadIpxeScript = ({
73
74
  </DetailList>
74
75
  </StackItem>
75
76
  </Stack>
76
- </ModalBoxBody>
77
- <ModalBoxFooter>
77
+ </ModalBody>
78
+ <ModalFooter>
78
79
  <Button
79
80
  variant={ButtonVariant.primary}
80
81
  onClick={() => downloadUrl && saveAs(downloadUrl)}
@@ -91,7 +92,7 @@ const DownloadIpxeScript = ({
91
92
  <Button variant={ButtonVariant.link} onClick={onClose} data-testid="edit-ipxe-btn">
92
93
  {t('ai:Cancel')}
93
94
  </Button>
94
- </ModalBoxFooter>
95
+ </ModalFooter>
95
96
  </>
96
97
  );
97
98
  };
@@ -1,15 +1,15 @@
1
1
  import React from 'react';
2
- import { saveAs } from 'file-saver';
3
2
  import {
4
3
  Alert,
5
4
  Button,
6
5
  ButtonVariant,
7
6
  ClipboardCopy,
8
7
  clipboardCopyFunc,
8
+ ModalBody,
9
+ ModalFooter,
9
10
  Stack,
10
11
  StackItem,
11
12
  } from '@patternfly/react-core';
12
- import { ModalBoxBody, ModalBoxFooter } from '@patternfly/react-core/deprecated';
13
13
  import { DetailItem, DetailList } from '../ui';
14
14
  import DiscoveryInstructions from './DiscoveryInstructions';
15
15
  import { StaticIPInfo } from './DiscoveryImageConfigForm';
@@ -48,7 +48,7 @@ const DownloadIso = ({
48
48
 
49
49
  return (
50
50
  <>
51
- <ModalBoxBody>
51
+ <ModalBody>
52
52
  <Stack hasGutter>
53
53
  <StackItem>
54
54
  <Alert
@@ -103,6 +103,8 @@ const DownloadIso = ({
103
103
  }
104
104
  />
105
105
  </DetailList>
106
+ </StackItem>
107
+ <StackItem>
106
108
  <Alert
107
109
  variant="info"
108
110
  isInline
@@ -112,13 +114,17 @@ const DownloadIso = ({
112
114
  />
113
115
  </StackItem>
114
116
  </Stack>
115
- </ModalBoxBody>
116
- <ModalBoxFooter>
117
+ </ModalBody>
118
+ <ModalFooter>
117
119
  <Button
118
120
  variant={ButtonVariant.primary}
119
- onClick={() => downloadUrl && saveAs(downloadUrl)}
120
121
  data-testid="download-iso-btn"
121
122
  isDisabled={!downloadUrl}
123
+ component={'a'}
124
+ target="_blank"
125
+ href={downloadUrl}
126
+ download
127
+ rel="noopener noreferrer"
122
128
  >
123
129
  {t('ai:Download Discovery ISO')}
124
130
  </Button>
@@ -130,7 +136,7 @@ const DownloadIso = ({
130
136
  {t('ai:Edit ISO configuration')}
131
137
  </Button>
132
138
  )}
133
- </ModalBoxFooter>
139
+ </ModalFooter>
134
140
  </>
135
141
  );
136
142
  };
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { Modal, ModalVariant } from '@patternfly/react-core/deprecated';
3
2
  import DownloadIso, { DownloadISOProps } from './DownloadIso';
4
3
  import { useTranslation } from '../../hooks/use-translation-wrapper';
4
+ import { Modal, ModalHeader, ModalVariant } from '@patternfly/react-core';
5
5
 
6
6
  type DownloadIsoModalProps = DownloadISOProps & {
7
7
  isOpen: boolean;
@@ -12,13 +12,12 @@ const DownloadIsoModal: React.FC<DownloadIsoModalProps> = ({ isOpen, ...props })
12
12
  return (
13
13
  <Modal
14
14
  aria-label={t('ai:Download host discovery ISO dialog')}
15
- title={t('ai:Add host')}
16
15
  isOpen={isOpen}
17
16
  onClose={props.onClose}
18
17
  variant={ModalVariant.small}
19
- hasNoBodyWrapper
20
18
  id="download-discovery-iso-modal"
21
19
  >
20
+ <ModalHeader title={t('ai:Add host')} />
22
21
  <DownloadIso {...props} />
23
22
  </Modal>
24
23
  );
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Alert, AlertVariant, List, ListItem } from '@patternfly/react-core';
3
- import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
3
+ import { useTranslation } from '../../hooks/use-translation-wrapper';
4
4
 
5
5
  const OcmTNADisclaimer = () => {
6
6
  const { t } = useTranslation();
@@ -0,0 +1,275 @@
1
+ import { test, describe, expect } from 'vitest';
2
+ import { isDualStack } from './utils';
3
+ import {
4
+ MachineNetwork,
5
+ ClusterNetwork,
6
+ ServiceNetwork,
7
+ } from '@openshift-assisted/types/assisted-installer-service';
8
+
9
+ describe('isDualStack', () => {
10
+ const createMachineNetwork = (cidr: string): MachineNetwork => ({ cidr, clusterId: 'test' });
11
+ const createClusterNetwork = (cidr: string, hostPrefix: number): ClusterNetwork => ({
12
+ cidr,
13
+ hostPrefix,
14
+ clusterId: 'test',
15
+ });
16
+ const createServiceNetwork = (cidr: string): ServiceNetwork => ({ cidr, clusterId: 'test' });
17
+
18
+ describe('OCP < 4.12 (legacy behavior)', () => {
19
+ test('returns true for valid dual stack with IPv4 primary', () => {
20
+ const result = isDualStack({
21
+ machineNetworks: [
22
+ createMachineNetwork('192.168.1.0/24'),
23
+ createMachineNetwork('2001:db8::/64'),
24
+ ],
25
+ clusterNetworks: [
26
+ createClusterNetwork('10.128.0.0/14', 23),
27
+ createClusterNetwork('fd01::/48', 64),
28
+ ],
29
+ serviceNetworks: [
30
+ createServiceNetwork('172.30.0.0/16'),
31
+ createServiceNetwork('fd02::/112'),
32
+ ],
33
+ openshiftVersion: '4.11',
34
+ });
35
+
36
+ expect(result).toBe(true);
37
+ });
38
+
39
+ test('returns false for IPv6 primary in OCP < 4.12', () => {
40
+ const result = isDualStack({
41
+ machineNetworks: [
42
+ createMachineNetwork('2001:db8::/64'),
43
+ createMachineNetwork('192.168.1.0/24'),
44
+ ],
45
+ clusterNetworks: [
46
+ createClusterNetwork('fd01::/48', 64),
47
+ createClusterNetwork('10.128.0.0/14', 23),
48
+ ],
49
+ serviceNetworks: [
50
+ createServiceNetwork('fd02::/112'),
51
+ createServiceNetwork('172.30.0.0/16'),
52
+ ],
53
+ openshiftVersion: '4.11',
54
+ });
55
+
56
+ expect(result).toBe(false);
57
+ });
58
+
59
+ test('returns false for single stack', () => {
60
+ const result = isDualStack({
61
+ machineNetworks: [createMachineNetwork('192.168.1.0/24')],
62
+ clusterNetworks: [createClusterNetwork('10.128.0.0/14', 23)],
63
+ serviceNetworks: [createServiceNetwork('172.30.0.0/16')],
64
+ openshiftVersion: '4.11',
65
+ });
66
+
67
+ expect(result).toBe(false);
68
+ });
69
+
70
+ test('returns false for empty networks', () => {
71
+ const result = isDualStack({
72
+ machineNetworks: [],
73
+ clusterNetworks: [],
74
+ serviceNetworks: [],
75
+ openshiftVersion: '4.11',
76
+ });
77
+
78
+ expect(result).toBe(false);
79
+ });
80
+ });
81
+
82
+ describe('OCP >= 4.12 (new behavior)', () => {
83
+ test('returns true for IPv4 primary and IPv6 secondary', () => {
84
+ const result = isDualStack({
85
+ machineNetworks: [
86
+ createMachineNetwork('192.168.1.0/24'),
87
+ createMachineNetwork('2001:db8::/64'),
88
+ ],
89
+ clusterNetworks: [
90
+ createClusterNetwork('10.128.0.0/14', 23),
91
+ createClusterNetwork('fd01::/48', 64),
92
+ ],
93
+ serviceNetworks: [
94
+ createServiceNetwork('172.30.0.0/16'),
95
+ createServiceNetwork('fd02::/112'),
96
+ ],
97
+ openshiftVersion: '4.12',
98
+ });
99
+
100
+ expect(result).toBe(true);
101
+ });
102
+
103
+ test('returns true for IPv6 primary and IPv4 secondary', () => {
104
+ const result = isDualStack({
105
+ machineNetworks: [
106
+ createMachineNetwork('2001:db8::/64'),
107
+ createMachineNetwork('192.168.1.0/24'),
108
+ ],
109
+ clusterNetworks: [
110
+ createClusterNetwork('fd01::/48', 64),
111
+ createClusterNetwork('10.128.0.0/14', 23),
112
+ ],
113
+ serviceNetworks: [
114
+ createServiceNetwork('fd02::/112'),
115
+ createServiceNetwork('172.30.0.0/16'),
116
+ ],
117
+ openshiftVersion: '4.12',
118
+ });
119
+
120
+ expect(result).toBe(true);
121
+ });
122
+
123
+ test('returns false for IPv6 primary and IPv6 secondary (not dual-stack)', () => {
124
+ const result = isDualStack({
125
+ machineNetworks: [
126
+ createMachineNetwork('2001:db8::/64'),
127
+ createMachineNetwork('2001:db9::/64'),
128
+ ],
129
+ clusterNetworks: [
130
+ createClusterNetwork('fd01::/48', 64),
131
+ createClusterNetwork('fd02::/48', 64),
132
+ ],
133
+ serviceNetworks: [createServiceNetwork('fd03::/112'), createServiceNetwork('fd04::/112')],
134
+ openshiftVersion: '4.12',
135
+ });
136
+
137
+ expect(result).toBe(false);
138
+ });
139
+
140
+ test('returns false for IPv4 primary and IPv4 secondary (not dual-stack)', () => {
141
+ const result = isDualStack({
142
+ machineNetworks: [
143
+ createMachineNetwork('192.168.1.0/24'),
144
+ createMachineNetwork('10.0.0.0/24'),
145
+ ],
146
+ clusterNetworks: [
147
+ createClusterNetwork('10.128.0.0/14', 23),
148
+ createClusterNetwork('172.16.0.0/14', 23),
149
+ ],
150
+ serviceNetworks: [
151
+ createServiceNetwork('172.30.0.0/16'),
152
+ createServiceNetwork('172.31.0.0/16'),
153
+ ],
154
+ openshiftVersion: '4.12',
155
+ });
156
+
157
+ expect(result).toBe(false);
158
+ });
159
+
160
+ test('returns false for single stack', () => {
161
+ const result = isDualStack({
162
+ machineNetworks: [createMachineNetwork('192.168.1.0/24')],
163
+ clusterNetworks: [createClusterNetwork('10.128.0.0/14', 23)],
164
+ serviceNetworks: [createServiceNetwork('172.30.0.0/16')],
165
+ openshiftVersion: '4.12',
166
+ });
167
+
168
+ expect(result).toBe(false);
169
+ });
170
+
171
+ test('returns false if any network type is not dual stack', () => {
172
+ const result = isDualStack({
173
+ machineNetworks: [
174
+ createMachineNetwork('192.168.1.0/24'),
175
+ createMachineNetwork('2001:db8::/64'),
176
+ ],
177
+ clusterNetworks: [createClusterNetwork('10.128.0.0/14', 23)], // Single stack
178
+ serviceNetworks: [
179
+ createServiceNetwork('172.30.0.0/16'),
180
+ createServiceNetwork('fd02::/112'),
181
+ ],
182
+ openshiftVersion: '4.12',
183
+ });
184
+
185
+ expect(result).toBe(false);
186
+ });
187
+ });
188
+
189
+ describe('no version specified (defaults to legacy behavior)', () => {
190
+ test('returns true for IPv4 primary and IPv6 secondary', () => {
191
+ const result = isDualStack({
192
+ machineNetworks: [
193
+ createMachineNetwork('192.168.1.0/24'),
194
+ createMachineNetwork('2001:db8::/64'),
195
+ ],
196
+ clusterNetworks: [
197
+ createClusterNetwork('10.128.0.0/14', 23),
198
+ createClusterNetwork('fd01::/48', 64),
199
+ ],
200
+ serviceNetworks: [
201
+ createServiceNetwork('172.30.0.0/16'),
202
+ createServiceNetwork('fd02::/112'),
203
+ ],
204
+ });
205
+
206
+ expect(result).toBe(true);
207
+ });
208
+
209
+ test('returns false for IPv6 primary when no version specified', () => {
210
+ const result = isDualStack({
211
+ machineNetworks: [
212
+ createMachineNetwork('2001:db8::/64'),
213
+ createMachineNetwork('192.168.1.0/24'),
214
+ ],
215
+ clusterNetworks: [
216
+ createClusterNetwork('fd01::/48', 64),
217
+ createClusterNetwork('10.128.0.0/14', 23),
218
+ ],
219
+ serviceNetworks: [
220
+ createServiceNetwork('fd02::/112'),
221
+ createServiceNetwork('172.30.0.0/16'),
222
+ ],
223
+ });
224
+
225
+ expect(result).toBe(false);
226
+ });
227
+ });
228
+
229
+ describe('edge cases', () => {
230
+ test('handles undefined networks', () => {
231
+ const result = isDualStack({
232
+ machineNetworks: undefined,
233
+ clusterNetworks: undefined,
234
+ serviceNetworks: undefined,
235
+ openshiftVersion: '4.12',
236
+ });
237
+
238
+ expect(result).toBe(false);
239
+ });
240
+
241
+ test('handles networks with empty CIDRs', () => {
242
+ const result = isDualStack({
243
+ machineNetworks: [
244
+ { cidr: '', clusterId: 'test' },
245
+ { cidr: '', clusterId: 'test' },
246
+ ],
247
+ clusterNetworks: [
248
+ { cidr: '', hostPrefix: 23, clusterId: 'test' },
249
+ { cidr: '', hostPrefix: 64, clusterId: 'test' },
250
+ ],
251
+ serviceNetworks: [
252
+ { cidr: '', clusterId: 'test' },
253
+ { cidr: '', clusterId: 'test' },
254
+ ],
255
+ openshiftVersion: '4.12',
256
+ });
257
+
258
+ expect(result).toBe(false);
259
+ });
260
+
261
+ test('handles invalid CIDRs', () => {
262
+ const result = isDualStack({
263
+ machineNetworks: [createMachineNetwork('invalid'), createMachineNetwork('also-invalid')],
264
+ clusterNetworks: [
265
+ createClusterNetwork('invalid', 23),
266
+ createClusterNetwork('also-invalid', 64),
267
+ ],
268
+ serviceNetworks: [createServiceNetwork('invalid'), createServiceNetwork('also-invalid')],
269
+ openshiftVersion: '4.12',
270
+ });
271
+
272
+ expect(result).toBe(false);
273
+ });
274
+ });
275
+ });
@@ -10,6 +10,7 @@ import {
10
10
  ServiceNetwork,
11
11
  } from '@openshift-assisted/types/assisted-installer-service';
12
12
  import { NO_SUBNET_SET } from '../../config';
13
+ import { isMajorMinorVersionEqualOrGreater } from '../../utils';
13
14
  import {
14
15
  selectClusterNetworkCIDR,
15
16
  selectClusterNetworkHostPrefix,
@@ -179,20 +180,38 @@ export const canBeDualStack = (subnets: HostSubnets) =>
179
180
 
180
181
  const areNetworksDualStack = (
181
182
  networks: (MachineNetwork | ClusterNetwork | ServiceNetwork)[] | undefined,
182
- ) =>
183
- networks &&
184
- networks.length > 1 &&
185
- Address4.isValid(networks[0].cidr || '') &&
186
- Address6.isValid(networks[1].cidr || '');
183
+ openshiftVersion?: string,
184
+ ) => {
185
+ if (!networks || networks.length < 2) {
186
+ return false;
187
+ }
188
+
189
+ const firstCidr = networks[0].cidr || '';
190
+ const secondCidr = networks[1].cidr || '';
191
+
192
+ // For OCP >= 4.12, allow either IPv4 or IPv6 as primary, with opposite as secondary
193
+ if (openshiftVersion && isMajorMinorVersionEqualOrGreater(openshiftVersion, '4.12')) {
194
+ return (
195
+ (Address4.isValid(firstCidr) && Address6.isValid(secondCidr)) ||
196
+ (Address6.isValid(firstCidr) && Address4.isValid(secondCidr))
197
+ );
198
+ }
199
+
200
+ // For older versions, require IPv4 as primary and IPv6 as secondary
201
+ return Address4.isValid(firstCidr) && Address6.isValid(secondCidr);
202
+ };
187
203
 
188
204
  export const isDualStack = ({
189
205
  machineNetworks,
190
206
  clusterNetworks,
191
207
  serviceNetworks,
192
- }: Pick<Cluster, 'machineNetworks' | 'clusterNetworks' | 'serviceNetworks'>) =>
193
- areNetworksDualStack(machineNetworks) &&
194
- areNetworksDualStack(clusterNetworks) &&
195
- areNetworksDualStack(serviceNetworks);
208
+ openshiftVersion,
209
+ }: Pick<Cluster, 'machineNetworks' | 'clusterNetworks' | 'serviceNetworks'> & {
210
+ openshiftVersion?: string;
211
+ }) =>
212
+ areNetworksDualStack(machineNetworks, openshiftVersion) &&
213
+ areNetworksDualStack(clusterNetworks, openshiftVersion) &&
214
+ areNetworksDualStack(serviceNetworks, openshiftVersion);
196
215
 
197
216
  export const isSubnetInIPv6 = ({
198
217
  clusterNetworkCidr,
@@ -1,6 +1,15 @@
1
1
  import React from 'react';
2
- import { Button, ButtonVariant, Content, ExpandableSection } from '@patternfly/react-core';
3
- import { Modal, ModalVariant } from '@patternfly/react-core/deprecated';
2
+ import {
3
+ Button,
4
+ ButtonVariant,
5
+ Content,
6
+ ExpandableSection,
7
+ Modal,
8
+ ModalBody,
9
+ ModalFooter,
10
+ ModalHeader,
11
+ ModalVariant,
12
+ } from '@patternfly/react-core';
4
13
  import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
5
14
  import { removeProtocolFromURL } from '../../api';
6
15
  import { ToolbarButton } from '../ui/Toolbar';
@@ -174,14 +183,12 @@ export const ConsoleModal: React.FC<ConsoleModalProps> = ({
174
183
  </Button>,
175
184
  ];
176
185
  return (
177
- <Modal
178
- title={t('ai:OpenShift Web Console troubleshooting')}
179
- isOpen={isOpen}
180
- onClose={closeModal}
181
- actions={actions}
182
- variant={ModalVariant.large}
183
- >
184
- <WebConsoleHint cluster={cluster} consoleUrl={consoleUrl} />
186
+ <Modal isOpen={isOpen} onClose={closeModal} variant={ModalVariant.large}>
187
+ <ModalHeader title={t('ai:OpenShift Web Console troubleshooting')} />
188
+ <ModalBody>
189
+ <WebConsoleHint cluster={cluster} consoleUrl={consoleUrl} />
190
+ </ModalBody>
191
+ <ModalFooter>{actions}</ModalFooter>
185
192
  </Modal>
186
193
  );
187
194
  };
@@ -87,12 +87,10 @@ export const FinalizingProgress: React.FC<FinalizingProgressProps> = ({
87
87
  zIndex={300} // set the zIndex below Cluster Events Modal
88
88
  headerContent={<>{t('ai:Initialization')}</>}
89
89
  bodyContent={
90
- <Content>
91
- <Content component="p">
92
- {t(
93
- 'ai:This stage may take a while to finish. To view detailed information, click the events log link below.',
94
- )}
95
- </Content>
90
+ <Content component="p">
91
+ {t(
92
+ 'ai:This stage may take a while to finish. To view detailed information, click the events log link below.',
93
+ )}
96
94
  </Content>
97
95
  }
98
96
  footerContent={