@openshift-assisted/ui-lib 2.9.5-cim → 2.9.6-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 (356) hide show
  1. package/build/@types/cim/components/ClusterDeployment/types.d.ts +2 -3
  2. package/build/@types/cim/components/ClusterDeployment/types.d.ts.map +1 -1
  3. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
  4. package/build/@types/cim/components/InfraEnv/AddHostDropdown.d.ts +1 -1
  5. package/build/@types/cim/components/InfraEnv/AddHostDropdown.d.ts.map +1 -1
  6. package/build/@types/cim/components/InfraEnv/types.d.ts +3 -1
  7. package/build/@types/cim/components/InfraEnv/types.d.ts.map +1 -1
  8. package/build/@types/cim/components/helpers/toAssisted.d.ts.map +1 -1
  9. package/build/@types/cim/components/modals/AddBmcHostModal.d.ts.map +1 -1
  10. package/build/@types/cim/components/modals/AddBmcHostYamlModal.d.ts.map +1 -1
  11. package/build/@types/cim/components/modals/ProvisioningConfigErrorAlert.d.ts +5 -0
  12. package/build/@types/cim/components/modals/ProvisioningConfigErrorAlert.d.ts.map +1 -0
  13. package/build/@types/cim/components/modals/types.d.ts +2 -0
  14. package/build/@types/cim/components/modals/types.d.ts.map +1 -1
  15. package/build/@types/common/api/axiosClient.d.ts.map +1 -1
  16. package/build/@types/common/components/clusterWizard/ReviewValidations.d.ts.map +1 -1
  17. package/build/@types/common/components/clusterWizard/types.d.ts +1 -0
  18. package/build/@types/common/components/clusterWizard/types.d.ts.map +1 -1
  19. package/build/@types/common/components/clusterWizard/validationsInfoUtils.d.ts +4 -0
  20. package/build/@types/common/components/clusterWizard/validationsInfoUtils.d.ts.map +1 -1
  21. package/build/@types/common/components/ui/formik/SingleNodeCheckbox.d.ts.map +1 -1
  22. package/build/@types/common/components/ui/formik/validationSchemas.d.ts +0 -1
  23. package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
  24. package/build/@types/common/config/constants.d.ts.map +1 -1
  25. package/build/@types/common/features/featureGate.d.ts +1 -2
  26. package/build/@types/common/features/featureGate.d.ts.map +1 -1
  27. package/build/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTab.d.ts.map +1 -1
  28. package/build/@types/ocm/components/Routes.d.ts +6 -0
  29. package/build/@types/ocm/components/Routes.d.ts.map +1 -0
  30. package/build/@types/ocm/components/clusterConfiguration/DiscoveryImageForm.d.ts.map +1 -1
  31. package/build/@types/ocm/components/clusterConfiguration/OcmBaseDomainField.d.ts.map +1 -1
  32. package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
  33. package/build/@types/ocm/components/clusterConfiguration/OcmSingleNodeCheckbox.d.ts.map +1 -1
  34. package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.d.ts.map +1 -1
  35. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.d.ts.map +1 -1
  36. package/build/@types/ocm/components/clusterConfiguration/operators/CnvHostRequirements.d.ts.map +1 -1
  37. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.d.ts +13 -4
  38. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.d.ts.map +1 -1
  39. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegrationNote.d.ts.map +1 -1
  40. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/constants.d.ts +3 -0
  41. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/constants.d.ts.map +1 -1
  42. package/build/@types/ocm/components/clusterConfiguration/staticIp/components/YamlView/MacIpMapping.d.ts.map +1 -1
  43. package/build/@types/ocm/components/clusterDetail/AssistedInstallerDetailCard.d.ts.map +1 -1
  44. package/build/@types/ocm/components/clusterWizard/ClusterDetailsForm.d.ts.map +1 -1
  45. package/build/@types/ocm/components/clusterWizard/CustomManifestStep.d.ts.map +1 -1
  46. package/build/@types/ocm/components/clusterWizard/OperatorsStep.d.ts.map +1 -1
  47. package/build/@types/ocm/components/clusterWizard/StaticIp.d.ts.map +1 -1
  48. package/build/@types/ocm/components/clusters/AssistedInstallerHeader.d.ts +2 -0
  49. package/build/@types/ocm/components/clusters/AssistedInstallerHeader.d.ts.map +1 -0
  50. package/build/@types/ocm/components/clusters/ClusterPage.d.ts.map +1 -1
  51. package/build/@types/ocm/components/clusters/Clusters.d.ts.map +1 -1
  52. package/build/@types/ocm/components/clusters/ClustersTable.d.ts.map +1 -1
  53. package/build/@types/ocm/components/clusters/NewClusterPage.d.ts.map +1 -1
  54. package/build/@types/ocm/components/clusters/clusterPolling.d.ts +1 -1
  55. package/build/@types/ocm/components/clusters/clusterPolling.d.ts.map +1 -1
  56. package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts.map +1 -1
  57. package/build/@types/ocm/components/hosts/use-hosts-table.d.ts.map +1 -1
  58. package/build/@types/ocm/components/index.d.ts +1 -1
  59. package/build/@types/ocm/index.d.ts +0 -1
  60. package/build/@types/ocm/index.d.ts.map +1 -1
  61. package/build/@types/ocm/store/hooks.d.ts +5 -1
  62. package/build/@types/ocm/store/hooks.d.ts.map +1 -1
  63. package/build/@types/ocm/store/index.d.ts +5 -36
  64. package/build/@types/ocm/store/index.d.ts.map +1 -1
  65. package/build/@types/ocm/{selectors/clusters.d.ts → store/slices/clusters/selectors.d.ts} +15 -11
  66. package/build/@types/ocm/store/slices/clusters/selectors.d.ts.map +1 -0
  67. package/build/@types/ocm/{reducers/clusters/clustersSlice.d.ts → store/slices/clusters/slice.d.ts} +4 -4
  68. package/build/@types/ocm/store/slices/clusters/slice.d.ts.map +1 -0
  69. package/build/@types/ocm/store/slices/current-cluster/selectors.d.ts +14 -0
  70. package/build/@types/ocm/store/slices/current-cluster/selectors.d.ts.map +1 -0
  71. package/build/@types/ocm/{reducers/clusters/currentClusterSlice.d.ts → store/slices/current-cluster/slice.d.ts} +5 -5
  72. package/build/@types/ocm/store/slices/current-cluster/slice.d.ts.map +1 -0
  73. package/build/@types/ocm/store/slices/feature-flags/selectors.d.ts +9 -0
  74. package/build/@types/ocm/store/slices/feature-flags/selectors.d.ts.map +1 -0
  75. package/build/@types/ocm/store/slices/feature-flags/slice.d.ts +7 -0
  76. package/build/@types/ocm/store/slices/feature-flags/slice.d.ts.map +1 -0
  77. package/build/@types/ocm/store/slices/{infraEnvs → infra-envs}/selectors.d.ts +4 -3
  78. package/build/@types/ocm/store/slices/infra-envs/selectors.d.ts.map +1 -0
  79. package/build/@types/ocm/store/slices/infra-envs/slice.d.ts.map +1 -0
  80. package/build/@types/ocm/store/slices/infra-envs/thunks.d.ts.map +1 -0
  81. package/build/@types/ocm/store/store-day1.d.ts +32 -0
  82. package/build/@types/ocm/store/store-day1.d.ts.map +1 -0
  83. package/build/@types/ocm/store/store-day2.d.ts +10 -0
  84. package/build/@types/ocm/store/store-day2.d.ts.map +1 -0
  85. package/build/cjs/cim/components/ClusterDeployment/wizardTransition.js +9 -0
  86. package/build/cjs/cim/components/ClusterDeployment/wizardTransition.js.map +1 -1
  87. package/build/cjs/cim/components/InfraEnv/AddHostDropdown.js +23 -10
  88. package/build/cjs/cim/components/InfraEnv/AddHostDropdown.js.map +1 -1
  89. package/build/cjs/cim/components/helpers/toAssisted.js +2 -1
  90. package/build/cjs/cim/components/helpers/toAssisted.js.map +1 -1
  91. package/build/cjs/cim/components/modals/AddBmcHostModal.js +3 -1
  92. package/build/cjs/cim/components/modals/AddBmcHostModal.js.map +1 -1
  93. package/build/cjs/cim/components/modals/AddBmcHostYamlModal.js +3 -1
  94. package/build/cjs/cim/components/modals/AddBmcHostYamlModal.js.map +1 -1
  95. package/build/cjs/cim/components/modals/ProvisioningConfigErrorAlert.js +16 -0
  96. package/build/cjs/cim/components/modals/ProvisioningConfigErrorAlert.js.map +1 -0
  97. package/build/cjs/common/api/axiosClient.js +2 -4
  98. package/build/cjs/common/api/axiosClient.js.map +1 -1
  99. package/build/cjs/common/components/clusterWizard/ReviewValidations.js +11 -3
  100. package/build/cjs/common/components/clusterWizard/ReviewValidations.js.map +1 -1
  101. package/build/cjs/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js +2 -2
  102. package/build/cjs/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.js.map +1 -1
  103. package/build/cjs/common/components/clusterWizard/validationsInfoUtils.js.map +1 -1
  104. package/build/cjs/common/components/ui/formik/SingleNodeCheckbox.js +1 -3
  105. package/build/cjs/common/components/ui/formik/SingleNodeCheckbox.js.map +1 -1
  106. package/build/cjs/common/components/ui/formik/validationSchemas.js +8 -16
  107. package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
  108. package/build/cjs/common/config/constants.js +1 -3
  109. package/build/cjs/common/config/constants.js.map +1 -1
  110. package/build/cjs/common/features/featureGate.js +1 -11
  111. package/build/cjs/common/features/featureGate.js.map +1 -1
  112. package/build/cjs/common/utils.js +1 -1
  113. package/build/cjs/common/utils.js.map +1 -1
  114. package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTab.js +9 -5
  115. package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTab.js.map +1 -1
  116. package/build/cjs/ocm/components/Routes.js +29 -0
  117. package/build/cjs/ocm/components/Routes.js.map +1 -0
  118. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageForm.js +4 -4
  119. package/build/cjs/ocm/components/clusterConfiguration/DiscoveryImageForm.js.map +1 -1
  120. package/build/cjs/ocm/components/clusterConfiguration/HostInventory.js +1 -1
  121. package/build/cjs/ocm/components/clusterConfiguration/HostInventory.js.map +1 -1
  122. package/build/cjs/ocm/components/clusterConfiguration/OcmBaseDomainField.js +0 -1
  123. package/build/cjs/ocm/components/clusterConfiguration/OcmBaseDomainField.js.map +1 -1
  124. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js +2 -4
  125. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
  126. package/build/cjs/ocm/components/clusterConfiguration/OcmSingleNodeCheckbox.js +1 -2
  127. package/build/cjs/ocm/components/clusterConfiguration/OcmSingleNodeCheckbox.js.map +1 -1
  128. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsArray.js +1 -1
  129. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsArray.js.map +1 -1
  130. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js +1 -1
  131. package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.js.map +1 -1
  132. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js +1 -1
  133. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.js.map +1 -1
  134. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +1 -1
  135. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
  136. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +4 -4
  137. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
  138. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js +1 -1
  139. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.js.map +1 -1
  140. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js +1 -1
  141. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js.map +1 -1
  142. package/build/cjs/ocm/components/clusterConfiguration/operators/CnvHostRequirements.js +1 -1
  143. package/build/cjs/ocm/components/clusterConfiguration/operators/CnvHostRequirements.js.map +1 -1
  144. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.js +61 -17
  145. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.js.map +1 -1
  146. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegrationNote.js +2 -2
  147. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegrationNote.js.map +1 -1
  148. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/constants.js +8 -1
  149. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/constants.js.map +1 -1
  150. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewStep.js +3 -3
  151. package/build/cjs/ocm/components/clusterConfiguration/review/ReviewStep.js.map +1 -1
  152. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpForm.js +1 -1
  153. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpForm.js.map +1 -1
  154. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpHostsArray.js +1 -1
  155. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/StaticIpHostsArray.js.map +1 -1
  156. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/MacIpMapping.js +1 -1
  157. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/MacIpMapping.js.map +1 -1
  158. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js +4 -4
  159. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js.map +1 -1
  160. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js +2 -2
  161. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js.map +1 -1
  162. package/build/cjs/ocm/components/clusterDetail/CancelInstallationModal.js +2 -2
  163. package/build/cjs/ocm/components/clusterDetail/CancelInstallationModal.js.map +1 -1
  164. package/build/cjs/ocm/components/clusterDetail/ClusterDetail.js +2 -2
  165. package/build/cjs/ocm/components/clusterDetail/ClusterDetail.js.map +1 -1
  166. package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js +2 -2
  167. package/build/cjs/ocm/components/clusterDetail/ResetClusterModal.js.map +1 -1
  168. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js +4 -4
  169. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js.map +1 -1
  170. package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js +4 -2
  171. package/build/cjs/ocm/components/clusterWizard/ClusterDetailsForm.js.map +1 -1
  172. package/build/cjs/ocm/components/clusterWizard/CustomManifestStep.js +1 -1
  173. package/build/cjs/ocm/components/clusterWizard/CustomManifestStep.js.map +1 -1
  174. package/build/cjs/ocm/components/clusterWizard/HostDiscovery.js +4 -4
  175. package/build/cjs/ocm/components/clusterWizard/HostDiscovery.js.map +1 -1
  176. package/build/cjs/ocm/components/clusterWizard/Operators.js +3 -3
  177. package/build/cjs/ocm/components/clusterWizard/Operators.js.map +1 -1
  178. package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js +4 -9
  179. package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js.map +1 -1
  180. package/build/cjs/ocm/components/clusterWizard/StaticIp.js +1 -1
  181. package/build/cjs/ocm/components/clusterWizard/StaticIp.js.map +1 -1
  182. package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js +18 -0
  183. package/build/cjs/ocm/components/clusters/AssistedInstallerHeader.js.map +1 -0
  184. package/build/cjs/ocm/components/clusters/ClusterPage.js +4 -9
  185. package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
  186. package/build/cjs/ocm/components/clusters/Clusters.js +8 -8
  187. package/build/cjs/ocm/components/clusters/Clusters.js.map +1 -1
  188. package/build/cjs/ocm/components/clusters/ClustersListToolbar.js +6 -6
  189. package/build/cjs/ocm/components/clusters/ClustersListToolbar.js.map +1 -1
  190. package/build/cjs/ocm/components/clusters/ClustersTable.js +2 -2
  191. package/build/cjs/ocm/components/clusters/ClustersTable.js.map +1 -1
  192. package/build/cjs/ocm/components/clusters/NewClusterPage.js +2 -2
  193. package/build/cjs/ocm/components/clusters/NewClusterPage.js.map +1 -1
  194. package/build/cjs/ocm/components/clusters/clusterPolling.js +11 -11
  195. package/build/cjs/ocm/components/clusters/clusterPolling.js.map +1 -1
  196. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +20 -8
  197. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js.map +1 -1
  198. package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js +1 -1
  199. package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js.map +1 -1
  200. package/build/cjs/ocm/components/hosts/use-hosts-table.js +20 -20
  201. package/build/cjs/ocm/components/hosts/use-hosts-table.js.map +1 -1
  202. package/build/cjs/ocm/components/hosts/utils.js +2 -2
  203. package/build/cjs/ocm/components/hosts/utils.js.map +1 -1
  204. package/build/cjs/ocm/components/index.js +1 -1
  205. package/build/cjs/ocm/components/ui/OcmFormFields.js +1 -1
  206. package/build/cjs/ocm/components/ui/OcmFormFields.js.map +1 -1
  207. package/build/cjs/ocm/hooks/useSetClusterPermissions.js +2 -2
  208. package/build/cjs/ocm/hooks/useSetClusterPermissions.js.map +1 -1
  209. package/build/cjs/ocm/index.js +1 -2
  210. package/build/cjs/ocm/index.js.map +1 -1
  211. package/build/cjs/ocm/store/hooks.js +3 -1
  212. package/build/cjs/ocm/store/hooks.js.map +1 -1
  213. package/build/cjs/ocm/store/index.js +10 -19
  214. package/build/cjs/ocm/store/index.js.map +1 -1
  215. package/build/cjs/ocm/{selectors/clusters.js → store/slices/clusters/selectors.js} +4 -4
  216. package/build/cjs/ocm/store/slices/clusters/selectors.js.map +1 -0
  217. package/build/cjs/ocm/{reducers/clusters/clustersSlice.js → store/slices/clusters/slice.js} +8 -7
  218. package/build/cjs/ocm/store/slices/clusters/slice.js.map +1 -0
  219. package/build/cjs/ocm/{selectors/currentCluster.js → store/slices/current-cluster/selectors.js} +1 -1
  220. package/build/cjs/ocm/store/slices/current-cluster/selectors.js.map +1 -0
  221. package/build/cjs/ocm/{reducers/clusters/currentClusterSlice.js → store/slices/current-cluster/slice.js} +12 -13
  222. package/build/cjs/ocm/store/slices/current-cluster/slice.js.map +1 -0
  223. package/build/cjs/ocm/store/slices/feature-flags/selectors.js +11 -0
  224. package/build/cjs/ocm/store/slices/feature-flags/selectors.js.map +1 -0
  225. package/build/cjs/ocm/store/slices/feature-flags/slice.js +16 -0
  226. package/build/cjs/ocm/store/slices/feature-flags/slice.js.map +1 -0
  227. package/build/cjs/ocm/store/slices/infra-envs/selectors.js.map +1 -0
  228. package/build/cjs/ocm/store/slices/infra-envs/slice.js.map +1 -0
  229. package/build/cjs/ocm/store/slices/infra-envs/thunks.js.map +1 -0
  230. package/build/cjs/ocm/store/store-day1.js +24 -0
  231. package/build/cjs/ocm/store/store-day1.js.map +1 -0
  232. package/build/cjs/ocm/store/store-day2.js +20 -0
  233. package/build/cjs/ocm/store/store-day2.js.map +1 -0
  234. package/lib/cim/components/ClusterDeployment/types.ts +2 -3
  235. package/lib/cim/components/ClusterDeployment/wizardTransition.ts +10 -0
  236. package/lib/cim/components/InfraEnv/AddHostDropdown.tsx +45 -18
  237. package/lib/cim/components/InfraEnv/types.ts +4 -1
  238. package/lib/cim/components/helpers/toAssisted.ts +3 -0
  239. package/lib/cim/components/modals/AddBmcHostModal.tsx +3 -0
  240. package/lib/cim/components/modals/AddBmcHostYamlModal.tsx +3 -0
  241. package/lib/cim/components/modals/ProvisioningConfigErrorAlert.tsx +18 -0
  242. package/lib/cim/components/modals/types.ts +2 -0
  243. package/lib/common/api/axiosClient.ts +2 -3
  244. package/lib/common/components/clusterWizard/ReviewValidations.tsx +12 -1
  245. package/lib/common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup.tsx +2 -2
  246. package/lib/common/components/clusterWizard/types.ts +1 -0
  247. package/lib/common/components/clusterWizard/validationsInfoUtils.ts +9 -0
  248. package/lib/common/components/ui/formik/SingleNodeCheckbox.tsx +1 -3
  249. package/lib/common/components/ui/formik/validationSchemas.test.ts +4 -22
  250. package/lib/common/components/ui/formik/validationSchemas.ts +13 -22
  251. package/lib/common/config/constants.ts +1 -3
  252. package/lib/common/features/featureGate.tsx +1 -19
  253. package/lib/common/utils.ts +2 -2
  254. package/lib/ocm/components/HostsClusterDetailTab/HostsClusterDetailTab.tsx +16 -11
  255. package/lib/ocm/components/Routes.tsx +34 -0
  256. package/lib/ocm/components/clusterConfiguration/DiscoveryImageForm.tsx +5 -1
  257. package/lib/ocm/components/clusterConfiguration/HostInventory.tsx +1 -1
  258. package/lib/ocm/components/clusterConfiguration/OcmBaseDomainField.tsx +0 -2
  259. package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +6 -10
  260. package/lib/ocm/components/clusterConfiguration/OcmSingleNodeCheckbox.tsx +2 -3
  261. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsArray.tsx +1 -1
  262. package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifestsForm.tsx +1 -1
  263. package/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx +1 -1
  264. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +1 -1
  265. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +5 -2
  266. package/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx +1 -1
  267. package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx +1 -1
  268. package/lib/ocm/components/clusterConfiguration/operators/CnvHostRequirements.tsx +1 -1
  269. package/lib/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.tsx +134 -35
  270. package/lib/ocm/components/clusterConfiguration/platformIntegration/PlatformIntegrationNote.tsx +10 -8
  271. package/lib/ocm/components/clusterConfiguration/platformIntegration/constants.tsx +8 -0
  272. package/lib/ocm/components/clusterConfiguration/review/ReviewStep.tsx +2 -2
  273. package/lib/ocm/components/clusterConfiguration/staticIp/components/StaticIpForm.tsx +1 -1
  274. package/lib/ocm/components/clusterConfiguration/staticIp/components/StaticIpHostsArray.tsx +3 -3
  275. package/lib/ocm/components/clusterConfiguration/staticIp/components/YamlView/MacIpMapping.tsx +1 -1
  276. package/lib/ocm/components/clusterDetail/AssistedInstallerDetailCard.tsx +6 -4
  277. package/lib/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.tsx +3 -3
  278. package/lib/ocm/components/clusterDetail/CancelInstallationModal.tsx +1 -1
  279. package/lib/ocm/components/clusterDetail/ClusterDetail.tsx +1 -1
  280. package/lib/ocm/components/clusterDetail/ResetClusterModal.tsx +1 -1
  281. package/lib/ocm/components/clusterWizard/ClusterDetails.tsx +1 -1
  282. package/lib/ocm/components/clusterWizard/ClusterDetailsForm.tsx +5 -3
  283. package/lib/ocm/components/clusterWizard/CustomManifestStep.tsx +1 -1
  284. package/lib/ocm/components/clusterWizard/HostDiscovery.tsx +2 -2
  285. package/lib/ocm/components/clusterWizard/Operators.tsx +1 -1
  286. package/lib/ocm/components/clusterWizard/OperatorsStep.tsx +6 -19
  287. package/lib/ocm/components/clusterWizard/StaticIp.tsx +1 -1
  288. package/lib/ocm/components/clusters/AssistedInstallerHeader.tsx +25 -0
  289. package/lib/ocm/components/clusters/ClusterPage.tsx +4 -28
  290. package/lib/ocm/components/clusters/Clusters.tsx +9 -11
  291. package/lib/ocm/components/clusters/ClustersListToolbar.tsx +5 -5
  292. package/lib/ocm/components/clusters/ClustersTable.tsx +4 -1
  293. package/lib/ocm/components/clusters/NewClusterPage.tsx +3 -6
  294. package/lib/ocm/components/clusters/clusterPolling.ts +7 -7
  295. package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +21 -7
  296. package/lib/ocm/components/hosts/HostsDiscoveryTable.tsx +1 -1
  297. package/lib/ocm/components/hosts/use-hosts-table.tsx +5 -2
  298. package/lib/ocm/components/hosts/utils.ts +1 -1
  299. package/lib/ocm/components/index.ts +1 -1
  300. package/lib/ocm/components/ui/OcmFormFields.tsx +1 -1
  301. package/lib/ocm/hooks/useSetClusterPermissions.ts +1 -1
  302. package/lib/ocm/index.ts +0 -1
  303. package/lib/ocm/store/hooks.ts +6 -2
  304. package/lib/ocm/store/index.ts +5 -23
  305. package/lib/ocm/{selectors/clusters.tsx → store/slices/clusters/selectors.tsx} +10 -12
  306. package/lib/ocm/{reducers/clusters/clustersSlice.ts → store/slices/clusters/slice.ts} +6 -5
  307. package/lib/ocm/{selectors/currentCluster.ts → store/slices/current-cluster/selectors.ts} +7 -7
  308. package/lib/ocm/{reducers/clusters/currentClusterSlice.ts → store/slices/current-cluster/slice.ts} +10 -8
  309. package/lib/ocm/store/slices/feature-flags/selectors.ts +13 -0
  310. package/lib/ocm/store/slices/feature-flags/slice.ts +15 -0
  311. package/lib/ocm/store/slices/{infraEnvs → infra-envs}/selectors.ts +3 -3
  312. package/lib/ocm/store/slices/{infraEnvs → infra-envs}/thunks.ts +3 -3
  313. package/lib/ocm/store/store-day1.ts +23 -0
  314. package/lib/ocm/store/store-day2.ts +19 -0
  315. package/package.json +3 -3
  316. package/build/@types/ocm/components/Router.d.ts +0 -9
  317. package/build/@types/ocm/components/Router.d.ts.map +0 -1
  318. package/build/@types/ocm/hooks/useOracleDropdownItemState.d.ts +0 -10
  319. package/build/@types/ocm/hooks/useOracleDropdownItemState.d.ts.map +0 -1
  320. package/build/@types/ocm/reducers/clusters/clustersSlice.d.ts.map +0 -1
  321. package/build/@types/ocm/reducers/clusters/currentClusterSlice.d.ts.map +0 -1
  322. package/build/@types/ocm/reducers/clusters/index.d.ts +0 -3
  323. package/build/@types/ocm/reducers/clusters/index.d.ts.map +0 -1
  324. package/build/@types/ocm/selectors/clusters.d.ts.map +0 -1
  325. package/build/@types/ocm/selectors/currentCluster.d.ts +0 -14
  326. package/build/@types/ocm/selectors/currentCluster.d.ts.map +0 -1
  327. package/build/@types/ocm/selectors/index.d.ts +0 -3
  328. package/build/@types/ocm/selectors/index.d.ts.map +0 -1
  329. package/build/@types/ocm/store/slices/infraEnvs/selectors.d.ts.map +0 -1
  330. package/build/@types/ocm/store/slices/infraEnvs/slice.d.ts.map +0 -1
  331. package/build/@types/ocm/store/slices/infraEnvs/thunks.d.ts.map +0 -1
  332. package/build/cjs/ocm/components/Router.js +0 -25
  333. package/build/cjs/ocm/components/Router.js.map +0 -1
  334. package/build/cjs/ocm/hooks/useOracleDropdownItemState.js +0 -30
  335. package/build/cjs/ocm/hooks/useOracleDropdownItemState.js.map +0 -1
  336. package/build/cjs/ocm/reducers/clusters/clustersSlice.js.map +0 -1
  337. package/build/cjs/ocm/reducers/clusters/currentClusterSlice.js.map +0 -1
  338. package/build/cjs/ocm/reducers/clusters/index.js +0 -6
  339. package/build/cjs/ocm/reducers/clusters/index.js.map +0 -1
  340. package/build/cjs/ocm/selectors/clusters.js.map +0 -1
  341. package/build/cjs/ocm/selectors/currentCluster.js.map +0 -1
  342. package/build/cjs/ocm/selectors/index.js +0 -6
  343. package/build/cjs/ocm/selectors/index.js.map +0 -1
  344. package/build/cjs/ocm/store/slices/infraEnvs/selectors.js.map +0 -1
  345. package/build/cjs/ocm/store/slices/infraEnvs/slice.js.map +0 -1
  346. package/build/cjs/ocm/store/slices/infraEnvs/thunks.js.map +0 -1
  347. package/lib/ocm/components/Router.tsx +0 -29
  348. package/lib/ocm/hooks/useOracleDropdownItemState.ts +0 -45
  349. package/lib/ocm/reducers/clusters/index.ts +0 -2
  350. package/lib/ocm/selectors/index.ts +0 -2
  351. /package/build/@types/ocm/store/slices/{infraEnvs → infra-envs}/slice.d.ts +0 -0
  352. /package/build/@types/ocm/store/slices/{infraEnvs → infra-envs}/thunks.d.ts +0 -0
  353. /package/build/cjs/ocm/store/slices/{infraEnvs → infra-envs}/selectors.js +0 -0
  354. /package/build/cjs/ocm/store/slices/{infraEnvs → infra-envs}/slice.js +0 -0
  355. /package/build/cjs/ocm/store/slices/{infraEnvs → infra-envs}/thunks.js +0 -0
  356. /package/lib/ocm/store/slices/{infraEnvs → infra-envs}/slice.ts +0 -0
