@openshift-assisted/ui-lib 2.50.1 → 2.51.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 (362) hide show
  1. package/build/@types/cim/components/Agent/BMHStatusInfo.d.ts.map +1 -1
  2. package/build/@types/cim/components/Agent/MinimalHWRequirements.d.ts.map +1 -1
  3. package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts +1 -1
  4. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts +1 -1
  5. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
  6. package/build/@types/cim/components/Hypershift/DetailsPage/ConditionsTable.d.ts.map +1 -1
  7. package/build/@types/cim/components/Hypershift/DetailsPage/HostedClusterProgress.d.ts.map +1 -1
  8. package/build/@types/cim/components/Hypershift/DetailsPage/NodePoolsProgress.d.ts.map +1 -1
  9. package/build/@types/cim/components/Hypershift/utils/status.d.ts +2 -2
  10. package/build/@types/cim/components/Hypershift/utils/status.d.ts.map +1 -1
  11. package/build/@types/cim/components/InfraEnv/EnvironmentDetails.d.ts.map +1 -1
  12. package/build/@types/cim/components/InfraEnv/InfraEnvHostsTabAgentsWarning.d.ts.map +1 -1
  13. package/build/@types/cim/components/helpers/agentStatus.d.ts +1 -1
  14. package/build/@types/cim/components/helpers/agentStatus.d.ts.map +1 -1
  15. package/build/@types/cim/components/modals/MassDeleteAgentModal.d.ts.map +1 -1
  16. package/build/@types/common/api/assisted-service/ClustersAPI.d.ts +4 -0
  17. package/build/@types/common/api/assisted-service/ClustersAPI.d.ts.map +1 -1
  18. package/build/@types/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.d.ts.map +1 -1
  19. package/build/@types/common/components/clusterDetail/FinalizingProgress.d.ts +1 -1
  20. package/build/@types/common/components/clusterDetail/FinalizingProgress.d.ts.map +1 -1
  21. package/build/@types/common/components/clusterDetail/OperatorsProgressItem.d.ts.map +1 -1
  22. package/build/@types/common/components/clusterDetail/ProgressBarTexts.d.ts.map +1 -1
  23. package/build/@types/common/components/clusterWizard/ReviewValidations.d.ts.map +1 -1
  24. package/build/@types/common/components/clusterWizard/clusterDetailsValidation.d.ts.map +1 -1
  25. package/build/@types/common/components/hosts/HostPropertyValidationPopover.d.ts.map +1 -1
  26. package/build/@types/common/components/hosts/HostStatus.d.ts.map +1 -1
  27. package/build/@types/common/components/hosts/HostValidationGroups.d.ts.map +1 -1
  28. package/build/@types/common/components/hosts/Hostname.d.ts.map +1 -1
  29. package/build/@types/common/components/hosts/MassChangeHostnameModal.d.ts.map +1 -1
  30. package/build/@types/common/components/hosts/VMRebootConfigurationInfo.d.ts.map +1 -1
  31. package/build/@types/common/components/hosts/status.d.ts.map +1 -1
  32. package/build/@types/common/components/storage/DisksTable.d.ts.map +1 -1
  33. package/build/@types/common/components/storage/StorageUtils.d.ts +1 -1
  34. package/build/@types/common/components/storage/StorageUtils.d.ts.map +1 -1
  35. package/build/@types/common/components/ui/OpenShiftVersionModal.d.ts.map +1 -1
  36. package/build/@types/common/components/ui/WizardNavItem.d.ts.map +1 -1
  37. package/build/@types/common/components/ui/formik/PullSecretField.d.ts.map +1 -1
  38. package/build/@types/common/components/ui/formik/RemovableField.d.ts.map +1 -1
  39. package/build/@types/common/components/ui/formik/RichInputField.d.ts.map +1 -1
  40. package/build/@types/common/components/ui/index.d.ts +0 -1
  41. package/build/@types/common/components/ui/index.d.ts.map +1 -1
  42. package/build/@types/common/config/constants.d.ts +7 -0
  43. package/build/@types/common/config/constants.d.ts.map +1 -1
  44. package/build/@types/common/config/docs_links.d.ts +1 -0
  45. package/build/@types/common/config/docs_links.d.ts.map +1 -1
  46. package/build/@types/common/types/ui-settings.d.ts +0 -1
  47. package/build/@types/common/types/ui-settings.d.ts.map +1 -1
  48. package/build/@types/common/validationSchemas/addressValidation.d.ts.map +1 -1
  49. package/build/@types/common/validationSchemas/clusterDetailsValidation.d.ts +5 -0
  50. package/build/@types/common/validationSchemas/clusterDetailsValidation.d.ts.map +1 -1
  51. package/build/@types/ocm/components/Routes.d.ts.map +1 -1
  52. package/build/@types/ocm/components/clusterConfiguration/DiscoveryImageTypeDropdown.d.ts.map +1 -1
  53. package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
  54. package/build/@types/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.d.ts +2 -2
  55. package/build/@types/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.d.ts.map +1 -1
  56. package/build/@types/ocm/components/clusterConfiguration/OcmOperatorProgressItem.d.ts.map +1 -1
  57. package/build/@types/ocm/components/clusterConfiguration/OpenshiftVersionHelperText.d.ts.map +1 -1
  58. package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.d.ts.map +1 -1
  59. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts.map +1 -1
  60. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.d.ts +9 -0
  61. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.d.ts.map +1 -0
  62. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegrationNote.d.ts.map +1 -1
  63. package/build/@types/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.d.ts.map +1 -1
  64. package/build/@types/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.d.ts.map +1 -1
  65. package/build/@types/ocm/components/clusterConfiguration/staticIp/commonValidationSchemas.d.ts.map +1 -1
  66. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.d.ts.map +1 -1
  67. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewNetworkWide/formViewNetworkWideValidationSchema.d.ts +22 -0
  68. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewNetworkWide/formViewNetworkWideValidationSchema.d.ts.map +1 -1
  69. package/build/@types/ocm/components/clusterDetail/ClusterProperties.d.ts.map +1 -1
  70. package/build/@types/ocm/components/clusterDetail/HostInventoryExpandable.d.ts +1 -1
  71. package/build/@types/ocm/components/clusterDetail/HostInventoryExpandable.d.ts.map +1 -1
  72. package/build/@types/ocm/components/clusterDetail/OpenShiftVersionDetail.d.ts.map +1 -1
  73. package/build/@types/ocm/components/clusterDetail/ResetClusterModal.d.ts.map +1 -1
  74. package/build/@types/ocm/components/clusterWizard/ClusterDetails.d.ts.map +1 -1
  75. package/build/@types/ocm/components/clusterWizard/ClusterDetailsForm.d.ts +2 -2
  76. package/build/@types/ocm/components/clusterWizard/ClusterDetailsForm.d.ts.map +1 -1
  77. package/build/@types/ocm/components/clusterWizard/ClusterWizardContext.d.ts +3 -2
  78. package/build/@types/ocm/components/clusterWizard/ClusterWizardContext.d.ts.map +1 -1
  79. package/build/@types/ocm/components/clusterWizard/ClusterWizardContextProvider.d.ts.map +1 -1
  80. package/build/@types/ocm/components/clusterWizard/ClusterWizardFooter.d.ts +2 -1
  81. package/build/@types/ocm/components/clusterWizard/ClusterWizardFooter.d.ts.map +1 -1
  82. package/build/@types/ocm/components/clusterWizard/NewClusterWizard.d.ts.map +1 -1
  83. package/build/@types/ocm/components/clusterWizard/constants.d.ts.map +1 -1
  84. package/build/@types/ocm/components/clusterWizard/disconnected/BasicStep.d.ts.map +1 -1
  85. package/build/@types/ocm/components/clusterWizard/disconnected/DisconnectedStaticIp.d.ts +4 -0
  86. package/build/@types/ocm/components/clusterWizard/disconnected/DisconnectedStaticIp.d.ts.map +1 -0
  87. package/build/@types/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.d.ts +4 -0
  88. package/build/@types/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.d.ts.map +1 -0
  89. package/build/@types/ocm/components/clusterWizard/disconnected/ReviewStep.d.ts.map +1 -1
  90. package/build/@types/ocm/components/clusterWizard/index.d.ts +1 -0
  91. package/build/@types/ocm/components/clusterWizard/index.d.ts.map +1 -1
  92. package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts +2 -2
  93. package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts.map +1 -1
  94. package/build/@types/ocm/components/clusters/ClusterStatus.d.ts.map +1 -1
  95. package/build/@types/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.d.ts.map +1 -1
  96. package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts.map +1 -1
  97. package/build/@types/ocm/components/ui/InfoLinkWithModal.d.ts.map +1 -1
  98. package/build/@types/ocm/components/utils.d.ts +1 -0
  99. package/build/@types/ocm/components/utils.d.ts.map +1 -1
  100. package/build/@types/ocm/hooks/useUISettings.d.ts.map +1 -1
  101. package/build/@types/ocm/services/ClusterDetailsService.d.ts +1 -2
  102. package/build/@types/ocm/services/ClusterDetailsService.d.ts.map +1 -1
  103. package/build/@types/ocm/services/ClustersService.d.ts +4 -0
  104. package/build/@types/ocm/services/ClustersService.d.ts.map +1 -1
  105. package/build/@types/ocm/services/InfraEnvsService.d.ts.map +1 -1
  106. package/build/@types/ocm/services/types.d.ts +0 -1
  107. package/build/@types/ocm/services/types.d.ts.map +1 -1
  108. package/build/@types/ocm/store/slices/current-cluster/slice.d.ts +3 -3
  109. package/build/cjs/cim/components/Agent/BMHStatusInfo.js +4 -4
  110. package/build/cjs/cim/components/Agent/BMHStatusInfo.js.map +1 -1
  111. package/build/cjs/cim/components/Agent/MinimalHWRequirements.js +2 -2
  112. package/build/cjs/cim/components/Agent/MinimalHWRequirements.js.map +1 -1
  113. package/build/cjs/cim/components/Hypershift/DetailsPage/ConditionsTable.js +7 -6
  114. package/build/cjs/cim/components/Hypershift/DetailsPage/ConditionsTable.js.map +1 -1
  115. package/build/cjs/cim/components/Hypershift/DetailsPage/HostedClusterProgress.js +3 -2
  116. package/build/cjs/cim/components/Hypershift/DetailsPage/HostedClusterProgress.js.map +1 -1
  117. package/build/cjs/cim/components/Hypershift/DetailsPage/NodePoolsProgress.js +2 -2
  118. package/build/cjs/cim/components/Hypershift/DetailsPage/NodePoolsProgress.js.map +1 -1
  119. package/build/cjs/cim/components/Hypershift/utils/status.js +8 -7
  120. package/build/cjs/cim/components/Hypershift/utils/status.js.map +1 -1
  121. package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js +4 -4
  122. package/build/cjs/cim/components/InfraEnv/EnvironmentDetails.js.map +1 -1
  123. package/build/cjs/cim/components/InfraEnv/InfraEnvHostsTabAgentsWarning.js +3 -3
  124. package/build/cjs/cim/components/InfraEnv/InfraEnvHostsTabAgentsWarning.js.map +1 -1
  125. package/build/cjs/cim/components/helpers/agentStatus.js +3 -2
  126. package/build/cjs/cim/components/helpers/agentStatus.js.map +1 -1
  127. package/build/cjs/cim/components/modals/MassDeleteAgentModal.js +2 -2
  128. package/build/cjs/cim/components/modals/MassDeleteAgentModal.js.map +1 -1
  129. package/build/cjs/common/api/assisted-service/ClustersAPI.js +3 -0
  130. package/build/cjs/common/api/assisted-service/ClustersAPI.js.map +1 -1
  131. package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js +2 -1
  132. package/build/cjs/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.js.map +1 -1
  133. package/build/cjs/common/components/clusterDetail/FinalizingProgress.js +8 -7
  134. package/build/cjs/common/components/clusterDetail/FinalizingProgress.js.map +1 -1
  135. package/build/cjs/common/components/clusterDetail/OperatorsProgressItem.js +4 -4
  136. package/build/cjs/common/components/clusterDetail/OperatorsProgressItem.js.map +1 -1
  137. package/build/cjs/common/components/clusterDetail/ProgressBarTexts.js +5 -4
  138. package/build/cjs/common/components/clusterDetail/ProgressBarTexts.js.map +1 -1
  139. package/build/cjs/common/components/clusterWizard/ReviewValidations.js +7 -6
  140. package/build/cjs/common/components/clusterWizard/ReviewValidations.js.map +1 -1
  141. package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js +17 -8
  142. package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js.map +1 -1
  143. package/build/cjs/common/components/hosts/HostPropertyValidationPopover.js +6 -6
  144. package/build/cjs/common/components/hosts/HostPropertyValidationPopover.js.map +1 -1
  145. package/build/cjs/common/components/hosts/HostStatus.js +2 -1
  146. package/build/cjs/common/components/hosts/HostStatus.js.map +1 -1
  147. package/build/cjs/common/components/hosts/HostValidationGroups.js +6 -6
  148. package/build/cjs/common/components/hosts/HostValidationGroups.js.map +1 -1
  149. package/build/cjs/common/components/hosts/Hostname.js +4 -3
  150. package/build/cjs/common/components/hosts/Hostname.js.map +1 -1
  151. package/build/cjs/common/components/hosts/MassChangeHostnameModal.js +2 -2
  152. package/build/cjs/common/components/hosts/MassChangeHostnameModal.js.map +1 -1
  153. package/build/cjs/common/components/hosts/VMRebootConfigurationInfo.js +2 -1
  154. package/build/cjs/common/components/hosts/VMRebootConfigurationInfo.js.map +1 -1
  155. package/build/cjs/common/components/hosts/status.js +19 -13
  156. package/build/cjs/common/components/hosts/status.js.map +1 -1
  157. package/build/cjs/common/components/storage/DisksTable.js +4 -2
  158. package/build/cjs/common/components/storage/DisksTable.js.map +1 -1
  159. package/build/cjs/common/components/storage/StorageUtils.js +3 -2
  160. package/build/cjs/common/components/storage/StorageUtils.js.map +1 -1
  161. package/build/cjs/common/components/ui/OpenShiftVersionModal.js +3 -1
  162. package/build/cjs/common/components/ui/OpenShiftVersionModal.js.map +1 -1
  163. package/build/cjs/common/components/ui/WizardFooter.js +1 -1
  164. package/build/cjs/common/components/ui/WizardFooter.js.map +1 -1
  165. package/build/cjs/common/components/ui/WizardNavItem.js +2 -2
  166. package/build/cjs/common/components/ui/WizardNavItem.js.map +1 -1
  167. package/build/cjs/common/components/ui/formik/PullSecretField.js.map +1 -1
  168. package/build/cjs/common/components/ui/formik/RemovableField.js +3 -3
  169. package/build/cjs/common/components/ui/formik/RemovableField.js.map +1 -1
  170. package/build/cjs/common/components/ui/formik/RichInputField.js +4 -4
  171. package/build/cjs/common/components/ui/formik/RichInputField.js.map +1 -1
  172. package/build/cjs/common/components/ui/formik/TextAreaField.js +1 -1
  173. package/build/cjs/common/components/ui/formik/TextAreaField.js.map +1 -1
  174. package/build/cjs/common/components/ui/index.js +1 -3
  175. package/build/cjs/common/components/ui/index.js.map +1 -1
  176. package/build/cjs/common/config/constants.js +20 -2
  177. package/build/cjs/common/config/constants.js.map +1 -1
  178. package/build/cjs/common/config/docs_links.js +3 -2
  179. package/build/cjs/common/config/docs_links.js.map +1 -1
  180. package/build/cjs/common/validationSchemas/addressValidation.js +3 -1
  181. package/build/cjs/common/validationSchemas/addressValidation.js.map +1 -1
  182. package/build/cjs/common/validationSchemas/clusterDetailsValidation.js +31 -2
  183. package/build/cjs/common/validationSchemas/clusterDetailsValidation.js.map +1 -1
  184. package/build/cjs/ocm/components/Routes.js +2 -1
  185. package/build/cjs/ocm/components/Routes.js.map +1 -1
  186. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageTypeDropdown.js +1 -0
  187. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageTypeDropdown.js.map +1 -1
  188. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js +1 -7
  189. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
  190. package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js +1 -1
  191. package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js.map +1 -1
  192. package/build/cjs/ocm/components/clusterConfiguration/OcmOperatorProgressItem.js +4 -4
  193. package/build/cjs/ocm/components/clusterConfiguration/OcmOperatorProgressItem.js.map +1 -1
  194. package/build/cjs/ocm/components/clusterConfiguration/OpenshiftVersionHelperText.js +5 -2
  195. package/build/cjs/ocm/components/clusterConfiguration/OpenshiftVersionHelperText.js.map +1 -1
  196. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js +90 -6
  197. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js.map +1 -1
  198. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +3 -3
  199. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
  200. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.js +68 -0
  201. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.js.map +1 -0
  202. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegrationNote.js +5 -3
  203. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegrationNote.js.map +1 -1
  204. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js +1 -1
  205. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js.map +1 -1
  206. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.js +11 -7
  207. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.js.map +1 -1
  208. package/build/cjs/ocm/components/clusterConfiguration/staticIp/commonValidationSchemas.js +5 -2
  209. package/build/cjs/ocm/components/clusterConfiguration/staticIp/commonValidationSchemas.js.map +1 -1
  210. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.js +1 -1
  211. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.js.map +1 -1
  212. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewNetworkWide/FormViewNetworkWide.js +1 -1
  213. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewNetworkWide/FormViewNetworkWide.js.map +1 -1
  214. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewNetworkWide/formViewNetworkWideValidationSchema.js +31 -3
  215. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewNetworkWide/formViewNetworkWideValidationSchema.js.map +1 -1
  216. package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js +1 -5
  217. package/build/cjs/ocm/components/clusterDetail/ClusterProperties.js.map +1 -1
  218. package/build/cjs/ocm/components/clusterDetail/HostInventoryExpandable.js +5 -4
  219. package/build/cjs/ocm/components/clusterDetail/HostInventoryExpandable.js.map +1 -1
  220. package/build/cjs/ocm/components/clusterDetail/OpenShiftVersionDetail.js +4 -3
  221. package/build/cjs/ocm/components/clusterDetail/OpenShiftVersionDetail.js.map +1 -1
  222. package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js +4 -2
  223. package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js.map +1 -1
  224. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js +18 -10
  225. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js.map +1 -1
  226. package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js +4 -5
  227. package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js.map +1 -1
  228. package/build/cjs/ocm/components/clusterWizard/ClusterWizardContext.js.map +1 -1
  229. package/build/cjs/ocm/components/clusterWizard/ClusterWizardContextProvider.js +70 -28
  230. package/build/cjs/ocm/components/clusterWizard/ClusterWizardContextProvider.js.map +1 -1
  231. package/build/cjs/ocm/components/clusterWizard/ClusterWizardFooter.js +21 -6
  232. package/build/cjs/ocm/components/clusterWizard/ClusterWizardFooter.js.map +1 -1
  233. package/build/cjs/ocm/components/clusterWizard/NewClusterWizard.js +11 -1
  234. package/build/cjs/ocm/components/clusterWizard/NewClusterWizard.js.map +1 -1
  235. package/build/cjs/ocm/components/clusterWizard/constants.js +2 -0
  236. package/build/cjs/ocm/components/clusterWizard/constants.js.map +1 -1
  237. package/build/cjs/ocm/components/clusterWizard/disconnected/BasicStep.js +96 -18
  238. package/build/cjs/ocm/components/clusterWizard/disconnected/BasicStep.js.map +1 -1
  239. package/build/cjs/ocm/components/clusterWizard/disconnected/DisconnectedStaticIp.js +48 -0
  240. package/build/cjs/ocm/components/clusterWizard/disconnected/DisconnectedStaticIp.js.map +1 -0
  241. package/build/cjs/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.js +182 -0
  242. package/build/cjs/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.js.map +1 -0
  243. package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js +11 -7
  244. package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js.map +1 -1
  245. package/build/cjs/ocm/components/clusterWizard/index.js +3 -1
  246. package/build/cjs/ocm/components/clusterWizard/index.js.map +1 -1
  247. package/build/cjs/ocm/components/clusterWizard/wizardTransition.js +12 -1
  248. package/build/cjs/ocm/components/clusterWizard/wizardTransition.js.map +1 -1
  249. package/build/cjs/ocm/components/clusters/ClusterStatus.js +13 -7
  250. package/build/cjs/ocm/components/clusters/ClusterStatus.js.map +1 -1
  251. package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js +7 -6
  252. package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js.map +1 -1
  253. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +6 -0
  254. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js.map +1 -1
  255. package/build/cjs/ocm/components/ui/InfoLinkWithModal.js +2 -2
  256. package/build/cjs/ocm/components/ui/InfoLinkWithModal.js.map +1 -1
  257. package/build/cjs/ocm/components/utils.js +4 -1
  258. package/build/cjs/ocm/components/utils.js.map +1 -1
  259. package/build/cjs/ocm/hooks/useInfraEnvId.js +2 -2
  260. package/build/cjs/ocm/hooks/useInfraEnvId.js.map +1 -1
  261. package/build/cjs/ocm/hooks/useUISettings.js +0 -1
  262. package/build/cjs/ocm/hooks/useUISettings.js.map +1 -1
  263. package/build/cjs/ocm/services/ClusterDetailsService.js +2 -2
  264. package/build/cjs/ocm/services/ClusterDetailsService.js.map +1 -1
  265. package/build/cjs/ocm/services/ClustersService.js +6 -0
  266. package/build/cjs/ocm/services/ClustersService.js.map +1 -1
  267. package/build/cjs/ocm/services/InfraEnvsService.js +4 -1
  268. package/build/cjs/ocm/services/InfraEnvsService.js.map +1 -1
  269. package/lib/cim/components/Agent/BMHStatusInfo.tsx +12 -4
  270. package/lib/cim/components/Agent/MinimalHWRequirements.tsx +4 -2
  271. package/lib/cim/components/Hypershift/DetailsPage/ConditionsTable.tsx +13 -7
  272. package/lib/cim/components/Hypershift/DetailsPage/HostedClusterProgress.tsx +8 -4
  273. package/lib/cim/components/Hypershift/DetailsPage/NodePoolsProgress.tsx +6 -2
  274. package/lib/cim/components/Hypershift/utils/status.tsx +20 -9
  275. package/lib/cim/components/InfraEnv/EnvironmentDetails.tsx +11 -4
  276. package/lib/cim/components/InfraEnv/InfraEnvHostsTabAgentsWarning.tsx +4 -6
  277. package/lib/cim/components/helpers/agentStatus.tsx +7 -3
  278. package/lib/cim/components/modals/MassDeleteAgentModal.tsx +12 -5
  279. package/lib/common/api/assisted-service/ClustersAPI.ts +6 -0
  280. package/lib/common/components/clusterConfiguration/DiscoveryTroubleshootingModal.tsx +5 -2
  281. package/lib/common/components/clusterDetail/FinalizingProgress.tsx +21 -10
  282. package/lib/common/components/clusterDetail/OperatorsProgressItem.tsx +11 -5
  283. package/lib/common/components/clusterDetail/ProgressBarTexts.tsx +17 -5
  284. package/lib/common/components/clusterWizard/ReviewValidations.tsx +15 -6
  285. package/lib/common/components/clusterWizard/clusterDetailsValidation.ts +19 -9
  286. package/lib/common/components/hosts/HostPropertyValidationPopover.tsx +9 -5
  287. package/lib/common/components/hosts/HostStatus.tsx +14 -3
  288. package/lib/common/components/hosts/HostValidationGroups.tsx +9 -5
  289. package/lib/common/components/hosts/Hostname.tsx +7 -4
  290. package/lib/common/components/hosts/MassChangeHostnameModal.tsx +6 -2
  291. package/lib/common/components/hosts/VMRebootConfigurationInfo.tsx +12 -3
  292. package/lib/common/components/hosts/status.tsx +46 -13
  293. package/lib/common/components/storage/DisksTable.tsx +15 -4
  294. package/lib/common/components/storage/StorageUtils.tsx +6 -4
  295. package/lib/common/components/ui/OpenShiftVersionModal.tsx +3 -1
  296. package/lib/common/components/ui/WizardFooter.tsx +1 -1
  297. package/lib/common/components/ui/WizardNavItem.tsx +4 -7
  298. package/lib/common/components/ui/formik/PullSecretField.tsx +1 -0
  299. package/lib/common/components/ui/formik/RemovableField.tsx +8 -4
  300. package/lib/common/components/ui/formik/RichInputField.tsx +10 -6
  301. package/lib/common/components/ui/formik/TextAreaField.tsx +1 -1
  302. package/lib/common/components/ui/index.ts +0 -2
  303. package/lib/common/config/constants.ts +19 -0
  304. package/lib/common/config/docs_links.ts +2 -0
  305. package/lib/common/types/ui-settings.ts +0 -1
  306. package/lib/common/validationSchemas/addressValidation.tsx +4 -1
  307. package/lib/common/validationSchemas/clusterDetailsValidation.tsx +47 -15
  308. package/lib/ocm/components/Routes.tsx +3 -1
  309. package/lib/ocm/components/clusterConfiguration/DiscoveryImageTypeDropdown.tsx +1 -0
  310. package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +1 -8
  311. package/lib/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.tsx +2 -3
  312. package/lib/ocm/components/clusterConfiguration/OcmOperatorProgressItem.tsx +11 -5
  313. package/lib/ocm/components/clusterConfiguration/OpenshiftVersionHelperText.tsx +8 -7
  314. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.tsx +155 -20
  315. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +8 -6
  316. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkTypeDropdown.tsx +157 -0
  317. package/lib/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegrationNote.tsx +6 -3
  318. package/lib/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.tsx +3 -7
  319. package/lib/ocm/components/clusterConfiguration/review/ReviewPreflightChecks.tsx +28 -15
  320. package/lib/ocm/components/clusterConfiguration/staticIp/commonValidationSchemas.tsx +8 -2
  321. package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.tsx +1 -0
  322. package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewNetworkWide/FormViewNetworkWide.tsx +2 -2
  323. package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewNetworkWide/formViewNetworkWideValidationSchema.tsx +63 -24
  324. package/lib/ocm/components/clusterDetail/ClusterProperties.tsx +2 -6
  325. package/lib/ocm/components/clusterDetail/HostInventoryExpandable.tsx +11 -5
  326. package/lib/ocm/components/clusterDetail/OpenShiftVersionDetail.tsx +8 -5
  327. package/lib/ocm/components/clusterDetail/ResetClusterModal.tsx +6 -3
  328. package/lib/ocm/components/clusterWizard/ClusterDetails.tsx +19 -14
  329. package/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx +5 -7
  330. package/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx +3 -2
  331. package/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx +101 -59
  332. package/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx +26 -5
  333. package/lib/ocm/components/clusterWizard/NewClusterWizard.tsx +14 -3
  334. package/lib/ocm/components/clusterWizard/constants.ts +2 -0
  335. package/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx +138 -37
  336. package/lib/ocm/components/clusterWizard/disconnected/DisconnectedStaticIp.tsx +78 -0
  337. package/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx +364 -0
  338. package/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx +19 -9
  339. package/lib/ocm/components/clusterWizard/index.ts +1 -0
  340. package/lib/ocm/components/clusterWizard/wizardTransition.ts +14 -2
  341. package/lib/ocm/components/clusters/ClusterStatus.tsx +30 -8
  342. package/lib/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.tsx +12 -8
  343. package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +6 -0
  344. package/lib/ocm/components/ui/InfoLinkWithModal.tsx +4 -2
  345. package/lib/ocm/components/utils.ts +4 -0
  346. package/lib/ocm/hooks/useInfraEnvId.ts +2 -2
  347. package/lib/ocm/hooks/useUISettings.ts +0 -1
  348. package/lib/ocm/services/ClusterDetailsService.ts +0 -3
  349. package/lib/ocm/services/ClustersService.ts +6 -0
  350. package/lib/ocm/services/InfraEnvsService.ts +4 -1
  351. package/lib/ocm/services/types.ts +0 -1
  352. package/package.json +4 -4
  353. package/build/@types/common/components/ui/UiIcon.d.ts +0 -11
  354. package/build/@types/common/components/ui/UiIcon.d.ts.map +0 -1
  355. package/build/@types/ocm/components/clusterConfiguration/CustomManifestCheckbox.d.ts +0 -8
  356. package/build/@types/ocm/components/clusterConfiguration/CustomManifestCheckbox.d.ts.map +0 -1
  357. package/build/cjs/common/components/ui/UiIcon.js +0 -11
  358. package/build/cjs/common/components/ui/UiIcon.js.map +0 -1
  359. package/build/cjs/ocm/components/clusterConfiguration/CustomManifestCheckbox.js +0 -58
  360. package/build/cjs/ocm/components/clusterConfiguration/CustomManifestCheckbox.js.map +0 -1
  361. package/lib/common/components/ui/UiIcon.tsx +0 -21
  362. package/lib/ocm/components/clusterConfiguration/CustomManifestCheckbox.tsx +0 -114
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- import { Button, ButtonVariant, Tooltip, TooltipProps } from '@patternfly/react-core';
2
+ import { Button, ButtonVariant, Icon, Tooltip, TooltipProps } from '@patternfly/react-core';
3
3
  import { MinusCircleIcon } from '@patternfly/react-icons/dist/js/icons/minus-circle-icon';
