@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
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.storeDay1 = void 0;
4
+ const toolkit_1 = require("@reduxjs/toolkit");
5
+ const slice_1 = require("./slices/clusters/slice");
6
+ const slice_2 = require("./slices/current-cluster/slice");
7
+ const slice_3 = require("./slices/infra-envs/slice");
8
+ const slice_4 = require("./slices/feature-flags/slice");
9
+ const common_1 = require("../../common");
10
+ exports.storeDay1 = (0, toolkit_1.configureStore)({
11
+ devTools: {
12
+ name: 'Assisted Installer - Day 1',
13
+ },
14
+ reducer: {
15
+ clusters: slice_1.clustersReducer,
16
+ currentCluster: slice_2.currentClusterReducer,
17
+ infraEnvs: slice_3.infraEnvsReducer,
18
+ featureFlags: slice_4.featureFlagsReducer,
19
+ },
20
+ preloadedState: {
21
+ featureFlags: common_1.STANDALONE_DEPLOYMENT_ENABLED_FEATURES,
22
+ },
23
+ });
24
+ //# sourceMappingURL=store-day1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-day1.js","sourceRoot":"","sources":["../../../../lib/ocm/store/store-day1.ts"],"names":[],"mappings":";;;AAAA,8CAAkD;AAClD,mDAA0D;AAC1D,0DAAuE;AACvE,qDAA6D;AAC7D,wDAAmE;AACnE,yCAAsE;AAEzD,QAAA,SAAS,GAAG,IAAA,wBAAc,EAAC;IACtC,QAAQ,EAAE;QACR,IAAI,EAAE,4BAA4B;KACnC;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,uBAAe;QACzB,cAAc,EAAE,6BAAqB;QACrC,SAAS,EAAE,wBAAgB;QAC3B,YAAY,EAAE,2BAAmB;KAClC;IACD,cAAc,EAAE;QACd,YAAY,EAAE,+CAAsC;KACrD;CACF,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.storeDay2 = void 0;
4
+ const toolkit_1 = require("@reduxjs/toolkit");
5
+ const slice_1 = require("./slices/infra-envs/slice");
6
+ const slice_2 = require("./slices/feature-flags/slice");
7
+ const common_1 = require("../../common");
8
+ exports.storeDay2 = (0, toolkit_1.configureStore)({
9
+ devTools: {
10
+ name: 'Assisted Installer - Day 2',
11
+ },
12
+ reducer: {
13
+ infraEnvs: slice_1.infraEnvsReducer,
14
+ featureFlags: slice_2.featureFlagsReducer,
15
+ },
16
+ preloadedState: {
17
+ featureFlags: common_1.STANDALONE_DEPLOYMENT_ENABLED_FEATURES,
18
+ },
19
+ });
20
+ //# sourceMappingURL=store-day2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-day2.js","sourceRoot":"","sources":["../../../../lib/ocm/store/store-day2.ts"],"names":[],"mappings":";;;AAAA,8CAAkD;AAClD,qDAA6D;AAC7D,wDAAmE;AACnE,yCAAsE;AAEzD,QAAA,SAAS,GAAG,IAAA,wBAAc,EAAC;IACtC,QAAQ,EAAE;QACR,IAAI,EAAE,4BAA4B;KACnC;IACD,OAAO,EAAE;QACP,SAAS,EAAE,wBAAgB;QAC3B,YAAY,EAAE,2BAAmB;KAClC;IACD,cAAc,EAAE;QACd,YAAY,EAAE,+CAAsC;KACrD;CACF,CAAC,CAAC"}
@@ -15,7 +15,7 @@ import { BareMetalHostK8sResource } from '../../types/k8s/bare-metal-host';
15
15
  import { ClusterImageSetK8sResource } from '../../types/k8s/cluster-image-set';
16
16
  import { BMCFormProps } from '../Agent/types';
17
17
  import { AgentMachineK8sResource } from '../Hypershift/types';
18
- import { AddHostDropdownProps } from '../InfraEnv/types';
18
+ import { AddHostDropdownProps, ProvisioningConfigResult } from '../InfraEnv/types';
19
19
  import { AddHostModalProps, EditBMHModalProps, UploadActionModalProps } from '../modals/types';
