@openshift-assisted/ui-lib 2.8.2-cim → 2.8.3-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 (272) hide show
  1. package/@types/cim/components/ClusterDeployment/ClusterDeploymentDetails.d.ts.map +1 -1
  2. package/@types/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.d.ts.map +1 -1
  3. package/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.d.ts.map +1 -1
  4. package/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsSelectionBasic.d.ts.map +1 -1
  5. package/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.d.ts.map +1 -1
  6. package/@types/cim/components/ClusterDeployment/helpers.d.ts +1 -1
  7. package/@types/cim/components/ClusterDeployment/helpers.d.ts.map +1 -1
  8. package/@types/cim/components/ClusterDeployment/validationSchemas.d.ts.map +1 -1
  9. package/@types/cim/components/Hypershift/HostedClusterWizard/NetworkStep/types.d.ts +0 -1
  10. package/@types/cim/components/Hypershift/HostedClusterWizard/NetworkStep/types.d.ts.map +1 -1
  11. package/@types/cim/components/Hypershift/modals/ManageHostsModal.d.ts.map +1 -1
  12. package/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts.map +1 -1
  13. package/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
  14. package/@types/cim/components/modals/EditProxyModal.d.ts.map +1 -1
  15. package/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts +1 -0
  16. package/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
  17. package/@types/common/components/clusterWizard/ClusterWizardStep.d.ts +1 -1
  18. package/@types/common/components/clusterWizard/ClusterWizardStep.d.ts.map +1 -1
  19. package/@types/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.d.ts.map +1 -1
  20. package/@types/common/components/fetching/EventListFetch.d.ts +1 -1
  21. package/@types/common/components/fetching/EventListFetch.d.ts.map +1 -1
  22. package/@types/common/components/hosts/TableToolbar.d.ts.map +1 -1
  23. package/@types/common/components/ui/ClusterEventsToolbar.d.ts.map +1 -1
  24. package/@types/common/components/ui/StaticTextField.d.ts +1 -1
  25. package/@types/common/components/ui/StaticTextField.d.ts.map +1 -1
  26. package/@types/common/components/ui/eventsModal.d.ts +4 -8
  27. package/@types/common/components/ui/eventsModal.d.ts.map +1 -1
  28. package/@types/common/components/ui/formik/UploadField.d.ts.map +1 -1
  29. package/@types/common/components/ui/formik/validationSchemas.d.ts +5 -1
  30. package/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
  31. package/@types/common/config/constants.d.ts +1 -0
  32. package/@types/common/config/constants.d.ts.map +1 -1
  33. package/@types/common/types/events.d.ts +9 -2
  34. package/@types/common/types/events.d.ts.map +1 -1
  35. package/@types/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.d.ts.map +1 -1
  36. package/@types/ocm/components/AddHosts/day2Wizard/Day2StaticIP.d.ts.map +1 -1
  37. package/@types/ocm/components/AddHosts/day2Wizard/Day2Wizard.d.ts.map +1 -1
  38. package/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.d.ts.map +1 -1
  39. package/@types/ocm/components/HostsClusterDetailTab/types.d.ts +5 -0
  40. package/@types/ocm/components/HostsClusterDetailTab/types.d.ts.map +1 -1
  41. package/@types/ocm/components/HostsClusterDetailTab/utils.d.ts +2 -7
  42. package/@types/ocm/components/HostsClusterDetailTab/utils.d.ts.map +1 -1
  43. package/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts +2 -1
  44. package/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts.map +1 -1
  45. package/@types/ocm/components/clusterConfiguration/DiscoveryImageForm.d.ts.map +1 -1
  46. package/@types/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.d.ts.map +1 -1
  47. package/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.d.ts.map +1 -1
  48. package/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.d.ts.map +1 -1
  49. package/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.d.ts +1 -0
  50. package/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.d.ts.map +1 -1
  51. package/@types/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.d.ts.map +1 -1
  52. package/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.d.ts.map +1 -1
  53. package/@types/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.d.ts.map +1 -1
  54. package/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts.map +1 -1
  55. package/@types/ocm/components/clusterDetail/AssistedInstallerDetailCard.d.ts.map +1 -1
  56. package/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts.map +1 -1
  57. package/@types/ocm/components/clusterWizard/ClusterWizardContextProvider.d.ts.map +1 -1
  58. package/@types/ocm/components/clusterWizard/wizardTransition.d.ts +2 -1
  59. package/@types/ocm/components/clusterWizard/wizardTransition.d.ts.map +1 -1
  60. package/@types/ocm/components/clusters/ClusterPage.d.ts.map +1 -1
  61. package/@types/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.d.ts.map +1 -1
  62. package/@types/ocm/components/fetching/fetchEvents.d.ts.map +1 -1
  63. package/@types/ocm/components/newFeatureSupportLevels/NewFeatureSupportLevelProvider.d.ts.map +1 -1
  64. package/@types/ocm/hooks/useClusterCustomManifests.d.ts +1 -1
  65. package/@types/ocm/hooks/useClusterCustomManifests.d.ts.map +1 -1
  66. package/@types/ocm/hooks/useInfraEnv.d.ts +1 -1
  67. package/@types/ocm/hooks/useInfraEnv.d.ts.map +1 -1
  68. package/@types/ocm/hooks/useInfraEnvId.d.ts +1 -1
  69. package/@types/ocm/hooks/useInfraEnvId.d.ts.map +1 -1
  70. package/@types/ocm/services/Day2ClusterService.d.ts +3 -3
  71. package/@types/ocm/services/Day2ClusterService.d.ts.map +1 -1
  72. package/@types/ocm/services/InfraEnvIdsCacheService.d.ts +1 -1
  73. package/@types/ocm/services/InfraEnvIdsCacheService.d.ts.map +1 -1
  74. package/@types/ocm/services/InfraEnvsService.d.ts +4 -3
  75. package/@types/ocm/services/InfraEnvsService.d.ts.map +1 -1
  76. package/@types/ocm/services/apis/EventsAPI.d.ts +1 -0
  77. package/@types/ocm/services/apis/EventsAPI.d.ts.map +1 -1
  78. package/build/build.json +1 -1
  79. package/build/cim/components/Agent/BMCForm.js +1 -1
  80. package/build/cim/components/Agent/BMCForm.js.map +1 -1
  81. package/build/cim/components/ClusterDeployment/ClusterDeploymentDetails.js +1 -1
  82. package/build/cim/components/ClusterDeployment/ClusterDeploymentDetails.js.map +1 -1
  83. package/build/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js +1 -9
  84. package/build/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js.map +1 -1
  85. package/build/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.js +1 -2
  86. package/build/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.js.map +1 -1
  87. package/build/cim/components/ClusterDeployment/ClusterDeploymentHostsSelectionBasic.js +3 -10
  88. package/build/cim/components/ClusterDeployment/ClusterDeploymentHostsSelectionBasic.js.map +1 -1
  89. package/build/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.js +2 -2
  90. package/build/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.js.map +1 -1
  91. package/build/cim/components/ClusterDeployment/helpers.js +42 -5
  92. package/build/cim/components/ClusterDeployment/helpers.js.map +1 -1
  93. package/build/cim/components/ClusterDeployment/use-networking-formik.js +2 -2
  94. package/build/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
  95. package/build/cim/components/ClusterDeployment/validationSchemas.js +0 -1
  96. package/build/cim/components/ClusterDeployment/validationSchemas.js.map +1 -1
  97. package/build/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.js +2 -2
  98. package/build/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.js.map +1 -1
  99. package/build/cim/components/Hypershift/modals/ManageHostsModal.js +1 -6
  100. package/build/cim/components/Hypershift/modals/ManageHostsModal.js.map +1 -1
  101. package/build/cim/components/Hypershift/utils/nodepool.js +5 -5
  102. package/build/cim/components/Hypershift/utils/nodepool.js.map +1 -1
  103. package/build/cim/components/InfraEnv/InfraEnvFormPage.js +10 -2
  104. package/build/cim/components/InfraEnv/InfraEnvFormPage.js.map +1 -1
  105. package/build/cim/components/modals/AddHostModal.js +1 -1
  106. package/build/cim/components/modals/AddHostModal.js.map +1 -1
  107. package/build/cim/components/modals/EditProxyModal.js +18 -7
  108. package/build/cim/components/modals/EditProxyModal.js.map +1 -1
  109. package/build/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +5 -5
  110. package/build/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
  111. package/build/common/components/clusterWizard/ClusterWizardStep.js +1 -1
  112. package/build/common/components/clusterWizard/ClusterWizardStep.js.map +1 -1
  113. package/build/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.js +5 -2
  114. package/build/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.js.map +1 -1
  115. package/build/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js +1 -1
  116. package/build/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js.map +1 -1
  117. package/build/common/components/fetching/EventListFetch.js +14 -25
  118. package/build/common/components/fetching/EventListFetch.js.map +1 -1
  119. package/build/common/components/hosts/TableToolbar.js +3 -3
  120. package/build/common/components/hosts/TableToolbar.js.map +1 -1
  121. package/build/common/components/hosts/status.js +1 -1
  122. package/build/common/components/hosts/status.js.map +1 -1
  123. package/build/common/components/ui/ClusterEventsToolbar.js +1 -1
  124. package/build/common/components/ui/ClusterEventsToolbar.js.map +1 -1
  125. package/build/common/components/ui/eventsModal.js +12 -6
  126. package/build/common/components/ui/eventsModal.js.map +1 -1
  127. package/build/common/components/ui/formik/CodeField.js +1 -1
  128. package/build/common/components/ui/formik/CodeField.js.map +1 -1
  129. package/build/common/components/ui/formik/UploadField.js +1 -2
  130. package/build/common/components/ui/formik/UploadField.js.map +1 -1
  131. package/build/common/components/ui/formik/validationSchemas.js +20 -13
  132. package/build/common/components/ui/formik/validationSchemas.js.map +1 -1
  133. package/build/common/config/constants.js +2 -0
  134. package/build/common/config/constants.js.map +1 -1
  135. package/build/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.js +94 -20
  136. package/build/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.js.map +1 -1
  137. package/build/ocm/components/AddHosts/day2Wizard/Day2DownloadISO.js +1 -1
  138. package/build/ocm/components/AddHosts/day2Wizard/Day2DownloadISO.js.map +1 -1
  139. package/build/ocm/components/AddHosts/day2Wizard/Day2StaticIP.js +16 -9
  140. package/build/ocm/components/AddHosts/day2Wizard/Day2StaticIP.js.map +1 -1
  141. package/build/ocm/components/AddHosts/day2Wizard/Day2Wizard.js +1 -1
  142. package/build/ocm/components/AddHosts/day2Wizard/Day2Wizard.js.map +1 -1
  143. package/build/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js +5 -2
  144. package/build/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js.map +1 -1
  145. package/build/ocm/components/HostsClusterDetailTab/utils.js +35 -29
  146. package/build/ocm/components/HostsClusterDetailTab/utils.js.map +1 -1
  147. package/build/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js +5 -4
  148. package/build/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js.map +1 -1
  149. package/build/ocm/components/clusterConfiguration/DiscoveryImageForm.js +3 -1
  150. package/build/ocm/components/clusterConfiguration/DiscoveryImageForm.js.map +1 -1
  151. package/build/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js +11 -8
  152. package/build/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js.map +1 -1
  153. package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js +49 -21
  154. package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js.map +1 -1
  155. package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.js +3 -9
  156. package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.js.map +1 -1
  157. package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.js +37 -2
  158. package/build/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.js.map +1 -1
  159. package/build/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js +16 -5
  160. package/build/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.js.map +1 -1
  161. package/build/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +5 -2
  162. package/build/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
  163. package/build/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js +1 -2
  164. package/build/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js.map +1 -1
  165. package/build/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js +27 -16
  166. package/build/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js.map +1 -1
  167. package/build/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegration.js +1 -1
  168. package/build/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegration.js.map +1 -1
  169. package/build/ocm/components/clusterDetail/AssistedInstallerDetailCard.js +7 -2
  170. package/build/ocm/components/clusterDetail/AssistedInstallerDetailCard.js.map +1 -1
  171. package/build/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js +7 -2
  172. package/build/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js.map +1 -1
  173. package/build/ocm/components/clusterWizard/ClusterWizardContextProvider.js +13 -3
  174. package/build/ocm/components/clusterWizard/ClusterWizardContextProvider.js.map +1 -1
  175. package/build/ocm/components/clusterWizard/wizardTransition.js +10 -2
  176. package/build/ocm/components/clusterWizard/wizardTransition.js.map +1 -1
  177. package/build/ocm/components/clusters/ClusterPage.js +10 -4
  178. package/build/ocm/components/clusters/ClusterPage.js.map +1 -1
  179. package/build/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js +5 -2
  180. package/build/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js.map +1 -1
  181. package/build/ocm/components/fetching/fetchEvents.js +25 -4
  182. package/build/ocm/components/fetching/fetchEvents.js.map +1 -1
  183. package/build/ocm/components/newFeatureSupportLevels/NewFeatureSupportLevelProvider.js +5 -2
  184. package/build/ocm/components/newFeatureSupportLevels/NewFeatureSupportLevelProvider.js.map +1 -1
  185. package/build/ocm/hooks/useClusterCustomManifests.js +5 -3
  186. package/build/ocm/hooks/useClusterCustomManifests.js.map +1 -1
  187. package/build/ocm/hooks/useInfraEnv.js +2 -2
  188. package/build/ocm/hooks/useInfraEnv.js.map +1 -1
  189. package/build/ocm/hooks/useInfraEnvId.js +18 -3
  190. package/build/ocm/hooks/useInfraEnvId.js.map +1 -1
  191. package/build/ocm/hooks/useInfraEnvImageUrl.js +1 -1
  192. package/build/ocm/hooks/useInfraEnvImageUrl.js.map +1 -1
  193. package/build/ocm/hooks/useInfraEnvIpxeImageUrl.js +1 -1
  194. package/build/ocm/hooks/useInfraEnvIpxeImageUrl.js.map +1 -1
  195. package/build/ocm/services/ClustersService.js +2 -2
  196. package/build/ocm/services/ClustersService.js.map +1 -1
  197. package/build/ocm/services/Day2ClusterService.js +11 -20
  198. package/build/ocm/services/Day2ClusterService.js.map +1 -1
  199. package/build/ocm/services/InfraEnvIdsCacheService.js +5 -4
  200. package/build/ocm/services/InfraEnvIdsCacheService.js.map +1 -1
  201. package/build/ocm/services/InfraEnvsService.js +7 -4
  202. package/build/ocm/services/InfraEnvsService.js.map +1 -1
  203. package/build/ocm/services/apis/EventsAPI.js +13 -1
  204. package/build/ocm/services/apis/EventsAPI.js.map +1 -1
  205. package/lib/cim/components/Agent/BMCForm.tsx +1 -1
  206. package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetails.tsx +1 -0
  207. package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.tsx +1 -12
  208. package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.tsx +1 -2
  209. package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsSelectionBasic.tsx +2 -10
  210. package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.tsx +7 -2
  211. package/lib/cim/components/ClusterDeployment/helpers.ts +52 -5
  212. package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +2 -2
  213. package/lib/cim/components/ClusterDeployment/validationSchemas.ts +0 -1
  214. package/lib/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.tsx +2 -2
  215. package/lib/cim/components/Hypershift/HostedClusterWizard/NetworkStep/types.ts +0 -1
  216. package/lib/cim/components/Hypershift/modals/ManageHostsModal.tsx +1 -6
  217. package/lib/cim/components/Hypershift/utils/nodepool.ts +1 -1
  218. package/lib/cim/components/InfraEnv/InfraEnvFormPage.tsx +10 -2
  219. package/lib/cim/components/modals/AddHostModal.tsx +1 -0
  220. package/lib/cim/components/modals/EditProxyModal.tsx +15 -3
  221. package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +12 -9
  222. package/lib/common/components/clusterWizard/ClusterWizardStep.tsx +5 -1
  223. package/lib/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.tsx +11 -2
  224. package/lib/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.tsx +1 -1
  225. package/lib/common/components/fetching/EventListFetch.tsx +31 -41
  226. package/lib/common/components/hosts/TableToolbar.tsx +3 -3
  227. package/lib/common/components/hosts/status.tsx +1 -1
  228. package/lib/common/components/ui/ClusterEventsToolbar.tsx +3 -0
  229. package/lib/common/components/ui/StaticTextField.tsx +1 -1
  230. package/lib/common/components/ui/eventsModal.tsx +28 -23
  231. package/lib/common/components/ui/formik/CodeField.tsx +1 -1
  232. package/lib/common/components/ui/formik/UploadField.tsx +2 -3
  233. package/lib/common/components/ui/formik/validationSchemas.ts +33 -15
  234. package/lib/common/config/constants.ts +4 -0
  235. package/lib/common/types/events.ts +10 -3
  236. package/lib/ocm/components/AddHosts/day2Wizard/Day2ClusterDetails.tsx +129 -21
  237. package/lib/ocm/components/AddHosts/day2Wizard/Day2DownloadISO.tsx +1 -1
  238. package/lib/ocm/components/AddHosts/day2Wizard/Day2StaticIP.tsx +15 -10
  239. package/lib/ocm/components/AddHosts/day2Wizard/Day2Wizard.tsx +1 -0
  240. package/lib/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.tsx +7 -3
  241. package/lib/ocm/components/HostsClusterDetailTab/types.ts +6 -0
  242. package/lib/ocm/components/HostsClusterDetailTab/utils.ts +43 -37
  243. package/lib/ocm/components/clusterConfiguration/CpuArchitectureDropdown.tsx +6 -3
  244. package/lib/ocm/components/clusterConfiguration/DiscoveryImageForm.tsx +9 -1
  245. package/lib/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.tsx +25 -16
  246. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.tsx +69 -32
  247. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/FolderDropdown.tsx +3 -14
  248. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.tsx +59 -24
  249. package/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx +29 -8
  250. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +11 -2
  251. package/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx +6 -13
  252. package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx +30 -32
  253. package/lib/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegration.tsx +1 -1
  254. package/lib/ocm/components/clusterDetail/AssistedInstallerDetailCard.tsx +14 -2
  255. package/lib/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.tsx +11 -2
  256. package/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx +20 -2
  257. package/lib/ocm/components/clusterWizard/wizardTransition.ts +13 -1
  258. package/lib/ocm/components/clusters/ClusterPage.tsx +19 -5
  259. package/lib/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.tsx +8 -2
  260. package/lib/ocm/components/fetching/fetchEvents.ts +31 -5
  261. package/lib/ocm/components/newFeatureSupportLevels/NewFeatureSupportLevelProvider.tsx +8 -2
  262. package/lib/ocm/hooks/useClusterCustomManifests.ts +9 -3
  263. package/lib/ocm/hooks/useInfraEnv.ts +10 -1
  264. package/lib/ocm/hooks/useInfraEnvId.ts +24 -4
  265. package/lib/ocm/hooks/useInfraEnvImageUrl.ts +1 -1
  266. package/lib/ocm/hooks/useInfraEnvIpxeImageUrl.ts +1 -1
  267. package/lib/ocm/services/ClustersService.ts +2 -2
  268. package/lib/ocm/services/Day2ClusterService.ts +12 -42
  269. package/lib/ocm/services/InfraEnvIdsCacheService.ts +9 -6
  270. package/lib/ocm/services/InfraEnvsService.ts +12 -13
  271. package/lib/ocm/services/apis/EventsAPI.ts +15 -1
  272. package/package.json +1 -1
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import * as Yup from 'yup';
3
- import { TestOptionsMessage } from 'yup';
4
3
  import { Formik, FormikConfig, useFormikContext } from 'formik';