4
- import './RemovableField.css';
5
4
  import classnames from 'classnames';
6
- import UiIcon from '../UiIcon';
5
+
6
+ import './RemovableField.css';
7
7
 
8
8
  interface RemovableFieldProps {
9
9
  onRemove: VoidFunction;
@@ -30,7 +30,11 @@ const RemovableField: React.FC<RemovableFieldProps & Omit<TooltipProps, 'content
30
30
  distance={0}
31
31
  content={
32
32
  <Button
33
- icon={<UiIcon size="sm" icon={<MinusCircleIcon />} />}
33
+ icon={
34
+ <Icon size="sm">
35
+ <MinusCircleIcon />
36
+ </Icon>
37
+ }
34
38
  variant={ButtonVariant.plain}
35
39
  onClick={onRemove}
36
40
  data-testid={removeButtonDataTestId}
@@ -15,15 +15,13 @@ import {
15
15
  FormHelperText,
16
16
  HelperText,
17
17
  ButtonVariant,
18
+ Icon,
18
19
  } from '@patternfly/react-core';
19
20
  import { CheckCircleIcon } from '@patternfly/react-icons/dist/js/icons/check-circle-icon';
20
21
  import { CheckIcon } from '@patternfly/react-icons/dist/js/icons/check-icon';
21
22
  import { ExclamationCircleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';
22
23
  import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
23
24
  import { TimesIcon } from '@patternfly/react-icons/dist/js/icons/times-icon';
24
- import { t_global_color_status_success_default as okColor } from '@patternfly/react-tokens/dist/js/t_global_color_status_success_default';
25
- import { t_global_icon_color_status_danger_default as dangerColor } from '@patternfly/react-tokens/dist/js/t_global_icon_color_status_danger_default';
26
- import { t_global_icon_color_status_info_default as blueInfoColor } from '@patternfly/react-tokens/dist/js/t_global_icon_color_status_info_default';
27
25
 
28
26
  import { InputFieldProps as BaseInputProps } from './types';
29
27
  import { getFieldId } from './utils';
@@ -164,11 +162,17 @@ const RichInputField: React.FC<RichInputFieldPropsProps> = React.forwardRef(
164
162
  <Button
165
163
  icon={
166
164
  !isValid ? (
167
- <ExclamationCircleIcon color={dangerColor.value} />
165
+ <Icon status="danger">
166
+ <ExclamationCircleIcon />
167
+ </Icon>
168
168
  ) : value ? (
169
- <CheckCircleIcon color={okColor.value} />
169
+ <Icon status="success">
170
+ <CheckCircleIcon />
171
+ </Icon>
170
172
  ) : (
171
- <InfoCircleIcon color={blueInfoColor.value} />
173
+ <Icon status="info">
174
+ <InfoCircleIcon />
175
+ </Icon>
172
176
  )
173
177
  }
174
178
  variant={ButtonVariant.control}
@@ -72,7 +72,7 @@ const TextAreaField: React.FC<React.PropsWithChildren<TextAreaFieldProps>> = ({
72
72
  icon={<ExclamationCircleIcon />}
73
73
  variant={'error'}
74
74
  id={`${fieldId}-helper-error`}
75
- data-testid={`input-textarea-${fieldId}-helper-text`}
75
+ data-testid={`input-textarea-${fieldId}-helper-text-error`}
76
76
  >
77
77
  {errorMessage}
78
78
  </HelperTextItem>
@@ -28,5 +28,3 @@ export { default as ClusterEventsToolbar } from './ClusterEventsToolbar';
28
28
  export { default as ModalProgress } from './ModalProgress';
29
29
  export { default as ConfirmationModal } from './ConfirmationModal';
30
30
  export { default as NoPermissionsError } from './NoPermissionsError';
31
-
32
- export { default as UiIcon } from './UiIcon';
@@ -53,6 +53,7 @@ export const clusterStatusLabels = (t: TFunction): { [key in Cluster['status']]:
53
53
  error: t('ai:Error'),
54
54
  installed: t('ai:Installed'),
55
55
  'adding-hosts': t('ai:Adding hosts'),
56
+ unmonitored: t('ai:Unmonitored'),
56
57
  });
57
58
 
58
59
  export const clusterFieldLabels = (t: TFunction): { [key in string]: string } => ({
@@ -73,6 +74,7 @@ export const clusterFieldLabels = (t: TFunction): { [key in string]: string } =>
73
74
  machineNetworks: t('ai:Machine networks'),
74
75
  clusterNetworks: t('ai:Cluster networks'),
75
76
  serviceNetworks: t('ai:Service networks'),
77
+ rendezvousIp: t('ai:Rendezvous IP'),
76
78
  });
77
79
 
78
80
  export const hostValidationGroupLabels = (
@@ -333,6 +335,19 @@ export const NO_SUBNET_SET = 'NO_SUBNET_SET';
333
335
 
334
336
  export const NETWORK_TYPE_OVN = 'OVNKubernetes';
335
337
  export const NETWORK_TYPE_SDN = 'OpenShiftSDN';
338
+ export const NETWORK_TYPE_CISCO_ACI = 'CiscoACI';
339
+ export const NETWORK_TYPE_CILIUM = 'Cilium';
340
+ export const NETWORK_TYPE_CALICO = 'Calico';
341
+ export const NETWORK_TYPE_NONE = 'None';
342
+
343
+ export const NETWORK_TYPE_LABELS: Record<string, string> = {
344
+ [NETWORK_TYPE_OVN]: 'Open Virtual Networking (OVN)',
345
+ [NETWORK_TYPE_SDN]: 'Software-Defined Networking (SDN)',
346
+ [NETWORK_TYPE_CISCO_ACI]: 'Cisco ACI',
347
+ [NETWORK_TYPE_CILIUM]: 'Isovalent Cilium',
348
+ [NETWORK_TYPE_CALICO]: 'Tigera Calico',
349
+ [NETWORK_TYPE_NONE]: 'None (Custom CNI)',
350
+ };
336
351
 
337
352
  export const IPV4_STACK = 'singleStack';
338
353
  export const DUAL_STACK = 'dualStack';
@@ -379,6 +394,7 @@ export const OPERATOR_NAME_METALLB = 'metallb';
379
394
 
380
395
  export const singleClusterOperators = [
381
396
  OPERATOR_NAME_CNV,
397
+ OPERATOR_NAME_LSO,
382
398
  OPERATOR_NAME_MTV,
383
399
  OPERATOR_NAME_NMSTATE,
384
400
  OPERATOR_NAME_NODE_HEALTHCHECK,
@@ -388,6 +404,9 @@ export const singleClusterOperators = [
388
404
  OPERATOR_NAME_CLUSTER_OBSERVABILITY,
389
405
  OPERATOR_NAME_LOKI,
390
406
  OPERATOR_NAME_OPENSHIFT_LOGGING,
407
+ OPERATOR_NAME_NUMA_RESOURCES,
408
+ OPERATOR_NAME_OADP,
409
+ OPERATOR_NAME_METALLB,
391
410
  ];
392
411
 
393
412
  export const singleClusterBundles = ['virtualization'];
@@ -54,6 +54,8 @@ export const getOpenShiftNetworkingDocsLink = (ocpVersion?: string) => {
54
54
  return `https://docs.redhat.com/en/documentation/openshift_container_platform/${validOcpVersion}/html/installing_on_bare_metal/${variant}#installation-network-user-infra_installing-bare-metal`;
55
55
  };
56
56
 
57
+ export const RED_HAT_CNI_SUPPORT_MATRIX_LINK = 'https://access.redhat.com/articles/5436171';
58
+
57
59
  export const SSH_GENERATION_DOC_LINK = 'https://www.redhat.com/sysadmin/configure-ssh-keygen';
58
60
 
59
61
  //Hosts status
@@ -1,5 +1,4 @@
1
1
  export type UISettingsValues = {
2
- addCustomManifests?: boolean;
3
2
  customManifestsAdded?: boolean;
4
3
  customManifestsUpdated?: boolean;
5
4
  bundlesSelected?: string[];
@@ -29,7 +29,10 @@ export const ipNoSuffixValidationSchema = (t: TFunction) =>
29
29
 
30
30
  export const macAddressValidationSchema = (t: TFunction) =>
31
31
  Yup.string().matches(MAC_REGEX, {
32
- message: (value) => t('ai:Value "{{value}}" is not valid MAC address.', { value }),
32
+ message: (params: { value?: unknown }) =>
33
+ t('ai:Value "{{value}}" is not valid MAC address.', {
34
+ value: params?.value !== undefined ? String(params.value) : '',
35
+ }),
33
36
  excludeEmptyString: true,
34
37
  });
35
38
 
@@ -123,23 +123,55 @@ export const dnsNameValidationSchema = (t: TFunction) =>
123
123
  excludeEmptyString: true,
124
124
  });
125
125
 
126
+ const MAX_DNS_NAME_LENGTH = 253;
127
+ /** Only letters, digits, hyphen, and dot (valid DNS/hostname characters). */
128
+ const DNS_CHARS_REGEX = /^[a-z0-9.-]+$/i;
129
+
130
+ /**
131
+ * Validates the full cluster address [clusterName].[baseDomain] as a single DNS/hostname
132
+ * (e.g. "doma.ca" is valid even though "ca" alone might not pass standalone base-domain rules).
133
+ */
134
+ export const isValidFullClusterAddress = (full: string): boolean => {
135
+ if (!full || full === '.' || /\s/.test(full)) {
136
+ return false;
137
+ }
138
+ if (full.length > MAX_DNS_NAME_LENGTH) {
139
+ return false;
140
+ }
141
+ if (!DNS_CHARS_REGEX.test(full)) {
142
+ return false;
143
+ }
144
+ const labels = full.split('.');
145
+ if (labels.some((label) => label.length === 0 || label.length > 63)) {
146
+ return false;
147
+ }
148
+ return HOST_NAME_REGEX.test(full);
149
+ };
150
+
126
151
  export const baseDomainValidationSchema = (t: TFunction) =>
127
- Yup.string().test(
128
- 'dns-name-label-length',
129
- t(
130
- 'ai:Every single host component in the base domain name cannot contain more than 63 characters and must not contain spaces.',
131
- ),
132
- (value?: string) => {
133
- // Check if the value contains any spaces
134
- if (/\s/.test(value as string)) {
135
- return false; // Value contains spaces, validation fails
136
- }
152
+ Yup.string()
153
+ .test(
154
+ 'dns-name-label-length',
155
+ t(
156
+ 'ai:Every single host component in the base domain name cannot contain more than 63 characters and must not contain spaces.',
157
+ ),
158
+ (value?: string) => {
159
+ // Check if the value contains any spaces
160
+ if (/\s/.test(value as string)) {
161
+ return false; // Value contains spaces, validation fails
162
+ }
137
163
 
138
- // Check the label lengths
139
- const labels = (value || '').split('.');
140
- return labels.every((label: string) => label.length <= 63);
141
- },
142
- );
164
+ // Check the label lengths
165
+ const labels = (value || '').split('.');
166
+ return labels.every((label: string) => label.length <= 63);
167
+ },
168
+ )
169
+ .matches(NAME_CHARS_REGEX, {
170
+ message: t(
171
+ 'ai:Base domain can only contain letters, digits, hyphens, and dots. Example: example.com',
172
+ ),
173
+ excludeEmptyString: true,
174
+ });
143
175
 
144
176
  export const locationValidationSchema = (t: TFunction) =>
145
177
  Yup.string()
@@ -34,7 +34,9 @@ export const UILibRoutes = ({
34
34
  <>
35
35
  <Routes>
36
36
  <Route path="assisted-installer/clusters" element={<Outlet />}>
37
- <Route path="~new" element={<NewClusterPage />} />
37
+ <Route path="~new" element={<NewClusterPage />}>
38
+ <Route path=":clusterId" element={<NewClusterPage />} />
39
+ </Route>
38
40
  <Route path=":clusterId" element={<ClusterPage />} />
39
41
  <Route index element={<Clusters />} />
40
42
  </Route>
@@ -20,6 +20,7 @@ export const discoveryImageTypes: Record<DiscoveryImageType, string> = {
20
20
  'minimal-iso': 'Minimal image file - Download an ISO that fetches content on boot',
21
21
  'full-iso': 'Full image file - Download a self-contained ISO',
22
22
  'discovery-image-ipxe': 'iPXE - Provision from your network server',
23
+ 'disconnected-iso': 'Disconnected ISO - Provision from a local file',
23
24
  };
24
25
 
25
26
  type DiscoveryImageTypeDropdownProps = {
@@ -21,7 +21,6 @@ import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
21
21
  import { OcmRichInputField } from '../ui/OcmFormFields';
22
22
  import OcmOpenShiftVersion from './OcmOpenShiftVersion';
23
23
  import OcmOpenShiftVersionSelect from './OcmOpenShiftVersionSelect';
24
- import CustomManifestCheckbox from './CustomManifestCheckbox';
25
24
  import CpuArchitectureDropdown from './CpuArchitectureDropdown';
26
25
  import { OcmBaseDomainField } from './OcmBaseDomainField';
27
26
  import useSupportLevelsAPI from '../../hooks/useSupportLevelsAPI';
@@ -35,7 +34,6 @@ import {
35
34
  ManagedDomain,
36
35
  PlatformType,
37
36
  } from '@openshift-assisted/types/assisted-installer-service';
38
- import { useClusterWizardContext } from '../clusterWizard/ClusterWizardContext';
39
37
  import { useFeature } from '../../hooks/use-feature';
40
38
  import ControlPlaneNodesDropdown, {
41
39
  ControlPlaneNodesLabel,
@@ -68,7 +66,6 @@ export const OcmClusterDetailsFormFields = ({
68
66
  const { openshiftVersion, platform } = values;
69
67
  const { getCpuArchitectures } = useOpenShiftVersionsContext();
70
68
  const cpuArchitecturesByVersionImage = getCpuArchitectures(openshiftVersion);
71
- const clusterWizardContext = useClusterWizardContext();
72
69
  const featureSupportLevelData = useSupportLevelsAPI(
73
70
  'features',
74
71
  values.openshiftVersion,
@@ -91,12 +88,10 @@ export const OcmClusterDetailsFormFields = ({
91
88
  (selectedPlatform: PlatformType) => {
92
89
  const isOracleSelected = selectedPlatform === 'external';
93
90
  if (isOracleSelected) {
94
- setFieldValue('addCustomManifest', isOracleSelected, false);
95
- clusterWizardContext.setCustomManifestsStep(isOracleSelected);
96
91
  setFieldValue('hostsNetworkConfigurationType', HostsNetworkConfigurationType.DHCP);
97
92
  }
98
93
  },
99
- [clusterWizardContext, setFieldValue],
94
+ [setFieldValue],
100
95
  );
101
96
 
102
97
  React.useEffect(() => {
@@ -213,8 +208,6 @@ export const OcmClusterDetailsFormFields = ({
213
208
  ) : (
214
209
  <ControlPlaneNodesDropdown featureSupportLevelData={featureSupportLevelData} />
215
210
  )}
216
- <CustomManifestCheckbox clusterId={cluster?.id || ''} isDisabled={platform === 'external'} />
217
-
218
211
  {!isSingleClusterFeatureEnabled && (
219
212
  <HostsNetworkConfigurationControlGroup
220
213
  clusterExists={clusterExists}
@@ -16,7 +16,6 @@ import { Formik, FormikHelpers } from 'formik';
16
16
  import { TFunction } from 'i18next';
17
17
  import {
18
18
  HostStaticNetworkConfig,
19
- ImageType,
20
19
  InfraEnv,
21
20
  Proxy,
22
21
  } from '@openshift-assisted/types/assisted-installer-service';
@@ -72,7 +71,7 @@ type OcmDiscoveryImageConfigFormProps = Proxy & {
72
71
  formikActions: FormikHelpers<OcmDiscoveryImageFormValues>,
73
72
  ) => Promise<void>;
74
73
  sshPublicKey?: string;
75
- imageType?: ImageType;
74
+ imageType?: DiscoveryImageType;
76
75
  isIpxeSelected?: boolean;
77
76
  enableCertificate?: boolean;
78
77
  trustBundle?: InfraEnv['additionalTrustBundle'];
@@ -106,7 +105,7 @@ export const OcmDiscoveryImageConfigForm = ({
106
105
  httpsProxy: httpsProxy || '',
107
106
  noProxy: noProxy || '',
108
107
  enableProxy: !!(httpProxy || httpsProxy || noProxy),
109
- imageType: imageTypeValue as ImageType,
108
+ imageType: imageType,
110
109
  enableCertificate: enableCertificate || false,
111
110
  trustBundle: trustBundle || '',
112
111
  };
@@ -1,11 +1,9 @@
1
1
  import React from 'react';
2
- import { Button, ButtonVariant, List, ListItem, Popover } from '@patternfly/react-core';
2
+ import { Button, ButtonVariant, Icon, List, ListItem, Popover } from '@patternfly/react-core';
3
3
  import { CheckCircleIcon } from '@patternfly/react-icons/dist/js/icons/check-circle-icon';
4
4
  import { ExclamationCircleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';
5
5
  import { InProgressIcon } from '@patternfly/react-icons/dist/js/icons/in-progress-icon';
6
6
  import { PendingIcon } from '@patternfly/react-icons/dist/js/icons/pending-icon';
7
- import { t_global_icon_color_status_danger_default as dangerColor } from '@patternfly/react-tokens/dist/js/t_global_icon_color_status_danger_default';
8
- import { t_global_color_status_success_default as okColor } from '@patternfly/react-tokens/dist/js/t_global_color_status_success_default';
9
7
  import { pluralize } from 'humanize-plus';
10
8
  import { TFunction } from 'i18next';
11
9
 
@@ -60,9 +58,17 @@ export function getOperatorsLabel(operators: MonitoredOperatorsList, t: TFunctio
60
58
  export function getOperatorsIcon(status: OperatorStatus | 'pending') {
61
59
  switch (status) {
62
60
  case 'available':
63
- return <CheckCircleIcon color={okColor.value} />;
61
+ return (
62
+ <Icon status="success">
63
+ <CheckCircleIcon />
64
+ </Icon>
65
+ );
64
66
  case 'failed':
65
- return <ExclamationCircleIcon color={dangerColor.value} />;
67
+ return (
68
+ <Icon status="danger">
69
+ <ExclamationCircleIcon />
70
+ </Icon>
71
+ );
66
72
  case 'progressing':
67
73
  return <InProgressIcon />;
68
74
  default:
@@ -1,9 +1,6 @@
1
1
  import * as React from 'react';
2
- import {
3
- OPENSHIFT_LIFE_CYCLE_DATES_LINK,
4
- OpenshiftVersionOptionType,
5
- UiIcon,
6
- } from '../../../common';
2
+ import { Icon } from '@patternfly/react-core';
3
+ import { OPENSHIFT_LIFE_CYCLE_DATES_LINK, OpenshiftVersionOptionType } from '../../../common';
7
4
  import { TFunction } from 'i18next';
8
5
  import { ExclamationCircleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';
9
6
  import { ExclamationTriangleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon';
@@ -29,7 +26,9 @@ export const getOpenshiftVersionHelperText = (
29
26
  if (!versions.length && !isModal) {
30
27
  return (
31
28
  <>
32
- <UiIcon status="danger" size="sm" icon={<ExclamationCircleIcon />} />
29
+ <Icon status="danger" size="sm">
30
+ <ExclamationCircleIcon />
31
+ </Icon>
33
32
  &nbsp; {t('ai:No release image is available.')}
34
33
  </>
35
34
  );
@@ -50,7 +49,9 @@ export const getOpenshiftVersionHelperText = (
50
49
  }
51
50
  return (
52
51
  <>
53
- <UiIcon status="warning" icon={<ExclamationTriangleIcon />} />
52
+ <Icon status="warning">
53
+ <ExclamationTriangleIcon />
54
+ </Icon>
54
55
  &nbsp;
55
56
  {messageSelectedVersion}&nbsp;
56
57
  <OpenShiftLifeCycleDatesLink />
@@ -1,10 +1,25 @@
1
1
  import React from 'react';
2
- import { Content, ContentVariants, Alert, Grid } from '@patternfly/react-core';
2
+ import {
3
+ Content,
4
+ ContentVariants,
5
+ Alert,
6
+ AlertVariant,
7
+ Grid,
8
+ FormGroup,
9
+ Switch,
10
+ Tooltip,
11
+ Stack,
12
+ StackItem,
13
+ } from '@patternfly/react-core';
3
14
 
4
15
  import { CustomManifests } from './components/CustomManifests';
5
16
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
6
17
  import { CustomManifestFormState } from './components/propTypes';
7
- import { ClusterWizardStepHeader } from '../../../../common';
18
+ import { ClustersAPI, ClusterWizardStepHeader } from '../../../../common';
19
+ import { isOciPlatformType, isThirdPartyCNI } from '../../utils';
20
+ import DeleteCustomManifestModal from './DeleteCustomManifestModal';
21
+ import { ClustersService } from '../../../services';
22
+ import { useClusterWizardContext } from '../../clusterWizard/ClusterWizardContext';
8
23
 
9
24
  export const CustomManifestsPage = ({
10
25
  cluster,
@@ -12,22 +27,142 @@ export const CustomManifestsPage = ({
12
27
  }: {
13
28
  cluster: Cluster;
14
29
  onFormStateChange(formState: CustomManifestFormState): void;
15
- }) => (
16
- <Grid hasGutter>
17
- <Content>
18
- <ClusterWizardStepHeader>Custom manifests</ClusterWizardStepHeader>
19
- <Content component={ContentVariants.small}>
20
- Upload additional manifests that will be applied at the install time for advanced
21
- configuration of the cluster.
22
- </Content>
23
- </Content>
24
- <Alert
25
- isInline
26
- variant="warning"
27
- title={
28
- 'No validation is performed for the custom manifest contents. Only include resources that are necessary for initial setup to reduce the chance of installation failures.'
30
+ }) => {
31
+ const clusterWizardContext = useClusterWizardContext();
32
+ const isRequired = isThirdPartyCNI(cluster.networkType) || isOciPlatformType(cluster);
33
+ const [useCustomManifests, setUseCustomManifests] = React.useState(isRequired);
34
+ const [isDeleteModalOpen, setDeleteModalOpen] = React.useState(false);
35
+
36
+ React.useEffect(() => {
37
+ if (isRequired || clusterWizardContext.uiSettings?.customManifestsAdded) {
38
+ setUseCustomManifests(true);
39
+ }
40
+ }, [isRequired, clusterWizardContext]);
41
+
42
+ // The form unmounts when the switch is off, but its last state persists in the parent.
43
+ React.useEffect(() => {
44
+ if (!useCustomManifests) {
45
+ onFormStateChange({
46
+ isValid: true,
47
+ isSubmitting: false,
48
+ isAutoSaveRunning: false,
49
+ errors: {},
50
+ touched: {},
51
+ isEmpty: true,
52
+ });
53
+ }
54
+ }, [useCustomManifests, onFormStateChange]);
55
+
56
+ const handleSwitchChange = React.useCallback(
57
+ (_event: React.FormEvent<HTMLInputElement>, on: boolean) => {
58
+ if (!on && clusterWizardContext.uiSettings?.customManifestsAdded) {
59
+ setDeleteModalOpen(true);
60
+ } else {
61
+ setUseCustomManifests(on);
62
+ if (!on) {
63
+ void clusterWizardContext.updateUISettings({ customManifestsAdded: false });
64
+ }
29
65
  }
30
- />
31
- <CustomManifests cluster={cluster} onFormStateChange={onFormStateChange} />
32
- </Grid>
33
- );
66
+ },
67
+ [clusterWizardContext],
68
+ );
69
+
70
+ const handleCloseDeleteModal = React.useCallback(() => {
71
+ setDeleteModalOpen(false);
72
+ }, []);
73
+
74
+ const cleanCustomManifests = React.useCallback(async () => {
75
+ if (!clusterWizardContext.uiSettings?.customManifestsAdded || !cluster.id) return;
76
+ const { data: manifests } = await ClustersAPI.getManifests(cluster.id);
77
+ await ClustersService.removeClusterManifests(manifests, cluster.id);
78
+ setUseCustomManifests(false);
79
+ setDeleteModalOpen(false);
80
+ await clusterWizardContext.updateUISettings({ customManifestsAdded: false });
81
+ }, [cluster.id, clusterWizardContext]);
82
+
83
+ const tooltipWhenDisabled = isRequired
84
+ ? 'Custom manifests are required when using a third-party CNI or Oracle Cloud Infrastructure.'
85
+ : '';
86
+
87
+ const showExternalPlatformReminder = isOciPlatformType(cluster);
88
+ const showThirdPartyCnIReminder = isThirdPartyCNI(cluster.networkType);
89
+ const showCombinedReminder = showExternalPlatformReminder && showThirdPartyCnIReminder;
90
+ let reminderAlerts: React.ReactNode = null;
91
+ if (showCombinedReminder) {
92
+ reminderAlerts = (
93
+ <Stack>
94
+ <StackItem>
95
+ <Alert
96
+ variant={AlertVariant.info}
97
+ isInline
98
+ title="You're using an external platform and a third-party CNI"
99
+ >
100
+ Make sure to upload the required custom and CNI manifests in this step.
101
+ </Alert>
102
+ </StackItem>
103
+ </Stack>
104
+ );
105
+ } else if (showExternalPlatformReminder) {
106
+ reminderAlerts = (
107
+ <Stack>
108
+ <StackItem>
109
+ <Alert variant={AlertVariant.info} isInline title="You're using an external platform">
110
+ Make sure to upload the required custom manifests in this step.
111
+ </Alert>
112
+ </StackItem>
113
+ </Stack>
114
+ );
115
+ } else if (showThirdPartyCnIReminder) {
116
+ reminderAlerts = (
117
+ <Stack>
118
+ <StackItem>
119
+ <Alert variant={AlertVariant.info} isInline title="You're using a third-party CNI">
120
+ Make sure to upload the required CNI manifests in this step.
121
+ </Alert>
122
+ </StackItem>
123
+ </Stack>
124
+ );
125
+ }
126
+
127
+ return (
128
+ <Grid hasGutter>
129
+ <Content>
130
+ <ClusterWizardStepHeader>Custom manifests</ClusterWizardStepHeader>
131
+ <Content component={ContentVariants.small}>
132
+ Upload additional manifests that will be applied at the install time for advanced
133
+ configuration of the cluster.
134
+ </Content>
135
+ </Content>
136
+ <FormGroup fieldId="use-custom-manifests" label="">
137
+ <Tooltip content={tooltipWhenDisabled} hidden={!isRequired}>
138
+ <span style={{ display: 'inline-block', cursor: isRequired ? 'not-allowed' : undefined }}>
139
+ <Switch
140
+ id="use-custom-manifests"
141
+ isChecked={useCustomManifests}
142
+ isDisabled={isRequired}
143
+ onChange={handleSwitchChange}
144
+ label="Use custom manifests"
145
+ />
146
+ </span>
147
+ </Tooltip>
148
+ </FormGroup>
149
+ {!useCustomManifests && <div style={{ minHeight: '120px' }} aria-hidden="true" />}
150
+ {useCustomManifests && (
151
+ <>
152
+ {reminderAlerts}
153
+ <Alert
154
+ isInline
155
+ variant="warning"
156
+ title="No validation is performed for the custom manifest contents. Only include resources that are necessary for initial setup to reduce the chance of installation failures."
157
+ />
158
+ <CustomManifests cluster={cluster} onFormStateChange={onFormStateChange} />
159
+ </>
160
+ )}
161
+ <DeleteCustomManifestModal
162
+ isOpen={isDeleteModalOpen}
163
+ onClose={handleCloseDeleteModal}
164
+ onDelete={() => void cleanCustomManifests()}
165
+ />
166
+ </Grid>
167
+ );
168
+ };
@@ -23,9 +23,9 @@ import {
23
23
  VirtualIPControlGroupProps,
24
24
  AdvancedNetworkFields,
25
25
  } from '../../../../common/components/clusterWizard/networkingSteps';
26
+ import { NetworkTypeDropDown } from './NetworkTypeDropdown';
26
27
  import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
27
28
  import { OcmCheckbox } from '../../ui/OcmFormFields';
28
- import { NetworkTypeControlGroup } from '../../../../common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup';
29
29
  import {
30
30
  NewFeatureSupportLevelData,
31
31
  NewFeatureSupportLevelMap,
@@ -259,11 +259,13 @@ const NetworkConfiguration = ({
259
259
  />
260
260
  </StackItem>
261
261
  )}
262
- {isSDNSupported && (
263
- <StackItem>
264
- <NetworkTypeControlGroup isDisabled={isViewerMode} isSDNSelectable={isSDNSelectable} />
265
- </StackItem>
266
- )}
262
+ <StackItem>
263
+ <NetworkTypeDropDown
264
+ isDisabled={isViewerMode}
265
+ isSDNSelectable={isSDNSelectable}
266
+ featureSupportLevelData={featureSupportLevelData}
267
+ />
268
+ </StackItem>
267
269
 
268
270
  {!(isUserManagedNetworking && !isSNOCluster) && (
269
271
  <StackItem>