@@ -4,17 +4,22 @@ import { AssistedUILibVersion } from '../ui';
4
4
  import { AlertsContextProvider, FeatureGateContextProvider } from '../../../common';
5
5
  import { HostsClusterDetailTabContent } from './HostsClusterDetailTabContent';
6
6
  import { HostsClusterDetailTabProps } from './types';
7
- import { store } from '../../store';
7
+ import { storeDay1 } from '../../store';
8
+ import { featureFlagsActions } from '../../store/slices/feature-flags/slice';
8
9
 
9
- const HostsClusterDetailTab = (props: HostsClusterDetailTabProps) => (
10
- <Provider store={store}>
11
- <AssistedUILibVersion />
12
- <FeatureGateContextProvider features={props.allEnabledFeatures}>
13
- <AlertsContextProvider>
14
- <HostsClusterDetailTabContent {...props} />
15
- </AlertsContextProvider>
16
- </FeatureGateContextProvider>
17
- </Provider>
18
- );
10
+ const HostsClusterDetailTab = (props: HostsClusterDetailTabProps) => {
11
+ storeDay1.dispatch(featureFlagsActions.setFeatureFlags(props.allEnabledFeatures));
12
+
13
+ return (
14
+ <Provider store={storeDay1}>
15
+ <AssistedUILibVersion />
16
+ <FeatureGateContextProvider features={props.allEnabledFeatures}>
17
+ <AlertsContextProvider>
18
+ <HostsClusterDetailTabContent {...props} />
19
+ </AlertsContextProvider>
20
+ </FeatureGateContextProvider>
21
+ </Provider>
22
+ );
23
+ };
19
24
 
