@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
@@ -1,17 +1,75 @@
1
1
  import React from 'react';
2
+ import { Title } from '@patternfly/react-core';
2
3
  import { Table, TableVariant, Tbody, Td, Tr } from '@patternfly/react-table';
3
- import { genericTableRowKey } from '../../../../common';
4
- import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
4
+ import { genericTableRowKey, selectAllOlmOperators } from '../../../../common';
5
+ import { useStateSafely } from '../../../../common/hooks';
6
+ import { Bundle, Cluster } from '@openshift-assisted/types/assisted-installer-service';
5
7
  import { TableSummaryExpandable } from './TableSummaryExpandable';
6
8
  import { useOperatorSpecs } from '../../../../common/components/operators/operatorSpecs';
9
+ import BundleService from '../../../services/BundleService';
10
+
11
+ const fetchBundles = async (
12
+ openshiftVersion: string,
13
+ cpuArchitecture: string,
14
+ platformType: string,
15
+ ): Promise<Bundle[]> => {
16
+ try {
17
+ return await BundleService.listBundles(
18
+ openshiftVersion,
19
+ cpuArchitecture,
20
+ platformType,
21
+ undefined,
22
+ );
23
+ } catch (_e) {
24
+ return [] as Bundle[];
25
+ }
26
+ };
7
27
 
