@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,78 @@
1
+ import React from 'react';
2
+ import { ClusterWizardStep, getFormikErrorFields, useAlerts } from '../../../../common';
3
+ import { useClusterWizardContext } from '../ClusterWizardContext';
4
+ import ClusterWizardFooter from '../ClusterWizardFooter';
5
+ import ClusterWizardNavigation from '../ClusterWizardNavigation';
6
+ import { StaticIpFormState } from '../../clusterConfiguration/staticIp/components/propTypes';
7
+ import { StaticIpPage } from '../../clusterConfiguration/staticIp/components/StaticIpPage';
8
+ import { WithErrorBoundary } from '../../../../common/components/ErrorHandling/WithErrorBoundary';
9
+ import { InfraEnvsAPI } from '../../../services/apis';
10
+ import { InfraEnvUpdateParams } from '@openshift-assisted/types/assisted-installer-service';
11
+
12
+ const getInitialFormStateProps = (): StaticIpFormState => {
13
+ return {
14
+ isValid: true,
15
+ isSubmitting: false,
16
+ isAutoSaveRunning: false,
17
+ errors: {},
18
+ touched: {},
19
+ isEmpty: true,
20
+ };
21
+ };
22
+
23
+ const DisconnectedStaticIp: React.FC = () => {
24
+ const { moveNext, moveBack, disconnectedInfraEnv, setDisconnectedInfraEnv } =
25
+ useClusterWizardContext();
26
+ const { alerts } = useAlerts();
27
+ const [formState, setFormStateProps] = React.useState<StaticIpFormState>(
28
+ getInitialFormStateProps(),
29
+ );
30
+
31
+ const onFormStateChange = (formState: StaticIpFormState) => {
32
+ setFormStateProps(formState);
33
+ };
34
+
35
+ const updateInfraEnv = async (params: InfraEnvUpdateParams) => {
36
+ if (!disconnectedInfraEnv?.id) {
37
+ throw new Error('No disconnected infraEnv available');
38
+ }
39
+ const { data: updatedInfraEnv } = await InfraEnvsAPI.update(disconnectedInfraEnv.id, params);
40
+ setDisconnectedInfraEnv(updatedInfraEnv);
41
+ return updatedInfraEnv;
42
+ };
43
+
44
+ const isNextDisabled =
45
+ formState.isAutoSaveRunning || !formState.isValid || !!alerts.length || formState.isSubmitting;
46
+ const errorFields = getFormikErrorFields<object>(formState.errors, formState.touched);
47
+
48
+ const footer = (
49
+ <ClusterWizardFooter
50
+ alertTitle="Static IP configuration contains missing or invalid fields"
51
+ alertContent={null}
52
+ errorFields={errorFields}
53
+ isSubmitting={formState.isSubmitting}
54
+ onNext={() => moveNext()}
55
+ onBack={() => moveBack()}
56
+ isNextDisabled={isNextDisabled}
57
+ isBackDisabled={formState.isSubmitting || formState.isAutoSaveRunning}
58
+ />
59
+ );
60
+
61
+ if (!disconnectedInfraEnv) {
62
+ return null;
63
+ }
64
+
65
+ return (
66
+ <ClusterWizardStep navigation={<ClusterWizardNavigation />} footer={footer}>
67
+ <WithErrorBoundary title="Failed to load Static IP step">
68
+ <StaticIpPage
69
+ infraEnv={disconnectedInfraEnv}
70
+ updateInfraEnv={updateInfraEnv}
71
+ onFormStateChange={onFormStateChange}
72
+ />
73
+ </WithErrorBoundary>
74
+ </ClusterWizardStep>
75
+ );
76
+ };
77
+
78
+ export default DisconnectedStaticIp;
@@ -0,0 +1,364 @@
1
+ import * as React from 'react';
2
+ import { Formik } from 'formik';
3
+ import { TFunction } from 'i18next';
4
+ import * as Yup from 'yup';
5
+ import {
6
+ ClusterWizardStep,
7
+ TechnologyPreview,
8
+ sshPublicKeyValidationSchema,
9
+ getFormikErrorFields,
10
+ httpProxyValidationSchema,
11
+ noProxyValidationSchema,
12
+ ipValidationSchema,
13
+ InputField,
14
+ CheckboxField,
15
+ AdditionalNTPSourcesField,
16
+ ProxyFieldsType,
17
+ PullSecret,
18
+ pullSecretValidationSchema,
19
+ } from '../../../../common';
20
+ import { Split, SplitItem, Grid, GridItem, Form, Content } from '@patternfly/react-core';
21
+ import { useClusterWizardContext } from '../ClusterWizardContext';
22
+ import ClusterWizardFooter from '../ClusterWizardFooter';
23
+ import ClusterWizardNavigation from '../ClusterWizardNavigation';
24
+ import { WithErrorBoundary } from '../../../../common/components/ErrorHandling/WithErrorBoundary';
25
+ import UploadSSH from '../../../../common/components/clusterConfiguration/UploadSSH';
26
+ import { ProxyInputFields } from '../../../../common/components/clusterConfiguration/ProxyFields';
27
+ import { handleApiError, getApiErrorMessage } from '../../../../common/api';
28
+ import { useAlerts } from '../../../../common/components/AlertsContextProvider';
29
+ import { AlertVariant } from '@patternfly/react-core';
30
+ import InfraEnvsService from '../../../services/InfraEnvsService';
31
+ import { InfraEnvsAPI } from '../../../services/apis';
32
+ import usePullSecret from '../../../hooks/usePullSecret';
33
+ import { useParams } from 'react-router-dom-v5-compat';
34
+ import ClustersService from '../../../services/ClustersService';
35
+ import {
36
+ Cluster,
37
+ InfraEnv,
38
+ InfraEnvCreateParams,
39
+ InfraEnvUpdateParams,
40
+ } from '@openshift-assisted/types/assisted-installer-service';
41
+ import { HostsNetworkConfigurationControlGroup } from '../../clusterConfiguration/HostsNetworkConfigurationControlGroup';
42
+ import { HostsNetworkConfigurationType } from '../../../services/types';
43
+ import { useTranslation } from '../../../../common/hooks/use-translation-wrapper';
44
+ import { getDummyInfraEnvField } from '../../clusterConfiguration/staticIp/data/dummyData';
45
+ import { ntpSourceValidationSchema } from '../../../../common/validationSchemas/ntpValidation';
46
+ import { isInOcm } from '../../../../common/api';
47
+
48
+ const DEFAULT_CPU_ARCHITECTURE = 'x86_64' as const;
49
+ const DISCONNECTED_IMAGE_TYPE = 'disconnected-iso' as const;
50
+
51
+ type OptionalConfigurationsFormValues = ProxyFieldsType & {
52
+ sshPublicKey?: string;
53
+ enableNtpSources: boolean;
54
+ additionalNtpSources?: string;
55
+ hostsNetworkConfigurationType: HostsNetworkConfigurationType;
56
+ rendezvousIp?: string;
57
+ pullSecret?: string;
58
+ };
59
+
60
+ const DEFAULT_INITIAL_VALUES: OptionalConfigurationsFormValues = {
61
+ sshPublicKey: '',
62
+ enableProxy: false,
63
+ httpProxy: '',
64
+ httpsProxy: '',
65
+ noProxy: '',
66
+ enableNtpSources: false,
67
+ additionalNtpSources: '',
68
+ hostsNetworkConfigurationType: HostsNetworkConfigurationType.DHCP,
69
+ rendezvousIp: '',
70
+ pullSecret: '',
71
+ };
72
+
73
+ /**
74
+ * Rehydrate form values from infraEnv when navigating back to this step.
75
+ */
76
+ const infraEnvToFormValues = (infraEnv: InfraEnv): OptionalConfigurationsFormValues => ({
77
+ ...DEFAULT_INITIAL_VALUES,
78
+ sshPublicKey: infraEnv.sshAuthorizedKey ?? '',
79
+ enableProxy: !!(infraEnv.proxy?.httpProxy || infraEnv.proxy?.httpsProxy),
80
+ httpProxy: infraEnv.proxy?.httpProxy ?? '',
81
+ httpsProxy: infraEnv.proxy?.httpsProxy ?? '',
82
+ noProxy: infraEnv.proxy?.noProxy ?? '',
83
+ enableNtpSources: !!infraEnv.additionalNtpSources,
84
+ additionalNtpSources: infraEnv.additionalNtpSources ?? '',
85
+ hostsNetworkConfigurationType:
86
+ (infraEnv.staticNetworkConfig?.length ?? 0) > 0
87
+ ? HostsNetworkConfigurationType.STATIC
88
+ : HostsNetworkConfigurationType.DHCP,
89
+ rendezvousIp: infraEnv.rendezvousIp ?? '',
90
+ });
91
+
92
+ /**
93
+ * Builds common infrastructure environment params from form values
94
+ */
95
+ const buildInfraEnvParams = (values: OptionalConfigurationsFormValues) => {
96
+ // Build proxy object - only include fields that have values
97
+ const proxy = {
98
+ ...(values.httpProxy && { httpProxy: values.httpProxy }),
99
+ ...(values.httpsProxy && { httpsProxy: values.httpsProxy }),
100
+ ...(values.noProxy && { noProxy: values.noProxy }),
101
+ };
102
+ const hasProxy = Object.keys(proxy).length > 0;
103
+
104
+ return {
105
+ ...(values.sshPublicKey && { sshAuthorizedKey: values.sshPublicKey }),
106
+ ...(hasProxy && { proxy }),
107
+ ...(values.additionalNtpSources && {
108
+ additionalNtpSources: values.additionalNtpSources,
109
+ }),
110
+ ...(values.rendezvousIp && { rendezvousIp: values.rendezvousIp }),
111
+ // Initialize with dummy static network config when static IP is selected
112
+ // This is required for the StaticIpPage to render properly
113
+ ...(values.hostsNetworkConfigurationType === HostsNetworkConfigurationType.STATIC && {
114
+ staticNetworkConfig: getDummyInfraEnvField(),
115
+ }),
116
+ };
117
+ };
118
+
119
+ const getValidationSchema = (t: TFunction, requirePullSecret: boolean) =>
120
+ Yup.lazy((values: OptionalConfigurationsFormValues) =>
121
+ Yup.object().shape({
122
+ sshPublicKey: sshPublicKeyValidationSchema(t),
123
+ enableProxy: Yup.boolean().required(),
124
+ httpProxy: httpProxyValidationSchema({
125
+ values,
126
+ pairValueName: 'httpsProxy',
127
+ allowEmpty: true,
128
+ t,
129
+ }),
130
+ httpsProxy: httpProxyValidationSchema({
131
+ values,
132
+ pairValueName: 'httpProxy',
133
+ allowEmpty: true,
134
+ t,
135
+ }),
136
+ noProxy: noProxyValidationSchema(t),
137
+ enableNtpSources: Yup.boolean().required(),
138
+ additionalNtpSources: ntpSourceValidationSchema(t),
139
+ hostsNetworkConfigurationType: Yup.string()
140
+ .oneOf(Object.values(HostsNetworkConfigurationType))
141
+ .required(),
142
+ rendezvousIp: Yup.string()
143
+ .max(45, 'IP address must be at most 45 characters')
144
+ .test(
145
+ 'ip-validation',
146
+ 'Not a valid IP address',
147
+ (value) => !value || ipValidationSchema(t).isValidSync(value),
148
+ ),
149
+ ...(requirePullSecret && {
150
+ pullSecret: pullSecretValidationSchema(t).required(t('ai:Required field')),
151
+ }),
152
+ }),
153
+ );
154
+
155
+ const OptionalConfigurationsStep = () => {
156
+ const { clusterId } = useParams<{ clusterId: string }>();
157
+ const [cluster, setCluster] = React.useState<Cluster | null>(null);
158
+ const { t } = useTranslation();
159
+ const defaultPullSecret = usePullSecret();
160
+
161
+ const { moveNext, moveBack, setDisconnectedInfraEnv, disconnectedInfraEnv } =
162
+ useClusterWizardContext();
163
+ const { addAlert, clearAlerts } = useAlerts();
164
+
165
+ React.useEffect(() => {
166
+ const fetchCluster = async () => {
167
+ if (!clusterId) {
168
+ return;
169
+ }
170
+ try {
171
+ const fetchedCluster = await ClustersService.get(clusterId);
172
+ setCluster(fetchedCluster);
173
+ } catch (error) {
174
+ handleApiError(error, () => {
175
+ addAlert({
176
+ title: t('ai:Failed to fetch cluster'),
177
+ message: getApiErrorMessage(error),
178
+ variant: AlertVariant.danger,
179
+ });
180
+ });
181
+ }
182
+ };
183
+ void fetchCluster();
184
+ }, [clusterId, addAlert, t]);
185
+
186
+ const initialValues: OptionalConfigurationsFormValues = disconnectedInfraEnv
187
+ ? infraEnvToFormValues(disconnectedInfraEnv)
188
+ : DEFAULT_INITIAL_VALUES;
189
+
190
+ return (
191
+ <Formik
192
+ initialValues={initialValues}
193
+ validateOnMount
194
+ validationSchema={getValidationSchema(t, !isInOcm)}
195
+ onSubmit={async (values) => {
196
+ clearAlerts();
197
+ if (!cluster?.id) {
198
+ addAlert({
199
+ title: t('ai:Missing cluster'),
200
+ message: t('ai:Cluster must be created before configuring infrastructure environment'),
201
+ variant: AlertVariant.danger,
202
+ });
203
+ return;
204
+ }
205
+
206
+ const commonParams = buildInfraEnvParams(values);
207
+ // Default pull secret only exists in OCM; when !isInOcm the user must provide it via the field
208
+ const pullSecretToUse = isInOcm ? defaultPullSecret : values.pullSecret;
209
+
210
+ try {
211
+ if (disconnectedInfraEnv?.id) {
212
+ // Update existing infraEnv
213
+ const updateParams: InfraEnvUpdateParams = {
214
+ ...commonParams,
215
+ imageType: DISCONNECTED_IMAGE_TYPE,
216
+ pullSecret: pullSecretToUse,
217
+ };
218
+ const { data: updatedInfraEnv } = await InfraEnvsAPI.update(
219
+ disconnectedInfraEnv.id,
220
+ updateParams,
221
+ );
222
+ setDisconnectedInfraEnv({
223
+ ...updatedInfraEnv,
224
+ // infraEnv does not return the whole OCP version
225
+ openshiftVersion: cluster.openshiftVersion,
226
+ });
227
+ } else {
228
+ // Create new infraEnv
229
+ const createParams: InfraEnvCreateParams = {
230
+ name: InfraEnvsService.makeInfraEnvName(DEFAULT_CPU_ARCHITECTURE, cluster.name),
231
+ clusterId: cluster.id,
232
+ openshiftVersion: cluster.openshiftVersion,
233
+ cpuArchitecture: DEFAULT_CPU_ARCHITECTURE,
234
+ imageType: DISCONNECTED_IMAGE_TYPE,
235
+ pullSecret: pullSecretToUse ?? '',
236
+ ...commonParams,
237
+ };
238
+ const createdInfraEnv = await InfraEnvsService.create(createParams);
239
+ setDisconnectedInfraEnv({
240
+ ...createdInfraEnv,
241
+ // infraEnv does not return the whole OCP version
242
+ openshiftVersion: cluster.openshiftVersion,
243
+ });
244
+ }
245
+ moveNext();
246
+ } catch (error) {
247
+ handleApiError(error, () => {
248
+ addAlert({
249
+ title: disconnectedInfraEnv?.id
250
+ ? t('ai:Failed to update infrastructure environment')
251
+ : t('ai:Failed to create infrastructure environment'),
252
+ message: getApiErrorMessage(error),
253
+ variant: AlertVariant.danger,
254
+ });
255
+ });
256
+ }
257
+ }}
258
+ >
259
+ {({ submitForm, isValid, errors, touched, isSubmitting, values }) => {
260
+ const errorFields = getFormikErrorFields(errors, touched);
261
+ const handleNext = () => {
262
+ void submitForm(); // This will trigger onSubmit
263
+ };
264
+
265
+ return (
266
+ <ClusterWizardStep
267
+ navigation={<ClusterWizardNavigation />}
268
+ footer={
269
+ <ClusterWizardFooter
270
+ disconnectedClusterId={clusterId}
271
+ onNext={handleNext} // Changed from moveNext
272
+ onBack={moveBack}
273
+ isNextDisabled={!isValid || !cluster}
274
+ errorFields={errorFields}
275
+ isSubmitting={isSubmitting}
276
+ />
277
+ }
278
+ >
279
+ <WithErrorBoundary title="Failed to load Optional Configurations step">
280
+ <Grid hasGutter>
281
+ <GridItem>
282
+ <Split>
283
+ <SplitItem>
284
+ <Content component="h2">{t('ai:Optional configurations')}</Content>
285
+ </SplitItem>
286
+ <SplitItem>
287
+ <TechnologyPreview />
288
+ </SplitItem>
289
+ </Split>
290
+ </GridItem>
291
+ <GridItem>
292
+ <Form id="wizard-cluster-optional-configurations__form">
293
+ {/* Pull secret (!OCM only) */}
294
+ {!isInOcm && <PullSecret defaultPullSecret={defaultPullSecret} isOcm={false} />}
295
+
296
+ {/* Rendezvous IP */}
297
+ <InputField
298
+ label={t('ai:Rendezvous IP')}
299
+ name="rendezvousIp"
300
+ helperText={t(
301
+ 'ai:The IP address that hosts will use to communicate with the bootstrap node during installation.',
302
+ )}
303
+ placeholder="e.g., 192.168.1.10"
304
+ maxLength={45}
305
+ />
306
+
307
+ <UploadSSH />
308
+
309
+ {/* Proxy Settings */}
310
+ <CheckboxField
311
+ label={t('ai:Configure proxy settings')}
312
+ name="enableProxy"
313
+ helperText={
314
+ <p>
315
+ {t(
316
+ 'ai:If hosts are behind a firewall that requires the use of a proxy, provide additional information about the proxy.',
317
+ )}
318
+ </p>
319
+ }
320
+ body={values.enableProxy && <ProxyInputFields />}
321
+ />
322
+
323
+ {/* NTP Configuration */}
324
+ <CheckboxField
325
+ label={t('ai:Add your own NTP (Network Time Protocol) sources')}
326
+ name="enableNtpSources"
327
+ helperText={
328
+ <p>
329
+ {t(
330
+ 'ai:Configure your own NTP sources to synchronize the time between the hosts that will be added to this infrastructure environment.',
331
+ )}
332
+ </p>
333
+ }
334
+ body={
335
+ values.enableNtpSources && (
336
+ <Grid hasGutter>
337
+ <AdditionalNTPSourcesField
338
+ name="additionalNtpSources"
339
+ helperText={t(
340
+ 'ai:A comma separated list of IP or domain names of the NTP pools or servers.',
341
+ )}
342
+ />
343
+ </Grid>
344
+ )
345
+ }
346
+ />
347
+
348
+ {/* Network Configuration */}
349
+ <HostsNetworkConfigurationControlGroup
350
+ clusterExists={false}
351
+ isDisabled={false}
352
+ />
353
+ </Form>
354
+ </GridItem>
355
+ </Grid>
356
+ </WithErrorBoundary>
357
+ </ClusterWizardStep>
358
+ );
359
+ }}
360
+ </Formik>
361
+ );
362
+ };
363
+
364
+ export default OptionalConfigurationsStep;
@@ -25,16 +25,13 @@ import {
25
25
  Content,
26
26
  } from '@patternfly/react-core';