20
25
  export default HostsClusterDetailTab;
@@ -0,0 +1,34 @@
1
+ import React, { useEffect } from 'react';
2
+ import { Provider } from 'react-redux';
3
+ import { Switch, Route, Redirect } from 'react-router-dom';
4
+ import { Clusters, ClusterPage, NewClusterPage } from './clusters';
5
+ import { FeatureGateContextProvider } from '../../common';
6
+ import type { FeatureListType } from '../../common/features/featureGate';
7
+ import { routeBasePath } from '../config';
8
+ import { AssistedUILibVersion } from './ui';
9
+ import { storeDay1 } from '../store';
10
+ import { featureFlagsActions } from '../store/slices/feature-flags/slice';
11
+
12
+ export const Routes: React.FC<{ allEnabledFeatures: FeatureListType }> = ({
13
+ allEnabledFeatures,
14
+ children,
15
+ }) => {
16
+ useEffect(() => {
17
+ storeDay1.dispatch(featureFlagsActions.setFeatureFlags(allEnabledFeatures));
18
+ }, [allEnabledFeatures]);
19
+
20
+ return (
21
+ <Provider store={storeDay1}>
22
+ <FeatureGateContextProvider features={allEnabledFeatures}>
23
+ <AssistedUILibVersion />
24
+ <Switch>
25
+ <Route path={`${routeBasePath}/clusters/~new`} component={NewClusterPage} />
26
+ <Route path={`${routeBasePath}/clusters/:clusterId`} component={ClusterPage} />
27
+ <Route path={`${routeBasePath}/clusters`} component={Clusters} />
28
+ {children}
29
+ <Redirect to={`${routeBasePath}/clusters`} />
30
+ </Switch>
31
+ </FeatureGateContextProvider>
32
+ </Provider>
33
+ );
34
+ };
@@ -4,7 +4,11 @@ import Axios, { CancelTokenSource } from 'axios';
4
4
  import { FormikHelpers } from 'formik';