8
28
  export const ReviewOperatorsTable = ({ cluster }: { cluster: Cluster }) => {
9
29
  const { byKey: opSpecs } = useOperatorSpecs();
30
+ const selectedBundles = cluster.operatorBundles || [];
31
+ const [bundleTitlesById, setBundleTitlesById] = useStateSafely<Record<string, string>>({});
32
+ const hasFetchedBundles = React.useRef(false);
33
+ const hasSelectedBundles = selectedBundles.length > 0;
34
+ React.useEffect(() => {
35
+ if (!hasFetchedBundles.current && hasSelectedBundles) {
36
+ hasFetchedBundles.current = true;
37
+ void (async () => {
38
+ const bundles = await fetchBundles(
39
+ cluster.openshiftVersion || '',
40
+ cluster.cpuArchitecture || '',
41
+ cluster.platform?.type || '',
42
+ );
43
+ const titlesById = Object.fromEntries(
44
+ bundles
45
+ .filter((bundle) => !!bundle.id && !!bundle.title)
46
+ .map((bundle) => [bundle.id, bundle.title]),
47
+ ) as Record<string, string>;
48
+ setBundleTitlesById(titlesById);
49
+ })();
50
+ }
51
+ }, [
52
+ cluster.cpuArchitecture,
53
+ cluster.openshiftVersion,
54
+ cluster.platform?.type,
55
+ hasSelectedBundles,
56
+ setBundleTitlesById,
57
+ ]);
58
+
59
+ const bundleRows = selectedBundles.map((bundle) => ({
60
+ rowId: `bundle-${bundle.id}`,
61
+ cells: [
62
+ {
63
+ title: bundleTitlesById[bundle.id] || bundle.id,
64
+ props: { 'data-testid': `bundle-${bundle.id}` },
65
+ },
66
+ ],
67
+ }));
10
68
 
11
69
  const rows = React.useMemo(
12
70
  () =>
13
- cluster.monitoredOperators
14
- ?.filter(({ name }) => !!name && !!opSpecs[name])
71
+ selectAllOlmOperators(cluster)
72
+ .filter(({ name }) => !!name && !!opSpecs[name])
15
73
  .map((op) => {
16
74
  const opId = op.name as string;
17
75
  return {
@@ -25,33 +83,65 @@ export const ReviewOperatorsTable = ({ cluster }: { cluster: Cluster }) => {
25
83
  ],
26
84
  };
27
85
  }),
28
- [cluster.monitoredOperators, opSpecs],
86
+ [cluster, opSpecs],
29
87
  );
30
88
 
31
- if (!rows?.length) {
89
+ if (!rows?.length && selectedBundles.length === 0) {
32
90
  return null;
33
91
  }
34
92
 
35
93
  return (
36
- <TableSummaryExpandable title={'Operators'} id={'operators-expandable'}>
37
- <Table
38
- variant={TableVariant.compact}
39
- borders={false}
40
- aria-label={'Operators review table'}
41
- className="review-table"
42
- >
43
- <Tbody>
44
- {rows.map((row, i) => (
45
- <Tr key={genericTableRowKey(row.rowId)}>
46
- {row.cells.map((cell, j) => (
47
- <Td key={`cell-${i}-${j}`} {...cell.props}>
48
- {cell.title}
49
- </Td>
94
+ <TableSummaryExpandable title={'Bundles and operators'} id={'operators-expandable'}>
95
+ {bundleRows.length > 0 && (
96
+ <>
97
+ <Title headingLevel="h4" size="md" className="pf-v6-u-mb-sm">
98
+ Bundles ({bundleRows.length})
99
+ </Title>
100
+ <Table
101
+ variant={TableVariant.compact}
102
+ borders={false}
103
+ aria-label={'Bundles review table'}
104
+ className="review-table pf-v6-u-mb-md"
105
+ >
106
+ <Tbody>
107
+ {bundleRows.map((row, i) => (
108
+ <Tr key={genericTableRowKey(row.rowId)}>
109
+ {row.cells.map((cell, j) => (
110
+ <Td key={`bundle-cell-${i}-${j}`} {...cell.props}>
111
+ {cell.title}
112
+ </Td>
113
+ ))}
114
+ </Tr>
115
+ ))}
116
+ </Tbody>
117
+ </Table>
118
+ </>
119
+ )}
120
+ {rows.length > 0 && (
121
+ <>
122
+ <Title headingLevel="h4" size="md" className="pf-v6-u-mb-sm">
123
+ Operators ({rows.length})
124
+ </Title>
125
+ <Table
126
+ variant={TableVariant.compact}
127
+ borders={false}
128
+ aria-label={'Operators review table'}
129
+ className="review-table"
130
+ >
131
+ <Tbody>
132
+ {rows.map((row, i) => (
133
+ <Tr key={genericTableRowKey(row.rowId)}>
134
+ {row.cells.map((cell, j) => (
135
+ <Td key={`cell-${i}-${j}`} {...cell.props}>
136
+ {cell.title}
137
+ </Td>
138
+ ))}
139
+ </Tr>
50
140
  ))}
51
- </Tr>
52
- ))}
53
- </Tbody>
54
- </Table>
141
+ </Tbody>
142
+ </Table>
143
+ </>
144
+ )}
55
145
  </TableSummaryExpandable>
56
146
  );
57
147
  };
@@ -19,10 +19,7 @@ import { ReviewCustomManifestsTable } from './ReviewCustomManifestsTable';
19
19
  import PlatformIntegrationNote from '../platformIntegration/PlatformIntegrationNote';
20
20
  import useClusterCustomManifests from '../../../hooks/useClusterCustomManifests';
21
21
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
22
- import { ListManifestsExtended } from '../manifestsConfiguration/data/dataTypes';
23
-
24
- const userProvidedManifests = (manifests: ListManifestsExtended | undefined) =>
25
- (manifests ?? []).filter((m) => m.manifestSource !== 'system');
22
+ import { userProvidedManifests } from '../manifestsConfiguration/components/utils';
26
23
 
27
24
  export const ReviewSummaryContent = ({ cluster }: { cluster: Cluster }) => {
28
25
  const { customManifests } = useClusterCustomManifests(cluster.id, false);
@@ -0,0 +1,3 @@
1
+ .pf-v6-c-expandable-section:not(.pf-m-expanded) {
2
+ --pf-v6-c-expandable-section__content--MaxHeight: 0;
3
+ }
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { ExpandableSection, Content } from '@patternfly/react-core';
3
+ import './TableSummaryExpandable.css';
3
4
 
4
5
  export const TableSummaryExpandable = ({
5
6
  title,
@@ -20,7 +21,6 @@ export const TableSummaryExpandable = ({
20
21
  id={id ? id : title}
21
22
  >
22
23
  {children}
23
- <br />
24
24
  </ExpandableSection>
25
25
  );
26
26
  };
@@ -169,6 +169,47 @@ describe('getStackTypeLabel', () => {
169
169
  });
170
170
  });
171
171
 
172
+ describe('with isSingleClusterFeature=true', () => {
173
+ test('returns "Single stack" for IPv4 single-stack cluster', () => {
174
+ const cluster = createCluster({
175
+ machineNetworks: [createMachineNetwork('192.168.1.0/24')],
176
+ clusterNetworks: [createClusterNetwork('10.128.0.0/14', 23)],
177
+ serviceNetworks: [createServiceNetwork('172.30.0.0/16')],
178
+ });
179
+
180
+ expect(getStackTypeLabel(cluster, true)).toBe('Single stack');
181
+ });
182
+
183
+ test('returns "Single stack" for IPv6 single-stack cluster', () => {
184
+ const cluster = createCluster({
185
+ machineNetworks: [createMachineNetwork('2001:db8::/64')],
186
+ clusterNetworks: [createClusterNetwork('fd01::/48', 64)],
187
+ serviceNetworks: [createServiceNetwork('fd02::/112')],
188
+ });
189
+
190
+ expect(getStackTypeLabel(cluster, true)).toBe('Single stack');
191
+ });
192
+
193
+ test('still returns "Dual-stack" for dual-stack cluster', () => {
194
+ const cluster = createCluster({
195
+ machineNetworks: [
196
+ createMachineNetwork('192.168.1.0/24'),
197
+ createMachineNetwork('2001:db8::/64'),
198
+ ],
199
+ clusterNetworks: [
200
+ createClusterNetwork('10.128.0.0/14', 23),
201
+ createClusterNetwork('fd01::/48', 64),
202
+ ],
203
+ serviceNetworks: [
204
+ createServiceNetwork('172.30.0.0/16'),
205
+ createServiceNetwork('fd02::/112'),
206
+ ],
207
+ });
208
+
209
+ expect(getStackTypeLabel(cluster, true)).toBe('Dual-stack');
210
+ });
211
+ });
212
+
172
213
  describe('edge cases', () => {
173
214
  test('handles undefined openshiftVersion', () => {
174
215
  const cluster = createCluster({
@@ -3,10 +3,13 @@ import { isDualStack } from '../../../../common';
3
3
  import { Cluster, DiskEncryption } from '@openshift-assisted/types/assisted-installer-service';
4
4
 
5
5
  export const getManagementType = ({ userManagedNetworking }: Cluster): string =>
6
- userManagedNetworking ? 'User-Managed networking' : 'Cluster-managed networking';
6
+ userManagedNetworking ? 'User-managed networking' : 'Cluster-managed networking';
7
7
 
8
- export const getStackTypeLabel = (cluster: Cluster): string =>
9
- isDualStack(cluster) ? 'Dual-stack' : 'IPv4';
8
+ export const getStackTypeLabel = (cluster: Cluster, isSingleClusterFeature = false): string => {
9
+ if (isDualStack(cluster)) return 'Dual-stack';
10
+ if (isSingleClusterFeature) return 'Single stack';
11
+ return 'IPv4';
12
+ };
10
13
 
11
14
  export const getDiskEncryptionEnabledOnStatus = (diskEncryption: DiskEncryption['enableOn']) => {
12
15
  let diskEncryptionType = null;
@@ -8,6 +8,8 @@ import { useErrorMonitor } from '../../../../../common/components/ErrorHandling/
8
8
  import { getApiErrorMessage } from '../../../../../common/api';
9
9
  import { StaticIpFormProps } from './propTypes';
10
10
  import { selectCurrentClusterPermissionsState } from '../../../../store/slices/current-cluster/selectors';
11
+ import { useFeature } from '../../../../hooks/use-feature';
12
+ import { getStaticNetworkConfig } from '../data/fromInfraEnv';
11
13
 
12
14
  /** Reports form state and triggers save on every value change (useFormikAutoSave) */
13
15
  const AutosaveWithParentUpdate = <StaticIpFormValues extends object>({
@@ -69,7 +71,14 @@ export const StaticIpForm = <StaticIpFormValues extends object>({
69
71
  const { clearAlerts, addAlert } = useAlerts();
70
72
  const { captureException } = useErrorMonitor();
71
73
  const { isViewerMode } = useSelector(selectCurrentClusterPermissionsState);
72
- const initialValues = showEmptyValues ? getEmptyValues() : getInitialValues(infraEnv);
74
+ const isSingleClusterFeatureEnabled = useFeature('ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE');
75
+ const prefillFromInfraEnv = isSingleClusterFeatureEnabled && !!getStaticNetworkConfig(infraEnv);
76
+ const initialValues = React.useMemo(() => {
77
+ if (showEmptyValues && !prefillFromInfraEnv) {
78
+ return getEmptyValues();
79
+ }
80
+ return getInitialValues(infraEnv);
81
+ }, [showEmptyValues, prefillFromInfraEnv, infraEnv, getInitialValues, getEmptyValues]);
73
82
 
74
83
  const handleSubmit = async (values: StaticIpFormValues) => {
75
84
  clearAlerts();
@@ -9,7 +9,8 @@ import {
9
9
  } from '@patternfly/react-core';
10
10
  import { StaticIpInfo, StaticIpView } from '../data/dataTypes';
11
11
  import StaticIpViewRadioGroup from './StaticIpViewRadioGroup';
12
- import { getStaticIpInfo } from '../data/fromInfraEnv';
12
+ import { getStaticIpInfo, getStaticNetworkConfig } from '../data/fromInfraEnv';
13
+ import { useFeature } from '../../../../hooks/use-feature';
13
14
  import { StaticIpFormState, StaticIpPageProps, StaticIpViewProps } from './propTypes';
14
15
  import { YamlView } from './YamlView/YamlView';
15
16
  import { useClusterWizardContext } from '../../../clusterWizard/ClusterWizardContext';
@@ -34,6 +35,8 @@ export const StaticIpPage: React.FC<StaticIpPageProps> = ({
34
35
  onFormStateChange: onFormStateChangeParent,
35
36
  }) => {
36
37
  const clusterWizardContext = useClusterWizardContext();
38
+ const isSingleClusterFeatureEnabled = useFeature('ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE');
39
+ const prefillFromInfraEnv = isSingleClusterFeatureEnabled && !!getStaticNetworkConfig(infraEnv);
37
40
  const [confirmOnChangeView, setConfirmOnChangeView] = React.useState<boolean>(false);
38
41
  const [viewChanged, setViewChanged] = React.useState<boolean>(false);
39
42
 
@@ -45,10 +48,10 @@ export const StaticIpPage: React.FC<StaticIpPageProps> = ({
45
48
  [clusterWizardContext],
46
49
  );
47
50
 
48
- const initialStaticIpInfo = React.useMemo<StaticIpInfo | undefined>(() => {
49
- return getStaticIpInfo(infraEnv);
50
- // eslint-disable-next-line react-hooks/exhaustive-deps
51
- }, []);
51
+ const initialStaticIpInfo = React.useMemo<StaticIpInfo | undefined>(
52
+ () => getStaticIpInfo(infraEnv),
53
+ [infraEnv],
54
+ );
52
55
 
53
56
  const onFormStateChange = React.useCallback(
54
57
  (formState: StaticIpFormState) => {
@@ -65,7 +68,7 @@ export const StaticIpPage: React.FC<StaticIpPageProps> = ({
65
68
  onFormStateChange,
66
69
  infraEnv,
67
70
  updateInfraEnv,
68
- showEmptyValues: viewChanged,
71
+ showEmptyValues: viewChanged && !prefillFromInfraEnv,
69
72
  };
70
73
 
71
74
  const content = (() => {
@@ -73,6 +73,7 @@ const getNmstateObject = (
73
73
  realProtocolConfigs[protocolVersion] = getNmstateProtocolConfig(
74
74
  hostIp,
75
75
  getPrefixLength(networkWide, protocolVersion),
76
+ protocolVersion,
76
77
  );
77
78
  if (networkWide.useVlan && networkWide.vlanId) {
78
79
  if (bondType && hasBondsConfigured) {
@@ -94,6 +95,7 @@ const getNmstateObject = (
94
95
  [protocolVersion]: getNmstateProtocolConfig(
95
96
  DUMMY_NMSTATE_ADDRESSES[protocolVersion].ip,
96
97
  DUMMY_NMSTATE_ADDRESSES[protocolVersion].prefixLength,
98
+ protocolVersion,
97
99
  ),
98
100
  };
99
101
  nicName = getDummyNicName(protocolVersion);
@@ -15,6 +15,7 @@ export type NmstateProtocolConfig = {
15
15
  address: NmstateAddress[];
16
16
  enabled: boolean;
17
17
  dhcp: boolean;
18
+ autoconf?: boolean;
18
19
  };
19
20
 
20
21
  export type NmstateProtocolConfigs = {
@@ -80,6 +80,7 @@ export const getProtocolType = (comments: string[]): StaticProtocolType | null =
80
80
  export const getNmstateProtocolConfig = (
81
81
  ipAddress: string,
82
82
  prefixLength: number,
83
+ protocolVersion?: ProtocolVersion,
83
84
  ): NmstateProtocolConfig => {
84
85
  return {
85
86
  address: [
@@ -90,6 +91,7 @@ export const getNmstateProtocolConfig = (
90
91
  ],
91
92
  enabled: true,
92
93
  dhcp: false,
94
+ ...(protocolVersion === ProtocolVersion.ipv6 && { autoconf: false }),
93
95
  };
94
96
  };
95
97
 
@@ -33,7 +33,7 @@ import {
33
33
  unstable_HistoryRouter as HistoryRouter,
34
34
  HistoryRouterProps,
35
35
  BrowserRouter,
36
- } from 'react-router-dom-v5-compat';
36
+ } from 'react-router';
37
37
 
38
38
  type AssistedInstallerDetailCardProps = {
39
39
  aiClusterId: string;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { useNavigate } from 'react-router-dom-v5-compat';
2
+ import { useNavigate } from 'react-router';
3
3
  import { Stack, StackItem, Content, ButtonVariant, GridItem, Grid } from '@patternfly/react-core';
4
4
  import { ToolbarButton, Alerts, getEnabledHosts, selectOlmOperators, isSNO } from '../../../common';
5
5
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
@@ -41,7 +41,7 @@ const ClusterDetail: React.FC<ClusterDetailProps> = ({ cluster }) => {
41
41
  try {
42
42
  const { data } = await ClustersAPI.allowAddHosts(cluster.id);
43
43
  updateCluster(data);
44
- navigate(`${routeBasePath}/clusters/${cluster.id}`);
44
+ void navigate(`${routeBasePath}/clusters/${cluster.id}`);
45
45
  } catch (e) {
46
46
  handleApiError(e);
47
47
  }
@@ -102,7 +102,7 @@ const ClusterDetail: React.FC<ClusterDetailProps> = ({ cluster }) => {
102
102
  {!isSingleClusterFeatureEnabled && (
103
103
  <ToolbarButton
104
104
  variant={ButtonVariant.link}
105
- onClick={() => navigate('..')}
105
+ onClick={() => void navigate('..')}
106
106
  id={getClusterDetailId('button-back-to-all-clusters')}
107
107
  >
108
108
  Back to all clusters
@@ -7,13 +7,15 @@ import {
7
7
  RenderIf,
8
8
  canOpenConsole,
9
9
  } from '../../../common';
10
+ import { ExternalLinkAltIcon } from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
10
11
  import { downloadClusterInstallationLogs } from './utils';
11
12
  import { useModalDialogsContext } from '../hosts/ModalDialogsContext';
12
13
  import { canAbortInstallation } from '../clusters/utils';
13
14
  import { onFetchEvents } from '../fetching/fetchEvents';
14
15
  import ViewClusterEventsButton from '../../../common/components/ui/ViewClusterEventsButton';
15
- import { LaunchOpenshiftConsoleButton } from '../../../common/components/clusterDetail/ConsoleModal';
16
+ import { ToolbarButton } from '../../../common/components/ui/Toolbar';
16
17
  import { Cluster, Credentials } from '@openshift-assisted/types/assisted-installer-service';
18
+ import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
17
19
 
18
20
  import './ClusterDetailsButtonGroup.css';
19
21
 
@@ -24,6 +26,30 @@ type ClusterDetailsButtonGroupProps = {
24
26
  showKubeConfig?: boolean;
25
27
  };
26
28
 
29
+ const LaunchOpenshiftConsoleButton: React.FC<{
30
+ consoleUrl?: string;
31
+ isDisabled: boolean;
32
+ id?: string;
33
+ }> = ({ consoleUrl, isDisabled, id }) => {
34
+ const { t } = useTranslation();
35
+ return (
36
+ <ToolbarButton
37
+ variant={ButtonVariant.primary}
38
+ component="a"
39
+ href={consoleUrl}
40
+ target="_blank"
41
+ rel="noopener"
42
+ isDisabled={isDisabled}
43
+ icon={<ExternalLinkAltIcon />}
44
+ iconPosition="right"
45
+ id={id}
46
+ data-testid={id}
47
+ >
48
+ {t('ai:Launch OpenShift Console')}
49
+ </ToolbarButton>
50
+ );
51
+ };
52
+
27
53
  const getID = (suffix: string) => `cluster-detail-${suffix}`;
28
54
 
29
55
  const ClusterDetailsButtonGroup: React.FC<ClusterDetailsButtonGroupProps> = ({
@@ -60,7 +86,6 @@ const ClusterDetailsButtonGroup: React.FC<ClusterDetailsButtonGroupProps> = ({
60
86
  <FlexItem>
61
87
  <LaunchOpenshiftConsoleButton
62
88
  isDisabled={false}
63
- cluster={cluster}
64
89
  consoleUrl={credentials?.consoleUrl}
65
90
  id={getID('button-launch-console')}
66
91
  />
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { useLocation, useNavigate } from 'react-router-dom-v5-compat';
2
+ import { useLocation, useNavigate } from 'react-router';
3
3
  import { useDispatch } from 'react-redux';
4
4
  import {
5
5
  useAlerts,
@@ -24,7 +24,6 @@ import {
24
24
  UISettingService,
25
25
  } from '../../services';
26
26
  import { Cluster, InfraEnv } from '@openshift-assisted/types/assisted-installer-service';
27
- import BundleService from '../../services/BundleService';
28
27
  import { useFeature } from '../../hooks/use-feature';
29
28
 
30
29
  type ClusterDetailsProps = {
@@ -80,28 +79,17 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
80
79
  try {
81
80
  const searchParams = new URLSearchParams(location.search);
82
81
  const isAssistedMigration = searchParams.get('source') === 'assisted_migration';
83
- //For Assisted Migration we need the LVMs operator and also the virtualization bundle operators
82
+ // For Assisted Migration we need LVM as standalone and the virtualization bundle.
84
83
  if (isAssistedMigration) {
85
84
  params.olmOperators = [{ name: 'lvm' }];
86
- const selectedBundle = (
87
- await BundleService.listBundles(
88
- params.openshiftVersion,
89
- params.cpuArchitecture,
90
- params.platform?.type,
91
- )
92
- ).find((b) => b.id === 'virtualization');
93
- const virtOperators = selectedBundle?.operators;
94
- params.olmOperators = [
95
- ...params.olmOperators,
96
- ...(virtOperators ? virtOperators.map((op) => ({ name: op })) : []),
97
- ];
85
+ params.operatorBundles = [{ id: 'virtualization', optionalOperators: [] }];
98
86
  }
99
87
  const cluster = await ClustersService.create(
100
88
  params,
101
89
  isAssistedMigration,
102
90
  isSingleClusterFeatureEnabled,
103
91
  );
104
- navigate(`../${cluster.id}`, { state: ClusterWizardFlowStateNew });
92
+ void navigate(`../${cluster.id}`, { state: ClusterWizardFlowStateNew });
105
93
 
106
94
  if (isAssistedMigration) {
107
95
  try {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { useSelector } from 'react-redux';
3
- import { useLocation } from 'react-router-dom-v5-compat';
3
+ import { useLocation } from 'react-router';
4
4
  import { Flex, Grid, GridItem } from '@patternfly/react-core';
5
5
  import isUndefined from 'lodash-es/isUndefined.js';
6
6
  import { Formik, FormikHelpers } from 'formik';
@@ -1,5 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import { useLocation } from 'react-router-dom-v5-compat';
2
+ import { useLocation } from 'react-router';
3
3
  import { ClusterWizardContextType, ClusterWizardContext } from './ClusterWizardContext';
4
4
  import {
5
5
  ClusterWizardFlowStateType,
@@ -66,8 +66,8 @@ const getWizardStepIds = (
66
66
  stepsCopy = removeStepFromClusterWizard(stepsCopy, 'static-ip-network-wide-configurations', 2);
67
67
  }
68
68
 
69
- if (isSingleClusterFeatureEnabled) {
70
- stepsCopy = addStepToClusterWizard(stepsCopy, 'networking', ['credentials-download']);
69
+ if (isSingleClusterFeatureEnabled && !stepsCopy.includes('credentials-download')) {
70
+ stepsCopy = addStepToClusterWizard(stepsCopy, 'custom-manifests', ['credentials-download']);
71
71
  }
72
72
 
73
73
  return stepsCopy;
@@ -116,13 +116,11 @@ const ClusterWizardContextProvider = ({
116
116
  locationState,
117
117
  staticIpInfo,
118
118
  cluster?.status,
119
- cluster?.hosts,
120
- customManifestsStepNeedsToBeFilled,
119
+ cluster,
121
120
  );
122
121
  const firstStepIds = getWizardStepIds(
123
122
  wizardStepIds,
124
123
  staticIpInfo?.view,
125
-
126
124
  isSingleClusterFeatureEnabled,
127
125
  );
128
126
 
@@ -150,7 +148,7 @@ const ClusterWizardContextProvider = ({
150
148
  }
151
149
 
152
150
  // eslint-disable-next-line react-hooks/exhaustive-deps
153
- }, [uiSettings, UISettingsLoading, UISettingsError]);
151
+ }, [uiSettings, UISettingsLoading, UISettingsError, isSingleClusterFeatureEnabled]);
154
152
 
155
153
  const contextValue = React.useMemo<ClusterWizardContextType | null>(() => {
156
154
  if (!wizardStepIds || !currentStepId) {
@@ -167,7 +165,6 @@ const ClusterWizardContextProvider = ({
167
165
  const newStepIds = getWizardStepIds(
168
166
  wizardStepIds,
169
167
  staticIpInfo.view,
170
-
171
168
  isSingleClusterFeatureEnabled,
172
169
  );
173
170
  setWizardStepIds(newStepIds);
@@ -207,12 +204,7 @@ const ClusterWizardContextProvider = ({
207
204
  onUpdateHostNetworkConfigType(type: HostsNetworkConfigurationType): void {
208
205
  if (type === HostsNetworkConfigurationType.STATIC) {
209
206
  setWizardStepIds(
210
- getWizardStepIds(
211
- wizardStepIds,
212
- StaticIpView.FORM,
213
-
214
- isSingleClusterFeatureEnabled,
215
- ),
207
+ getWizardStepIds(wizardStepIds, StaticIpView.FORM, isSingleClusterFeatureEnabled),
216
208
  );
217
209
  } else {
218
210
  setWizardStepIds(
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { useNavigate } from 'react-router-dom-v5-compat';
2
+ import { useNavigate } from 'react-router';
3
3
  import { Alert, AlertGroup, AlertVariant } from '@patternfly/react-core';
4
4
  import {
5
5
  WizardFooter,
@@ -5,24 +5,28 @@ import { useClusterWizardContext } from './ClusterWizardContext';
5
5
  import ReviewStep from './disconnected/ReviewStep';
6
6
  import BasicStep from './disconnected/BasicStep';
7
7
  import { ClusterWizardStepsType } from './wizardTransition';
8
+ import { useInfraEnv } from '../../hooks';
9
+ import { CpuArchitecture } from '../../../common/types';
10
+ import { InfraEnv } from '@openshift-assisted/types/assisted-installer-service';
8
11
 
9
- const getCurrentStep = (currentStepId: ClusterWizardStepsType) => {
12
+ const getCurrentStep = (currentStepId: ClusterWizardStepsType, infraEnv?: InfraEnv) => {
10
13
  switch (currentStepId) {
11
14
  case 'disconnected-review':
12
15
  return <ReviewStep />;
13
16
  case 'disconnected-basic':
14
17
  return <BasicStep />;
15
18
  default:
16
- return <ClusterDetails />;
19
+ return <ClusterDetails infraEnv={infraEnv} />;
17
20
  }
18
21
  };
19
22
 
20
23
  const NewClusterWizard: React.FC = () => {
24
+ const { infraEnv } = useInfraEnv('', CpuArchitecture.USE_DAY1_ARCHITECTURE);
21
25
  const { currentStepId } = useClusterWizardContext();
22
26
 
23
27
  return (
24
28
  <div className={classNames('pf-v6-c-wizard', 'cluster-wizard')}>
25
- {getCurrentStep(currentStepId)}
29
+ {getCurrentStep(currentStepId, infraEnv)}
26
30
  </div>
27
31
  );
28
32
  };