20
20
 
21
21
  export type EditAgentModalProps = {
@@ -153,7 +153,6 @@ export type ClusterDeploymentWizardProps = {
153
153
  setPreviewOpen: (open: boolean) => void;
154
154
  fetchManagedClusters: () => Promise<K8sResourceCommon[]>;
155
155
  fetchKlusterletAddonConfig: () => Promise<K8sResourceCommon[]>;
156
- isBMPlatform: boolean;
157
156
  onSaveAgent: EditAgentModalProps['onSave'];
158
157
  onSaveBMH: EditBMHModalProps['onEdit'];
159
158
  onSaveISOParams?: AddHostModalProps['onSaveISOParams'];
@@ -163,6 +162,7 @@ export type ClusterDeploymentWizardProps = {
163
162
  onCreateBMH?: BMCFormProps['onCreateBMH'];
164
163
  docVersion: string; // ACM version
165
164
  onCreateBmcByYaml: UploadActionModalProps['onCreateBmcByYaml'];
165
+ provisioningConfigResult: ProvisioningConfigResult;
166
166
  };
167
167
 
168
168
  export type FetchSecret = (name: string, namespace: string) => Promise<SecretK8sResource>;
@@ -195,7 +195,6 @@ export type InfraEnvAgentTableProps = Pick<
195
195
  ) => Promise<BareMetalHostK8sResource>;
196
196
  // eslint-disable-next-line
197
197
  onMassDeleteHost: (agent?: AgentK8sResource, bmh?: BareMetalHostK8sResource) => Promise<any>;
198
- isBMPlatform: boolean;
199
198
  agentClusterInstalls: AgentClusterInstallK8sResource[];
200
199
  };
201
200
 
