@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
@@ -0,0 +1,157 @@
1
+ import React from 'react';
2
+ import { useField, useFormikContext } from 'formik';
3
+ import {
4
+ Alert,
5
+ AlertVariant,
6
+ Dropdown,
7
+ DropdownItem,
8
+ FormGroup,
9
+ MenuToggle,
10
+ MenuToggleElement,
11
+ Stack,
12
+ StackItem,
13
+ Tooltip,
14
+ } from '@patternfly/react-core';
15
+ import {
16
+ NETWORK_TYPE_CALICO,
17
+ NETWORK_TYPE_CILIUM,
18
+ NETWORK_TYPE_CISCO_ACI,
19
+ NETWORK_TYPE_LABELS,
20
+ NETWORK_TYPE_NONE,
21
+ NETWORK_TYPE_OVN,
22
+ NETWORK_TYPE_SDN,
23
+ } from '../../../../common/config';
24
+ import { getFieldId, ExternalLink } from '../../../../common/components/ui';
25
+ import {
26
+ NewFeatureSupportLevelMap,
27
+ useNewFeatureSupportLevel,
28
+ } from '../../../../common/components/newFeatureSupportLevels';
29
+ import { TechnologyPreview } from '../../../../common/components/ui/TechnologyPreview';
30
+ import type { NetworkConfigurationValues } from '../../../../common/types/clusters';
31
+ import { isThirdPartyCNI } from '../../utils';
32
+ import { RED_HAT_CNI_SUPPORT_MATRIX_LINK } from '../../../../common/config/docs_links';
33
+
34
+ export interface NetworkTypeDropDownProps {
35
+ isDisabled?: boolean;
36
+ isSDNSelectable: boolean;
37
+ featureSupportLevelData: NewFeatureSupportLevelMap | null;
38
+ }
39
+
40
+ export const NetworkTypeDropDown = ({
41
+ isDisabled = false,
42
+ isSDNSelectable,
43
+ featureSupportLevelData,
44
+ }: NetworkTypeDropDownProps) => {
45
+ const [field, , { setValue }] = useField<string>('networkType');
46
+ const [isOpen, setOpen] = React.useState(false);
47
+ const { values } = useFormikContext<NetworkConfigurationValues>();
48
+ const { getFeatureDisabledReason } = useNewFeatureSupportLevel();
49
+ const fieldId = getFieldId('networkType', 'input');
50
+ const showThirdPartyBanner = isThirdPartyCNI(values.networkType);
51
+
52
+ const sdnDisabledReason = React.useMemo(() => {
53
+ if (!isSDNSelectable) {
54
+ return 'SDN is not supported for SNO clusters or when IPv6 is detected.';
55
+ }
56
+ return getFeatureDisabledReason('SDN_NETWORK_TYPE', featureSupportLevelData ?? undefined);
57
+ }, [isSDNSelectable, featureSupportLevelData, getFeatureDisabledReason]);
58
+
59
+ React.useEffect(() => {
60
+ if (field.value === NETWORK_TYPE_SDN && sdnDisabledReason) {
61
+ setValue(NETWORK_TYPE_OVN);
62
+ }
63
+ }, [sdnDisabledReason, field.value, setValue]);
64
+
65
+ const currentDisplayValue = NETWORK_TYPE_LABELS[field.value];
66
+
67
+ const dropdownItems = Object.entries(NETWORK_TYPE_LABELS).map(([value, label]) => {
68
+ const isSDN = value === NETWORK_TYPE_SDN;
69
+ const disabledReason = isSDN ? sdnDisabledReason : undefined;
70
+ const isTechPreview = [
71
+ NETWORK_TYPE_CISCO_ACI,
72
+ NETWORK_TYPE_CILIUM,
73
+ NETWORK_TYPE_CALICO,
74
+ NETWORK_TYPE_NONE,
75
+ ].includes(value);
76
+ return (
77
+ <DropdownItem
78
+ key={value}
79
+ id={value}
80
+ value={value}
81
+ isAriaDisabled={disabledReason !== undefined}
82
+ >
83
+ <Tooltip hidden={!disabledReason} content={disabledReason} position="top">
84
+ <div>
85
+ {label}
86
+ {isTechPreview && (
87
+ <span onClick={(event) => event.stopPropagation()}>
88
+ <TechnologyPreview testId={`${value}-support-level`} />
89
+ </span>
90
+ )}
91
+ </div>
92
+ </Tooltip>
93
+ </DropdownItem>
94
+ );
95
+ });
96
+
97
+ const onSelect = (event?: React.MouseEvent<Element, MouseEvent>, nextValue?: string): void => {
98
+ if (nextValue) {
99
+ setValue(nextValue);
100
+ }
101
+ setOpen(false);
102
+ };
103
+
104
+ const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
105
+ <MenuToggle
106
+ ref={toggleRef}
107
+ onClick={() => setOpen(!isOpen)}
108
+ isExpanded={isOpen}
109
+ isDisabled={isDisabled}
110
+ id={fieldId}
111
+ className="pf-v6-u-w-100"
112
+ style={{ minWidth: '100%' }}
113
+ >
114
+ {currentDisplayValue}
115
+ </MenuToggle>
116
+ );
117
+
118
+ return (
119
+ <Stack hasGutter>
120
+ <StackItem>
121
+ <FormGroup fieldId={fieldId} label="Network type" id={`form-control__${fieldId}`}>
122
+ <Dropdown
123
+ id={`${fieldId}-dropdown`}
124
+ onOpenChange={(open: boolean) => setOpen(open)}
125
+ onSelect={onSelect}
126
+ toggle={toggle}
127
+ isOpen={isOpen}
128
+ >
129
+ {dropdownItems}
130
+ </Dropdown>
131
+ </FormGroup>
132
+ </StackItem>
133
+ {showThirdPartyBanner && (
134
+ <StackItem>
135
+ <Alert
136
+ variant={AlertVariant.warning}
137
+ isInline
138
+ title="Third-party CNI (Technology Preview)"
139
+ >
140
+ <Stack hasGutter>
141
+ <StackItem>
142
+ Third-party CNIs require uploading CNI manifests. Please verify you have the
143
+ required manifests and that the chosen CNI is compatible with your platform and
144
+ OpenShift version.
145
+ </StackItem>
146
+ <StackItem>
147
+ <ExternalLink href={RED_HAT_CNI_SUPPORT_MATRIX_LINK}>
148
+ Red Hat CNI Support Matrix
149
+ </ExternalLink>
150
+ </StackItem>
151
+ </Stack>
152
+ </Alert>
153
+ </StackItem>
154
+ )}
155
+ </Stack>
156
+ );
157
+ };
@@ -1,14 +1,17 @@
1
1
  import React from 'react';