5
5
  import { getApiErrorMessage, handleApiError, isUnknownServerError } from '../../api';
6
6
  import { CpuArchitecture, ErrorState, LoadingState } from '../../../common';
7
- import { forceReload, setServerUpdateError, updateCluster } from '../../reducers/clusters';
7
+ import {
8
+ forceReload,
9
+ setServerUpdateError,
10
+ updateCluster,
11
+ } from '../../store/slices/current-cluster/slice';
8
12
  import useInfraEnv from '../../hooks/useInfraEnv';
9
13
  import { DiscoveryImageFormService } from '../../services';
10
14
  import {
@@ -22,7 +22,7 @@ import HostsDiscoveryTable from '../hosts/HostsDiscoveryTable';
22
22
  import { DiscoveryImageModalButton } from './DiscoveryImageModal';
23
23
  import InformationAndAlerts from './InformationAndAlerts';
24
24
  import { OcmSwitchField } from '../ui/OcmFormFields';
25
- import { selectCurrentClusterPermissionsState } from '../../selectors';
25
+ import { selectCurrentClusterPermissionsState } from '../../store/slices/current-cluster/selectors';
26
26
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
27
27
 
28
28
  const schedulableMastersTooltip =
@@ -106,6 +106,4 @@ export const OcmBaseDomainField = ({ managedDomains }: { managedDomains: Managed
106
106
  </FormGroup>
107
107
  </>
108
108
  );
109
-
110
- return <></>;
111
109
  };
@@ -30,12 +30,11 @@ import OcmSNOControlGroup from './OcmSNOControlGroup';
30
30
  import useSupportLevelsAPI from '../../hooks/useSupportLevelsAPI';
31
31
  import { useOpenshiftVersions } from '../../hooks';
32
32
  import { ExternalPlatformDropdown } from './platformIntegration/ExternalPlatformDropdown';
33
- import { useOracleDropdownItemState } from '../../hooks/useOracleDropdownItemState';
34
- import { useClusterWizardContext } from '../clusterWizard/ClusterWizardContext';
35
33
  import { HostsNetworkConfigurationType } from '../../services/types';
36
34
  import { useNewFeatureSupportLevel } from '../../../common/components/newFeatureSupportLevels';
37
35
  import { ExternalPlatformLabels } from './platformIntegration/constants';
38
36
  import { ManagedDomain, PlatformType } from '@openshift-assisted/types/assisted-installer-service';
37
+ import { useClusterWizardContext } from '../clusterWizard/ClusterWizardContext';
39
38
 
40
39
  export type OcmClusterDetailsFormFieldsProps = {
41
40
  forceOpenshiftVersion?: string;
@@ -84,11 +83,7 @@ export const OcmClusterDetailsFormFields = ({
84
83
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
85
84
  // @ts-ignore
86
85
  const cpuArchitecture = (architectureData[values.cpuArchitecture] as CpuArchitectureItem).label;
87
- const oracleDropdownItemState = useOracleDropdownItemState(
88
- clusterExists,
89
- featureSupportLevelData,
90
- values.cpuArchitecture,
91
- );
86
+
92
87
  const featureSupportLevelContext = useNewFeatureSupportLevel();
93
88
 
94
89
  React.useEffect(() => {
@@ -175,10 +170,11 @@ export const OcmClusterDetailsFormFields = ({
175
170
  </StaticTextField>
176
171
  ) : (
177
172
  <ExternalPlatformDropdown
178
- showOciOption={isOracleCloudPlatformIntegrationEnabled}
179
- disabledOciTooltipContent={oracleDropdownItemState?.disabledReason}
180
- isOciDisabled={oracleDropdownItemState?.isDisabled || false}
181
173
  onChange={handleExternalPartnerIntegrationsChange}
174
+ cpuArchitecture={values.cpuArchitecture}
175
+ showOciOption={isOracleCloudPlatformIntegrationEnabled}
176
+ featureSupportLevelData={featureSupportLevelData}
177
+ isSNO={isSNO({ highAvailabilityMode })}
182
178
  />
183
179
  )}
184
180
 
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { useField, useFormikContext } from 'formik';
3
3
  import { Checkbox, FormGroup, Tooltip } from '@patternfly/react-core';
4
- import { getFieldId, HelperText, useFeature } from '../../../common';
4
+ import { getFieldId, HelperText } from '../../../common';
5
5
  import { useNewFeatureSupportLevel } from '../../../common/components/newFeatureSupportLevels';
6
6
  import { CheckboxFieldProps } from '../../../common/components/ui/formik/types';
7
7
  import NewFeatureSupportLevelBadge from '../../../common/components/newFeatureSupportLevels/NewFeatureSupportLevelBadge';
@@ -28,7 +28,6 @@ const OcmSingleNodeCheckbox: React.FC<OcmCheckboxProps> = ({
28
28
  const {
29
29
  values: { openshiftVersion },
30
30
  } = useFormikContext<ClusterCreateParams>();
31
- const isSingleNodeOpenshiftEnabled = useFeature('ASSISTED_INSTALLER_SNO_FEATURE');
32
31
  const [field, meta, helpers] = useField<'None' | 'Full'>({ name: props.name, validate });
33
32
  const featureSupportLevelContext = useNewFeatureSupportLevel();
34
33
  const prevVersionRef = React.useRef(openshiftVersion);
@@ -61,7 +60,7 @@ const OcmSingleNodeCheckbox: React.FC<OcmCheckboxProps> = ({
61
60
  prevIsDisabled.current = props.isDisabled;
62
61
  }, [props.isDisabled, setValue, onChanged]);
63
62
 
64
- if (isSingleNodeOpenshiftEnabled && isSupportedVersionAvailable) {
63
+ if (isSupportedVersionAvailable) {
65
64
  return (
66
65
  <FormGroup id={`form-control__${fieldId}`} isInline fieldId={fieldId}>
67
66
  <Tooltip hidden={!disabledReason} content={disabledReason}>
@@ -6,12 +6,12 @@ import { FieldArrayRenderProps, useField } from 'formik';
6
6
  import cloneDeep from 'lodash-es/cloneDeep.js';
7
7
  import { LoadingState, useAlerts } from '../../../../../common';
8
8
  import ConfirmationModal from '../../../../../common/components/ui/ConfirmationModal';
9
- import { selectCurrentClusterPermissionsState } from '../../../../selectors';
10
9
  import { ClustersAPI } from '../../../../services/apis';
11
10
  import { getApiErrorMessage, handleApiError } from '../../../../api';
12
11
  import { CustomManifest } from './CustomManifest';
13
12
  import { getEmptyFormViewManifest, getManifestName } from './utils';
14
13
  import { CustomManifestValues } from '../data/dataTypes';
14
+ import { selectCurrentClusterPermissionsState } from '../../../../store/slices/current-cluster/selectors';
15
15
 
16
16
  const fieldName = 'manifests';
17
17
 
@@ -13,7 +13,6 @@ import {
13
13
  } from 'formik';
14
14
  import isEqual from 'lodash-es/isEqual.js';
15
15
  import { ErrorState, LoadingState, useAlerts, useFormikAutoSave } from '../../../../../common';
16
- import { selectCurrentClusterPermissionsState } from '../../../../selectors';
17
16
  import { CustomManifestsFormProps } from './propTypes';
18
17
  import {
19
18
  CustomManifestValues,
@@ -27,6 +26,7 @@ import useClusterCustomManifests from '../../../../hooks/useClusterCustomManifes
27
26
  import { ClustersService } from '../../../../services';
28
27
  import { CustomManifestsArray } from './CustomManifestsArray';
29
28
  import { getManifestFakeId } from './utils';
29
+ import { selectCurrentClusterPermissionsState } from '../../../../store/slices/current-cluster/selectors';
30
30
 
31
31
  const fieldName = 'manifests';
32
32
 
@@ -10,7 +10,7 @@ import {
10
10
  DUAL_STACK,
11
11
  NO_SUBNET_SET,
12
12
  } from '../../../../common';
13
- import { selectCurrentClusterPermissionsState } from '../../../selectors';
13
+ import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
14
14
  import { SubnetsDropdown } from './SubnetsDropdown';
15
15
  import { Cluster, MachineNetwork } from '@openshift-assisted/types/assisted-installer-service';
16
16
 
@@ -24,7 +24,7 @@ import { StackTypeControlGroup } from './StackTypeControl';
24
24
  import { AvailableSubnetsControl } from './AvailableSubnetsControl';
25
25
  import AdvancedNetworkFields from './AdvancedNetworkFields';
26
26
  import { useTranslation } from '../../../../common/hooks/use-translation-wrapper';
27
- import { selectCurrentClusterPermissionsState } from '../../../selectors';
27
+ import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
28
28
  import { OcmCheckbox } from '../../ui/OcmFormFields';
29
29
  import { NetworkTypeControlGroup } from '../../../../common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup';
30
30
  import { useClusterSupportedPlatforms } from '../../../hooks';
@@ -26,7 +26,7 @@ import { canNextNetwork } from '../../clusterWizard/wizardTransition';
26
26
  import ClusterWizardNavigation from '../../clusterWizard/ClusterWizardNavigation';
27
27
  import NetworkConfigurationTable from './NetworkConfigurationTable';
28
28
  import useInfraEnv from '../../../hooks/useInfraEnv';
29
- import { selectCurrentClusterPermissionsState } from '../../../selectors';
29
+ import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
30
30
  import {
31
31
  getNetworkConfigurationValidationSchema,
32
32
  getNetworkInitialValues,
@@ -34,7 +34,10 @@ import {
34
34
  import NetworkConfiguration from './NetworkConfiguration';
35
35
  import { captureException } from '../../../sentry';
36
36
  import { ClustersService } from '../../../services';
37
- import { setServerUpdateError, updateClusterBase } from '../../../reducers/clusters';
37
+ import {
38
+ setServerUpdateError,
39
+ updateClusterBase,
40
+ } from '../../../store/slices/current-cluster/slice';
38
41
  import { isUnknownServerError, getApiErrorMessage, handleApiError } from '../../../api';
39
42
  import { useClusterSupportedPlatforms, usePullSecret } from '../../../hooks';
40
43
  import {
@@ -16,7 +16,7 @@ import {
16
16
  } from '../../../../common';
17
17
  import { ConfirmationModal, PopoverIcon } from '../../../../common/components/ui';
18
18
  import { useDefaultConfiguration } from '../ClusterDefaultConfigurationContext';
19
- import { selectCurrentClusterPermissionsState } from '../../../selectors';
19
+ import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
20
20
  import { OcmRadioField } from '../../ui/OcmFormFields';
21
21
  import {
22
22
  Cluster,
@@ -21,7 +21,7 @@ import {
21
21
  selectApiVip,
22
22
  selectIngressVip,
23
23
  } from '../../../../common';
24
- import { selectCurrentClusterPermissionsState } from '../../../selectors';
24
+ import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
25
25
  import { OcmCheckboxField, OcmInputField } from '../../ui/OcmFormFields';
26
26
  import { useTranslation } from '../../../../common/hooks/use-translation-wrapper';
27
27
  import NewFeatureSupportLevelBadge from '../../../../common/components/newFeatureSupportLevels/NewFeatureSupportLevelBadge';
@@ -3,8 +3,8 @@ import { useSelector } from 'react-redux';
3
3
  import { List, ListItem } from '@patternfly/react-core';
4
4
  import { useClusterPreflightRequirements } from '../../../hooks';
5
5
  import { ErrorState, LoadingState, OPERATOR_NAME_CNV, RenderIf } from '../../../../common';
6
- import { selectIsCurrentClusterSNO } from '../../../selectors';
7
6
  import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
7
+ import { selectIsCurrentClusterSNO } from '../../../store/slices/current-cluster/selectors';
8
8
 
9
9
  const CnvHostRequirements = ({ clusterId }: { clusterId: Cluster['id'] }) => {
10
10
  const { preflightRequirements, error, isLoading } = useClusterPreflightRequirements(clusterId);
@@ -8,35 +8,72 @@ import {
8
8
  FormGroup,
9
9
  Split,
10
10
  SplitItem,
11
+ Tooltip,
11
12
  } from '@patternfly/react-core';
12
13
  import { CaretDownIcon } from '@patternfly/react-icons';
13
14
  import { useField } from 'formik';
14
- import { getFieldId } from '../../../../common';
15
+ import { CpuArchitecture, DeveloperPreview, FeatureId, getFieldId } from '../../../../common';
16
+
15
17
  import {
18
+ ExternalPlaformIds,
16
19
  ExternalPlatformLabels,
17
20
  ExternalPlatformLinks,
18
21
  ExternalPlatformTooltips,
19
22
  } from './constants';
20
23
  import { PlatformType } from '@openshift-assisted/types/assisted-installer-service';
24
+ import {
25
+ NewFeatureSupportLevelData,
26
+ NewFeatureSupportLevelMap,
27
+ useNewFeatureSupportLevel,
28
+ } from '../../../../common/components/newFeatureSupportLevels';
21
29
 
22
30
  const INPUT_NAME = 'platform';
23
31
  const fieldId = getFieldId(INPUT_NAME, 'input');
24
32
 
25
33
  type ExternalPlatformDropdownProps = {
26
34
  showOciOption: boolean;
27
- disabledOciTooltipContent: React.ReactNode;
28
- isOciDisabled: boolean;
29
35
  onChange: (selectedPlatform: PlatformType) => void;
36
+ cpuArchitecture?: string;
37
+ featureSupportLevelData: NewFeatureSupportLevelMap | null;
38
+ isSNO: boolean;
30
39
  };
31
40
 
32
41
  export type ExternalPlatformInfo = {
33
42
  label: string;
34
43
  href?: string;
35
44
  tooltip?: string;
45
+ disabledReason?: string;
46
+ };
47
+
48
+ const getDisabledReasonForExternalPlatform = (
49
+ isSNO: boolean,
50
+ newFeatureSupportLevelContext: NewFeatureSupportLevelData,
51
+ platform: PlatformType,
52
+ featureSupportLevelData?: NewFeatureSupportLevelMap | null,
53
+ cpuArchitecture?: string,
54
+ ): string | undefined => {
55
+ if (!isSNO) {
56
+ return newFeatureSupportLevelContext.getFeatureDisabledReason(
57
+ ExternalPlaformIds[platform] as FeatureId,
58
+ featureSupportLevelData ?? undefined,
59
+ cpuArchitecture,
60
+ );
61
+ } else if (platform === 'nutanix' || platform === 'vsphere') {
62
+ return `${ExternalPlatformLabels[platform]} integration is not supported for Single-Node OpenShift.`;
63
+ } else if (
64
+ cpuArchitecture === CpuArchitecture.ppc64le ||
65
+ cpuArchitecture === CpuArchitecture.s390x
66
+ ) {
67
+ return `Plaform integration is not supported for Single-Node OpenShift with the selected CPU architecture.`;
68
+ }
36
69
  };
37
70
 
38
71
  const getExternalPlatformTypes = (
39
72
  showOciOption: boolean,
73
+ isSNO: boolean,
74
+ newFeatureSupportLevelContext: NewFeatureSupportLevelData,
75
+ featureSupportLevelData?: NewFeatureSupportLevelMap | null,
76
+ cpuArchitecture?: string,
40
77
  ): Partial<{ [key in PlatformType]: ExternalPlatformInfo }> => {
41
78
  const platforms = ['none', 'nutanix', showOciOption && 'oci', 'vsphere'] as PlatformType[];
42
79
 
@@ -47,43 +84,102 @@ const getExternalPlatformTypes = (
47
84
  label: ExternalPlatformLabels[platform],
48
85
  href: ExternalPlatformLinks[platform],
49
86
  tooltip: ExternalPlatformTooltips[platform],
87
+ disabledReason: getDisabledReasonForExternalPlatform(
88
+ isSNO,
89
+ newFeatureSupportLevelContext,
90
+ platform,
91
+ featureSupportLevelData ?? undefined,
92
+ cpuArchitecture,
93
+ ),
50
94
  },
51
95
  }),
52
96
  {},
53
97
  );
54
98
  };
55
99
 
100
+ export const areAllExternalPlatformIntegrationDisabled = (
101
+ externalPlatformTypes: Partial<{ [key in PlatformType]: ExternalPlatformInfo }>,
102
+ ): boolean => {
103
+ return Object.values(externalPlatformTypes)
104
+ .filter((info) => info.label !== 'No platform integration')
105
+ .every((info) => info.disabledReason !== undefined);
106
+ };
107
+
56
108
  export const ExternalPlatformDropdown = ({
57
109
  showOciOption,
58
- disabledOciTooltipContent,
59
- isOciDisabled,
60
110
  onChange,
111
+ cpuArchitecture,
112
+ featureSupportLevelData,
113
+ isSNO,
61
114
  }: ExternalPlatformDropdownProps) => {
62
- const [field, { value, initialValue }, { setValue }] = useField<string>(INPUT_NAME);
115
+ const [field, , { setValue }] = useField<string>(INPUT_NAME);
63
116
  const [isOpen, setOpen] = React.useState(false);
117
+ const [externalPlatformTypes, setExternalPlatformTypes] = React.useState<
118
+ Partial<{ [key in PlatformType]: ExternalPlatformInfo }>
119
+ >({});
120
+
121
+ const tooltipDropdownDisabled = `Platform integration is not supported when ${
122
+ cpuArchitecture || ''
123
+ } is selected`;
124
+
64
125
  const handleClick = (event: MouseEvent<HTMLButtonElement>, href: string) => {
65
126
  event.stopPropagation(); // Stop event propagation here
66
127
  window.open(href, '_blank');
67
128
  };
129
+ const newFeatureSupportLevelContext = useNewFeatureSupportLevel();
130
+ React.useEffect(() => {
131
+ // Calculate updated externalPlatformTypes based on the dependencies
132
+ const updatedExternalPlatformTypes = getExternalPlatformTypes(
133
+ showOciOption,
134
+ isSNO,
135
+ newFeatureSupportLevelContext,
136
+ featureSupportLevelData,
137
+ cpuArchitecture,
138
+ );
68
139
 
69
- const externalPlatformTypes = getExternalPlatformTypes(showOciOption);
140
+ // Update the state with the new externalPlatformTypes
141
+ setExternalPlatformTypes(updatedExternalPlatformTypes);
142
+ // eslint-disable-next-line react-hooks/exhaustive-deps
143
+ }, [featureSupportLevelData, cpuArchitecture, isSNO]);
144
+
145
+ const dropdownIsDisabled = React.useMemo(() => {
146
+ return areAllExternalPlatformIntegrationDisabled(externalPlatformTypes);
147
+ }, [externalPlatformTypes]);
148
+
149
+ React.useEffect(() => {
150
+ let isCurrentValueDisabled = false;
151
+
152
+ if (field.value !== 'none') {
153
+ isCurrentValueDisabled =
154
+ externalPlatformTypes[field.value as PlatformType]?.disabledReason !== undefined;
155
+ }
156
+ if (dropdownIsDisabled || isCurrentValueDisabled) {
157
+ setValue('none');
158
+ onChange('none');
159
+ }
160
+
161
+ // eslint-disable-next-line react-hooks/exhaustive-deps
162
+ }, [dropdownIsDisabled, externalPlatformTypes]);
70
163
 
71
164
  const enabledItems = Object.keys(externalPlatformTypes).map((platform) => {
72
- const isOracleDisabled = platform === 'oci' && isOciDisabled;
73
- const { label, href, tooltip } = externalPlatformTypes[
165
+ const { label, href, tooltip, disabledReason } = externalPlatformTypes[
74
166
  platform as PlatformType
75
167
  ] as ExternalPlatformInfo;
76
-
77
168
  return (
78
- <DropdownItem
79
- key={platform}
80
- id={platform}
81
- tooltip={isOracleDisabled ? disabledOciTooltipContent : tooltip}
82
- isAriaDisabled={isOracleDisabled}
83
- tooltipProps={{ position: 'top-start' }}
84
- >
169
+ <DropdownItem key={platform} id={platform} isAriaDisabled={disabledReason !== undefined}>
85
170
  <Split>
86
- <SplitItem>{label}</SplitItem>
171
+ <SplitItem>
172
+ <Tooltip
173
+ hidden={disabledReason === undefined && tooltip === undefined}
174
+ content={disabledReason !== undefined ? disabledReason : tooltip}
175
+ position="top"
176
+ >
177
+ <div>
178
+ {label}
179
+ {platform === 'oci' && <DeveloperPreview testId={'oci-support-level`'} />}
180
+ </div>
181
+ </Tooltip>
182
+ </SplitItem>
87
183
  {!!href && (
88
184
  <>
89
185
  <SplitItem isFilled />
@@ -114,12 +210,6 @@ export const ExternalPlatformDropdown = ({
114
210
  [setOpen, setValue, onChange],
115
211
  );
116
212
 
117
- React.useEffect(() => {
118
- if (value === 'oci' && isOciDisabled) {
119
- setValue('none');
120
- }
121
- }, [initialValue, isOciDisabled, setValue, value]);
122
-
123
213
  const toggle = React.useMemo(
124
214
  () => (
125
215
  <DropdownToggle
@@ -127,11 +217,12 @@ export const ExternalPlatformDropdown = ({
127
217
  toggleIndicator={CaretDownIcon}
128
218
  isText
129
219
  className="pf-u-w-100"
220
+ isDisabled={dropdownIsDisabled}
130
221
  >
131
- {externalPlatformTypes[value as PlatformType]?.label}
222
+ {externalPlatformTypes[field.value as PlatformType]?.label}
132
223
  </DropdownToggle>
133
224
  ),
134
- [externalPlatformTypes, value],
225
+ [externalPlatformTypes, field, dropdownIsDisabled],
135
226
  );
136
227
 
137
228
  return (
@@ -140,15 +231,23 @@ export const ExternalPlatformDropdown = ({
140
231
  fieldId={fieldId}
141
232
  label={'Integrate with external partner platforms'}
142
233
  >
143
- <Dropdown
144
- {...field}
145
- id={fieldId}
146
- dropdownItems={enabledItems}
147
- toggle={toggle}
148
- isOpen={isOpen}
149
- className="pf-u-w-100"
150
- onSelect={onSelect}
151
- />
234
+ <Tooltip
235
+ content={tooltipDropdownDisabled}
236
+ hidden={!dropdownIsDisabled}
237
+ position="top"
238
+ distance={7}
239
+ >
240
+ <Dropdown
241
+ {...field}
242
+ id={fieldId}
243
+ dropdownItems={enabledItems}
244
+ toggle={toggle}
245
+ isOpen={isOpen}
246
+ className="pf-u-w-100"
247
+ onSelect={onSelect}
248
+ disabled={dropdownIsDisabled}
249
+ />
250
+ </Tooltip>
152
251
  </FormGroup>
153
252
  );
154
253
  };
@@ -10,14 +10,16 @@ const PlatformIntegrationNote = ({ platformType }: { platformType: SupportedPlat
10
10
  <p>
11
11
  <ExclamationTriangleIcon color={warningColor.value} size="sm" /> You will need to modify your
12
12
  platform configuration after cluster installation is completed.{' '}
13
- <a
14
- href={integrationPlatformLink || ''}
15
- target="_blank"
16
- rel="noopener noreferrer"
17
- data-ouia-component-id="vm-integration-kb-page"
18
- >
19
- Learn more <i className="fas fa-external-link-alt" />
20
- </a>
13
+ {!!integrationPlatformLink && (
14
+ <a
15
+ href={integrationPlatformLink || ''}
16
+ target="_blank"
17
+ rel="noopener noreferrer"
18
+ data-ouia-component-id="vm-integration-kb-page"
19
+ >
20
+ Learn more <i className="fas fa-external-link-alt" />
21
+ </a>
22
+ )}
21
23
  </p>
22
24
  );
23
25
  };
@@ -17,3 +17,11 @@ export const ExternalPlatformLinks: Partial<{ [key in PlatformType]: string }> =
17
17
  export const ExternalPlatformTooltips: Partial<{ [key in PlatformType]: string }> = {
18
18
  oci: "To integrate with an external partner (for example, Oracle Cloud), you'll need to provide a custom manifest.",
19
19
  };
20
+
21
+ export const ExternalPlaformIds: { [key in PlatformType]: string } = {
22
+ baremetal: '',
23
+ none: '',
24
+ nutanix: 'NUTANIX_INTEGRATION',
25
+ oci: 'EXTERNAL_PLATFORM_OCI',
26
+ vsphere: 'VSPHERE_INTEGRATION',
27
+ };
@@ -4,12 +4,12 @@ import { ActionListItem, Button, ButtonVariant, Grid, GridItem } from '@patternf
4
4
  import { ClusterWizardStepHeader, useAlerts, ClusterWizardStep } from '../../../../common';
5
5
  import { useClusterWizardContext } from '../../clusterWizard/ClusterWizardContext';
6
6
  import { getApiErrorMessage, handleApiError } from '../../../api';
7
- import { updateCluster } from '../../../reducers/clusters';
7
+ import { updateCluster } from '../../../store/slices/current-cluster/slice';
8
8
  import ClusterWizardFooter from '../../clusterWizard/ClusterWizardFooter';
9
9
  import ClusterWizardNavigation from '../../clusterWizard/ClusterWizardNavigation';
10
10
  import { ClustersService } from '../../../services';
11
11
  import { useStateSafely } from '../../../../common/hooks';
12
- import { selectCurrentClusterPermissionsState } from '../../../selectors';
12
+ import { selectCurrentClusterPermissionsState } from '../../../store/slices/current-cluster/selectors';
13
13
  import ReviewPreflightChecks from './ReviewPreflightChecks';
14
14
  import ReviewSummary from './ReviewSummary';
15
15
  import './ReviewCluster.css';
@@ -7,7 +7,7 @@ import { useAlerts, useFormikAutoSave } from '../../../../../common';
7
7
  import { useErrorMonitor } from '../../../../../common/components/ErrorHandling/ErrorMonitorContext';
8
8
  import { getApiErrorMessage } from '../../../../api';
9
9
  import { StaticIpFormProps } from './propTypes';
10
- import { selectCurrentClusterPermissionsState } from '../../../../selectors';
10
+ import { selectCurrentClusterPermissionsState } from '../../../../store/slices/current-cluster/selectors';
11
11
 
12
12
  const AutosaveWithParentUpdate = <StaticIpFormValues extends object>({
13
13
  onFormStateChange,
@@ -16,11 +16,11 @@ import { FieldArray, FieldArrayRenderProps, useField } from 'formik';
16
16
  import cloneDeep from 'lodash-es/cloneDeep.js';
17
17
  import { getFormikArrayItemFieldName, LoadingState } from '../../../../../common';
18
18
  import ConfirmationModal from '../../../../../common/components/ui/ConfirmationModal';
19
+ import { HostStaticNetworkConfig } from '@openshift-assisted/types/assisted-installer-service';
19
20
  import {
20
- selectIsCurrentClusterSNO,
21
21
  selectCurrentClusterPermissionsState,
22
- } from '../../../../selectors';
23
- import { HostStaticNetworkConfig } from '@openshift-assisted/types/assisted-installer-service';
22
+ selectIsCurrentClusterSNO,
23
+ } from '../../../../store/slices/current-cluster/selectors';
24
24
 
25
25
  const fieldName = 'hosts';
26
26
 
@@ -5,8 +5,8 @@ import { PlusCircleIcon } from '@patternfly/react-icons';
5
5
  import { getFormikArrayItemFieldName, RemovableField } from '../../../../../../common';
6
6
  import { OcmInputField } from '../../../../ui/OcmFormFields';
7
7
  import { useSelector } from 'react-redux';
8
- import { selectCurrentClusterPermissionsState } from '../../../../../selectors';
9
8
  import { MacInterfaceMap } from '@openshift-assisted/types/assisted-installer-service';
9
+ import { selectCurrentClusterPermissionsState } from '../../../../../store/slices/current-cluster/selectors';
10
10
 
11
11
  const AddMapping: React.FC<{
12
12
  onPush: ArrayHelpers['push'];