5
4
  import { Alert, AlertVariant, Grid, GridItem } from '@patternfly/react-core';
6
5
  import { ClusterWizardStepHeader, useAlerts } from '../../../common';
@@ -74,19 +73,9 @@ const getInitialValues = ({
74
73
  };
75
74
  };
76
75
 
77
- const getMinHostsCount = (selectedHostsCount: number) => (selectedHostsCount === 4 ? 5 : 3);
78
-
79
76
  const getValidationSchema = (agentClusterInstall: AgentClusterInstallK8sResource, t: TFunction) => {
80
77
  const isSNOCluster = getIsSNOCluster(agentClusterInstall);
81
78
 
82
- const getMinMessage: TestOptionsMessage<{ min: number }> = ({ min }) => {
83
- const message = t('ai:Please select at least {{min}} hosts for the cluster', { min });
84
- if (min === 5) {
85
- return `${message} ${t('ai:or select just 3 hosts instead.')}`;
86
- }
87
- return `${message}.`;
88
- };
89
-
90
79
  return Yup.lazy<ClusterDeploymentHostsSelectionValues>((values) => {
91
80
  return Yup.object<ClusterDeploymentHostsSelectionValues>().shape({
92
81
  hostCount: isSNOCluster ? Yup.number() : hostCountValidationSchema(t),
@@ -100,7 +89,7 @@ const getValidationSchema = (agentClusterInstall: AgentClusterInstallK8sResource
100
89
  ? Yup.array<string>()
101
90
  .min(1, t('ai:Please select one host for the cluster.'))
102
91
  .max(1, t('ai:Please select one host for the cluster.')) // TODO(jtomasek): replace this with Yup.array().length() after updating Yup
103
- : Yup.array<string>().min(getMinHostsCount(values.selectedHostIds.length), getMinMessage),
92
+ : Yup.array<string>().min(3, t('ai:Please select at least 3 hosts for the cluster.')),
104
93
  });
105
94
  });
106
95
  };
@@ -37,8 +37,7 @@ const ClusterDeploymentHostsDiscoveryStep: React.FC<ClusterDeploymentHostsDiscov
37
37
  infraEnvAgents.length > 1 &&
38
38
  errors.push(t('ai:Single node cluster cannot contain more than 1 host.'));
39
39
  } else {
40
- (infraEnvAgents.length === 4 || infraEnvAgents.length < 3) &&
41
- errors.push(t('ai:Cluster must have 3 or 5 and more hosts.'));
40
+ infraEnvAgents.length < 3 && errors.push(t('ai:Cluster must have at least 3 hosts.'));
42
41
  }