27
27
  import { Formik } from 'formik';
28
- import { saveAs } from 'file-saver';
29
- import { useNavigate } from 'react-router-dom-v5-compat';
28
+ import { useNavigate, useParams } from 'react-router-dom-v5-compat';
30
29
 
31
30
  import { getOperatorSpecs } from '../../../../common/components/operators/operatorSpecs';
32
31
 
33
- const downloadUrl =
34
- 'https://mirror.openshift.com/pub/cgw/assisted-installer-disconnected/latest/agent-ove.x86_64.iso';
35
-
36
32
  const ReviewStep = () => {
37
- const { moveBack } = useClusterWizardContext();
33
+ const { moveBack, disconnectedInfraEnv } = useClusterWizardContext();
34
+ const { clusterId } = useParams<{ clusterId: string }>();
38
35
  const opSpecs = getOperatorSpecs(() => undefined);
39
36
  const navigate = useNavigate();
40
37
 
@@ -50,11 +47,14 @@ const ReviewStep = () => {
50
47
  footer={
51
48
  <ClusterWizardFooter
52
49
  onNext={() => {
53
- downloadUrl && saveAs(downloadUrl);
50
+ if (disconnectedInfraEnv?.downloadUrl) {
51
+ window.open(disconnectedInfraEnv.downloadUrl, '_blank');
52
+ }
54
53
  navigate('/cluster-list');
55
54
  }}
56
55
  onBack={moveBack}
57
56
  nextButtonText="Download ISO"
57
+ disconnectedClusterId={clusterId}
58
58
  />
59
59
  }
60
60
  >
@@ -96,9 +96,19 @@ const ReviewStep = () => {
96
96
  </List>
97
97
  </Alert>
98
98
  <DescriptionList isHorizontal>
99
+ {disconnectedInfraEnv?.rendezvousIp && (
100
+ <DescriptionListGroup>
101
+ <DescriptionListTerm>Rendezvous IP</DescriptionListTerm>
102
+ <DescriptionListDescription>
103
+ {disconnectedInfraEnv?.rendezvousIp}
104
+ </DescriptionListDescription>
105
+ </DescriptionListGroup>
106
+ )}
99
107
  <DescriptionListGroup>
100
108
  <DescriptionListTerm>OpenShift version</DescriptionListTerm>
101
- <DescriptionListDescription>4.20</DescriptionListDescription>
109
+ <DescriptionListDescription>
110
+ {disconnectedInfraEnv?.openshiftVersion || ''}
111
+ </DescriptionListDescription>
102
112
  </DescriptionListGroup>
103
113
  <DescriptionListGroup>
104
114
  <DescriptionListTerm>CPU architecture</DescriptionListTerm>
@@ -106,7 +116,7 @@ const ReviewStep = () => {
106
116
  </DescriptionListGroup>
107
117
  <DescriptionListGroup>
108
118
  <DescriptionListTerm>ISO size</DescriptionListTerm>
109
- <DescriptionListDescription>approx. 43.5GB</DescriptionListDescription>
119
+ <DescriptionListDescription>approx. 50 GB</DescriptionListDescription>
110
120
  </DescriptionListGroup>
111
121
  </DescriptionList>
112
122
  </Grid>
@@ -2,4 +2,5 @@ export { default as ClusterDetailsForm } from './ClusterDetailsForm';
2
2
  export { default as NewClusterWizard } from './NewClusterWizard';
3
3
  export { default as ClusterWizard } from './ClusterWizard';
4
4
  export { default as ClusterWizardContextProvider } from './ClusterWizardContextProvider';
5
+ export { useClusterWizardContext } from './ClusterWizardContext';
5
6
  export { OpenShiftVersionsContextProvider } from './OpenShiftVersionsContext';
@@ -31,7 +31,8 @@ export type ClusterWizardStepsType =
31
31
  | 'custom-manifests'
32
32
  | 'credentials-download'
33
33
  | 'disconnected-basic'
34
- | 'disconnected-review';
34
+ | 'disconnected-review'
35
+ | 'disconnected-optional-configurations';
35
36
 
36
37
  const wizardStepsOrder: ClusterWizardStepsType[] = [
37
38
  'cluster-details',
@@ -49,6 +50,7 @@ const wizardStepsOrder: ClusterWizardStepsType[] = [
49
50
 
50
51
  export const disconnectedSteps: ClusterWizardStepsType[] = [
51
52
  'disconnected-basic',
53
+ 'disconnected-optional-configurations',
52
54
  'disconnected-review',
53
55
  ];
54
56
 
@@ -100,6 +102,9 @@ export const getClusterWizardFirstStep = (
100
102
  case 'pending-for-input':
101
103
  case 'adding-hosts':
102
104
  case 'insufficient':
105
+ if (customManifestsStepNeedsToBeFilled) {
106
+ return 'custom-manifests';
107
+ }
103
108
  return getStepForFailingHostValidations(hosts);
104
109
  default:
105
110
  return 'cluster-details';
@@ -239,7 +244,12 @@ const networkingStepValidationsMap: WizardStepValidationMap = {
239
244
  // Alternatively we would have to whitelist network validations instead of using group
240
245
  // TODO(mlibra): remove that container-images-available from soft validations and let backend drive it via disabling it.
241
246
  // Depends on: https://issues.redhat.com/browse/MGMT-5265
242
- softValidationIds: ['ntp-synced', 'container-images-available', 'mtu-valid'],
247
+ softValidationIds: [
248
+ 'ntp-synced',
249
+ 'container-images-available',
250
+ 'mtu-valid',
251
+ 'custom-manifests-requirements-satisfied',
252
+ ],
243
253
  };
244
254
 
245
255
  const reviewStepValidationsMap: WizardStepValidationMap = {
@@ -260,6 +270,7 @@ const credentialsValidationMap = buildEmptyValidationsMap();
260
270
  const customManifestsValidationsMap = buildEmptyValidationsMap();
261
271
  const disconnectedReviewValidationsMap = buildEmptyValidationsMap();
262
272
  const disconnectedBasicValidationsMap = buildEmptyValidationsMap();
273
+ const disconnectedOptionalConfigurationsValidationsMap = buildEmptyValidationsMap();
263
274
 
264
275
  export const wizardStepsValidationsMap: WizardStepsValidationMap<ClusterWizardStepsType> = {
265
276
  'cluster-details': clusterDetailsStepValidationsMap,
@@ -275,6 +286,7 @@ export const wizardStepsValidationsMap: WizardStepsValidationMap<ClusterWizardSt
275
286
  'credentials-download': credentialsValidationMap,
276
287
  'disconnected-review': disconnectedReviewValidationsMap,
277
288
  'disconnected-basic': disconnectedBasicValidationsMap,
289
+ 'disconnected-optional-configurations': disconnectedOptionalConfigurationsValidationsMap,
278
290
  };
279
291
 
280
292
  export const allClusterWizardSoftValidationIds =
@@ -1,15 +1,15 @@
1
1
  import React from 'react';
2
- import { t_global_color_status_success_default as okColor } from '@patternfly/react-tokens/dist/js/t_global_color_status_success_default';
3
2
  import { ExclamationCircleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';
4
3
  import { ExclamationTriangleIcon } from '@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon';
5
4
  import { FileAltIcon } from '@patternfly/react-icons/dist/js/icons/file-alt-icon';
6
5
  import { CheckCircleIcon } from '@patternfly/react-icons/dist/js/icons/check-circle-icon';
7
6
  import { InProgressIcon } from '@patternfly/react-icons/dist/js/icons/in-progress-icon';
8
7
  import { BanIcon } from '@patternfly/react-icons/dist/js/icons/ban-icon';
9
- import { clusterStatusLabels, UiIcon, WithTestID } from '../../../common';
8
+ import { clusterStatusLabels, WithTestID } from '../../../common';
10
9
  import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
11
10
  import { TFunction } from 'i18next';
12
11
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
12
+ import { Icon } from '@patternfly/react-core';
13
13
 
14
14
  type ClusterStatusProps = {
15
15
  status: Cluster['status'];
@@ -24,25 +24,47 @@ type ClusterStatusIconProps = {
24
24
  export const ClusterStatusIcon: React.FC<ClusterStatusIconProps> = ({ status, ...extraProps }) => {
25
25
  switch (status) {
26
26
  case 'cancelled':
27
- return <UiIcon size="sm" icon={<BanIcon {...extraProps} />} />;
27
+ return (
28
+ <Icon size="sm">
29
+ <BanIcon {...extraProps} />
30
+ </Icon>
31
+ );
28
32
  case 'insufficient':
29
33
  case 'pending-for-input':
30
34
  case 'ready':
31
- return <UiIcon size="sm" icon={<FileAltIcon {...extraProps} />} />;
35
+ return (
36
+ <Icon size="sm">
37
+ <FileAltIcon {...extraProps} />
38
+ </Icon>
39
+ );
32
40
  case 'error':
33
- return <UiIcon size="sm" status="danger" icon={<ExclamationCircleIcon {...extraProps} />} />;
41
+ return (
42
+ <Icon size="sm" status="danger">
43
+ <ExclamationCircleIcon {...extraProps} />
44
+ </Icon>
45
+ );
34
46
  case 'installed':
35
- return <UiIcon size="sm" icon={<CheckCircleIcon color={okColor.value} {...extraProps} />} />;
47
+ return (
48
+ <Icon status="success" size="sm">
49
+ <CheckCircleIcon {...extraProps} />
50
+ </Icon>
51
+ );
36
52
  case 'installing-pending-user-action':
37
53
  return (
38
- <UiIcon size="sm" status="warning" icon={<ExclamationTriangleIcon {...extraProps} />} />
54
+ <Icon size="sm" status="warning">
55
+ <ExclamationTriangleIcon {...extraProps} />
56
+ </Icon>
39
57
  );
40
58
 
41
59
  case 'preparing-for-installation':
42
60
  case 'installing':
43
61
  case 'finalizing':
44
62
  case 'adding-hosts':
45
- return <UiIcon size="sm" icon={<InProgressIcon {...extraProps} />} />;
63
+ return (
64
+ <Icon size="sm">
65
+ <InProgressIcon {...extraProps} />
66
+ </Icon>
67
+ );
46
68
  default:
47
69
  return <></>;
48
70
  }