@openshift-assisted/ui-lib 5.0.0-cim → 5.0.1-cim

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts +1 -1
  2. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts.map +1 -1
  3. package/build/@types/cim/components/ClusterDeployment/clusterDetails/ACMClusterDeploymentDetailsStep.d.ts.map +1 -1
  4. package/build/@types/cim/components/ClusterDeployment/clusterDetails/ClusterDeploymentDetailsStep.d.ts +0 -17
  5. package/build/@types/cim/components/ClusterDeployment/clusterDetails/ClusterDeploymentDetailsStep.d.ts.map +1 -1
  6. package/build/@types/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.d.ts.map +1 -1
  7. package/build/@types/cim/components/ClusterDeployment/clusterDetails/useDetailsFormik.d.ts +19 -0
  8. package/build/@types/cim/components/ClusterDeployment/clusterDetails/useDetailsFormik.d.ts.map +1 -0
  9. package/build/@types/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.d.ts.map +1 -1
  10. package/build/@types/cim/components/ClusterDeployment/types.d.ts +0 -1
  11. package/build/@types/cim/components/ClusterDeployment/types.d.ts.map +1 -1
  12. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts +1 -1
  13. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
  14. package/build/@types/cim/components/common/CpuArchitectureDropdown.d.ts.map +1 -1
  15. package/build/@types/cim/components/helpers/clusterDeployment.d.ts.map +1 -1
  16. package/build/@types/cim/components/modals/CimConfiguration/CimStorageMissingAlert.d.ts.map +1 -1
  17. package/build/@types/cim/components/modals/CimConfiguration/constants.d.ts +1 -1
  18. package/build/@types/cim/hooks/index.d.ts +1 -0
  19. package/build/@types/cim/hooks/index.d.ts.map +1 -1
  20. package/build/@types/cim/hooks/useAgents.d.ts +4 -0
  21. package/build/@types/cim/hooks/useAgents.d.ts.map +1 -0
  22. package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.d.ts +2 -1
  23. package/build/@types/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.d.ts.map +1 -1
  24. package/build/@types/common/components/clusterConfiguration/ExternalPlatformsDropdown.d.ts.map +1 -1
  25. package/build/@types/common/components/clusterConfiguration/utils.d.ts +9 -1
  26. package/build/@types/common/components/clusterConfiguration/utils.d.ts.map +1 -1
  27. package/build/@types/common/components/clusterDetail/ClusterCredentials.d.ts.map +1 -1
  28. package/build/@types/common/components/clusterDetail/ConsoleModal.d.ts +0 -5
  29. package/build/@types/common/components/clusterDetail/ConsoleModal.d.ts.map +1 -1
  30. package/build/@types/common/components/clusterWizard/ReviewValidations.d.ts.map +1 -1
  31. package/build/@types/common/components/clusterWizard/clusterDetailsValidation.d.ts.map +1 -1
  32. package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts.map +1 -1
  33. package/build/@types/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.d.ts.map +1 -1
  34. package/build/@types/common/components/clusterWizard/validationsInfoUtils.d.ts +0 -1
  35. package/build/@types/common/components/clusterWizard/validationsInfoUtils.d.ts.map +1 -1
  36. package/build/@types/common/components/hosts/utils.d.ts.map +1 -1
  37. package/build/@types/common/config/constants.d.ts.map +1 -1
  38. package/build/@types/common/selectors/clusterSelectors.d.ts +1 -1
  39. package/build/@types/common/selectors/clusterSelectors.d.ts.map +1 -1
  40. package/build/@types/common/types/clusters.d.ts +2 -2
  41. package/build/@types/common/types/clusters.d.ts.map +1 -1
  42. package/build/@types/ocm/components/Routes.d.ts +1 -1
  43. package/build/@types/ocm/components/Routes.d.ts.map +1 -1
  44. package/build/@types/ocm/components/clusterConfiguration/DiscoveryImageForm.d.ts.map +1 -1
  45. package/build/@types/ocm/components/clusterConfiguration/DiscoveryImageModal.d.ts +0 -1
  46. package/build/@types/ocm/components/clusterConfiguration/DiscoveryImageModal.d.ts.map +1 -1
  47. package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
  48. package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.d.ts.map +1 -1
  49. package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.d.ts.map +1 -1
  50. package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.d.ts +4 -0
  51. package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.d.ts.map +1 -1
  52. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts.map +1 -1
  53. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts.map +1 -1
  54. package/build/@types/ocm/components/clusterConfiguration/operators/OperatorCheckbox.d.ts +3 -1
  55. package/build/@types/ocm/components/clusterConfiguration/operators/OperatorCheckbox.d.ts.map +1 -1
  56. package/build/@types/ocm/components/clusterConfiguration/operators/bundleSpecs.d.ts.map +1 -1
  57. package/build/@types/ocm/components/clusterConfiguration/operators/utils.d.ts +3 -6
  58. package/build/@types/ocm/components/clusterConfiguration/operators/utils.d.ts.map +1 -1
  59. package/build/@types/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.d.ts.map +1 -1
  60. package/build/@types/ocm/components/clusterConfiguration/review/ReviewOperatorsTable.d.ts.map +1 -1
  61. package/build/@types/ocm/components/clusterConfiguration/review/ReviewSummary.d.ts.map +1 -1
  62. package/build/@types/ocm/components/clusterConfiguration/review/TableSummaryExpandable.d.ts +1 -0
  63. package/build/@types/ocm/components/clusterConfiguration/review/TableSummaryExpandable.d.ts.map +1 -1
  64. package/build/@types/ocm/components/clusterConfiguration/review/utils.d.ts +1 -1
  65. package/build/@types/ocm/components/clusterConfiguration/review/utils.d.ts.map +1 -1
  66. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/StaticIpForm.d.ts.map +1 -1
  67. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.d.ts.map +1 -1
  68. package/build/@types/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.d.ts.map +1 -1
  69. package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.d.ts +1 -0
  70. package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.d.ts.map +1 -1
  71. package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.d.ts +1 -1
  72. package/build/@types/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.d.ts.map +1 -1
  73. package/build/@types/ocm/components/clusterDetail/AssistedInstallerDetailCard.d.ts +1 -1
  74. package/build/@types/ocm/components/clusterDetail/AssistedInstallerDetailCard.d.ts.map +1 -1
  75. package/build/@types/ocm/components/clusterDetail/ClusterDetailsButtonGroup.d.ts.map +1 -1
  76. package/build/@types/ocm/components/clusterWizard/ClusterDetails.d.ts.map +1 -1
  77. package/build/@types/ocm/components/clusterWizard/ClusterWizardContextProvider.d.ts.map +1 -1
  78. package/build/@types/ocm/components/clusterWizard/NewClusterWizard.d.ts.map +1 -1
  79. package/build/@types/ocm/components/clusterWizard/Operators.d.ts.map +1 -1
  80. package/build/@types/ocm/components/clusterWizard/OperatorsBundle.d.ts +3 -3
  81. package/build/@types/ocm/components/clusterWizard/OperatorsBundle.d.ts.map +1 -1
  82. package/build/@types/ocm/components/clusterWizard/OperatorsSelect.d.ts.map +1 -1
  83. package/build/@types/ocm/components/clusterWizard/OptionalOperatorsDropdown.d.ts +13 -0
  84. package/build/@types/ocm/components/clusterWizard/OptionalOperatorsDropdown.d.ts.map +1 -0
  85. package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts +3 -4
  86. package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts.map +1 -1
  87. package/build/@types/ocm/components/clusters/ClustersListToolbar.d.ts +1 -2
  88. package/build/@types/ocm/components/clusters/ClustersListToolbar.d.ts.map +1 -1
  89. package/build/@types/ocm/components/clusters/ClustersTable.d.ts.map +1 -1
  90. package/build/@types/ocm/components/ui/Buttons/BackButton.d.ts +1 -1
  91. package/build/@types/ocm/components/ui/Buttons/BackButton.d.ts.map +1 -1
  92. package/build/@types/ocm/hooks/useLateBinding.d.ts.map +1 -1
  93. package/build/@types/ocm/services/InfraEnvsService.d.ts.map +1 -1
  94. package/build/@types/ocm/store/hooks.d.ts +1 -1
  95. package/build/@types/ocm/store/slices/clusters/selectors.d.ts +5 -61
  96. package/build/@types/ocm/store/slices/clusters/selectors.d.ts.map +1 -1
  97. package/build/@types/ocm/store/slices/current-cluster/slice.d.ts +2 -0
  98. package/build/@types/ocm/store/slices/current-cluster/slice.d.ts.map +1 -1
  99. package/build/@types/ocm/store/slices/feature-flags/selectors.d.ts +2 -20
  100. package/build/@types/ocm/store/slices/feature-flags/selectors.d.ts.map +1 -1
  101. package/build/@types/ocm/store/slices/infra-envs/selectors.d.ts +4 -21
  102. package/build/@types/ocm/store/slices/infra-envs/selectors.d.ts.map +1 -1
  103. package/build/cjs/cim/components/Agent/NoAgentsAlert.js +2 -2
  104. package/build/cjs/cim/components/Agent/NoAgentsAlert.js.map +1 -1
  105. package/build/cjs/cim/components/Agent/tableColumns.js +3 -3
  106. package/build/cjs/cim/components/Agent/tableColumns.js.map +1 -1
  107. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js +9 -1
  108. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js.map +1 -1
  109. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ACMClusterDeploymentDetailsStep.js +4 -2
  110. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ACMClusterDeploymentDetailsStep.js.map +1 -1
  111. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDeploymentDetailsStep.js +5 -31
  112. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDeploymentDetailsStep.js.map +1 -1
  113. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.js +1 -11
  114. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.js.map +1 -1
  115. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/useDetailsFormik.js +41 -0
  116. package/build/cjs/cim/components/ClusterDeployment/clusterDetails/useDetailsFormik.js.map +1 -0
  117. package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js +4 -4
  118. package/build/cjs/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.js.map +1 -1
  119. package/build/cjs/cim/components/ClusterDeployment/wizardTransition.js +5 -1
  120. package/build/cjs/cim/components/ClusterDeployment/wizardTransition.js.map +1 -1
  121. package/build/cjs/cim/components/Hypershift/DetailsPage/NodePoolsTable.js +2 -2
  122. package/build/cjs/cim/components/Hypershift/DetailsPage/NodePoolsTable.js.map +1 -1
  123. package/build/cjs/cim/components/InfraEnv/AddHostDropdown.js +2 -2
  124. package/build/cjs/cim/components/InfraEnv/AddHostDropdown.js.map +1 -1
  125. package/build/cjs/cim/components/common/CpuArchitectureDropdown.js +1 -1
  126. package/build/cjs/cim/components/common/CpuArchitectureDropdown.js.map +1 -1
  127. package/build/cjs/cim/components/helpers/clusterDeployment.js +14 -10
  128. package/build/cjs/cim/components/helpers/clusterDeployment.js.map +1 -1
  129. package/build/cjs/cim/components/modals/CimConfiguration/CimConfigProgressAlert.js +3 -3
  130. package/build/cjs/cim/components/modals/CimConfiguration/CimConfigProgressAlert.js.map +1 -1
  131. package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationFormFields.js +1 -1
  132. package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationFormFields.js.map +1 -1
  133. package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js +2 -2
  134. package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js.map +1 -1
  135. package/build/cjs/cim/components/modals/CimConfiguration/CimStorageMissingAlert.js +3 -3
  136. package/build/cjs/cim/components/modals/CimConfiguration/CimStorageMissingAlert.js.map +1 -1
  137. package/build/cjs/cim/components/modals/CimConfiguration/constants.js +1 -1
  138. package/build/cjs/cim/components/modals/MassDeleteAgentModal.js +2 -2
  139. package/build/cjs/cim/components/modals/MassDeleteAgentModal.js.map +1 -1
  140. package/build/cjs/cim/hooks/index.js +1 -0
  141. package/build/cjs/cim/hooks/index.js.map +1 -1
  142. package/build/cjs/cim/hooks/useAgents.js +13 -0
  143. package/build/cjs/cim/hooks/useAgents.js.map +1 -0
  144. package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.js +9 -3
  145. package/build/cjs/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.js.map +1 -1
  146. package/build/cjs/common/components/clusterConfiguration/ExternalPlatformsDropdown.js +1 -1
  147. package/build/cjs/common/components/clusterConfiguration/ExternalPlatformsDropdown.js.map +1 -1
  148. package/build/cjs/common/components/clusterConfiguration/utils.js +13 -1
  149. package/build/cjs/common/components/clusterConfiguration/utils.js.map +1 -1
  150. package/build/cjs/common/components/clusterConfiguration/utils.test.js +36 -0
  151. package/build/cjs/common/components/clusterConfiguration/utils.test.js.map +1 -1
  152. package/build/cjs/common/components/clusterDetail/ClusterCredentials.js +10 -9
  153. package/build/cjs/common/components/clusterDetail/ClusterCredentials.js.map +1 -1
  154. package/build/cjs/common/components/clusterDetail/ConsoleModal.js +1 -10
  155. package/build/cjs/common/components/clusterDetail/ConsoleModal.js.map +1 -1
  156. package/build/cjs/common/components/clusterWizard/ReviewValidations.js +16 -0
  157. package/build/cjs/common/components/clusterWizard/ReviewValidations.js.map +1 -1
  158. package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js +34 -19
  159. package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js.map +1 -1
  160. package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js +29 -31
  161. package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js.map +1 -1
  162. package/build/cjs/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.js +3 -3
  163. package/build/cjs/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js +19 -30
  164. package/build/cjs/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.js.map +1 -1
  165. package/build/cjs/common/components/clusterWizard/validationsInfoUtils.js +1 -17
  166. package/build/cjs/common/components/clusterWizard/validationsInfoUtils.js.map +1 -1
  167. package/build/cjs/common/components/hosts/utils.js +6 -1
  168. package/build/cjs/common/components/hosts/utils.js.map +1 -1
  169. package/build/cjs/common/config/constants.js +4 -0
  170. package/build/cjs/common/config/constants.js.map +1 -1
  171. package/build/cjs/common/selectors/clusterSelectors.js +7 -8
  172. package/build/cjs/common/selectors/clusterSelectors.js.map +1 -1
  173. package/build/cjs/common/types/clusters.js.map +1 -1
  174. package/build/cjs/common/validationSchemas/addressValidation.js +1 -1
  175. package/build/cjs/common/validationSchemas/addressValidation.js.map +1 -1
  176. package/build/cjs/ocm/components/Routes.js +8 -8
  177. package/build/cjs/ocm/components/Routes.js.map +1 -1
  178. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageForm.js +5 -2
  179. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageForm.js.map +1 -1
  180. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageModal.js +2 -2
  181. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageModal.js.map +1 -1
  182. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js +6 -2
  183. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
  184. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterProgressItems.js +1 -1
  185. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterProgressItems.js.map +1 -1
  186. package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js +1 -1
  187. package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js.map +1 -1
  188. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js +3 -1
  189. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.js.map +1 -1
  190. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js +3 -1
  191. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js.map +1 -1
  192. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.js +11 -8
  193. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.js.map +1 -1
  194. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +68 -17
  195. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
  196. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +1 -1
  197. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
  198. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js +50 -13
  199. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js.map +1 -1
  200. package/build/cjs/ocm/components/clusterConfiguration/operators/OperatorCheckbox.js +39 -21
  201. package/build/cjs/ocm/components/clusterConfiguration/operators/OperatorCheckbox.js.map +1 -1
  202. package/build/cjs/ocm/components/clusterConfiguration/operators/bundleSpecs.js +1 -2
  203. package/build/cjs/ocm/components/clusterConfiguration/operators/bundleSpecs.js.map +1 -1
  204. package/build/cjs/ocm/components/clusterConfiguration/operators/utils.js +7 -25
  205. package/build/cjs/ocm/components/clusterConfiguration/operators/utils.js.map +1 -1
  206. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js +4 -2
  207. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.js.map +1 -1
  208. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewOperatorsTable.js +75 -20
  209. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewOperatorsTable.js.map +1 -1
  210. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewSummary.js +2 -2
  211. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewSummary.js.map +1 -1
  212. package/build/cjs/ocm/components/clusterConfiguration/review/TableSummaryExpandable.css +3 -0
  213. package/build/cjs/ocm/components/clusterConfiguration/review/TableSummaryExpandable.js +2 -3
  214. package/build/cjs/ocm/components/clusterConfiguration/review/TableSummaryExpandable.js.map +1 -1
  215. package/build/cjs/ocm/components/clusterConfiguration/review/utils.js +8 -2
  216. package/build/cjs/ocm/components/clusterConfiguration/review/utils.js.map +1 -1
  217. package/build/cjs/ocm/components/clusterConfiguration/review/utils.test.js +35 -0
  218. package/build/cjs/ocm/components/clusterConfiguration/review/utils.test.js.map +1 -1
  219. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpForm.js +10 -1
  220. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpForm.js.map +1 -1
  221. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.js +5 -5
  222. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.js.map +1 -1
  223. package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.js +2 -2
  224. package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.js.map +1 -1
  225. package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.js.map +1 -1
  226. package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.js +3 -7
  227. package/build/cjs/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.js.map +1 -1
  228. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js +4 -4
  229. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js.map +1 -1
  230. package/build/cjs/ocm/components/clusterDetail/ClusterDetail.js +4 -4
  231. package/build/cjs/ocm/components/clusterDetail/ClusterDetail.js.map +1 -1
  232. package/build/cjs/ocm/components/clusterDetail/ClusterDetailsButtonGroup.js +8 -2
  233. package/build/cjs/ocm/components/clusterDetail/ClusterDetailsButtonGroup.js.map +1 -1
  234. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js +6 -13
  235. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js.map +1 -1
  236. package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js +2 -2
  237. package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js.map +1 -1
  238. package/build/cjs/ocm/components/clusterWizard/ClusterWizardContextProvider.js +6 -6
  239. package/build/cjs/ocm/components/clusterWizard/ClusterWizardContextProvider.js.map +1 -1
  240. package/build/cjs/ocm/components/clusterWizard/ClusterWizardFooter.js +2 -2
  241. package/build/cjs/ocm/components/clusterWizard/ClusterWizardFooter.js.map +1 -1
  242. package/build/cjs/ocm/components/clusterWizard/NewClusterWizard.js +6 -3
  243. package/build/cjs/ocm/components/clusterWizard/NewClusterWizard.js.map +1 -1
  244. package/build/cjs/ocm/components/clusterWizard/Operators.js +40 -12
  245. package/build/cjs/ocm/components/clusterWizard/Operators.js.map +1 -1
  246. package/build/cjs/ocm/components/clusterWizard/OperatorsBundle.js +34 -15
  247. package/build/cjs/ocm/components/clusterWizard/OperatorsBundle.js.map +1 -1
  248. package/build/cjs/ocm/components/clusterWizard/OperatorsSelect.js +18 -4
  249. package/build/cjs/ocm/components/clusterWizard/OperatorsSelect.js.map +1 -1
  250. package/build/cjs/ocm/components/clusterWizard/OperatorsSelect.test.js +11 -5
  251. package/build/cjs/ocm/components/clusterWizard/OperatorsSelect.test.js.map +1 -1
  252. package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js +1 -1
  253. package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js.map +1 -1
  254. package/build/cjs/ocm/components/clusterWizard/OptionalOperatorsDropdown.js +34 -0
  255. package/build/cjs/ocm/components/clusterWizard/OptionalOperatorsDropdown.js.map +1 -0
  256. package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js +3 -3
  257. package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js.map +1 -1
  258. package/build/cjs/ocm/components/clusterWizard/wizardTransition.js +69 -29
  259. package/build/cjs/ocm/components/clusterWizard/wizardTransition.js.map +1 -1
  260. package/build/cjs/ocm/components/clusters/ClusterBreadcrumbs.js +2 -2
  261. package/build/cjs/ocm/components/clusters/ClusterBreadcrumbs.js.map +1 -1
  262. package/build/cjs/ocm/components/clusters/ClusterPage.js +4 -4
  263. package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
  264. package/build/cjs/ocm/components/clusters/Clusters.js +3 -3
  265. package/build/cjs/ocm/components/clusters/Clusters.js.map +1 -1
  266. package/build/cjs/ocm/components/clusters/ClustersListToolbar.js +5 -5
  267. package/build/cjs/ocm/components/clusters/ClustersListToolbar.js.map +1 -1
  268. package/build/cjs/ocm/components/clusters/ClustersTable.js +4 -3
  269. package/build/cjs/ocm/components/clusters/ClustersTable.js.map +1 -1
  270. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +1 -1
  271. package/build/cjs/ocm/components/ui/Buttons/BackButton.js +2 -2
  272. package/build/cjs/ocm/components/ui/Buttons/BackButton.js.map +1 -1
  273. package/build/cjs/ocm/hooks/useInfraEnvId.js +2 -2
  274. package/build/cjs/ocm/hooks/useInfraEnvId.js.map +1 -1
  275. package/build/cjs/ocm/hooks/useLateBinding.js +41 -26
  276. package/build/cjs/ocm/hooks/useLateBinding.js.map +1 -1
  277. package/build/cjs/ocm/hooks/usePullSecret.js +2 -2
  278. package/build/cjs/ocm/services/InfraEnvsService.js +4 -1
  279. package/build/cjs/ocm/services/InfraEnvsService.js.map +1 -1
  280. package/build/cjs/ocm/store/slices/clusters/selectors.js +2 -2
  281. package/build/cjs/ocm/store/slices/clusters/selectors.js.map +1 -1
  282. package/build/cjs/ocm/store/slices/feature-flags/selectors.js.map +1 -1
  283. package/build/cjs/ocm/store/slices/infra-envs/selectors.js.map +1 -1
  284. package/lib/cim/components/Agent/NoAgentsAlert.tsx +1 -1
  285. package/lib/cim/components/Agent/tableColumns.tsx +1 -1
  286. package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizard.tsx +10 -2
  287. package/lib/cim/components/ClusterDeployment/clusterDetails/ACMClusterDeploymentDetailsStep.tsx +3 -1
  288. package/lib/cim/components/ClusterDeployment/clusterDetails/ClusterDeploymentDetailsStep.tsx +5 -86
  289. package/lib/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.tsx +1 -12
  290. package/lib/cim/components/ClusterDeployment/clusterDetails/useDetailsFormik.tsx +97 -0
  291. package/lib/cim/components/ClusterDeployment/review/ClusterDeploymentReviewStep.tsx +18 -14
  292. package/lib/cim/components/ClusterDeployment/types.ts +0 -1
  293. package/lib/cim/components/ClusterDeployment/wizardTransition.ts +5 -1
  294. package/lib/cim/components/Hypershift/DetailsPage/NodePoolsTable.tsx +1 -1
  295. package/lib/cim/components/InfraEnv/AddHostDropdown.tsx +1 -1
  296. package/lib/cim/components/common/CpuArchitectureDropdown.tsx +2 -1
  297. package/lib/cim/components/helpers/clusterDeployment.ts +9 -4
  298. package/lib/cim/components/modals/CimConfiguration/CimConfigProgressAlert.tsx +2 -2
  299. package/lib/cim/components/modals/CimConfiguration/CimConfigurationFormFields.tsx +1 -1
  300. package/lib/cim/components/modals/CimConfiguration/CimConfigurationModal.tsx +2 -2
  301. package/lib/cim/components/modals/CimConfiguration/CimStorageMissingAlert.tsx +5 -2
  302. package/lib/cim/components/modals/CimConfiguration/constants.ts +1 -1
  303. package/lib/cim/components/modals/MassDeleteAgentModal.tsx +1 -1
  304. package/lib/cim/hooks/index.tsx +1 -0
  305. package/lib/cim/hooks/useAgents.tsx +15 -0
  306. package/lib/common/components/clusterConfiguration/DiskEncryptionFields/DiskEncryptionControlGroup.tsx +18 -8
  307. package/lib/common/components/clusterConfiguration/ExternalPlatformsDropdown.tsx +3 -1
  308. package/lib/common/components/clusterConfiguration/utils.test.ts +43 -1
  309. package/lib/common/components/clusterConfiguration/utils.ts +13 -0
  310. package/lib/common/components/clusterDetail/ClusterCredentials.tsx +49 -53
  311. package/lib/common/components/clusterDetail/ConsoleModal.tsx +0 -35
  312. package/lib/common/components/clusterWizard/ReviewValidations.tsx +24 -0
  313. package/lib/common/components/clusterWizard/clusterDetailsValidation.ts +38 -12
  314. package/lib/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.tsx +31 -57
  315. package/lib/common/components/clusterWizard/networkingSteps/ManagedNetworkingControlGroup.tsx +3 -3
  316. package/lib/common/components/clusterWizard/networkingSteps/StackTypeControlGroup.tsx +33 -38
  317. package/lib/common/components/clusterWizard/validationsInfoUtils.ts +0 -20
  318. package/lib/common/components/hosts/utils.ts +8 -1
  319. package/lib/common/config/constants.ts +4 -0
  320. package/lib/common/selectors/clusterSelectors.ts +9 -9
  321. package/lib/common/types/clusters.ts +3 -1
  322. package/lib/common/validationSchemas/addressValidation.tsx +2 -2
  323. package/lib/ocm/components/Routes.tsx +2 -2
  324. package/lib/ocm/components/clusterConfiguration/DiscoveryImageForm.tsx +11 -2
  325. package/lib/ocm/components/clusterConfiguration/DiscoveryImageModal.tsx +13 -3
  326. package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +9 -1
  327. package/lib/ocm/components/clusterConfiguration/OcmClusterProgressItems.tsx +2 -2
  328. package/lib/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.tsx +1 -1
  329. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/CustomManifestsPage.tsx +8 -1
  330. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.tsx +3 -1
  331. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/utils.tsx +12 -6
  332. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +86 -22
  333. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +2 -2
  334. package/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts +57 -20
  335. package/lib/ocm/components/clusterConfiguration/operators/OperatorCheckbox.tsx +48 -34
  336. package/lib/ocm/components/clusterConfiguration/operators/bundleSpecs.tsx +2 -3
  337. package/lib/ocm/components/clusterConfiguration/operators/utils.tsx +6 -37
  338. package/lib/ocm/components/clusterConfiguration/review/ReviewNetworkingTable.tsx +4 -2
  339. package/lib/ocm/components/clusterConfiguration/review/ReviewOperatorsTable.tsx +114 -24
  340. package/lib/ocm/components/clusterConfiguration/review/ReviewSummary.tsx +1 -4
  341. package/lib/ocm/components/clusterConfiguration/review/TableSummaryExpandable.css +3 -0
  342. package/lib/ocm/components/clusterConfiguration/review/TableSummaryExpandable.tsx +1 -1
  343. package/lib/ocm/components/clusterConfiguration/review/utils.test.ts +41 -0
  344. package/lib/ocm/components/clusterConfiguration/review/utils.tsx +6 -3
  345. package/lib/ocm/components/clusterConfiguration/staticIp/components/StaticIpForm.tsx +10 -1
  346. package/lib/ocm/components/clusterConfiguration/staticIp/components/StaticIpPage.tsx +9 -6
  347. package/lib/ocm/components/clusterConfiguration/staticIp/data/formDataToInfraEnvField.ts +2 -0
  348. package/lib/ocm/components/clusterConfiguration/staticIp/data/nmstateTypes.ts +1 -0
  349. package/lib/ocm/components/clusterConfiguration/staticIp/data/nmstateYaml.ts +2 -0
  350. package/lib/ocm/components/clusterDetail/AssistedInstallerDetailCard.tsx +1 -1
  351. package/lib/ocm/components/clusterDetail/ClusterDetail.tsx +3 -3
  352. package/lib/ocm/components/clusterDetail/ClusterDetailsButtonGroup.tsx +27 -2
  353. package/lib/ocm/components/clusterWizard/ClusterDetails.tsx +4 -16
  354. package/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx +1 -1
  355. package/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx +6 -14
  356. package/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx +1 -1
  357. package/lib/ocm/components/clusterWizard/NewClusterWizard.tsx +7 -3
  358. package/lib/ocm/components/clusterWizard/Operators.tsx +47 -12
  359. package/lib/ocm/components/clusterWizard/OperatorsBundle.tsx +72 -26
  360. package/lib/ocm/components/clusterWizard/OperatorsSelect.test.ts +11 -5
  361. package/lib/ocm/components/clusterWizard/OperatorsSelect.tsx +21 -4
  362. package/lib/ocm/components/clusterWizard/OperatorsStep.tsx +1 -1
  363. package/lib/ocm/components/clusterWizard/OptionalOperatorsDropdown.tsx +106 -0
  364. package/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx +2 -2
  365. package/lib/ocm/components/clusterWizard/wizardTransition.ts +92 -37
  366. package/lib/ocm/components/clusters/ClusterBreadcrumbs.tsx +1 -1
  367. package/lib/ocm/components/clusters/ClusterPage.tsx +1 -1
  368. package/lib/ocm/components/clusters/Clusters.tsx +2 -2
  369. package/lib/ocm/components/clusters/ClustersListToolbar.tsx +5 -7
  370. package/lib/ocm/components/clusters/ClustersTable.tsx +60 -50
  371. package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +1 -1
  372. package/lib/ocm/components/ui/Buttons/BackButton.tsx +1 -1
  373. package/lib/ocm/hooks/useInfraEnvId.ts +2 -2
  374. package/lib/ocm/hooks/useLateBinding.ts +45 -24
  375. package/lib/ocm/hooks/usePullSecret.ts +2 -2
  376. package/lib/ocm/services/InfraEnvsService.ts +4 -1
  377. package/lib/ocm/store/slices/clusters/selectors.tsx +7 -5
  378. package/lib/ocm/store/slices/feature-flags/selectors.ts +5 -2
  379. package/lib/ocm/store/slices/infra-envs/selectors.ts +4 -2
  380. package/package.json +17 -17
  381. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageModal.css +0 -3
  382. package/lib/ocm/components/clusterConfiguration/DiscoveryImageModal.css +0 -3