43
42
 
44
43
  if (infraEnvAgents.some((a) => !a.spec.approved)) {
@@ -25,9 +25,7 @@ const ClusterDeploymentHostsSelectionBasic: React.FC<ClusterDeploymentHostsSelec
25
25
  const { t } = useTranslation();
26
26
 
27
27
  React.useEffect(() => {
28
- if (hostCount === 3) {
29
- setFieldValue('useMastersAsWorkers', true);
30
- }
28
+ setFieldValue('useMastersAsWorkers', hostCount === 3);
31
29
  }, [hostCount, setFieldValue]);
32
30
 
33
31
  return (
@@ -43,12 +41,6 @@ const ClusterDeploymentHostsSelectionBasic: React.FC<ClusterDeploymentHostsSelec
43
41
  minValue={isSNOCluster ? 1 : HOSTS_MIN_COUNT}
44
42
  maxValue={isSNOCluster ? 1 : HOSTS_MAX_COUNT}
45
43
  isDisabled={isSNOCluster}
46
- formatValue={(newValue) => {
47
- if (newValue === 4) {
48
- return hostCount >= 4 ? 3 : 5;
49
- }
50
- return newValue;
51
- }}
52
44
  />
53
45
  </GridItem>
54
46
 
@@ -58,7 +50,7 @@ const ClusterDeploymentHostsSelectionBasic: React.FC<ClusterDeploymentHostsSelec
58
50
  idPostfix="mastersasworkers"
59
51
  name="useMastersAsWorkers"
60
52
  label={t('ai:Run workloads on control plane hosts')}
61
- isDisabled={hostCount < 5}
53
+ isDisabled={hostCount !== 3}
62
54
  />
63
55
  </GridItem>
64
56
 
@@ -19,7 +19,12 @@ const ClusterDeploymentWizardNavigation: React.FC<{
19
19
  const stepNames = wizardStepNames(t);
20
20
  return (
21
21
  <WizardNav>
22
- <WizardNavItem key="installation-type" content="Installation type" step={0} isDisabled />
22
+ <WizardNavItem
23
+ key="installation-type"
24
+ content={t('ai:Installation type')}
25
+ step={0}
26
+ isDisabled
27
+ />
23
28
  <WizardNavItem
24
29
  key="cluster-details"
25
30
  content={stepNames['cluster-details']}
@@ -29,7 +34,7 @@ const ClusterDeploymentWizardNavigation: React.FC<{
29
34
  step={1}
30
35
  onNavItemClick={() => setCurrentStepId('cluster-details')}
31
36
  />
32
- <WizardNavItem key="automation" content="Automation" step={2} isDisabled />
37
+ <WizardNavItem key="automation" content={t('ai:Automation')} step={2} isDisabled />
33
38
  {isCIMFlow(clusterDeployment) ? (
34
39
  <WizardNavItem
35
40
  key="hosts-selection"
@@ -15,6 +15,7 @@ import { ClusterDeploymentK8sResource, AgentK8sResource } from '../../types';
15
15
  import { INFRAENV_GENERATED_AI_FLOW, BMH_HOSTNAME_ANNOTATION } from '../common/constants';
16
16
  import { gridSpans } from '@patternfly/react-core';
17
17
  import { getErrorMessage } from '../../../common/utils';
18
+
18
19
  export const shouldShowClusterDeploymentValidationOverview = (
19
20
  agentClusterInstall?: AgentClusterInstallK8sResource,
20
21
  ) => {
@@ -111,9 +112,14 @@ export const getOnFetchEventsHandler =
111
112
  (
112
113
  fetchEvents: (url: string) => Promise<string>,
113
114
  aiNamespace: string,
115
+ agents: AgentK8sResource[],
114
116
  agentClusterInstall?: AgentClusterInstallK8sResource,
115
117
  ): EventListFetchProps['onFetchEvents'] =>
116
- async (params, onSuccess, onError) => {
118
+ async (
119
+ { message, severities: severitiesFilter, hostIds, clusterLevel, deletedHosts },
120
+ onSuccess,
121
+ onError,
122
+ ) => {
117
123
  const eventsURL = getEventsURL(aiNamespace, agentClusterInstall);
118
124
  if (!eventsURL) {
119
125
  onError('Cannot determine events URL');
@@ -121,10 +127,51 @@ export const getOnFetchEventsHandler =
121
127
  }
122
128
  try {
123
129
  const result = await fetchEvents(eventsURL);
124
- const data = formatEventsData(result);
125
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
126
- // @ts-ignore
127
- onSuccess(data);
130
+ let data = formatEventsData(result);
131
+ const allNames = data.filter((d) => d.hostId).map((d) => d.hostId);
132
+
133
+ const severities = {
134
+ critical: data.filter((d) => d.severity === 'critical').length,
135
+ error: data.filter((d) => d.severity === 'error').length,
136
+ info: data.filter((d) => d.severity === 'info').length,
137
+ warning: data.filter((d) => d.severity === 'warning').length,
138
+ };
139
+
140
+ if (message) {
141
+ data = data.filter((d) => d.message.includes(message));
142
+ }
143
+ if (severitiesFilter && severitiesFilter.length > 0) {
144
+ data = data.filter((d) => severitiesFilter.includes(d.severity));
145
+ }
146
+
147
+ if (clusterLevel || deletedHosts || (hostIds && hostIds.length > 0)) {
148
+ data = data.filter((d) => {
149
+ if (clusterLevel && d.clusterId && !d.hostId) {
150
+ return d;
151
+ }
152
+ if (hostIds && hostIds.length > 0) {
153
+ const names = agents
154
+ .filter((a) => a.metadata?.uid && hostIds.includes(a.metadata.uid))
155
+ .map((a) => a.metadata?.name);
156
+ if (d.hostId && names.includes(d.hostId)) {
157
+ return d;
158
+ }
159
+ }
160
+ if (deletedHosts) {
161
+ const deleted = allNames.filter((n) => !agents.some((a) => a.metadata?.name === n));
162
+ if (d.hostId && deleted.includes(d.hostId)) {
163
+ return d;
164
+ }
165
+ }
166
+ return false;
167
+ });
168
+ }
169
+
170
+ onSuccess({
171
+ data,
172
+ totalEvents: data.length,
173
+ severities,
174
+ });
128
175
  } catch (e) {
129
176
  onError(getErrorMessage(e));
130
177
  }
@@ -54,8 +54,8 @@ const getNetworkConfigurationValidationSchema = (
54
54
  ingressVip: vipValidationSchema(hostSubnets, values, initialValues.ingressVip),
55
55
  sshPublicKey: sshPublicKeyValidationSchema,
56
56
  hostSubnet: hostSubnetValidationSchema,
57
- httpProxy: httpProxyValidationSchema(values, 'httpsProxy'),
58
- httpsProxy: httpProxyValidationSchema(values, 'httpProxy'), // share the schema, httpS is currently not supported
57
+ httpProxy: httpProxyValidationSchema({ values, pairValueName: 'httpsProxy' }),
58
+ httpsProxy: httpProxyValidationSchema({ values, pairValueName: 'httpProxy' }), // share the schema, httpS is currently not supported
59
59
  noProxy: noProxyValidationSchema,
60
60
  }),
61
61
  );
@@ -14,6 +14,5 @@ export const hostCountValidationSchema = (t: TFunction) => {
14
14
  HOSTS_MAX_COUNT,
15
15
  t('ai:Maximum hosts count {{HOSTS_MAX_COUNT}} reached.', { HOSTS_MAX_COUNT }),
16
16
  )
17
- .test('not-four', t('ai:A cluster needs 2 or more worker nodes.'), (value) => value !== 4)
18
17
  .required(t('ai:Required field'));
19
18
  };
@@ -28,8 +28,8 @@ const getValidationSchema = (t: TFunction) =>
28
28
  clusterNetworkHostPrefix: values.isAdvanced
29
29
  ? hostPrefixValidationSchema(values.clusterNetworkCidr)
30
30
  : Yup.number(),
31
- httpProxy: httpProxyValidationSchema(values, 'httpsProxy'),
32
- httpsProxy: httpProxyValidationSchema(values, 'httpProxy'), // share the schema, httpS is currently not supported
31
+ httpProxy: httpProxyValidationSchema({ values, pairValueName: 'httpsProxy' }),
32
+ httpsProxy: httpProxyValidationSchema({ values, pairValueName: 'httpProxy' }), // share the schema, httpS is currently not supported
33
33
  noProxy: noProxyValidationSchema,
34
34
  nodePortAddress:
35
35
  values.apiPublishingStrategy === 'NodePort'
@@ -21,5 +21,4 @@ export type NetworkStepProps = {
21
21
  formRef: React.Ref<FormikProps<NetworkFormValues>>;
22
22
  onValuesChanged: (values: NetworkFormValues, initRender: boolean) => void;
23
23
  initialValues: NetworkFormValues;
24
- count: number;
25
24
  };
@@ -14,7 +14,7 @@ import * as React from 'react';
14
14
  import { AgentK8sResource } from '../../../types';
15
15
  import { NodePoolK8sResource, HostedClusterK8sResource, AgentMachineK8sResource } from '../types';
16
16
  import NodePoolForm, { NodePoolFormValues } from './NodePoolForm';
17
- import { formikLabelsToLabels, labelsToFormikValue } from '../utils';
17
+ import { labelsToFormikValue } from '../utils';
18
18
  import { useTranslation } from '../../../../common/hooks/use-translation-wrapper';
19
19
  import { getErrorMessage } from '../../../../common/utils';
20
20
 
@@ -57,11 +57,6 @@ const ManageHostsModal = ({
57
57
  path: '/spec/replicas',
58
58
  });
59
59
  }
60
- patches.push({
61
- op: 'replace',
62
- value: formikLabelsToLabels(values.agentLabels),
63
- path: '/spec/platform/agent/agentLabelSelector/matchLabels',
64
- });
65
60
  try {
66
61
  await onSubmit(nodePool, patches);
67
62
  onClose();
@@ -15,7 +15,7 @@ export const getNodepoolAgents = (
15
15
  (am) =>
16
16
  am.metadata?.namespace ===
17
17
  `${hostedCluster.metadata?.namespace || ''}-${hostedCluster.metadata?.name || ''}` &&
18
- am.metadata?.labels?.[CLUSTER_NAME_LABEL] === hostedCluster.metadata?.name &&
18
+ am.metadata?.labels?.[CLUSTER_NAME_LABEL] === hostedCluster.spec.infraID &&
19
19
  am.metadata?.annotations?.[NODEPOOL_NAME_ANNOTATION] === nodePool.metadata?.name &&
20
20
  am.status?.agentRef?.name &&
21
21
  am.status?.agentRef?.namespace,
@@ -72,8 +72,16 @@ const validationSchema = (usedNames: string[], t: TFunction) =>
72
72
  location: locationValidationSchema(t).required(t('ai:Location is a required field.')),
73
73
  pullSecret: pullSecretValidationSchema.required(t('ai:Pull secret is a required field.')),
74
74
  sshPublicKey: sshPublicKeyValidationSchema,
75
- httpProxy: httpProxyValidationSchema(values, 'httpsProxy'),
76
- httpsProxy: httpProxyValidationSchema(values, 'httpProxy'), // share the schema, httpS is currently not supported
75
+ httpProxy: httpProxyValidationSchema({
76
+ values,
77
+ pairValueName: 'httpsProxy',
78
+ allowEmpty: true,
79
+ }),
80
+ httpsProxy: httpProxyValidationSchema({
81
+ values,
82
+ pairValueName: 'httpProxy',
83
+ allowEmpty: true,
84
+ }), // share the schema, httpS is currently not supported
77
85
  noProxy: noProxyValidationSchema,
78
86
  labels: Yup.array()
79
87
  .of(Yup.string())
@@ -73,6 +73,7 @@ const AddHostModal: React.FC<AddHostModalProps> = ({
73
73
  noProxy={noProxy}
74
74
  hasDHCP={hasDHCP}
75
75
  isIPXE={isIPXE}
76
+ allowEmpty
76
77
  />
77
78
  )}
78
79
  {dialogType === 'download' && (
@@ -27,8 +27,16 @@ import { getWarningMessage } from './utils';
27
27
  const validationSchema = () =>
28
28
  Yup.lazy<ProxyFieldsType>((values) =>
29
29
  Yup.object<ProxyFieldsType>().shape({
30
- httpProxy: httpProxyValidationSchema(values, 'httpsProxy'),
31
- httpsProxy: httpProxyValidationSchema(values, 'httpProxy'),
30
+ httpProxy: httpProxyValidationSchema({
31
+ values,
32
+ pairValueName: 'httpsProxy',
33
+ allowEmpty: true,
34
+ }),
35
+ httpsProxy: httpProxyValidationSchema({
36
+ values,
37
+ pairValueName: 'httpProxy',
38
+ allowEmpty: true,
39
+ }),
32
40
  noProxy: noProxyValidationSchema,
33
41
  }),
34
42
  );
@@ -62,6 +70,10 @@ const EditProxyModal: React.FC<EditProxyModalProps> = ({
62
70
  const { t } = useTranslation();
63
71
  const [error, setError] = React.useState<string>();
64
72
  const warningMsg = getWarningMessage(hasAgents, hasBMHs, t);
73
+ const enableProxy =
74
+ !!infraEnv.spec?.proxy?.httpProxy ||
75
+ !!infraEnv.spec?.proxy?.httpsProxy ||
76
+ !!infraEnv.spec?.proxy?.noProxy;
65
77
  return (
66
78
  <Modal
67
79
  aria-label={t('ai:Edit proxy settings')}
@@ -76,7 +88,7 @@ const EditProxyModal: React.FC<EditProxyModalProps> = ({
76
88
  httpProxy: infraEnv.spec?.proxy?.httpProxy,
77
89
  httpsProxy: infraEnv.spec?.proxy?.httpsProxy,
78
90
  noProxy: infraEnv.spec?.proxy?.noProxy,
79
- enableProxy: true,
91
+ enableProxy,
80
92
  }}
81
93
  validationSchema={validationSchema}
82
94
  onSubmit={async (values: ProxyFieldsType) => {
@@ -51,14 +51,15 @@ export const StaticIPInfo: React.FC = () => {
51
51
 
52
52
  export type DiscoveryImageFormValues = ImageCreateParams & ProxyFieldsType;
53
53
 
54
- const validationSchema = Yup.lazy<DiscoveryImageFormValues>((values) =>
55
- Yup.object<DiscoveryImageFormValues>().shape({
56
- sshPublicKey: sshPublicKeyValidationSchema,
57
- httpProxy: httpProxyValidationSchema(values, 'httpsProxy'),
58
- httpsProxy: httpProxyValidationSchema(values, 'httpProxy'), // share the schema, httpS is currently not supported
59
- noProxy: noProxyValidationSchema,
60
- }),
61
- );
54
+ const getValidationSchema = (allowEmpty: boolean) =>
55
+ Yup.lazy<DiscoveryImageFormValues>((values) =>
56
+ Yup.object<DiscoveryImageFormValues>().shape({
57
+ sshPublicKey: sshPublicKeyValidationSchema,
58
+ httpProxy: httpProxyValidationSchema({ values, pairValueName: 'httpsProxy', allowEmpty }),
59
+ httpsProxy: httpProxyValidationSchema({ values, pairValueName: 'httpProxy', allowEmpty }), // share the schema, httpS is currently not supported
60
+ noProxy: noProxyValidationSchema,
61
+ }),
62
+ );
62
63
 
63
64
  type DiscoveryImageConfigFormProps = Proxy & {
64
65
  onCancel: () => void;
@@ -71,6 +72,7 @@ type DiscoveryImageConfigFormProps = Proxy & {
71
72
  sshPublicKey?: string;
72
73
  imageType?: ImageType;
73
74
  isIPXE?: boolean;
75
+ allowEmpty?: boolean;
74
76
  };
75
77
 
76
78
  export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> = ({
@@ -84,6 +86,7 @@ export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> =
84
86
  hideDiscoveryImageType,
85
87
  hasDHCP,
86
88
  isIPXE,
89
+ allowEmpty,
87
90
  }) => {
88
91
  const initialValues: DiscoveryImageFormValues = {
89
92
  sshPublicKey: sshPublicKey || '',
@@ -99,7 +102,7 @@ export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> =
99
102
  <Formik
100
103
  initialValues={initialValues}
101
104
  initialStatus={{ error: null }}
102
- validationSchema={validationSchema}
105
+ validationSchema={getValidationSchema(!!allowEmpty)}
103
106
  onSubmit={handleSubmit}
104
107
  >
105
108
  {({ submitForm, isSubmitting, status }) => {
@@ -10,7 +10,11 @@ type ClusterWizardStepProps = {
10
10
  navigation?: React.ReactNode;
11
11
  };
12
12
 
13
- const ClusterWizardStep: React.FC<ClusterWizardStepProps> = ({ navigation, footer, children }) => {
13
+ const ClusterWizardStep = ({
14
+ navigation,
15
+ footer,
16
+ children,
17
+ }: React.PropsWithChildren<ClusterWizardStepProps>) => {
14
18
  // activeStep is required, but we're not passing it. Using the cast to avoid TS error
15
19
  const activeStep = undefined as unknown as WizardBodyProps['activeStep'];
16
20
  return (
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FormGroup, TooltipProps } from '@patternfly/react-core';
3
- import { getFieldId } from '../../ui';
3
+ import { PopoverIcon, getFieldId } from '../../ui';
4
4
  import RadioFieldWithTooltip from '../../ui/formik/RadioFieldWithTooltip';
5
5
  import { useTranslation } from '../../../hooks/use-translation-wrapper';
6
6
 
@@ -47,7 +47,16 @@ export const ManagedNetworkingControlGroup = ({
47
47
  name={GROUP_NAME}
48
48
  isDisabled={disabled}
49
49
  value={'userManaged'}
50
- label={t('ai:User-Managed Networking')}
50
+ label={
51
+ <>
52
+ <span>{t('ai:User-Managed Networking')}</span>{' '}
53
+ <PopoverIcon
54
+ bodyContent={
55
+ "With User-Managed Networking, you'll need to provide and configure a load balancer for the API and ingress endpoints."
56
+ }
57
+ />
58
+ </>
59
+ }
51
60
  />
52
61
  </FormGroup>
53
62
  );
@@ -39,7 +39,7 @@ export const NetworkTypeControlGroup = ({
39
39
  <SplitItem>
40
40
  <PopoverIcon
41
41
  bodyContent={t(
42
- "ai:The next generation networking type, select this when you're using new features and telco features",
42
+ "ai:OVN separates the physical network topology from the logical one and is recommended if you're using new or telco features.",
43
43
  )}
44
44
  buttonStyle={{ top: '-4px' }}
45
45
  />
@@ -1,9 +1,8 @@
1
1
  import React from 'react';
2
- import { AxiosResponseHeaders } from 'axios';
3
2
  import omit from 'lodash-es/omit.js';
4
3
  import { Pagination, PaginationVariant } from '@patternfly/react-core';
5
- import { Event, EventList } from '../../api';
6
- import { EVENTS_POLLING_INTERVAL, EVENT_SEVERITIES } from '../../config';
4
+ import { EventList } from '../../api';
5
+ import { EVENTS_POLLING_INTERVAL } from '../../config';
7
6
  import { ClusterEventsFiltersType, EventListFetchProps } from '../../types';
8
7
  import { useStateSafely } from '../../hooks';
9
8
  import { ErrorState, LoadingState } from '../ui/uiState';
@@ -20,12 +19,15 @@ const initialSeverityCounts = {
20
19
  warning: 0,
21
20
  };
22
21
 
23
- export const EventListFetch = ({ onFetchEvents, ...props }: EventListFetchProps) => {
24
- const { cluster, hostId, className, entityKind } = props;
22
+ export const EventListFetch = ({
23
+ onFetchEvents,
24
+ disablePagination,
25
+ ...props
26
+ }: EventListFetchProps) => {
27
+ const { cluster, hostId, className, entityKind, setLoading } = props;
25
28
 
26
29
  const [lastPolling, setLastPolling] = useStateSafely(0);
27
30
  const [error, setError] = useStateSafely('');
28
- const [isLoading, setLoading] = useStateSafely(true);
29
31
  const [events, setEvents] = useStateSafely<EventList | undefined>(undefined);
30
32
 
31
33
  const [pageNum, setPageNum] = useStateSafely(1);
@@ -53,43 +55,29 @@ export const EventListFetch = ({ onFetchEvents, ...props }: EventListFetchProps)
53
55
  setPageNum(newPage);
54
56
  };
55
57
 
56
- const parseHeaders = React.useCallback(
57
- (headers: AxiosResponseHeaders) => {
58
- const severities: Record<Event['severity'], number> = {
59
- error: 0,
60
- info: 0,
61
- warning: 0,
62
- critical: 0,
63
- };
64
- EVENT_SEVERITIES.forEach((severity) => {
65
- const count = Number(headers[`severity-count-${severity}`]);
66
- severities[severity] = count;
67
- });
68
- setTotalEvents(Number(headers['event-count']));
69
- setSeverityCount(severities as SeverityCountsType);
70
- },
71
- [setSeverityCount, setTotalEvents],
72
- );
73
-
74
58
  React.useEffect(() => {
75
59
  let timer: ReturnType<typeof setTimeout>;
76
60
  setLoading(true);
77
61
 
78
- void onFetchEvents(
62
+ onFetchEvents(
79
63
  {
80
64
  clusterId: cluster.id,
81
65
  ...omit(filters, 'selectAll'),
82
66
  offset: perPage * (pageNum - 1),
83
67
  limit: perPage,
84
68
  },
85
- ({ data: newEvents, headers }) => {
69
+ ({ data: newEvents, severities, totalEvents }) => {
86
70
  setError('');
87
71
  setEvents(newEvents);
88
72
  setLoading(false);
89
- parseHeaders(headers);
73
+ setTotalEvents(totalEvents);
74
+ setSeverityCount(severities);
90
75
  timer = setTimeout(() => setLastPolling(Date.now()), EVENTS_POLLING_INTERVAL);
91
76
  },
92
- setError,
77
+ (err: string) => {
78
+ setError(err);
79
+ setLoading(false);
80
+ },
93
81
  );
94
82
 
95
83
  return () => clearTimeout(timer);
@@ -100,13 +88,13 @@ export const EventListFetch = ({ onFetchEvents, ...props }: EventListFetchProps)
100
88
  onFetchEvents,
101
89
  perPage,
102
90
  pageNum,
103
- parseHeaders,
104
- totalEvents,
105
91
  filters,
106
92
  setLoading,
107
93
  setError,
108
94
  setEvents,
109
95
  setLastPolling,
96
+ setTotalEvents,
97
+ setSeverityCount,
110
98
  ]);
111
99
 
112
100
  const forceRefetch = React.useCallback(() => {
@@ -125,7 +113,7 @@ export const EventListFetch = ({ onFetchEvents, ...props }: EventListFetchProps)
125
113
  eventList = <ErrorState title={error} fetchData={forceRefetch} />;
126
114
  }
127
115
 
128
- if (isLoading || !events) {
116
+ if (!events) {
129
117
  eventList = <LoadingState />;
130
118
  }
131
119
 
@@ -144,16 +132,18 @@ export const EventListFetch = ({ onFetchEvents, ...props }: EventListFetchProps)
144
132
  severityCounts={severityCounts}
145
133
  />
146
134
  {eventList}
147
- <Pagination
148
- perPageComponent="button"
149
- itemCount={totalEvents}
150
- widgetId="events-pagination"
151
- perPage={perPage}
152
- page={pageNum}
153
- variant={PaginationVariant.bottom}
154
- onSetPage={onSetPage}
155
- onPerPageSelect={onPerPageSelect}
156
- />
135
+ {!disablePagination && (
136
+ <Pagination
137
+ perPageComponent="button"
138
+ itemCount={totalEvents}
139
+ widgetId="events-pagination"
140
+ perPage={perPage}
141
+ page={pageNum}
142
+ variant={PaginationVariant.bottom}
143
+ onSetPage={onSetPage}
144
+ onPerPageSelect={onPerPageSelect}
145
+ />
146
+ )}
157
147
  </>
158
148
  );
159
149
  };
@@ -17,9 +17,9 @@ import {
17
17
  Tooltip,
18
18
  } from '@patternfly/react-core';
19
19
  import { CaretDownIcon } from '@patternfly/react-icons';
20
+ import { useTranslation } from '../../hooks/use-translation-wrapper';
20
21
 
21
22
  import './TableToolbar.css';
22
- import { useTranslation } from '../../hooks/use-translation-wrapper';
23
23
 
24
24
  type TableToolbarProps = {
25
25
  itemIDs: string[];
@@ -45,6 +45,7 @@ const TableToolbar: React.FC<TableToolbarProps> = ({
45
45
  children,
46
46
  ...paginationProps
47
47
  }) => {
48
+ const { t } = useTranslation();
48
49
  const [actionsOpen, setActionsOpen] = React.useState(false);
49
50
  const [selectOpen, setSelectOpen] = React.useState(false);
50
51
  const onSelectToggle = React.useCallback(() => setSelectOpen(!selectOpen), [selectOpen]);
@@ -75,7 +76,7 @@ const TableToolbar: React.FC<TableToolbarProps> = ({
75
76
  toggleIndicator={CaretDownIcon}
76
77
  isDisabled={isDisabled}
77
78
  >
78
- Actions
79
+ {t('ai:Actions')}
79
80
  </DropdownToggle>
80
81
  }
81
82
  isOpen={actionsOpen}
@@ -85,7 +86,6 @@ const TableToolbar: React.FC<TableToolbarProps> = ({
85
86
 
86
87
  const onSelectAll = () => setSelectedIDs(itemIDs);
87
88
  const onSelectNone = () => setSelectedIDs([]);
88
- const { t } = useTranslation();
89
89
  return (
90
90
  <Split hasGutter>
91
91
  <SplitItem isFilled>
@@ -217,7 +217,7 @@ export const hostStatus: HostStatus<Host['status'] | 'finalizing'> = Object.free
217
217
  category: 'Installation related',
218
218
  icon: <ExclamationTriangleIcon color={warningColor.value} />,
219
219
  details:
220
- 'Host already booted from disk during previous installation. To finish resetting the installation please boot the host into Discovery ISO.',
220
+ 'Host has already been booted from disk during the previous installation. To finish resetting the installation, boot the host into the discovery image',
221
221
  },
222
222
  finalizing: {
223
223
  key: 'finalizing',
@@ -226,6 +226,9 @@ const ClusterEventsToolbar = ({
226
226
  isOpen={isHostExpanded}
227
227
  placeholderText={<Placeholder text="Hosts" />}
228
228
  isDisabled={allHosts.length === 0}
229
+ maxHeight={280}
230
+ zIndex={600}
231
+ menuAppendTo={document.body}
229
232
  >
230
233
  {[
231
234
  <SelectOption
@@ -5,7 +5,7 @@ import { getFieldId, HelperText } from './formik';
5
5
 
6
6
  export interface StaticFieldProps {
7
7
  name: string;
8
- label: string;
8
+ label: React.ReactNode;
9
9
  helperText?: React.ReactNode;
10
10
  helperTextInvalid?: React.ReactNode;
11
11
  isRequired?: boolean;