2
+ import { Icon } from '@patternfly/react-core';
2
3
  import { ExclamationTriangleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon';
3
- import { UiIcon, SupportedPlatformType } from '../../../../common';
4
+ import { SupportedPlatformType } from '../../../../common';
4
5
  import { ExternalPlatformLinks } from './constants';
5
6
 
6
7
  const PlatformIntegrationNote = ({ platformType }: { platformType: SupportedPlatformType }) => {
7
8
  const integrationPlatformLink = ExternalPlatformLinks[platformType];
8
9
  return (
9
10
  <p>
10
- <UiIcon status="warning" icon={<ExclamationTriangleIcon />} /> You will need to modify your
11
- platform configuration after cluster installation is completed.{' '}
11
+ <Icon status="warning">
12
+ <ExclamationTriangleIcon />
13
+ </Icon>{' '}
14
+ You will need to modify your platform configuration after cluster installation is completed.{' '}
12
15
  {!!integrationPlatformLink && (
13
16
  <a
14
17
  href={integrationPlatformLink || ''}
@@ -1,12 +1,8 @@
1
1
  import { Title } from '@patternfly/react-core';
2
2
  import { Table, TableVariant, Tbody, Td, Tr } from '@patternfly/react-table';
3
3
  import React from 'react';
4
- import { genericTableRowKey, isDualStack } from '../../../../common';
5
- import {
6
- getManagementType,
7
- getStackTypeLabel,
8
- getNetworkType,
9
- } from '../../clusterDetail/ClusterProperties';
4
+ import { genericTableRowKey, isDualStack, NETWORK_TYPE_LABELS } from '../../../../common';
5
+ import { getManagementType, getStackTypeLabel } from '../../clusterDetail/ClusterProperties';
10
6
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
11
7
 
12
8
  type ReviewTableRowsType = {
@@ -201,7 +197,7 @@ export const ReviewNetworkingTable = ({ cluster }: { cluster: Cluster }) => {
201
197
  cells: [
202
198
  { title: 'Networking type' },
203
199
  {
204
- title: getNetworkType(cluster.networkType),
200
+ title: cluster.networkType ? NETWORK_TYPE_LABELS[cluster.networkType] : '-',
205
201
  props: { 'data-testid': 'networking-type', colSpan: 2 },
206
202
  },
207
203
  ],
@@ -6,20 +6,13 @@ import {
6
6
  Grid,
7
7
  GridItem,
8
8
  gridSpans,
9
+ Icon,
9
10
  } from '@patternfly/react-core';
10
11
  import { CheckCircleIcon } from '@patternfly/react-icons/dist/js/icons/check-circle-icon';
11
12
  import { ExclamationCircleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';
12
13
  import { ExclamationTriangleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon';
13
14
  import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
14
- import { t_global_color_status_success_default as okColor } from '@patternfly/react-tokens/dist/js/t_global_color_status_success_default';
15
- import { t_global_color_status_info_100 as infoColor } from '@patternfly/react-tokens/dist/js/t_global_color_status_info_100';
16
- import {
17
- ClusterValidations,
18
- DetailItem,
19
- DetailList,
20
- HostsValidations,
21
- UiIcon,
22
- } from '../../../../common';
15
+ import { ClusterValidations, DetailItem, DetailList, HostsValidations } from '../../../../common';
23
16
  import { useClusterWizardContext } from '../../clusterWizard/ClusterWizardContext';
24
17
  import { useOpenShiftVersionsContext } from '../../clusterWizard/OpenShiftVersionsContext';
25
18
  import { wizardStepNames } from '../../clusterWizard/constants';
@@ -102,13 +95,29 @@ const PreflightCheckInfo = ({
102
95
 
103
96
  const getCheckIcon = (validationStatuses: string[]) => {
104
97
  if (validationStatuses.includes('failure') || validationStatuses.includes('error')) {
105
- return <UiIcon size="sm" status="danger" icon={<ExclamationCircleIcon />} />;
98
+ return (
99
+ <Icon size="sm" status="danger">
100
+ <ExclamationCircleIcon />
101
+ </Icon>
102
+ );
106
103
  } else if (validationStatuses.includes('warning')) {
107
- return <UiIcon size="sm" status="warning" icon={<ExclamationTriangleIcon />} />;
104
+ return (
105
+ <Icon size="sm" status="warning">
106
+ <ExclamationTriangleIcon />
107
+ </Icon>
108
+ );
108
109
  } else if (validationStatuses.includes('pending')) {
109
- return <UiIcon size="sm" status="info" icon={<InfoCircleIcon />} />;
110
+ return (
111
+ <Icon size="sm" status="info">
112
+ <InfoCircleIcon />
113
+ </Icon>
114
+ );
110
115
  }
111
- return <UiIcon size="sm" icon={<CheckCircleIcon color={okColor.value} />} />;
116
+ return (
117
+ <Icon status="success" size="sm">
118
+ <CheckCircleIcon />
119
+ </Icon>
120
+ );
112
121
  };
113
122
 
114
123
  const PreflightChecksDetailCollapsed = ({ cluster }: { cluster: Cluster }) => {
@@ -122,9 +131,13 @@ const PreflightChecksDetailCollapsed = ({ cluster }: { cluster: Cluster }) => {
122
131
  );
123
132
 
124
133
  const supportLevelIcon = isFullySupported ? (
125
- <UiIcon size="sm" icon={<CheckCircleIcon color={okColor.value} />} />
134
+ <Icon status="success" size="sm">
135
+ <CheckCircleIcon />
136
+ </Icon>
126
137
  ) : (
127
- <UiIcon size="sm" icon={<InfoCircleIcon color={infoColor.value} />} />
138
+ <Icon status="info" size="sm">
139
+ <InfoCircleIcon />
140
+ </Icon>
128
141
  );
129
142
 
130
143
  const clusterValidations = React.useMemo(
@@ -92,11 +92,17 @@ export const getIpAddressValidationSchema = (protocolVersion: ProtocolVersion) =
92
92
  const protocolVersionLabel = protocolVersion === ProtocolVersion.ipv4 ? 'IPv4' : 'IPv6';
93
93
  return Yup.string().test(
94
94
  protocolVersion,
95
- `Value \${value} is not a valid ${protocolVersionLabel} address`,
95
+ (params: { value?: unknown }) =>
96
+ `Value "${
97
+ params?.value !== undefined ? String(params.value) : ''
98
+ }" is not a valid ${protocolVersionLabel} address`,
96
99
  (value?: string) => {
97
- if (!value) {
100
+ if (value === undefined || value === '') {
98
101
  return true;
99
102
  }
103
+ if (typeof value !== 'string') {
104
+ return false;
105
+ }
100
106
  return isValidAddress(value, protocolVersion);
101
107
  },
102
108
  );
@@ -96,6 +96,7 @@ const getExpandedHostComponent = (protocolType: StaticProtocolType) => {
96
96
  label={`IP address (${getProtocolVersionLabel(protocolVersion)})`}
97
97
  fieldId={getFieldId(`${fieldName}.ips.${protocolVersion}`, 'input')}
98
98
  key={protocolVersion}
99
+ isRequired
99
100
  >
100
101
  <OcmInputField
101
102
  name={`${fieldName}.ips.${protocolVersion}`}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { StaticIpForm } from '../StaticIpForm';
3
3
  import { StaticIpFormProps, StaticIpViewProps } from '../propTypes';
4
4
  import { FormViewHost, FormViewNetworkWideValues } from '../../data/dataTypes';
5
- import { networkWideValidationSchema } from './formViewNetworkWideValidationSchema';
5
+ import { getNetworkWideValidationSchema } from './formViewNetworkWideValidationSchema';
6
6
  import { networkWideToInfraEnvField } from '../../data/formDataToInfraEnvField';
7
7
  import { FormViewNetworkWideFields } from './FormViewNetworkWideFields';
8
8
  import { getFormData, getFormViewNetworkWideValues } from '../../data/fromInfraEnv';
@@ -22,7 +22,7 @@ export const FormViewNetworkWide: React.FC<StaticIpViewProps> = ({ infraEnv, ...
22
22
  setFormProps({
23
23
  infraEnv,
24
24
  ...props,
25
- validationSchema: networkWideValidationSchema,
25
+ validationSchema: getNetworkWideValidationSchema(infraEnv.rendezvousIp),
26
26
  getInitialValues: (infraEnv: InfraEnv) => {
27
27
  return getFormViewNetworkWideValues(infraEnv);
28
28
  },
@@ -95,32 +95,71 @@ const getAddressDataValidationSchema = (protocolVersion: ProtocolVersion, ipConf
95
95
  });
96
96
  };
97
97
 
98
- export const networkWideValidationSchema = Yup.lazy((values: FormViewNetworkWideValues) => {
99
- const ipConfigsValidationSchemas = Yup.object({
100
- ipv4: getAddressDataValidationSchema(ProtocolVersion.ipv4, values.ipConfigs.ipv4),
101
- ipv6: showProtocolVersion(values.protocolType, ProtocolVersion.ipv6)
102
- ? getAddressDataValidationSchema(ProtocolVersion.ipv6, values.ipConfigs.ipv6)
103
- : Yup.object<IpConfig>(),
104
- });
98
+ /**
99
+ * Validates that Rendezvous IP (when set) is within the IPv4 subnet.
100
+ * Default gateway is already validated by getAddressDataValidationSchema (getInMachineNetworkValidationSchema).
101
+ */
102
+ const getRendezvousIpCoherenceTest = (rendezvousIp: string | undefined) => {
103
+ return Yup.object().test(
104
+ 'rendezvous-ip-in-subnet',
105
+ 'Rendezvous IP must be within the IPv4 subnet.',
106
+ (value: unknown, context: Yup.TestContext) => {
107
+ const values = value as FormViewNetworkWideValues | undefined;
108
+ const machineNetwork = values?.ipConfigs?.ipv4?.machineNetwork;
109
+ if (
110
+ !rendezvousIp?.trim() ||
111
+ !machineNetwork?.ip?.trim() ||
112
+ machineNetwork.prefixLength === '' ||
113
+ typeof machineNetwork.prefixLength !== 'number'
114
+ ) {
115
+ return true;
116
+ }
117
+ const inSubnetSchema = getInMachineNetworkValidationSchema(
118
+ ProtocolVersion.ipv4,
119
+ machineNetwork,
120
+ );
121
+ if (!inSubnetSchema.isValidSync(rendezvousIp)) {
122
+ return context.createError({
123
+ path: 'ipConfigs.ipv4.machineNetwork.ip',
124
+ message: 'Rendezvous IP must be within the IPv4 subnet.',
125
+ });
126
+ }
127
+ return true;
128
+ },
129
+ );
130
+ };
105
131
 
106
- return Yup.object({
107
- useVlan: Yup.boolean(),
108
- vlanId: Yup.mixed().when('useVlan', {
109
- is: (useVlan: boolean) => useVlan,
110
- then: () =>
111
- Yup.number()
112
- .required(MUST_BE_A_NUMBER)
113
- .min(1, `Must be more than or equal to 1`)
114
- .max(MAX_VLAN_ID, `Must be less than or equal to ${MAX_VLAN_ID}`)
115
- .test('not-number', MUST_BE_A_NUMBER, () => validateNumber(values.vlanId))
116
- .nullable()
117
- .transform(transformNumber) as Yup.NumberSchema,
118
- }),
119
- protocolType: Yup.string(),
120
- dns: getDNSValidationSchema(values.protocolType),
121
- ipConfigs: ipConfigsValidationSchemas,
132
+ export const getNetworkWideValidationSchema = (rendezvousIp?: string) =>
133
+ Yup.lazy((values: FormViewNetworkWideValues) => {
134
+ const ipConfigsValidationSchemas = Yup.object({
135
+ ipv4: getAddressDataValidationSchema(ProtocolVersion.ipv4, values.ipConfigs.ipv4),
136
+ ipv6: showProtocolVersion(values.protocolType, ProtocolVersion.ipv6)
137
+ ? getAddressDataValidationSchema(ProtocolVersion.ipv6, values.ipConfigs.ipv6)
138
+ : Yup.object<IpConfig>(),
139
+ });
140
+
141
+ const baseSchema = Yup.object({
142
+ useVlan: Yup.boolean(),
143
+ vlanId: Yup.mixed().when('useVlan', {
144
+ is: (useVlan: boolean) => useVlan,
145
+ then: () =>
146
+ Yup.number()
147
+ .required(MUST_BE_A_NUMBER)
148
+ .min(1, `Must be more than or equal to 1`)
149
+ .max(MAX_VLAN_ID, `Must be less than or equal to ${MAX_VLAN_ID}`)
150
+ .test('not-number', MUST_BE_A_NUMBER, () => validateNumber(values.vlanId))
151
+ .nullable()
152
+ .transform(transformNumber) as Yup.NumberSchema,
153
+ }),
154
+ protocolType: Yup.string(),
155
+ dns: getDNSValidationSchema(values.protocolType),
156
+ ipConfigs: ipConfigsValidationSchemas,
157
+ });
158
+
159
+ return baseSchema.concat(getRendezvousIpCoherenceTest(rendezvousIp));
122
160
  });
123
- });
161
+
162
+ export const networkWideValidationSchema = getNetworkWideValidationSchema();
124
163
 
125
164
  export const validateNumber = (vlanId: FormViewNetworkWideValues['vlanId']) => {
126
165
  //We need to validate that value is a number(without letters) and is not an exponential number (ex: 1e2)
@@ -5,7 +5,7 @@ import {
5
5
  DetailList,
6
6
  getDefaultCpuArchitecture,
7
7
  isDualStack,
8
- NETWORK_TYPE_SDN,
8
+ NETWORK_TYPE_LABELS,
9
9
  selectApiVip,
10
10
  selectIngressVip,
11
11
  selectIpv4Cidr,
@@ -25,11 +25,7 @@ type ClusterPropertiesProps = {
25
25
  };
26
26
 
27
27
  export const getNetworkType = (clusterNetworkType: Cluster['networkType']): string => {
28
- let networkType: string;
29
- clusterNetworkType === NETWORK_TYPE_SDN
30
- ? (networkType = 'Software-Defined Networking (SDN)')
31
- : (networkType = 'Open Virtual Network (OVN)');
32
- return networkType;
28
+ return NETWORK_TYPE_LABELS[clusterNetworkType || ''];
33
29
  };
34
30
 
35
31
  export const getManagementType = ({ userManagedNetworking }: Cluster): string => {
@@ -1,12 +1,14 @@
1
1
  import React, { useState } from 'react';
2
- import { UiIcon, hostStatus } from '../../../common';
2
+ import { ExpandableSection, Icon } from '@patternfly/react-core';
3
+ import ExclamationTriangleIcon from '@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon';
4
+
5
+ import { hostStatus } from '../../../common';
3
6
  import ClusterHostsTable from '../hosts/ClusterHostsTable';
4
7
  import { getHostsWithTimeout, getMostSevereHostStatus } from './utils';
5
- import { ExpandableSection } from '@patternfly/react-core';
6
- import './HostInventoryExpandable.css';
7
8
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
8
9
  import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
9
- import ExclamationTriangleIcon from '@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon';
10
+
11
+ import './HostInventoryExpandable.css';
10
12
 
11
13
  type HostInventoryExpandableProps = {
12
14
  cluster: Cluster;
@@ -33,7 +35,11 @@ const HostInventoryExpandable = ({ cluster }: HostInventoryExpandableProps) => {
33
35
  const mostSevereHostStatus = getMostSevereHostStatus(hosts);
34
36
  const hostStatusDef = mostSevereHostStatus ? hostStatus(t)[mostSevereHostStatus] : null;
35
37
  const someHostHasTimeout = getHostsWithTimeout(hosts);
36
- const warningIcon = <UiIcon size="sm" status="warning" icon={<ExclamationTriangleIcon />} />;
38
+ const warningIcon = (
39
+ <Icon size="sm" status="warning">
40
+ <ExclamationTriangleIcon />
41
+ </Icon>
42
+ );
37
43
  return (
38
44
  <ExpandableSection
39
45
  toggleContent={
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
- import { UiIcon, getOpenshiftVersionText } from '../../../common';
3
- import { useOpenShiftVersionsContext } from '../clusterWizard/OpenShiftVersionsContext';
2
+ import { Popover, Content, ContentVariants, Icon } from '@patternfly/react-core';
4
3
  import { ExclamationTriangleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon';
5
- import { Popover, Content, ContentVariants } from '@patternfly/react-core';
6
- import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
4
+
7
5
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
6
+ import { getOpenshiftVersionText } from '../../../common';
7
+ import { useOpenShiftVersionsContext } from '../clusterWizard/OpenShiftVersionsContext';
8
+ import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
8
9
 
9
10
  const UnsupportedVersion = ({ version }: { version: string }) => {
10
11
  const { t } = useTranslation();
@@ -18,7 +19,9 @@ const UnsupportedVersion = ({ version }: { version: string }) => {
18
19
  <Content component="p">
19
20
  {version} &nbsp;
20
21
  <Popover bodyContent={hint}>
21
- <UiIcon size="sm" status="warning" icon={<ExclamationTriangleIcon />} />
22
+ <Icon size="sm" status="warning">
23
+ <ExclamationTriangleIcon />
24
+ </Icon>
22
25
  </Popover>
23
26
  </Content>
24
27
  );
@@ -4,6 +4,7 @@ import {
4
4
  Button,
5
5
  ButtonVariant,
6
6
  Content,
7
+ Icon,
7
8
  Modal,
8
9
  ModalBody,
9
10
  ModalFooter,
@@ -16,7 +17,7 @@ import { getApiErrorMessage, handleApiError } from '../../../common/api';
16
17
  import { updateCluster } from '../../store/slices/current-cluster/slice';
17
18
  import { calculateCollectedLogsCount } from '../clusters/utils';
18
19
  import { useModalDialogsContext } from '../hosts/ModalDialogsContext';
19
- import { ErrorState, LoadingState, UiIcon } from '../../../common';
20
+ import { ErrorState, LoadingState } from '../../../common';
20
21
  import { ClustersAPI } from '../../services/apis';
21
22
 
22
23
  const ResetClusterModal: React.FC = () => {
@@ -87,8 +88,10 @@ const ResetClusterModal: React.FC = () => {
87
88
  </Content>
88
89
 
89
90
  <Content component="p">
90
- <UiIcon size="sm" status="warning" icon={<ExclamationTriangleIcon />} /> Logs won't be
91
- available after the installation is reset.
91
+ <Icon size="sm" status="warning">
92
+ <ExclamationTriangleIcon />
93
+ </Icon>{' '}
94
+ Logs won't be available after the installation is reset.
92
95
  </Content>
93
96
 
94
97
  <Content component="p">Are you sure you want to reset the cluster?</Content>
@@ -39,7 +39,6 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
39
39
  const navigate = useNavigate();
40
40
  const dispatch = useDispatch();
41
41
  const { usedClusterNames } = useUsedClusterNames(cluster?.id || '');
42
- const pullSecret = usePullSecret();
43
42
  const {
44
43
  error: errorOCPVersions,
45
44
  loading: loadingOCPVersions,
@@ -47,13 +46,11 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
47
46
  } = useOpenShiftVersionsContext();
48
47
  const location = useLocation();
49
48
  const isSingleClusterFeatureEnabled = useFeature('ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE');
49
+ const defaultPullSecret = usePullSecret();
50
+ const pullSecret = isSingleClusterFeatureEnabled ? infraEnv?.pullSecret || '' : defaultPullSecret;
50
51
 
51
52
  const handleClusterUpdate = React.useCallback(
52
- async (
53
- clusterId: Cluster['id'],
54
- params: ClusterDetailsUpdateParams,
55
- addCustomManifests: boolean,
56
- ) => {
53
+ async (clusterId: Cluster['id'], params: ClusterDetailsUpdateParams) => {
57
54
  clearAlerts();
58
55
 
59
56
  try {
@@ -62,7 +59,6 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
62
59
  cluster?.tags,
63
60
  params,
64
61
  );
65
- await clusterWizardContext.updateUISettings({ addCustomManifests });
66
62
  dispatch(updateCluster(updatedCluster));
67
63
 
68
64
  canNextClusterDetails({ cluster: updatedCluster }) && clusterWizardContext.moveNext();
@@ -79,7 +75,7 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
79
75
  );
80
76
 
81
77
  const handleClusterCreate = React.useCallback(
82
- async (params: ClusterCreateParamsWithStaticNetworking, addCustomManifests: boolean) => {
78
+ async (params: ClusterCreateParamsWithStaticNetworking) => {
83
79
  clearAlerts();
84
80
  try {
85
81
  const searchParams = new URLSearchParams(location.search);
@@ -107,14 +103,23 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
107
103
  );
108
104
  navigate(`../${cluster.id}`, { state: ClusterWizardFlowStateNew });
109
105
 
110
- const uiPatch: UISettingsValues = { addCustomManifests };
111
106
  if (isAssistedMigration) {
112
- //For Assisted Migration we need to enable virtualization bundle
113
- uiPatch.bundlesSelected = ['virtualization'];
114
- uiPatch.isAssistedMigration = true;
107
+ try {
108
+ const uiPatch: UISettingsValues = {
109
+ bundlesSelected: ['virtualization'],
110
+ isAssistedMigration: true,
111
+ };
112
+ await UISettingService.update(cluster.id, uiPatch);
113
+ await clusterWizardContext.updateUISettings(uiPatch);
114
+ } catch (uiError) {
115
+ handleApiError(uiError, () =>
116
+ addAlert({
117
+ title: 'Failed to update UI settings',
118
+ message: getApiErrorMessage(uiError),
119
+ }),
120
+ );
121
+ }
115
122
  }
116
- await UISettingService.update(cluster.id, uiPatch);
117
- await clusterWizardContext.updateUISettings(uiPatch); // keeps local state current
118
123
  } catch (e) {
119
124
  handleApiError(e, () =>
120
125
  addAlert({ title: 'Failed to create new cluster', message: getApiErrorMessage(e) }),
@@ -42,11 +42,10 @@ type ClusterDetailsFormProps = {
42
42
  ocpVersions: OpenshiftVersionOptionType[];
43
43
  usedClusterNames: string[];
44
44
  navigation: React.ReactNode;
45
- handleClusterCreate: (params: ClusterCreateParams, addCustomManifests: boolean) => Promise<void>;
45
+ handleClusterCreate: (params: ClusterCreateParams) => Promise<void>;
46
46
  handleClusterUpdate: (
47
47
  clusterId: Cluster['id'],
48
48
  params: ClusterDetailsUpdateParams,
49
- addCustomManifests: boolean,
50
49
  ) => Promise<void>;
51
50
  };
52
51
 
@@ -63,7 +62,7 @@ const ClusterDetailsForm = (props: ClusterDetailsFormProps) => {
63
62
  navigation,
64
63
  } = props;
65
64
 
66
- const { customManifestsStep, moveNext } = useClusterWizardContext();
65
+ const { moveNext } = useClusterWizardContext();
67
66
  const { search } = useLocation();
68
67
  const { isViewerMode } = useSelector(selectCurrentClusterPermissionsState);
69
68
  const { clearAlerts } = useAlerts();
@@ -82,10 +81,10 @@ const ClusterDetailsForm = (props: ClusterDetailsFormProps) => {
82
81
  resetPlatform = 'baremetal';
83
82
  }
84
83
  const params = ClusterDetailsService.getClusterUpdateParams(values, resetPlatform);
85
- await handleClusterUpdate(cluster.id, params, values.addCustomManifest);
84
+ await handleClusterUpdate(cluster.id, params);
86
85
  } else {
87
86
  const params = ClusterDetailsService.getClusterCreateParams(values);
88
- await handleClusterCreate(params, values.addCustomManifest);
87
+ await handleClusterCreate(params);
89
88
  }
90
89
  },
91
90
  [cluster, handleClusterCreate, handleClusterUpdate],
@@ -118,9 +117,8 @@ const ClusterDetailsForm = (props: ClusterDetailsFormProps) => {
118
117
  managedDomains,
119
118
  ocpVersions,
120
119
  urlSearchParams: search,
121
- addCustomManifests: customManifestsStep,
122
120
  }),
123
- [infraEnv, cluster, pullSecret, managedDomains, ocpVersions, search, customManifestsStep],
121
+ [infraEnv, cluster, pullSecret, managedDomains, ocpVersions, search],
124
122
  );
125
123
 
126
124
  const { t } = useTranslation();