@@ -86,7 +86,7 @@ const CpuArchitectureDropdown = ({
86
86
  id={fieldId}
87
87
  ref={toggleRef}
88
88
  onClick={() => setCpuArchOpen(!cpuArchOpen)}
89
- className="pf-v6-u-w-100"
89
+ isFullWidth
90
90
  >
91
91
  {value ? architectureData[value].label : t('ai:CPU architecture')}
92
92
  </MenuToggle>
@@ -94,6 +94,7 @@ const CpuArchitectureDropdown = ({
94
94
  isOpen={cpuArchOpen}
95
95
  onSelect={onCpuArchSelect}
96
96
  onOpenChange={() => setCpuArchOpen(!cpuArchOpen)}
97
+ shouldFocusToggleOnSelect
97
98
  >
98
99
  {dropdownItems}
99
100
  </Dropdown>
@@ -172,6 +172,11 @@ export const getClusterProperties = (
172
172
  const serviceNetworks = agentClusterInstall.spec?.networking?.serviceNetwork;
173
173
  const clusterNetworks = agentClusterInstall.spec?.networking?.clusterNetwork;
174
174
 
175
+ const apiIPs = agentClusterInstall.spec?.apiVIPs || [agentClusterInstall.spec?.apiVIP];
176
+ const ingressIPs = agentClusterInstall.spec?.ingressVIPs || [
177
+ agentClusterInstall.spec?.ingressVIP,
178
+ ];
179
+
175
180
  return {
176
181
  // TODO: we should translate following keys since they are used "as it is" in AcmDescriptionList.tsx / List component of the stolostron project
177
182
  name: {
@@ -191,12 +196,12 @@ export const getClusterProperties = (
191
196
  value: clusterDeployment.spec?.baseDomain,
192
197
  },
193
198
  apiVip: {
194
- key: 'API IP',
195
- value: agentClusterInstall?.spec?.apiVIP,
199
+ key: apiIPs.length > 1 ? 'API IPs' : 'API IP',
200
+ value: apiIPs.join(', '),
196
201
  },
197
202
  ingressVip: {
198
- key: 'Ingress IP',
199
- value: agentClusterInstall?.spec?.ingressVIP,
203
+ key: ingressIPs.length > 1 ? 'Ingress IPs' : 'Ingress IP',
204
+ value: ingressIPs.join(', '),
200
205
  },
201
206
  clusterNetworkCidr: {
202
207
  key: (clusterNetworks?.length || 0) > 1 ? 'Cluster network CIDRs' : 'Cluster network CIDR',
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { useNavigate } from 'react-router-dom-v5-compat';
2
+ import { useNavigate } from 'react-router';
3
3
  import {
4
4
  Alert,
5
5
  AlertVariant,
@@ -69,7 +69,7 @@ export const CimConfigProgressAlert: React.FC<CimConfigProgressAlertProps> = ({
69
69
  variant={ButtonVariant.link}
70
70
  isInline
71
71
  key="assisted-service-deployment"
72
- onClick={() => navigate(assistedServiceDeploymentUrl)}
72
+ onClick={() => void navigate(assistedServiceDeploymentUrl)}
73
73
  >
74
74
  {t('ai:Troubleshoot in the assisted service deployment')}
75
75
  </Button>
@@ -161,7 +161,7 @@ export const CimConfigurationFormFields = ({
161
161
  <PopoverIcon
162
162
  noVerticalAlign
163
163
  bodyContent={t(
164
- 'ai:Specify how much storage to allocate for the images of the clusters. There must be 1G of image storage for each instance of Red Hat Enterprise Linux CoreOS that is running. Recommended is 50Gi or more. The value can not be updated later.',
164
+ 'ai:Specify how much storage to allocate for the images of the clusters. There must be 1G of image storage for each instance of Red Hat Enterprise Linux CoreOS that is running. Recommended is 100Gi or more. The value can not be updated later.',
165
165
  )}
166
166
  aria-label={t('ai:More info for image storage')}
167
167
  >
@@ -118,7 +118,7 @@ export const CimConfigurationModal: React.FC<CimConfigurationModalProps> = ({
118
118
  agentServiceConfig?.spec?.filesystemStorage?.resources?.requests?.storage,
119
119
  ),
120
120
  imgVolSize: getStorageSizeGiB(
121
- 50,
121
+ 100,
122
122
  agentServiceConfig?.spec?.imageStorage?.resources?.requests?.storage,
123
123
  ),
124
124
  configureLoadBalancer: platform === 'AWS',
@@ -134,7 +134,7 @@ export const CimConfigurationModal: React.FC<CimConfigurationModalProps> = ({
134
134
  .min(MIN_FS_VOL_SIZE, t('ai:Minimal value is 1Gi'))
135
135
  .required(t('ai:Required field')),
136
136
  imgVolSize: Yup.number()
137
- .min(MIN_IMG_VOL_SIZE, t('ai:Minimal value is 10Gi'))
137
+ .min(MIN_IMG_VOL_SIZE, t('ai:Minimal value is 50Gi'))
138
138
  .required(t('ai:Required field')),
139
139
  configureLoadBalancer: Yup.boolean(),
140
140
  addCiscoIntersightURL: Yup.boolean(),
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { useNavigate } from 'react-router-dom-v5-compat';
2
+ import { useNavigate } from 'react-router';
3
3
  import { Alert, AlertActionLink, AlertVariant } from '@patternfly/react-core';
4
4
  import { ExternalLinkAltIcon } from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
5
5
 
@@ -20,7 +20,10 @@ export const CimStorageMissingAlert: React.FC<{
20
20
  );
21
21
 
22
22
  const actionLinks: React.ReactNode[] = [
23
- <AlertActionLink key="install-storage-operator" onClick={() => navigate(storageOperatorUrl)}>
23
+ <AlertActionLink
24
+ key="install-storage-operator"
25
+ onClick={() => void navigate(storageOperatorUrl)}
26
+ >
24
27
  {t('ai:Install storage operator')}
25
28
  </AlertActionLink>,
26
29
  <AlertActionLink key="storage-class" onClick={() => window.open(docStorageUrl, '_blank')}>
@@ -1,5 +1,5 @@
1
1
  export const MIN_DB_VOL_SIZE = 1; // In Gi
2
2
  export const MIN_FS_VOL_SIZE = 1;
3
- export const MIN_IMG_VOL_SIZE = 10;
3
+ export const MIN_IMG_VOL_SIZE = 50;
4
4
 
5
5
  export const CIM_CONFIG_TIMEOUT = 5 * 60 * 1000; // in ms
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { TFunction } from 'i18next';
3
3
  import { Button, Flex, FlexItem, Icon, Popover } from '@patternfly/react-core';
4
4
  import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
5
- import { Link } from 'react-router-dom-v5-compat';
5
+ import { Link } from 'react-router';
6
6
 
7
7
  import { Host } from '@openshift-assisted/types/assisted-installer-service';
8
8
  import {
@@ -1,3 +1,4 @@
1
1
  export * from './useConfigMaps';
2
2
  export * from './useAgentServiceConfig';
3
3
  export * from './useEvents';
4
+ export * from './useAgents';
@@ -0,0 +1,15 @@
1
+ import { useK8sWatchResource } from './useK8sWatchResource';
2
+ import { AgentK8sResource } from '../types';
3
+ import { K8sWatchHookProps } from './types';
4
+
5
+ export const useAgents = (props: K8sWatchHookProps) =>
6
+ useK8sWatchResource<AgentK8sResource[]>(
7
+ {
8
+ groupVersionKind: {
9
+ group: 'agent-install.openshift.io',
10
+ kind: 'Agent',
11
+ version: 'v1beta1',
12
+ },
13
+ },
14
+ props,
15
+ );
@@ -29,6 +29,7 @@ const hasFilledTangServers = (tangServers: TangServer[]): boolean => {
29
29
  export interface DiskEncryptionControlGroupProps {
30
30
  values: DiskEncryptionValues;
31
31
  isSNO: boolean;
32
+ isArbiterEncryptionAvailable?: boolean;
32
33
  isDisabled?: boolean;
33
34
  docVersion?: string;
34
35
  }
@@ -36,6 +37,7 @@ export interface DiskEncryptionControlGroupProps {
36
37
  const DiskEncryptionControlGroup = ({
37
38
  values,
38
39
  isSNO = false,
40
+ isArbiterEncryptionAvailable = true,
39
41
  isDisabled = false,
40
42
  docVersion,
41
43
  }: DiskEncryptionControlGroupProps) => {
@@ -77,6 +79,12 @@ const DiskEncryptionControlGroup = ({
77
79
  setFieldValue('enableDiskEncryptionOnWorkers', false);
78
80
  }
79
81
  }, [isSNO, setFieldValue]);
82
+
83
+ React.useEffect(() => {
84
+ if (!isArbiterEncryptionAvailable) {
85
+ setFieldValue('enableDiskEncryptionOnArbiters', false);
86
+ }
87
+ }, [isArbiterEncryptionAvailable, setFieldValue]);
80
88
  const { t } = useTranslation();
81
89
  const disableMessage = t('ai:This option is not editable after the draft cluster is created');
82
90
  const tooltipProps = {
@@ -105,14 +113,16 @@ const DiskEncryptionControlGroup = ({
105
113
  />
106
114
  </StackItem>
107
115
  </RenderIf>
108
- <StackItem>
109
- <SwitchField
110
- tooltipProps={tooltipProps}
111
- name="enableDiskEncryptionOnArbiters"
112
- label={t('ai:Arbiter')}
113
- isDisabled={isDisabled}
114
- />
115
- </StackItem>
116
+ <RenderIf condition={isArbiterEncryptionAvailable}>
117
+ <StackItem>
118
+ <SwitchField
119
+ tooltipProps={tooltipProps}
120
+ name="enableDiskEncryptionOnArbiters"
121
+ label={t('ai:Arbiter')}
122
+ isDisabled={isDisabled}
123
+ />
124
+ </StackItem>
125
+ </RenderIf>
116
126
  <RenderIf
117
127
  condition={
118
128
  enableDiskEncryptionOnMasters ||
@@ -75,11 +75,13 @@ export const ExternalPlatformsDropdown = ({ isDisabled }: { isDisabled: boolean
75
75
  <Dropdown
76
76
  isOpen={isOpen}
77
77
  toggle={(toggleRef) => (
78
- <MenuToggle ref={toggleRef} className="pf-v5-u-w-100" onClick={() => setIsOpen(!isOpen)}>
78
+ <MenuToggle ref={toggleRef} onClick={() => setIsOpen(!isOpen)} isFullWidth>
79
79
  {value ? platforms[value] : t('ai:Integrate with external partner platforms')}
80
80
  </MenuToggle>
81
81
  )}
82
82
  onSelect={onSelect}
83
+ onOpenChange={() => setIsOpen(!isOpen)}
84
+ shouldFocusToggleOnSelect
83
85
  >
84
86
  {options}
85
87
  </Dropdown>
@@ -1,5 +1,5 @@
1
1
  import { test, describe, expect } from 'vitest';
2
- import { isDualStack } from './utils';
2
+ import { isDualStack, getIPv6FromDualstack } from './utils';
3
3
  import {
4
4
  MachineNetwork,
5
5
  ClusterNetwork,
@@ -273,3 +273,45 @@ describe('isDualStack', () => {
273
273
  });
274
274
  });
275
275
  });
276
+
277
+ describe('getIPv6FromDualstack', () => {
278
+ test('returns the IPv6 entry from a dualstack array', () => {
279
+ const networks = [
280
+ { cidr: '10.128.0.0/14', hostPrefix: 23, clusterId: 'test' },
281
+ { cidr: 'fd01::/48', hostPrefix: 64, clusterId: 'test' },
282
+ ];
283
+ const result = getIPv6FromDualstack(networks);
284
+ expect(result).toEqual({ cidr: 'fd01::/48', hostPrefix: 64, clusterId: 'test' });
285
+ });
286
+
287
+ test('returns the IPv6 entry when IPv6 is first', () => {
288
+ const networks = [
289
+ { cidr: 'fd01::/48', hostPrefix: 64, clusterId: 'test' },
290
+ { cidr: '10.128.0.0/14', hostPrefix: 23, clusterId: 'test' },
291
+ ];
292
+ const result = getIPv6FromDualstack(networks);
293
+ expect(result).toEqual({ cidr: 'fd01::/48', hostPrefix: 64, clusterId: 'test' });
294
+ });
295
+
296
+ test('returns undefined when no IPv6 entry is present', () => {
297
+ const networks = [{ cidr: '10.128.0.0/14', hostPrefix: 23, clusterId: 'test' }];
298
+ expect(getIPv6FromDualstack(networks)).toBeUndefined();
299
+ });
300
+
301
+ test('returns undefined for an empty array', () => {
302
+ expect(getIPv6FromDualstack([])).toBeUndefined();
303
+ });
304
+
305
+ test('returns undefined for undefined input', () => {
306
+ expect(getIPv6FromDualstack(undefined)).toBeUndefined();
307
+ });
308
+
309
+ test('works with service networks (no hostPrefix)', () => {
310
+ const networks = [
311
+ { cidr: '172.30.0.0/16', clusterId: 'test' },
312
+ { cidr: 'fd02::/112', clusterId: 'test' },
313
+ ];
314
+ const result = getIPv6FromDualstack(networks);
315
+ expect(result).toEqual({ cidr: 'fd02::/112', clusterId: 'test' });
316
+ });
317
+ });
@@ -188,6 +188,19 @@ export const canBeDualStack = (subnets: HostSubnets) =>
188
188
  subnets.some((subnet) => Address4.isValid(subnet.subnet)) &&
189
189
  subnets.some((subnet) => Address6.isValid(subnet.subnet));
190
190
 
191
+ export const isPrimaryIPv6 = (machineNetworks: MachineNetwork[] | undefined): boolean => {
192
+ const cidr = machineNetworks?.[0]?.cidr;
193
+ return !!cidr && Address6.isValid(cidr);
194
+ };
195
+
196
+ /**
197
+ * Find the IPv6 entry in a dualstack network array.
198
+ * Dualstack arrays contain one IPv4 and one IPv6 entry; this helper returns the IPv6 one.
199
+ */
200
+ export const getIPv6FromDualstack = <T extends { cidr?: string }>(
201
+ networks: T[] | undefined,
202
+ ): T | undefined => networks?.find((n) => n.cidr && Address6.isValid(n.cidr));
203
+
191
204
  const areNetworksDualStack = (
192
205
  networks: (MachineNetwork | ClusterNetwork | ServiceNetwork)[] | undefined,
193
206
  openshiftVersion?: string,
@@ -1,17 +1,9 @@
1
1
  import React from 'react';
2
- import {
3
- GridItem,
4
- ClipboardCopy,
5
- clipboardCopyFunc,
6
- Button,
7
- Alert,
8
- TextInput,
9
- } from '@patternfly/react-core';
2
+ import { GridItem, ClipboardCopy, clipboardCopyFunc, Alert } from '@patternfly/react-core';
10
3
  import { Credentials, Cluster } from '@openshift-assisted/types/assisted-installer-service';
11
4
  import { LoadingState, ErrorState } from '../../components/ui/uiState';
12
5
  import { DetailList, DetailItem } from '../../components/ui/DetailList';
13
6
  import { TroubleshootingOpenshiftConsoleButton } from './ConsoleModal';
14
- import { ExternalLinkAltIcon } from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
15
7
  import { useTranslation } from '../../hooks/use-translation-wrapper';
16
8
 
17
9
  type ClusterCredentialsProps = {
@@ -74,55 +66,59 @@ const ClusterCredentials: React.FC<ClusterCredentialsProps> = ({
74
66
  const consoleUrl = credentials.consoleUrl
75
67
  ? getConsoleUrl(credentials.consoleUrl, isMceEnabled)
76
68
  : '';
69
+ const hasVips = Boolean(cluster.apiVips?.length && cluster.ingressVips?.length);
77
70
  credentialsBody = (
78
- <DetailList>
79
- {credentials.consoleUrl && (
80
- <DetailItem
81
- title={t('ai:Web Console URL')}
82
- value={
83
- <>
84
- <Button
85
- variant="link"
86
- icon={<ExternalLinkAltIcon />}
87
- iconPosition="right"
88
- isInline
89
- onClick={() => window.open(consoleUrl, '_blank', 'noopener')}
90
- data-testid={`${idPrefix}-link-console-url`}
91
- >
92
- {consoleUrl}
93
- </Button>
94
- <br />
95
- {!!cluster.apiVips && !!cluster.ingressVips && (
96
- <TroubleshootingOpenshiftConsoleButton
97
- consoleUrl={consoleUrl}
98
- cluster={cluster}
99
- idPrefix={idPrefix}
100
- />
101
- )}
102
- </>
103
- }
104
- />
105
- )}
106
- {credentials.username && (
107
- <>
71
+ <>
72
+ <DetailList>
73
+ {credentials.consoleUrl && (
108
74
  <DetailItem
109
- title={t('ai:Username')}
110
- value={<TextInput value={credentials.username} readOnlyVariant="default" />}
111
- />
112
- <DetailItem
113
- title={t('ai:Password')}
75
+ title={t('ai:Web Console URL')}
114
76
  value={
115
- <ClipboardCopy
116
- isReadOnly
117
- onCopy={(event) => clipboardCopyFunc(event, credentials.password)}
118
- >
119
- &bull;&bull;&bull;&bull;&bull;
120
- </ClipboardCopy>
77
+ <>
78
+ <ClipboardCopy
79
+ isReadOnly
80
+ className="pf-v6-u-my-sm"
81
+ data-testid={`${idPrefix}-link-console-url`}
82
+ >
83
+ {consoleUrl}
84
+ </ClipboardCopy>
85
+ {hasVips && (
86
+ <TroubleshootingOpenshiftConsoleButton
87
+ consoleUrl={consoleUrl}
88
+ cluster={cluster}
89
+ idPrefix={idPrefix}
90
+ />
91
+ )}
92
+ </>
121
93
  }
122
94
  />
123
- </>
124
- )}
125
- </DetailList>
95
+ )}
96
+ {credentials.username && (
97
+ <>
98
+ <DetailItem
99
+ title={t('ai:Username')}
100
+ value={
101
+ <ClipboardCopy isReadOnly className="pf-v6-u-my-sm">
102
+ {credentials.username}
103
+ </ClipboardCopy>
104
+ }
105
+ />
106
+ <DetailItem
107
+ title={t('ai:Password')}
108
+ value={
109
+ <ClipboardCopy
110
+ isReadOnly
111
+ className="pf-v6-u-my-sm"
112
+ onCopy={(event) => clipboardCopyFunc(event, credentials.password)}
113
+ >
114
+ &bull;&bull;&bull;&bull;&bull;
115
+ </ClipboardCopy>
116
+ }
117
+ />
118
+ </>
119
+ )}
120
+ </DetailList>
121
+ </>
126
122
  );
127
123
  }
128
124
 
@@ -12,7 +12,6 @@ import {
12
12
  } from '@patternfly/react-core';
13
13
  import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
14
14
  import { removeProtocolFromURL } from '../../api';
15
- import { ToolbarButton } from '../ui/Toolbar';
16
15
  import PrismCode from '../ui/PrismCode';
17
16
  import { useTranslation } from '../../hooks/use-translation-wrapper';
18
17
  import { selectApiVip, selectIngressVip } from '../../selectors';
@@ -24,11 +23,6 @@ type WebConsoleHintProps = {
24
23
  idPrefix?: string;
25
24
  };
26
25
 
27
- type LaunchOpenshiftConsoleButtonProps = WebConsoleHintProps & {
28
- isDisabled: boolean;
29
- id?: string;
30
- };
31
-
32
26
  type ConsoleModalProps = WebConsoleHintProps & {
33
27
  closeModal: () => void;
34
28
  isOpen: boolean;
@@ -103,35 +97,6 @@ export const WebConsoleHint: React.FC<WebConsoleHintProps> = ({ cluster, console
103
97
  );
104
98
  };
105
99
 
106
- export const LaunchOpenshiftConsoleButton: React.FC<LaunchOpenshiftConsoleButtonProps> = ({
107
- cluster,
108
- consoleUrl,
109
- isDisabled,
110
- id,
111
- }) => {
112
- const [isOpen, setOpen] = React.useState(false);
113
- const { t } = useTranslation();
114
- return (
115
- <>
116
- <ToolbarButton
117
- type="button"
118
- variant={ButtonVariant.primary}
119
- isDisabled={isDisabled}
120
- onClick={() => setOpen(true)}
121
- data-testid={id}
122
- >
123
- {t('ai:Launch OpenShift Console')}
124
- </ToolbarButton>
125
- <ConsoleModal
126
- closeModal={() => setOpen(false)}
127
- consoleUrl={consoleUrl}
128
- cluster={cluster}
129
- isOpen={isOpen}
130
- />
131
- </>
132
- );
133
- };
134
-
135
100
  export const TroubleshootingOpenshiftConsoleButton: React.FC<WebConsoleHintProps> = ({
136
101
  cluster,
137
102
  consoleUrl,
@@ -47,6 +47,20 @@ const PendingValidations = ({ id, count }: { id: string; count: number }) => {
47
47
  return <div id={id}>{t('ai:There is still {{count}} pending check', { count: count })}</div>;
48
48
  };
49
49
 
50
+ const InformationalValidation = ({ validation }: { validation: ClusterValidation }) => {
51
+ const { t } = useTranslation();
52
+ const label = clusterValidationLabels(t)[validation.id] || validation.id || '';
53
+
54
+ return (
55
+ <div id={`info-validation-${validation.id}`}>
56
+ <Icon status="success">
57
+ <CheckCircleIcon />
58
+ </Icon>{' '}
59
+ {label}. {validation.message}
60
+ </div>
61
+ );
62
+ };
63
+
50
64
  const ValidationActionLink = <S extends string>({
51
65
  step,
52
66
  setCurrentStepId,
@@ -173,6 +187,16 @@ export const ClusterValidations = <S extends string>({
173
187
  />,
174
188
  );
175
189
  }
190
+
191
+ if (
192
+ validation.status === 'success' &&
193
+ validation.id === 'openshift-ai-gpu-requirements-satisfied' &&
194
+ validation.message
195
+ ) {
196
+ failingValidations.push(
197
+ <InformationalValidation key={`info-${validation.id}`} validation={validation} />,
198
+ );
199
+ }
176
200
  };
177
201
 
178
202
  validationsInfo[group]?.forEach(addFailingValidation);
@@ -38,6 +38,38 @@ export const parseTangServers = (tangServersString?: string): TangServer[] => {
38
38
  return emptyTangServers();
39
39
  };
40
40
 
41
+ const parseDiskEncryption = (diskEncryption: Cluster['diskEncryption']) => {
42
+ const enableOn = {
43
+ enableDiskEncryptionOnMasters: false,
44
+ enableDiskEncryptionOnWorkers: false,
45
+ enableDiskEncryptionOnArbiters: false,
46
+ };
47
+
48
+ if (diskEncryption?.enableOn === 'all') {
49
+ enableOn.enableDiskEncryptionOnMasters = true;
50
+ enableOn.enableDiskEncryptionOnWorkers = true;
51
+ enableOn.enableDiskEncryptionOnArbiters = true;
52
+ } else {
53
+ const types = diskEncryption?.enableOn?.split(',');
54
+
55
+ types?.forEach((type) => {
56
+ switch (type) {
57
+ case 'masters':
58
+ enableOn.enableDiskEncryptionOnMasters = true;
59
+ break;
60
+ case 'workers':
61
+ enableOn.enableDiskEncryptionOnWorkers = true;
62
+ break;
63
+ case 'arbiters':
64
+ enableOn.enableDiskEncryptionOnArbiters = true;
65
+ break;
66
+ }
67
+ });
68
+ }
69
+
70
+ return enableOn;
71
+ };
72
+
41
73
  export const getClusterDetailsInitialValues = ({
42
74
  cluster,
43
75
  pullSecret,
@@ -57,6 +89,7 @@ export const getClusterDetailsInitialValues = ({
57
89
  openshiftVersion = getDefaultOpenShiftVersion(ocpVersions),
58
90
  controlPlaneCount = 3,
59
91
  } = cluster || {};
92
+
60
93
  return {
61
94
  name,
62
95
  openshiftVersion,
@@ -65,22 +98,15 @@ export const getClusterDetailsInitialValues = ({
65
98
  controlPlaneCount,
66
99
  useRedHatDnsService:
67
100
  !!baseDnsDomain && managedDomains.map((d) => d.domain).includes(baseDnsDomain),
68
- enableDiskEncryptionOnMasters: ['all', 'masters'].includes(
69
- cluster?.diskEncryption?.enableOn ?? 'none',
70
- ),
71
- enableDiskEncryptionOnWorkers: ['all', 'workers'].includes(
72
- cluster?.diskEncryption?.enableOn ?? 'none',
73
- ),
74
- diskEncryptionMode: cluster?.diskEncryption?.mode ?? 'tpmv2',
75
- diskEncryptionTangServers: parseTangServers(cluster?.diskEncryption?.tangServers),
76
- diskEncryption: cluster?.diskEncryption ?? {},
77
101
  cpuArchitecture: cluster?.cpuArchitecture || getDefaultCpuArchitecture(),
78
102
  platform: cluster?.platform?.type || 'baremetal',
79
103
  customOpenshiftSelect: null,
80
104
  userManagedNetworking: cluster?.userManagedNetworking || false,
81
- enableDiskEncryptionOnArbiters: ['all', 'arbiters'].includes(
82
- cluster?.diskEncryption?.enableOn ?? 'none',
83
- ),
105
+
106
+ diskEncryptionMode: cluster?.diskEncryption?.mode ?? 'tpmv2',
107
+ diskEncryptionTangServers: parseTangServers(cluster?.diskEncryption?.tangServers),
108
+ diskEncryption: cluster?.diskEncryption ?? {},
109
+ ...parseDiskEncryption(cluster?.diskEncryption),
84
110
  };
85
111
  };
86
112