@@ -1,3 +1,4 @@
1
+ import { Host } from '@openshift-assisted/types/assisted-installer-service';
1
2
  import {
2
3
  getAllClusterWizardSoftValidationIds,
3
4
  getWizardStepClusterStatus,
@@ -68,6 +69,15 @@ const networkingStepValidationsMap: WizardStepValidationMap = {
68
69
  // TODO(mlibra): remove that container-images-available from soft validations and let backend drive it via disabling it.
69
70
  // Depends on: https://issues.redhat.com/browse/MGMT-5265
70
71
  softValidationIds: ['ntp-synced', 'container-images-available'],
72
+ getPageURL: (host: Host, validationID: string) => {
73
+ if (validationID === 'ntp-synced') {
74
+ return {
75
+ url: `multicloud/infrastructure/environments/details/${host.infraEnvId || ''}`,
76
+ name: 'infrastructure environment',
77
+ };
78
+ }
79
+ return undefined;
80
+ },
71
81
  };
72
82
 
73
83
  const reviewStepValidationsMap: WizardStepValidationMap = {
@@ -2,20 +2,41 @@ import {
2
2
  Dropdown,
3
3
  DropdownGroup,
4
4
  DropdownItem,
5
+ DropdownItemProps,
5
6
  DropdownSeparator,
6
7
  DropdownToggle,
7
8
  Split,
8
9
  SplitItem,
10
+ Spinner,
9
11
  } from '@patternfly/react-core';
10
12
  import * as React from 'react';
11
- import { PopoverIcon } from '../../../common';
12
13
  import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
13
14
  import { AddBmcHostModal, AddBmcHostYamlModal, AddHostModal } from '../modals';
14
15
  import { AddHostDropdownProps } from './types';
15
16
  import './AddHostDropdown.css';
17
+ import { PopoverIcon } from '../../../common';
18
+ import { Trans } from 'react-i18next';
19
+ import { Link } from 'react-router-dom';
16
20
 
17
21
  type ModalType = 'iso' | 'bmc' | 'yaml' | 'ipxe' | undefined;
18
22
 
23
+ const DropdownItemWithLoading = (
24
+ props: DropdownItemProps & { isLoading: boolean; label: string },
25
+ ) => {
26
+ return (
27
+ <DropdownItem {...props} isDisabled={props.isDisabled || props.isLoading}>
28
+ <Split hasGutter>
29
+ <SplitItem>{props.label}</SplitItem>
30
+ {props.isLoading && (
31
+ <SplitItem>
32
+ <Spinner size="sm" />
33
+ </SplitItem>
34
+ )}
35
+ </Split>
36
+ </DropdownItem>
37
+ );
38
+ };
39
+
19
40
  const AddHostDropdown = ({
20
41
  infraEnv,
21
42
  agentClusterInstall,
@@ -24,10 +45,12 @@ const AddHostDropdown = ({
24
45
  onCreateBMH,
25
46
  docVersion,
26
47
  onCreateBmcByYaml,
27
- isBMPlatform,
48
+ provisioningConfigResult,
28
49
  }: AddHostDropdownProps) => {
29
50
  const [addModalType, setAddModalType] = React.useState<ModalType>(undefined);
30
51
  const [isKebabOpen, setIsKebabOpen] = React.useState(false);
52
+ const [provisioningConfig, provisioningConfigLoaded, provisioningConfigError] =
53
+ provisioningConfigResult;
31
54
  const { t } = useTranslation();
32
55
  return (
33
56
  <>
@@ -69,17 +92,19 @@ const AddHostDropdown = ({
69
92
  <Split hasGutter>
70
93
  <SplitItem>{t('ai:Baseboard Management Controller (BMC)')}</SplitItem>
71
94
  <SplitItem>
72
- {!isBMPlatform && (
95
+ {!provisioningConfig && (
73
96
  <>
74
97
  {' '}
75
98
  <PopoverIcon
76
99
  noVerticalAlign
77
100
  bodyContent={
78
- <p>
79
- {t(
80
- `ai:To enable the host's baseboard management controller (BMC) on the hub cluster, deploy the hub cluster on vSphere, BareMetal, OpenStack, or platform-agnostic (none type).`,
81
- )}
82
- </p>
101
+ <Trans t={t}>
102
+ ai:To enable the host's baseboard management controller (BMC) on the hub
103
+ cluster, you must first{' '}
104
+ <Link to="/k8s/cluster/metal3.io~v1alpha1~Provisioning/~new">
105
+ create a provisioning configuration.
106
+ </Link>
107
+ </Trans>
83
108
  }
84
109
  />
85
110
  </>
@@ -88,18 +113,18 @@ const AddHostDropdown = ({
88
113
  </Split>
89
114
  }
90
115
  >
91
- <DropdownItem
116
+ <DropdownItemWithLoading
92
117
  key="with-credentials"
93
118
  onClick={() => {
94
119
  setIsKebabOpen(false);
95
120
  setAddModalType('bmc');
96
121
  }}
97
122
  description={t('ai:Discover a single host via Baseboard Management Controller')}
98
- isDisabled={!isBMPlatform}
99
- >
100
- {t('ai:With BMC form')}
101
- </DropdownItem>
102
- <DropdownItem
123
+ label={t('ai:With BMC form')}
124
+ isLoading={!provisioningConfigLoaded}
125
+ isDisabled={!provisioningConfig && !provisioningConfigError}
126
+ />
127
+ <DropdownItemWithLoading
103
128
  key="upload-yaml"
104
129
  onClick={() => {
105
130
  setIsKebabOpen(false);
@@ -108,10 +133,10 @@ const AddHostDropdown = ({
108
133
  description={t(
109
134
  'ai:Discover multiple hosts by providing yaml with Bare Metal Host definitions',
110
135
  )}
111
- isDisabled={!isBMPlatform}
112
- >
113
- {t('ai:By uploading a YAML')}
114
- </DropdownItem>
136
+ label={t('ai:By uploading a YAML')}
137
+ isLoading={!provisioningConfigLoaded}
138
+ isDisabled={!provisioningConfig && !provisioningConfigError}
139
+ />
115
140
  </DropdownGroup>,
116
141
  ]}
117
142
  position={'right'}
@@ -145,6 +170,7 @@ const AddHostDropdown = ({
145
170
  onCreateBMH={onCreateBMH}
146
171
  usedHostnames={usedHostnames}
147
172
  docVersion={docVersion}
173
+ provisioningConfigError={provisioningConfigError}
148
174
  />
149
175
  )}
150
176
  {addModalType === 'yaml' && (
@@ -154,6 +180,7 @@ const AddHostDropdown = ({
154
180
  onClose={() => setAddModalType(undefined)}
155
181
  onCreateBmcByYaml={onCreateBmcByYaml}
156
182
  docVersion={docVersion}
183
+ provisioningConfigError={provisioningConfigError}
157
184
  />
158
185
  )}
159
186
  </>
@@ -1,6 +1,9 @@
1
+ import { K8sResourceCommon } from '@openshift-console/dynamic-plugin-sdk';
1
2
  import { AgentClusterInstallK8sResource, InfraEnvK8sResource } from '../../types';
2
3
  import { AddBmcHostModalProps, AddHostModalProps, UploadActionModalProps } from '../modals/types';
3
4
 
5
+ export type ProvisioningConfigResult = [K8sResourceCommon | null, boolean, unknown];
6
+
4
7
  export type AddHostDropdownProps = {
5
8
  infraEnv: InfraEnvK8sResource;
6
9
  agentClusterInstall?: AgentClusterInstallK8sResource;
@@ -9,5 +12,5 @@ export type AddHostDropdownProps = {
9
12
  onCreateBMH: AddBmcHostModalProps['onCreateBMH'];
10
13
  usedHostnames: AddBmcHostModalProps['usedHostnames'];
11
14
  onCreateBmcByYaml: UploadActionModalProps['onCreateBmcByYaml'];
12
- isBMPlatform: boolean;
15
+ provisioningConfigResult: ProvisioningConfigResult;
13
16
  };
@@ -67,6 +67,9 @@ export const getAIHosts = (
67
67
  progressStages: agentProgress?.progressStages,
68
68
  bootstrap: agent.status?.bootstrap,
69
69
  installationDiskId: agent.spec.installation_disk_id || agent.status?.installation_disk_id,
70
+ infraEnvId: `${agent.metadata?.namespace || ''}/${
71
+ agent.metadata?.labels?.['infraenvs.agent-install.openshift.io'] || ''
72
+ }`,
70
73
  };
71
74
  });
72
75
 
@@ -4,6 +4,7 @@ import BMCForm from '../Agent/BMCForm';
4
4
  import { AddBmcHostModalProps } from './types';
5
5
  import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
6
6
  import { EnvironmentErrors } from '../InfraEnv/EnvironmentErrors';
7
+ import ProvisioningConfigErrorAlert from './ProvisioningConfigErrorAlert';
7
8
 
8
9
  const AddBmcHostModal: React.FC<AddBmcHostModalProps> = ({
9
10
  isOpen,
@@ -12,6 +13,7 @@ const AddBmcHostModal: React.FC<AddBmcHostModalProps> = ({
12
13
  onCreateBMH,
13
14
  usedHostnames,
14
15
  docVersion,
16
+ provisioningConfigError,
15
17
  }) => {
16
18
  const hasDHCP = infraEnv.metadata?.labels?.networkType !== 'static';
17
19
  const { t } = useTranslation();
@@ -26,6 +28,7 @@ const AddBmcHostModal: React.FC<AddBmcHostModalProps> = ({
26
28
  id="add-host-modal"
27
29
  >
28
30
  <EnvironmentErrors infraEnv={infraEnv} docVersion={docVersion} inModal>
31
+ <ProvisioningConfigErrorAlert error={provisioningConfigError} />
29
32
  <BMCForm
30
33
  onCreateBMH={onCreateBMH}
31
34
  onClose={onClose}
@@ -4,6 +4,7 @@ import { UploadActionModalProps } from './types';
4
4
  import AddBmcHostYamlForm from './AddBmcHostYamlForm';
5
5
  import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
6
6
  import { EnvironmentErrors } from '../InfraEnv/EnvironmentErrors';
7
+ import ProvisioningConfigErrorAlert from './ProvisioningConfigErrorAlert';
7
8
 
8
9
  const AddBmcHostYamlModal: React.FC<UploadActionModalProps> = ({
9
10
  isOpen,
@@ -11,6 +12,7 @@ const AddBmcHostYamlModal: React.FC<UploadActionModalProps> = ({
11
12
  onCreateBmcByYaml,
12
13
  infraEnv,
13
14
  docVersion,
15
+ provisioningConfigError,
14
16
  }) => {
15
17
  const { t } = useTranslation();
16
18
  return (
@@ -23,6 +25,7 @@ const AddBmcHostYamlModal: React.FC<UploadActionModalProps> = ({
23
25
  hasNoBodyWrapper
24
26
  >
25
27
  <EnvironmentErrors infraEnv={infraEnv} docVersion={docVersion} inModal>
28
+ <ProvisioningConfigErrorAlert error={provisioningConfigError} />
26
29
  <AddBmcHostYamlForm onClose={onClose} onCreateBmcByYaml={onCreateBmcByYaml} />
27
30
  </EnvironmentErrors>
28
31
  </Modal>
@@ -0,0 +1,18 @@
1
+ import { Alert } from '@patternfly/react-core';
2
+ import React from 'react';
3
+ import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
4
+ import { getErrorMessage } from '../../../common/utils';
5
+
6
+ const ProvisioningConfigErrorAlert = ({ error }: { error: unknown }) => {
7
+ const { t } = useTranslation();
8
+ if (!error) {
9
+ return null;
10
+ }
11
+ return (
12
+ <Alert title={t('ai:Failed to get Provisioning Configuration')} variant="danger" isInline>
13
+ {getErrorMessage(error)}
14
+ </Alert>
15
+ );
16
+ };
17
+
18
+ export default ProvisioningConfigErrorAlert;
@@ -32,6 +32,7 @@ export type AddBmcHostModalProps = Pick<
32
32
  > & {
33
33
  isOpen: boolean;
34
34
  docVersion: string;
35
+ provisioningConfigError?: unknown;
35
36
  };
36
37
 
37
38
  export type EditBMHModalProps = Pick<
@@ -70,4 +71,5 @@ export type UploadActionModalProps = {
70
71
  isEdit?: boolean;
71
72
  docVersion: string;
72
73
  infraEnv: InfraEnvK8sResource;
74
+ provisioningConfigError?: unknown;
73
75
  };
@@ -9,12 +9,11 @@ const withAssistedInstallerBasePath = (client: AxiosInstance): AxiosInstance =>
9
9
  if (cfg.url) {
10
10
  try {
11
11
  const url = new URL(cfg.url);
12
- cfg.url = `${url.origin}${basePath}${url.pathname}`;
12
+ cfg.url = `${url.origin}${basePath}${url.pathname}${url.search}`;
13
13
  } catch {
14
+ // This usually happens when the request is issued to a localhost endpoint.
14
15
  cfg.url = `${basePath}${cfg.url}`;
15
16
  }
16
- } else {
17
- cfg.url = `${basePath}`;
18
17
  }
19
18
 
20
19
  return cfg;
@@ -68,6 +68,7 @@ const FailingValidation = <S extends string>({
68
68
  setCurrentStepId,
69
69
  wizardStepNames,
70
70
  wizardStepsValidationsMap,
71
+ host,
71
72
  }: FailingValidationsProps<S>) => {
72
73
  const { t } = useTranslation();
73
74
 
@@ -88,7 +89,16 @@ const FailingValidation = <S extends string>({
88
89
  // no sooner step, so the user can not do anything about it ...
89
90
  fix = t('ai:Please wait till all checks are finished.');
90
91
  } else if (step) {
91
- fix = (
92
+ const pageURL = host
93
+ ? wizardStepsValidationsMap[step].getPageURL?.(host, validation.id)
94
+ : undefined;
95
+ fix = pageURL ? (
96
+ <>
97
+ <Trans t={t}>
98
+ ai:It can be fixed in the <a href={pageURL.url}>{pageURL.name}</a> page.
99
+ </Trans>
100
+ </>
101
+ ) : (
92
102
  <>
93
103
  <Trans t={t}>
94
104
  ai:It can be fixed in the{' '}
@@ -196,6 +206,7 @@ export const HostsValidations = <S extends string, V extends string[]>({
196
206
  <FailingValidation<S>
197
207
  key={validationId}
198
208
  validation={validation}
209
+ host={host}
199
210
  hostGroup={group}
200
211
  severity={severity}
201
212
  setCurrentStepId={setCurrentStepId}
@@ -24,7 +24,7 @@ export const NetworkTypeControlGroup = ({
24
24
  <Tooltip
25
25
  hidden={isSDNSelectable}
26
26
  content={t(
27
- 'ai:Software-Defined Networking (SDN) cannot be selected for SNO clusters or when IPv6 is detected.',
27
+ 'ai:Network type selection is not supported for SNO clusters or when IPv6 is detected.',
28
28
  )}
29
29
  >
30
30
  <RadioField
@@ -50,7 +50,7 @@ export const NetworkTypeControlGroup = ({
50
50
  <Tooltip
51
51
  hidden={isSDNSelectable}
52
52
  content={t(
53
- 'ai:Software-Defined Networking (SDN) cannot be selected for SNO clusters or when IPv6 is detected.',
53
+ 'ai:Network type selection is not supported for SNO clusters or when IPv6 is detected.',
54
54
  )}
55
55
  >
56
56
  <RadioField
@@ -56,6 +56,7 @@ export type FailingValidationsProps<S extends string> = {
56
56
  severity?: 'danger' | 'warning';
57
57
  wizardStepNames: { [key in S]: string };
58
58
  wizardStepsValidationsMap: WizardStepsValidationMap<S>;
59
+ host?: Host;
59
60
  };
60
61
 
61
62
  export type ValidationActionLinkProps<S extends string> = {
@@ -34,6 +34,15 @@ export type WizardStepValidationMap = {
34
34
  validationIds: HostValidationId[];
35
35
  };
36
36
  softValidationIds: (HostValidationId | ClusterValidationId)[];
37
+ getPageURL?: (
38
+ host: Host,
39
+ validationId: string,
40
+ ) =>
41
+ | {
42
+ url: string;
43
+ name: string;
44
+ }
45
+ | undefined;
37
46
  };
38
47
 
39
48
  export type WizardStepsValidationMap<T extends string> = {
@@ -1,7 +1,6 @@
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 { useFeature } from '../../../features';
5
4
  import { OpenshiftVersionOptionType } from '../../../types';
6
5
  import { getFieldId } from './utils';
7
6
  import HelperText from './HelperText';
@@ -21,7 +20,6 @@ const SingleNodeCheckbox: React.FC<SingleNodeCheckboxProps> = ({
21
20
  const {
22
21
  values: { openshiftVersion },
23
22
  } = useFormikContext<ClusterCreateParams>();
24
- const isSingleNodeOpenshiftEnabled = useFeature('ASSISTED_INSTALLER_SNO_FEATURE');
25
23
  const [field, meta, helpers] = useField<'None' | 'Full'>({ name: props.name, validate });
26
24
  const featureSupportLevelContext = useFeatureSupportLevel();
27
25
  const prevVersionRef = React.useRef(openshiftVersion);
@@ -54,7 +52,7 @@ const SingleNodeCheckbox: React.FC<SingleNodeCheckboxProps> = ({
54
52
  prevVersionRef.current = openshiftVersion;
55
53
  }, [openshiftVersion, onChanged, featureSupportLevelContext]);
56
54
 
57
- if (isSingleNodeOpenshiftEnabled && isSupportedVersionAvailable) {
55
+ if (isSupportedVersionAvailable) {
58
56
  return (
59
57
  <FormGroup isInline fieldId={fieldId}>
60
58
  <Tooltip hidden={!disabledReason} content={disabledReason}>
@@ -320,29 +320,11 @@ describe('validationSchemas', () => {
320
320
  });
321
321
 
322
322
  test('baseDomainNameValidationSchema', async () => {
323
- const valid = [
324
- 'a.com',
325
- 'co',
326
- '1c',
327
- '1-c',
328
- '1--c',
329
- 'aaa',
330
- 'abc.def',
331
- 'a-aa.com',
332
- 'a--aa.com',
333
- 'aa.com.com.com.com',
334
- 'red.cat--rahul.com',
335
- ];
323
+ const valid = ['a.com', 'co', '1c'];
336
324
  const invalid = [
337
- 'a',
338
- '-',
339
- 'a-',
340
- '-aaa.com.',
341
- 'aaa-.com',
342
- 'a.c',
343
- 'aaa.c',
344
- 'DNSnamescancontainonlyalphabeticalcharactersa-znumericcharacters0-9theminussign-andtheperiod',
345
- 'DNSnamescancontainonlyalphabeticalcharactersa-znumericcharacters0-9theminussign-andtheperiod.com',
325
+ ' ',
326
+ 'a g',
327
+ 'iamnotavaliddnsdomain-iamnotavaliddnsdomain-iamnotavaliddnsdomain',
346
328
  ];
347
329
 
348
330
  await Promise.all(
@@ -38,8 +38,6 @@ const CLUSTER_NAME_VALID_CHARS_REGEX = /^[a-z0-9-]*$/;
38
38
  const SSH_PUBLIC_KEY_REGEX =
39
39
  /^(ssh-rsa|ssh-ed25519|ecdsa-[-a-z0-9]*) AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$/;
40
40
  const DNS_NAME_REGEX = /^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/;
41
- const BASE_DOMAIN_REGEX = /^[a-z\d][\-]*[a-z\d]+$/;
42
- const DNS_NAME_REGEX_OCM = /^([a-z\d]([\-]*[a-z\d]+)*\.)+[a-z\d]+[\-]*[a-z\d]+$/;
43
41
 
44
42
  const PROXY_DNS_REGEX =
45
43
  /(^\.?([a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62}){1}(\.[a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62})*$)/;
@@ -397,27 +395,20 @@ export const dnsNameValidationSchema = Yup.string()
397
395
  excludeEmptyString: true,
398
396
  });
399
397
 
400
- export const validateBaseDomainName = (baseDomainName: string) => {
401
- if (baseDomainName.match(BASE_DOMAIN_REGEX) && baseDomainName.length > 1) {
402
- return true;
403
- }
404
- return !!baseDomainName.match(DNS_NAME_REGEX_OCM);
405
- };
398
+ export const baseDomainValidationSchema = Yup.string().test(
399
+ 'dns-name-label-length',
400
+ 'Every single host component in the base domain name cannot contain more than 63 characters and must not contain spaces.',
401
+ (value: string) => {
402
+ // Check if the value contains any spaces
403
+ if (/\s/.test(value)) {
404
+ return false; // Value contains spaces, validation fails
405
+ }
406
406
 
407
- export const baseDomainValidationSchema = Yup.string()
408
- .test(
409
- 'dns-name-label-length',
410
- 'Single label of the DNS name can not be longer than 63 characters.',
411
- (value: string) => (value || '').split('.').every((label: string) => label.length <= 63),
412
- )
413
- .test(
414
- 'dns-name-validation',
415
- '"${value}" is not valid. DNS base domains must have two characters after the dot and must not end in a special character.',
416
- (value: string) => {
417
- if (value === '') return true;
418
- else return validateBaseDomainName(value);
419
- },
420
- );
407
+ // Check the label lengths
408
+ const labels = (value || '').split('.');
409
+ return labels.every((label: string) => label.length <= 63);
410
+ },
411
+ );
421
412
 
422
413
  export const hostPrefixValidationSchema = (
423
414
  clusterNetworkCidr: NetworkConfigurationValues['clusterNetworkCidr'],
@@ -10,9 +10,7 @@ import {
10
10
  import { ValidationGroup as ClusterValidationGroup } from '../types/clusters';
11
11
  import { FeatureSupportLevelData } from '../components/featureSupportLevels/FeatureSupportLevelContext';
12
12
  import type { NewFeatureSupportLevelData } from '../components/newFeatureSupportLevels';
13
- // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/ban-ts-comment
14
- // @ts-ignore
15
- import buildManifest from '@openshift-assisted/ui-lib/package.json'; // This file is generated at build-time.
13
+ import buildManifest from '@openshift-assisted/ui-lib/package.json';
16
14
 
17
15
  export const getShortOpenshiftVersion = (ocpVersion?: string) =>
18
16
  ocpVersion?.split('.').slice(0, 2).join('.');
@@ -1,12 +1,7 @@
1
1
  import React from 'react';
2
2
 
3
3
  // Must conform Unleash constants
4
- type AssistedInstallerFeatureType =
5
- | 'ASSISTED_INSTALLER_SNO_FEATURE'
6
- | 'ASSISTED_INSTALLER_OCS_FEATURE'
7
- | 'ASSISTED_INSTALLER_ODF_FEATURE'
8
- | 'ASSISTED_INSTALLER_CNV_FEATURE'
9
- | 'ASSISTED_INSTALLER_NETWORK_TYPE_SELECTION_FEATURE'
4
+ export type AssistedInstallerFeatureType =
10
5
  | 'ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE'
11
6
  | 'ASSISTED_INSTALLER_MULTIARCH_SUPPORTED'
12
7
  | 'ASSISTED_INSTALLER_PLATFORM_OCI';
@@ -26,22 +21,12 @@ export type AssistedInstallerPermissionTypesListType = {
26
21
 
27
22
  // Hardcoded for ACM
28
23
  export const ACM_ENABLED_FEATURES: FeatureListType = {
29
- ASSISTED_INSTALLER_SNO_FEATURE: true,
30
- ASSISTED_INSTALLER_OCS_FEATURE: false,
31
- ASSISTED_INSTALLER_ODF_FEATURE: false,
32
- ASSISTED_INSTALLER_CNV_FEATURE: false,
33
- ASSISTED_INSTALLER_NETWORK_TYPE_SELECTION_FEATURE: false,
34
24
  ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE: false,
35
25
  ASSISTED_INSTALLER_MULTIARCH_SUPPORTED: true,
36
26
  };
37
27
 
38
28
  // Hardcoded outside OCM
39
29
  export const STANDALONE_DEPLOYMENT_ENABLED_FEATURES: FeatureListType = {
40
- ASSISTED_INSTALLER_SNO_FEATURE: true,
41
- ASSISTED_INSTALLER_OCS_FEATURE: true,
42
- ASSISTED_INSTALLER_ODF_FEATURE: true,
43
- ASSISTED_INSTALLER_CNV_FEATURE: true,
44
- ASSISTED_INSTALLER_NETWORK_TYPE_SELECTION_FEATURE: true,
45
30
  ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE: false,
46
31
  ASSISTED_INSTALLER_MULTIARCH_SUPPORTED: true,
47
32
  ASSISTED_INSTALLER_PLATFORM_OCI: true,
@@ -61,9 +46,6 @@ export const FeatureGateContextProvider: React.FC<{
61
46
  // hardcoded defaults
62
47
  // TODO (mortegag): Remove all multiarch capacity related code in the UI.
63
48
  const featuresWithDefaults: FeatureListType = {
64
- ASSISTED_INSTALLER_OCS_FEATURE: false,
65
- ASSISTED_INSTALLER_ODF_FEATURE: false,
66
- ASSISTED_INSTALLER_CNV_FEATURE: false,
67
49
  ASSISTED_INSTALLER_MULTIARCH_SUPPORTED: true,
68
50
  ...features,
69
51
  };
@@ -1,7 +1,7 @@
1
1
  import filesize from 'filesize.js';
2
2
  import camelCase from 'lodash-es/camelCase.js';
3
3
  import isString from 'lodash-es/isString.js';
4
- import { load } from 'js-yaml';
4
+ import { loadAll } from 'js-yaml';
5
5
  import { MAX_FILE_SIZE_BYTES, MAX_FILE_SIZE_OFFSET_FACTOR } from './configurations';
6
6
 
7
7
  export const FILENAME_REGEX = /^[^\/]*\.(yaml|yml|json)$/;
@@ -32,7 +32,7 @@ export const validateFileType = (value: string) => {
32
32
 
33
33
  export const isStringValidYAML = (input: string): boolean => {
34
34
  try {
35
- load(input);
35
+ loadAll(input);
36
36
  return true;
37
37
  } catch {
38
38
  return false;