@openshift-assisted/ui-lib 2.37.3 → 2.38.1

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 (246) hide show
  1. package/build/@types/cim/components/ClusterDeployment/ClusterDetailsFormFields.d.ts.map +1 -1
  2. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts +1 -1
  3. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
  4. package/build/@types/cim/components/common/constants.d.ts.map +1 -1
  5. package/build/@types/cim/components/helpers/toAssisted.d.ts.map +1 -1
  6. package/build/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
  7. package/build/@types/cim/types/k8s/infra-env-k8s-resource.d.ts +1 -0
  8. package/build/@types/cim/types/k8s/infra-env-k8s-resource.d.ts.map +1 -1
  9. package/build/@types/common/api/assisted-service/BundleAPI.d.ts +8 -0
  10. package/build/@types/common/api/assisted-service/BundleAPI.d.ts.map +1 -0
  11. package/build/@types/common/api/assisted-service/OperatorsAPI.d.ts +6 -0
  12. package/build/@types/common/api/assisted-service/OperatorsAPI.d.ts.map +1 -0
  13. package/build/@types/common/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts +7 -0
  14. package/build/@types/common/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts.map +1 -0
  15. package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
  16. package/build/@types/common/components/clusterWizard/types.d.ts +3 -1
  17. package/build/@types/common/components/clusterWizard/types.d.ts.map +1 -1
  18. package/build/@types/common/components/hosts/HostRowDetail.d.ts.map +1 -1
  19. package/build/@types/common/components/storage/DisksTable.d.ts.map +1 -1
  20. package/build/@types/common/config/constants.d.ts +5 -0
  21. package/build/@types/common/config/constants.d.ts.map +1 -1
  22. package/build/@types/common/config/docs_links.d.ts +9 -1
  23. package/build/@types/common/config/docs_links.d.ts.map +1 -1
  24. package/build/@types/common/selectors/clusterSelectors.d.ts +1 -0
  25. package/build/@types/common/selectors/clusterSelectors.d.ts.map +1 -1
  26. package/build/@types/common/types/clusters.d.ts +8 -0
  27. package/build/@types/common/types/clusters.d.ts.map +1 -1
  28. package/build/@types/common/types/ui-settings.d.ts +1 -0
  29. package/build/@types/common/types/ui-settings.d.ts.map +1 -1
  30. package/build/@types/ocm/components/SentryErrorMonitorContextProvider.d.ts.map +1 -1
  31. package/build/@types/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.d.ts.map +1 -1
  32. package/build/@types/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.d.ts +8 -0
  33. package/build/@types/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.d.ts.map +1 -0
  34. package/build/@types/ocm/components/clusterConfiguration/operators/CnvCheckbox.d.ts +4 -1
  35. package/build/@types/ocm/components/clusterConfiguration/operators/CnvCheckbox.d.ts.map +1 -1
  36. package/build/@types/ocm/components/clusterConfiguration/operators/LsoCheckbox.d.ts +8 -0
  37. package/build/@types/ocm/components/clusterConfiguration/operators/LsoCheckbox.d.ts.map +1 -0
  38. package/build/@types/ocm/components/clusterConfiguration/operators/LvmCheckbox.d.ts +4 -1
  39. package/build/@types/ocm/components/clusterConfiguration/operators/LvmCheckbox.d.ts.map +1 -1
  40. package/build/@types/ocm/components/clusterConfiguration/operators/MceCheckbox.d.ts +4 -1
  41. package/build/@types/ocm/components/clusterConfiguration/operators/MceCheckbox.d.ts.map +1 -1
  42. package/build/@types/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.d.ts +4 -1
  43. package/build/@types/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.d.ts.map +1 -1
  44. package/build/@types/ocm/components/clusterConfiguration/operators/NmstateCheckbox.d.ts +10 -0
  45. package/build/@types/ocm/components/clusterConfiguration/operators/NmstateCheckbox.d.ts.map +1 -0
  46. package/build/@types/ocm/components/clusterConfiguration/operators/NmstateRequirements.d.ts +7 -0
  47. package/build/@types/ocm/components/clusterConfiguration/operators/NmstateRequirements.d.ts.map +1 -0
  48. package/build/@types/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.d.ts +8 -0
  49. package/build/@types/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.d.ts.map +1 -0
  50. package/build/@types/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.d.ts +8 -0
  51. package/build/@types/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.d.ts.map +1 -0
  52. package/build/@types/ocm/components/clusterConfiguration/operators/OdfCheckbox.d.ts +5 -1
  53. package/build/@types/ocm/components/clusterConfiguration/operators/OdfCheckbox.d.ts.map +1 -1
  54. package/build/@types/ocm/components/clusterConfiguration/operators/OpenShiftAICheckbox.d.ts +5 -1
  55. package/build/@types/ocm/components/clusterConfiguration/operators/OpenShiftAICheckbox.d.ts.map +1 -1
  56. package/build/@types/ocm/components/clusterConfiguration/operators/OpenShiftAIRequirements.d.ts.map +1 -1
  57. package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.d.ts +4 -0
  58. package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.d.ts.map +1 -0
  59. package/build/@types/ocm/components/clusterConfiguration/operators/OscCheckbox.d.ts +5 -1
  60. package/build/@types/ocm/components/clusterConfiguration/operators/OscCheckbox.d.ts.map +1 -1
  61. package/build/@types/ocm/components/clusterConfiguration/operators/PipelinesChekbox.d.ts +8 -0
  62. package/build/@types/ocm/components/clusterConfiguration/operators/PipelinesChekbox.d.ts.map +1 -0
  63. package/build/@types/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.d.ts +8 -0
  64. package/build/@types/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.d.ts.map +1 -0
  65. package/build/@types/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.d.ts +8 -0
  66. package/build/@types/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.d.ts.map +1 -0
  67. package/build/@types/ocm/components/clusterConfiguration/operators/SupportedOperators.d.ts +24 -0
  68. package/build/@types/ocm/components/clusterConfiguration/operators/SupportedOperators.d.ts.map +1 -0
  69. package/build/@types/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.d.ts +4 -0
  70. package/build/@types/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.d.ts.map +1 -0
  71. package/build/@types/ocm/components/clusterWizard/ClusterDetails.d.ts.map +1 -1
  72. package/build/@types/ocm/components/clusterWizard/Operators.d.ts.map +1 -1
  73. package/build/@types/ocm/components/clusterWizard/OperatorsStep.d.ts.map +1 -1
  74. package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts +1 -1
  75. package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts.map +1 -1
  76. package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts.map +1 -1
  77. package/build/@types/ocm/config/constants.d.ts +2 -0
  78. package/build/@types/ocm/config/constants.d.ts.map +1 -1
  79. package/build/@types/ocm/sentry.d.ts +2 -2
  80. package/build/@types/ocm/sentry.d.ts.map +1 -1
  81. package/build/@types/ocm/services/BundleService.d.ts +6 -0
  82. package/build/@types/ocm/services/BundleService.d.ts.map +1 -0
  83. package/build/@types/ocm/services/ClustersService.d.ts +1 -0
  84. package/build/@types/ocm/services/ClustersService.d.ts.map +1 -1
  85. package/build/@types/ocm/services/OperatorsService.d.ts +1 -0
  86. package/build/@types/ocm/services/OperatorsService.d.ts.map +1 -1
  87. package/build/@types/ocm/store/slices/current-cluster/slice.d.ts +1 -0
  88. package/build/@types/ocm/store/slices/current-cluster/slice.d.ts.map +1 -1
  89. package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js +4 -5
  90. package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js.map +1 -1
  91. package/build/cjs/cim/components/InfraEnv/OpenshiftVersionDropdown.js +1 -1
  92. package/build/cjs/cim/components/InfraEnv/OpenshiftVersionDropdown.js.map +1 -1
  93. package/build/cjs/cim/components/common/constants.js +1 -1
  94. package/build/cjs/cim/components/common/constants.js.map +1 -1
  95. package/build/cjs/cim/components/helpers/toAssisted.js +2 -1
  96. package/build/cjs/cim/components/helpers/toAssisted.js.map +1 -1
  97. package/build/cjs/cim/components/modals/AddHostModal.js +4 -5
  98. package/build/cjs/cim/components/modals/AddHostModal.js.map +1 -1
  99. package/build/cjs/common/api/assisted-service/BundleAPI.js +16 -0
  100. package/build/cjs/common/api/assisted-service/BundleAPI.js.map +1 -0
  101. package/build/cjs/common/api/assisted-service/OperatorsAPI.js +13 -0
  102. package/build/cjs/common/api/assisted-service/OperatorsAPI.js.map +1 -0
  103. package/build/cjs/common/components/clusterConfiguration/ControlPlaneNodesDropdown.js +41 -0
  104. package/build/cjs/common/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -0
  105. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +4 -5
  106. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
  107. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageTypeControlGroup.js +5 -5
  108. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageTypeControlGroup.js.map +1 -1
  109. package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js +2 -2
  110. package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js.map +1 -1
  111. package/build/cjs/common/components/hosts/AITableMemo.js +16 -13
  112. package/build/cjs/common/components/hosts/AITableMemo.js.map +1 -1
  113. package/build/cjs/common/components/hosts/HostRowDetail.js +35 -1
  114. package/build/cjs/common/components/hosts/HostRowDetail.js.map +1 -1
  115. package/build/cjs/common/components/storage/DisksTable.js +16 -10
  116. package/build/cjs/common/components/storage/DisksTable.js.map +1 -1
  117. package/build/cjs/common/config/constants.js +11 -1
  118. package/build/cjs/common/config/constants.js.map +1 -1
  119. package/build/cjs/common/config/docs_links.js +10 -2
  120. package/build/cjs/common/config/docs_links.js.map +1 -1
  121. package/build/cjs/common/selectors/clusterSelectors.js +7 -1
  122. package/build/cjs/common/selectors/clusterSelectors.js.map +1 -1
  123. package/build/cjs/common/types/clusters.js.map +1 -1
  124. package/build/cjs/ocm/components/SentryErrorMonitorContextProvider.js.map +1 -1
  125. package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js +10 -9
  126. package/build/cjs/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.js.map +1 -1
  127. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js +2 -2
  128. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
  129. package/build/cjs/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.js +34 -0
  130. package/build/cjs/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.js.map +1 -0
  131. package/build/cjs/ocm/components/clusterConfiguration/operators/CnvCheckbox.js +8 -20
  132. package/build/cjs/ocm/components/clusterConfiguration/operators/CnvCheckbox.js.map +1 -1
  133. package/build/cjs/ocm/components/clusterConfiguration/operators/LsoCheckbox.js +34 -0
  134. package/build/cjs/ocm/components/clusterConfiguration/operators/LsoCheckbox.js.map +1 -0
  135. package/build/cjs/ocm/components/clusterConfiguration/operators/LvmCheckbox.js +5 -21
  136. package/build/cjs/ocm/components/clusterConfiguration/operators/LvmCheckbox.js.map +1 -1
  137. package/build/cjs/ocm/components/clusterConfiguration/operators/MceCheckbox.js +6 -7
  138. package/build/cjs/ocm/components/clusterConfiguration/operators/MceCheckbox.js.map +1 -1
  139. package/build/cjs/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.js +8 -13
  140. package/build/cjs/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.js.map +1 -1
  141. package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateCheckbox.js +35 -0
  142. package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateCheckbox.js.map +1 -0
  143. package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateRequirements.js +48 -0
  144. package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateRequirements.js.map +1 -0
  145. package/build/cjs/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.js +34 -0
  146. package/build/cjs/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.js.map +1 -0
  147. package/build/cjs/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.js +34 -0
  148. package/build/cjs/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.js.map +1 -0
  149. package/build/cjs/ocm/components/clusterConfiguration/operators/OdfCheckbox.js +11 -17
  150. package/build/cjs/ocm/components/clusterConfiguration/operators/OdfCheckbox.js.map +1 -1
  151. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenShiftAICheckbox.js +4 -17
  152. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenShiftAICheckbox.js.map +1 -1
  153. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenShiftAIRequirements.js +1 -12
  154. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenShiftAIRequirements.js.map +1 -1
  155. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.js +30 -0
  156. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.js.map +1 -0
  157. package/build/cjs/ocm/components/clusterConfiguration/operators/OscCheckbox.js +3 -12
  158. package/build/cjs/ocm/components/clusterConfiguration/operators/OscCheckbox.js.map +1 -1
  159. package/build/cjs/ocm/components/clusterConfiguration/operators/PipelinesChekbox.js +34 -0
  160. package/build/cjs/ocm/components/clusterConfiguration/operators/PipelinesChekbox.js.map +1 -0
  161. package/build/cjs/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.js +34 -0
  162. package/build/cjs/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.js.map +1 -0
  163. package/build/cjs/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.js +34 -0
  164. package/build/cjs/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.js.map +1 -0
  165. package/build/cjs/ocm/components/clusterConfiguration/operators/SupportedOperators.js +73 -0
  166. package/build/cjs/ocm/components/clusterConfiguration/operators/SupportedOperators.js.map +1 -0
  167. package/build/cjs/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.js +19 -0
  168. package/build/cjs/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.js.map +1 -0
  169. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.js +1 -1
  170. package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.js.map +1 -1
  171. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js +4 -0
  172. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js.map +1 -1
  173. package/build/cjs/ocm/components/clusterWizard/Operators.js +9 -1
  174. package/build/cjs/ocm/components/clusterWizard/Operators.js.map +1 -1
  175. package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js +239 -22
  176. package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js.map +1 -1
  177. package/build/cjs/ocm/components/clusterWizard/wizardTransition.js +1 -1
  178. package/build/cjs/ocm/components/clusterWizard/wizardTransition.js.map +1 -1
  179. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +41 -1
  180. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js.map +1 -1
  181. package/build/cjs/ocm/config/constants.js +155 -1
  182. package/build/cjs/ocm/config/constants.js.map +1 -1
  183. package/build/cjs/ocm/sentry.js +1 -1
  184. package/build/cjs/ocm/sentry.js.map +1 -1
  185. package/build/cjs/ocm/services/BundleService.js +20 -0
  186. package/build/cjs/ocm/services/BundleService.js.map +1 -0
  187. package/build/cjs/ocm/services/ClustersService.js +26 -0
  188. package/build/cjs/ocm/services/ClustersService.js.map +1 -1
  189. package/build/cjs/ocm/services/OperatorsService.js +16 -8
  190. package/build/cjs/ocm/services/OperatorsService.js.map +1 -1
  191. package/lib/cim/components/ClusterDeployment/ClusterDetailsFormFields.tsx +4 -6
  192. package/lib/cim/components/InfraEnv/OpenshiftVersionDropdown.tsx +1 -1
  193. package/lib/cim/components/common/constants.ts +1 -2
  194. package/lib/cim/components/helpers/toAssisted.ts +1 -0
  195. package/lib/cim/components/modals/AddHostModal.tsx +4 -5
  196. package/lib/cim/types/k8s/infra-env-k8s-resource.ts +1 -0
  197. package/lib/common/api/assisted-service/BundleAPI.ts +18 -0
  198. package/lib/common/api/assisted-service/OperatorsAPI.ts +13 -0
  199. package/lib/common/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +93 -0
  200. package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +10 -12
  201. package/lib/common/components/clusterConfiguration/DiscoveryImageTypeControlGroup.tsx +9 -9
  202. package/lib/common/components/clusterWizard/clusterDetailsValidation.ts +1 -1
  203. package/lib/common/components/clusterWizard/types.ts +4 -2
  204. package/lib/common/components/hosts/AITableMemo.tsx +1 -1
  205. package/lib/common/components/hosts/HostRowDetail.tsx +71 -1
  206. package/lib/common/components/storage/DisksTable.tsx +25 -18
  207. package/lib/common/config/constants.ts +10 -0
  208. package/lib/common/config/docs_links.ts +24 -1
  209. package/lib/common/selectors/clusterSelectors.ts +8 -0
  210. package/lib/common/types/clusters.ts +8 -0
  211. package/lib/common/types/ui-settings.ts +1 -0
  212. package/lib/ocm/components/SentryErrorMonitorContextProvider.tsx +1 -2
  213. package/lib/ocm/components/clusterConfiguration/ControlPlaneNodesDropdown.tsx +13 -12
  214. package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +2 -2
  215. package/lib/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.tsx +67 -0
  216. package/lib/ocm/components/clusterConfiguration/operators/CnvCheckbox.tsx +12 -25
  217. package/lib/ocm/components/clusterConfiguration/operators/LsoCheckbox.tsx +67 -0
  218. package/lib/ocm/components/clusterConfiguration/operators/LvmCheckbox.tsx +8 -26
  219. package/lib/ocm/components/clusterConfiguration/operators/MceCheckbox.tsx +10 -3
  220. package/lib/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.tsx +23 -12
  221. package/lib/ocm/components/clusterConfiguration/operators/NmstateCheckbox.tsx +85 -0
  222. package/lib/ocm/components/clusterConfiguration/operators/NmstateRequirements.tsx +53 -0
  223. package/lib/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.tsx +70 -0
  224. package/lib/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.tsx +67 -0
  225. package/lib/ocm/components/clusterConfiguration/operators/OdfCheckbox.tsx +24 -18
  226. package/lib/ocm/components/clusterConfiguration/operators/OpenShiftAICheckbox.tsx +11 -24
  227. package/lib/ocm/components/clusterConfiguration/operators/OpenShiftAIRequirements.tsx +0 -14
  228. package/lib/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.tsx +36 -0
  229. package/lib/ocm/components/clusterConfiguration/operators/OscCheckbox.tsx +10 -25
  230. package/lib/ocm/components/clusterConfiguration/operators/PipelinesChekbox.tsx +68 -0
  231. package/lib/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.tsx +67 -0
  232. package/lib/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.tsx +67 -0
  233. package/lib/ocm/components/clusterConfiguration/operators/SupportedOperators.tsx +105 -0
  234. package/lib/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.tsx +26 -0
  235. package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHostsFields.tsx +1 -1
  236. package/lib/ocm/components/clusterWizard/ClusterDetails.tsx +4 -0
  237. package/lib/ocm/components/clusterWizard/Operators.tsx +21 -1
  238. package/lib/ocm/components/clusterWizard/OperatorsStep.tsx +419 -38
  239. package/lib/ocm/components/clusterWizard/wizardTransition.ts +1 -1
  240. package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +41 -1
  241. package/lib/ocm/config/constants.ts +156 -0
  242. package/lib/ocm/sentry.ts +2 -1
  243. package/lib/ocm/services/BundleService.ts +14 -0
  244. package/lib/ocm/services/ClustersService.ts +28 -0
  245. package/lib/ocm/services/OperatorsService.tsx +21 -10
  246. package/package.json +3 -3
@@ -1,16 +1,64 @@
1
- import React from 'react';
1
+ /* eslint-disable no-console */
2
+ import React, { useEffect, useState } from 'react';
2
3
  import { useSelector } from 'react-redux';
3
- import { Stack, StackItem } from '@patternfly/react-core';
4
- import { ClusterOperatorProps, ClusterWizardStepHeader } from '../../../common';
5
- import CnvCheckbox from '../clusterConfiguration/operators/CnvCheckbox';
6
- import OdfCheckbox from '../clusterConfiguration/operators/OdfCheckbox';
7
- import LvmCheckbox from '../clusterConfiguration/operators/LvmCheckbox';
8
- import MceCheckbox from '../clusterConfiguration/operators/MceCheckbox';
4
+ import {
5
+ Card,
6
+ CardBody,
7
+ CardTitle,
8
+ Checkbox,
9
+ ExpandableSection,
10
+ Flex,
11
+ FlexItem,
12
+ Gallery,
13
+ GalleryItem,
14
+ Stack,
15
+ StackItem,
16
+ TextInput,
17
+ Title,
18
+ Tooltip,
19
+ } from '@patternfly/react-core';
20
+ import {
21
+ ClusterOperatorProps,
22
+ ClusterWizardStepHeader,
23
+ numberOfEnabledOperators,
24
+ OPERATOR_NAME_CNV,
25
+ OPERATOR_NAME_ODF,
26
+ OperatorsValues,
27
+ PopoverIcon,
28
+ } from '../../../common';
9
29
  import { selectIsCurrentClusterSNO } from '../../store/slices/current-cluster/selectors';
10
30
  import { isOCPVersionEqualsOrMajor } from '../utils';
11
- import MtvOperatorCheckbox from '../clusterConfiguration/operators/MtvOperatorCheckbox';
12
- import OpenShiftAICheckbox from '../clusterConfiguration/operators/OpenShiftAICheckbox';
13
- import OscCheckbox from '../clusterConfiguration/operators/OscCheckbox';
31
+ import BundleService from '../../services/BundleService';
32
+ import { Bundle } from '@openshift-assisted/types/./assisted-installer-service';
33
+ import { OperatorsService } from '../../services';
34
+ import {
35
+ mapOperatorIdToFeatureId,
36
+ mapOperatorsToFieldIds,
37
+ operatorComponentMap,
38
+ } from '../clusterConfiguration/operators/SupportedOperators';
39
+ import { useClusterWizardContext } from './ClusterWizardContext';
40
+ import { useFormikContext } from 'formik';
41
+ import NewFeatureSupportLevelBadge from '../../../common/components/newFeatureSupportLevels/NewFeatureSupportLevelBadge';
42
+ import { useNewFeatureSupportLevel } from '../../../common/components/newFeatureSupportLevels';
43
+ import {
44
+ getCnvDisabledWithMtvReason,
45
+ getCnvIncompatibleWithLvmReason,
46
+ getLvmIncompatibleWithCnvReason,
47
+ getLvmsIncompatibleWithOdfReason,
48
+ getOdfIncompatibleWithLvmsReason,
49
+ getOpenShiftAIIncompatibleWithLvmsReason,
50
+ } from '../featureSupportLevels/featureStateUtils';
51
+ import OpenshiftAINvidiaRequirements from '../clusterConfiguration/operators/OpenshiftAINvidiaRequirements';
52
+ import VirtualizationRequirements from '../clusterConfiguration/operators/VirtualizationRequirements';
53
+
54
+ const operatorsThatCanNotBeInstalledAlone = [
55
+ 'nvdia-gpu',
56
+ 'pipelines',
57
+ 'servicemesh',
58
+ 'serverless',
59
+ 'authorino',
60
+ 'lso',
61
+ ];
14
62
 
15
63
  export const OperatorsStep = (props: ClusterOperatorProps) => {
16
64
  const isSNO = useSelector(selectIsCurrentClusterSNO);
@@ -18,39 +66,372 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
18
66
  props.openshiftVersion || '',
19
67
  '4.15',
20
68
  );
69
+
70
+ const [bundles, setBundles] = useState<Bundle[]>([]);
71
+ const [isExpanded, setIsExpanded] = useState(true);
72
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
73
+ const [supportedOperators, setSupportedOperators] = useState<string[]>([]);
74
+ const [searchTerm, setSearchTerm] = useState('');
75
+ const [selectedOperators, setSelectedOperators] = useState<string[]>([]);
76
+ const [selectedBundles, setSelectedBundles] = useState<{ [key: string]: boolean }>({});
77
+ const [bundleOperators, setBundleOperators] = useState<string[]>([]);
78
+ const { updateUISettings, uiSettings } = useClusterWizardContext();
79
+ const { values, setFieldValue } = useFormikContext<OperatorsValues>();
80
+ const featureSupportLevelData = useNewFeatureSupportLevel();
81
+ const [hasUnsupportedOperators, setHasUnsupportedOperators] = useState<boolean>(false);
82
+ const [hasIncompatibleOperators, setHasIncompatibleOperators] = useState<boolean>(false);
83
+
84
+ useEffect(() => {
85
+ const fetchBundles = async () => {
86
+ try {
87
+ const fetchedBundles = await BundleService.listBundles();
88
+
89
+ setBundles(fetchedBundles);
90
+ } catch (error) {
91
+ // eslint-disable-next-line no-console
92
+ console.error('Error al obtener los bundles:', error);
93
+ }
94
+ };
95
+
96
+ void fetchBundles();
97
+ }, []);
98
+
99
+ useEffect(() => {
100
+ const fetchSupportedOperators = async () => {
101
+ try {
102
+ const fetchedOperators = await OperatorsService.getSupportedOperators();
103
+ const sortedOperators = fetchedOperators.sort((a, b) => a.localeCompare(b));
104
+
105
+ setSupportedOperators(sortedOperators);
106
+ } catch (error) {
107
+ // eslint-disable-next-line no-console
108
+ console.error('Error al obtener los operators:', error);
109
+ }
110
+ };
111
+
112
+ void fetchSupportedOperators();
113
+ }, []);
114
+
115
+ const filteredBundles = bundles.filter(
116
+ (bundle) =>
117
+ bundle.title?.toLowerCase().includes(searchTerm.toLowerCase()) ||
118
+ bundle.description?.toLowerCase().includes(searchTerm.toLowerCase()),
119
+ );
120
+
121
+ useEffect(() => {
122
+ if (uiSettings?.bundlesSelected) {
123
+ setSelectedBundles(
124
+ uiSettings.bundlesSelected.reduce((acc, id) => ({ ...acc, [id]: true }), {}),
125
+ );
126
+
127
+ setBundleOperators(() => {
128
+ const newSelection: string[] = [];
129
+ bundles
130
+ .filter((bundle) => uiSettings?.bundlesSelected?.includes(bundle.id ?? ''))
131
+ .forEach((bundle) => {
132
+ bundle.operators?.forEach((op) => {
133
+ newSelection.push(op);
134
+ });
135
+ });
136
+
137
+ return newSelection;
138
+ });
139
+ }
140
+ }, [bundles, uiSettings?.bundlesSelected]);
141
+
142
+ useEffect(() => {
143
+ const newSelection: string[] = [];
144
+
145
+ props.monitoredOperators?.forEach((operator) => {
146
+ if (operator.operatorType === 'olm') {
147
+ newSelection.push(operator.name ?? '');
148
+ }
149
+ });
150
+
151
+ setSelectedOperators(newSelection);
152
+ }, [props.monitoredOperators]);
153
+
154
+ const handleBundleSelection = async (bundleId: string, operators: string[], checked: boolean) => {
155
+ let bundlesSelected = uiSettings?.bundlesSelected ? [...uiSettings.bundlesSelected] : [];
156
+ let newBundleOperators = [...bundleOperators];
157
+
158
+ if (checked) {
159
+ // Agregar el bundle si se marca
160
+ bundlesSelected.push(bundleId);
161
+ operators.forEach((op) => {
162
+ if (!newBundleOperators.includes(op)) {
163
+ newBundleOperators.push(op);
164
+ const fieldId = mapOperatorsToFieldIds[op]; // Obtener el ID del campo correspondiente
165
+ setFieldValue(fieldId, checked);
166
+ if (op === OPERATOR_NAME_CNV || op === OPERATOR_NAME_ODF) {
167
+ setFieldValue('useLso', checked);
168
+ }
169
+ }
170
+ });
171
+ } else {
172
+ // Eliminar el bundle si se desmarca
173
+ bundlesSelected = bundlesSelected.filter((id) => id !== bundleId);
174
+ newBundleOperators = newBundleOperators.filter((op) => !operators.includes(op));
175
+ operators.forEach((op) => {
176
+ const fieldId = mapOperatorsToFieldIds[op]; // Obtener el ID del campo correspondiente
177
+ setFieldValue(fieldId, checked);
178
+ if (op === OPERATOR_NAME_CNV || op === OPERATOR_NAME_ODF) {
179
+ setFieldValue('useLso', checked);
180
+ }
181
+ });
182
+ }
183
+
184
+ await updateUISettings({ bundlesSelected });
185
+
186
+ setSelectedBundles((prev) => ({
187
+ ...prev,
188
+ [bundleId]: checked,
189
+ }));
190
+
191
+ setBundleOperators(newBundleOperators);
192
+ };
193
+
194
+ const getBundleLabel = (title: string | undefined) => {
195
+ return (
196
+ <>
197
+ <span>{title} </span>
198
+ <PopoverIcon
199
+ component={'a'}
200
+ bodyContent={
201
+ <>
202
+ <span style={{ fontSize: '1.1em' }}>{'Requirements and dependencies'}</span>
203
+ {title === 'Virtualization' ? (
204
+ <VirtualizationRequirements />
205
+ ) : (
206
+ <OpenshiftAINvidiaRequirements />
207
+ )}
208
+ </>
209
+ }
210
+ />
211
+ </>
212
+ );
213
+ };
214
+
215
+ const bundleHasOperatorsNotSupported = React.useCallback(
216
+ (operators: string[] | undefined) => {
217
+ return (
218
+ operators?.some(
219
+ (operator) =>
220
+ !featureSupportLevelData.isFeatureSupported(mapOperatorIdToFeatureId[operator]),
221
+ ) ?? false
222
+ );
223
+ },
224
+ [featureSupportLevelData],
225
+ );
226
+
227
+ const getDisabledReasonForOperator = React.useCallback(
228
+ (operatorKey: string, values: OperatorsValues) => {
229
+ let disabledReason = featureSupportLevelData.getFeatureDisabledReason(
230
+ mapOperatorIdToFeatureId[operatorKey],
231
+ );
232
+ if (operatorKey === 'cnv') {
233
+ if (!disabledReason) {
234
+ const lvmSupport = featureSupportLevelData.getFeatureSupportLevel('LVM');
235
+ disabledReason = getCnvIncompatibleWithLvmReason(values, lvmSupport);
236
+ }
237
+ if (!disabledReason) {
238
+ disabledReason = getCnvDisabledWithMtvReason(values);
239
+ }
240
+ }
241
+ if (operatorKey === 'lvm') {
242
+ if (!disabledReason) {
243
+ const lvmSupport = featureSupportLevelData.getFeatureSupportLevel('LVM');
244
+ disabledReason = getLvmIncompatibleWithCnvReason(values, lvmSupport);
245
+ if (!disabledReason) {
246
+ disabledReason = getLvmsIncompatibleWithOdfReason(values);
247
+ }
248
+ }
249
+ }
250
+ if (operatorKey === 'odf') {
251
+ if (!disabledReason) {
252
+ disabledReason = getOdfIncompatibleWithLvmsReason(values);
253
+ }
254
+ }
255
+ if (operatorKey === 'openshift-ai') {
256
+ if (!disabledReason) {
257
+ disabledReason = getOpenShiftAIIncompatibleWithLvmsReason(values);
258
+ }
259
+ }
260
+ return disabledReason;
261
+ },
262
+ [featureSupportLevelData],
263
+ );
264
+
265
+ const bundleHasOperatorsNotCompatibles = React.useCallback(
266
+ (operators: string[] | undefined, values: OperatorsValues) => {
267
+ return (
268
+ operators?.some((operatorKey) => {
269
+ const disabledReason = getDisabledReasonForOperator(operatorKey, values);
270
+ console.log(disabledReason);
271
+ return disabledReason !== undefined;
272
+ }) ?? false
273
+ );
274
+ },
275
+ [getDisabledReasonForOperator],
276
+ );
277
+
278
+ useEffect(() => {
279
+ setHasUnsupportedOperators(
280
+ bundles.some((bundle) => bundleHasOperatorsNotSupported(bundle.operators)),
281
+ );
282
+
283
+ setHasIncompatibleOperators(
284
+ bundles.some((bundle) => bundleHasOperatorsNotCompatibles(bundle.operators, values)),
285
+ );
286
+ }, [values, bundles, bundleHasOperatorsNotSupported, bundleHasOperatorsNotCompatibles]);
287
+
21
288
  return (
22
- <Stack hasGutter data-testid={'operators-form'}>
23
- <StackItem>
24
- <ClusterWizardStepHeader>Operators</ClusterWizardStepHeader>
25
- </StackItem>
26
- <StackItem>
27
- <CnvCheckbox {...props} isVersionEqualsOrMajorThan4_15={isVersionEqualsOrMajorThan4_15} />
28
- </StackItem>
289
+ <Stack hasGutter data-testid={'operators-page'}>
29
290
  <StackItem>
30
- <MtvOperatorCheckbox clusterId={props.clusterId} />
291
+ <Flex
292
+ justifyContent={{ default: 'justifyContentSpaceBetween' }}
293
+ alignItems={{ default: 'alignItemsCenter' }}
294
+ >
295
+ <FlexItem>
296
+ <ClusterWizardStepHeader>Operators</ClusterWizardStepHeader>
297
+ </FlexItem>
298
+ <FlexItem hidden>
299
+ <TextInput
300
+ value={searchTerm}
301
+ type="text"
302
+ onChange={(_event, value) => setSearchTerm(value)}
303
+ placeholder="Search"
304
+ style={{ width: '400px' }}
305
+ />
306
+ </FlexItem>
307
+ </Flex>
31
308
  </StackItem>
32
309
  <StackItem>
33
- <MceCheckbox
34
- clusterId={props.clusterId}
35
- isVersionEqualsOrMajorThan4_15={isVersionEqualsOrMajorThan4_15}
36
- openshiftVersion={props.openshiftVersion}
37
- />
310
+ <Title headingLevel="h2" size="lg">
311
+ Bundles
312
+ </Title>
38
313
  </StackItem>
39
- {isVersionEqualsOrMajorThan4_15 ? (
40
- <>
41
- <StackItem>
42
- <LvmCheckbox {...props} />
43
- </StackItem>
44
- <StackItem>
45
- <OdfCheckbox />
46
- </StackItem>
47
- </>
48
- ) : (
49
- <StackItem>{isSNO ? <LvmCheckbox {...props} /> : <OdfCheckbox />}</StackItem>
50
- )}
51
-
52
- <OpenShiftAICheckbox />
53
- <OscCheckbox />
314
+ {/* Mostrar bundles como tarjetas */}
315
+ <Gallery hasGutter minWidths={{ default: '350px' }} maxWidths={{ default: '2fr' }}>
316
+ {filteredBundles.map((bundle) => {
317
+ const isSnoAndBlockedBundle = isSNO && bundle.id === 'openshift-ai-nvidia';
318
+
319
+ const tooltipContent = hasUnsupportedOperators
320
+ ? 'Some operators in this bundle are not supported with the current configuration.'
321
+ : hasIncompatibleOperators
322
+ ? 'Some operators in this bundle can not be installed with some single operators selected.'
323
+ : isSnoAndBlockedBundle
324
+ ? 'This bundle is not available when deploying a Single Node OpenShift.'
325
+ : '';
326
+
327
+ return (
328
+ <GalleryItem key={bundle.id}>
329
+ <Tooltip
330
+ content={tooltipContent}
331
+ hidden={
332
+ !hasUnsupportedOperators && !hasIncompatibleOperators && !isSnoAndBlockedBundle
333
+ }
334
+ >
335
+ <Card
336
+ style={
337
+ bundle.id && selectedBundles[bundle.id]
338
+ ? { border: '1px solid #004080', height: '200px' }
339
+ : { height: '200px' }
340
+ }
341
+ isDisabled={
342
+ hasUnsupportedOperators || hasIncompatibleOperators || isSnoAndBlockedBundle
343
+ }
344
+ >
345
+ <CardTitle
346
+ style={{
347
+ display: 'flex',
348
+ justifyContent: 'space-between',
349
+ alignItems: 'center',
350
+ }}
351
+ >
352
+ <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
353
+ {getBundleLabel(bundle.title)}
354
+ </div>
355
+ <Checkbox
356
+ id={`bundle-${bundle.id || ''}`}
357
+ isChecked={bundle.id ? selectedBundles[bundle.id] : false}
358
+ onChange={(_event, checked) =>
359
+ void handleBundleSelection(bundle.id || '', bundle.operators || [], checked)
360
+ }
361
+ isDisabled={
362
+ hasUnsupportedOperators || hasIncompatibleOperators || isSnoAndBlockedBundle
363
+ }
364
+ />
365
+ </CardTitle>
366
+ <CardBody
367
+ style={{
368
+ display: 'flex',
369
+ flexDirection: 'column',
370
+ justifyContent: 'space-between',
371
+ height: '100%',
372
+ }}
373
+ >
374
+ <div>{bundle.description}</div>
375
+
376
+ {/* Badge aligned to the bottom-left */}
377
+ <div style={{ marginTop: '10px', alignSelf: 'flex-end', height: '25px' }}>
378
+ {bundle.id === 'openshift-ai-nvidia' && (
379
+ <NewFeatureSupportLevelBadge
380
+ featureId="OPENSHIFT_AI"
381
+ supportLevel="dev-preview"
382
+ />
383
+ )}
384
+ </div>
385
+ </CardBody>
386
+ </Card>
387
+ </Tooltip>
388
+ </GalleryItem>
389
+ );
390
+ })}
391
+ </Gallery>
392
+ <ExpandableSection
393
+ toggleText={`Single Operators (${supportedOperators.length} | ${
394
+ props.monitoredOperators
395
+ ? numberOfEnabledOperators(props.monitoredOperators)
396
+ : selectedOperators.length
397
+ } selected)`}
398
+ onToggle={() => setIsExpanded(!isExpanded)}
399
+ isExpanded={isExpanded}
400
+ >
401
+ <Stack hasGutter data-testid={'operators-form'}>
402
+ {supportedOperators.map((operatorKey) => {
403
+ const isOperatorSelected = bundleOperators.includes(operatorKey);
404
+ const isOperatorPartOfAIBundle =
405
+ operatorsThatCanNotBeInstalledAlone.includes(operatorKey);
406
+ const disabledReason = getDisabledReasonForOperator(operatorKey, values);
407
+ const featureSupportLevel = featureSupportLevelData.getFeatureSupportLevel(
408
+ mapOperatorIdToFeatureId[operatorKey],
409
+ );
410
+ const OperatorComponent = operatorComponentMap[operatorKey];
411
+ if (!OperatorComponent) {
412
+ return null;
413
+ }
414
+ return (
415
+ <StackItem key={operatorKey}>
416
+ <OperatorComponent
417
+ clusterId={props.clusterId}
418
+ openshiftVersion={props.openshiftVersion}
419
+ isVersionEqualsOrMajorThan4_15={isVersionEqualsOrMajorThan4_15}
420
+ isSNO={isSNO}
421
+ disabledReason={
422
+ isOperatorSelected
423
+ ? 'This operator is part of a bundle and cannot be deselected.'
424
+ : isOperatorPartOfAIBundle
425
+ ? 'This operator cannot be installed as a standalone'
426
+ : disabledReason
427
+ }
428
+ supportLevel={featureSupportLevel}
429
+ />
430
+ </StackItem>
431
+ );
432
+ })}
433
+ </Stack>
434
+ </ExpandableSection>
54
435
  </Stack>
55
436
  );
56
437
  };
@@ -191,7 +191,7 @@ const hostDiscoveryStepValidationsMap: WizardStepValidationMap = {
191
191
  'osc-requirements-satisfied',
192
192
  ],
193
193
  },
194
- softValidationIds: ['no-skip-installation-disk', 'no-skip-missing-disk'],
194
+ softValidationIds: ['no-skip-installation-disk', 'no-skip-missing-disk', 'compatible-agent'],
195
195
  };
196
196
 
197
197
  const storageStepValidationsMap: WizardStepValidationMap = {
@@ -249,6 +249,46 @@ export const getNewFeatureDisabledReason = (
249
249
  return 'Migration Toolkit for Virtualization is not supported in this OpenShift version';
250
250
  }
251
251
  }
252
+ case 'AUTHORINO': {
253
+ if (!isSupported) {
254
+ return `Authorino is not available with the selected CPU architecture.`;
255
+ }
256
+ }
257
+ case 'LSO': {
258
+ if (!isSupported) {
259
+ return `Lso is not available with the selected CPU architecture.`;
260
+ }
261
+ }
262
+ case 'NMSTATE': {
263
+ if (!isSupported) {
264
+ return `Nmstate is not available with the selected CPU architecture.`;
265
+ }
266
+ }
267
+ case 'NODE_FEATURE_DISCOVERY': {
268
+ if (!isSupported) {
269
+ return `Node Feature Discovery is not available with the selected CPU architecture.`;
270
+ }
271
+ }
272
+ case 'NVIDIA_GPU': {
273
+ if (!isSupported) {
274
+ return `NVIDIA GPU is not available with the selected CPU architecture.`;
275
+ }
276
+ }
277
+ case 'PIPELINES': {
278
+ if (!isSupported) {
279
+ return `Pipelines is not available with the selected CPU architecture.`;
280
+ }
281
+ }
282
+ case 'SERVERLESS': {
283
+ if (!isSupported) {
284
+ return `Serverless is not available with the selected CPU architecture.`;
285
+ }
286
+ }
287
+ case 'SERVICEMESH': {
288
+ if (!isSupported) {
289
+ return `Service mesh is not available with the selected CPU architecture.`;
290
+ }
291
+ }
252
292
  default: {
253
293
  return undefined;
254
294
  }
@@ -311,7 +351,7 @@ const getOpenShiftAIDisabledReason = (
311
351
  export const getCnvDisabledWithMtvReason = (operatorValues: OperatorsValues) => {
312
352
  const mustDisableCnv =
313
353
  operatorValues.useContainerNativeVirtualization &&
314
- operatorValues.useMigrationToolkitforVirtualization;
354
+ !operatorValues.useMigrationToolkitforVirtualization;
315
355
  return mustDisableCnv
316
356
  ? `Currently, you need to install ${CNV_OPERATOR_LABEL} operator at the same time as ${MTV_OPERATOR_LABEL} operator.`
317
357
  : undefined;
@@ -39,3 +39,159 @@ export const ocmPermissionsToAIPermissions = (
39
39
  }
40
40
  return permissions;
41
41
  };
42
+
43
+ //TO-DO: Assisted-Migration. Provisional code. Needs to be removed when MTV integration be finished
44
+ export const yamlContentAssistedMigration1 = `apiVersion: v1
45
+ kind: Namespace
46
+ metadata:
47
+ name: openshift-gitops-operator
48
+ ---
49
+ apiVersion: operators.coreos.com/v1
50
+ kind: OperatorGroup
51
+ metadata:
52
+ name: openshift-gitops-operator
53
+ namespace: openshift-gitops-operator
54
+ spec:
55
+ upgradeStrategy: Default
56
+ ---
57
+ apiVersion: operators.coreos.com/v1alpha1
58
+ kind: Subscription
59
+ metadata:
60
+ name: openshift-gitops-operator
61
+ namespace: openshift-gitops-operator
62
+ spec:
63
+ channel: latest
64
+ installPlanApproval: Automatic
65
+ name: openshift-gitops-operator
66
+ source: redhat-operators
67
+ sourceNamespace: openshift-marketplace
68
+ `;
69
+
70
+ export const yamlContentAssistedMigration2 = `apiVersion: rbac.authorization.k8s.io/v1
71
+ kind: ClusterRole
72
+ metadata:
73
+ name: namespace-manager
74
+ rules:
75
+ - apiGroups: [""]
76
+ resources: ["namespaces"]
77
+ verbs: ["get", "create", "update", "delete"]
78
+ ---
79
+ apiVersion: rbac.authorization.k8s.io/v1
80
+ kind: ClusterRoleBinding
81
+ metadata:
82
+ name: namespace-manager-binding
83
+ subjects:
84
+ - kind: ServiceAccount
85
+ name: openshift-gitops-argocd-application-controller
86
+ namespace: openshift-gitops
87
+ roleRef:
88
+ kind: ClusterRole
89
+ name: namespace-manager
90
+ apiGroup: rbac.authorization.k8s.io
91
+ ---
92
+ apiVersion: rbac.authorization.k8s.io/v1
93
+ kind: Role
94
+ metadata:
95
+ name: persistentvolumeclaim-manager
96
+ namespace: openshift-image-registry
97
+ rules:
98
+ - apiGroups: [""]
99
+ resources: ["persistentvolumeclaims"]
100
+ verbs: ["get", "create", "update", "delete"]
101
+ ---
102
+ apiVersion: rbac.authorization.k8s.io/v1
103
+ kind: RoleBinding
104
+ metadata:
105
+ name: persistentvolumeclaim-manager-binding
106
+ namespace: openshift-image-registry
107
+ subjects:
108
+ - kind: ServiceAccount
109
+ name: openshift-gitops-argocd-application-controller
110
+ namespace: openshift-gitops
111
+ roleRef:
112
+ kind: Role
113
+ name: persistentvolumeclaim-manager
114
+ apiGroup: rbac.authorization.k8s.io
115
+ ---
116
+ apiVersion: rbac.authorization.k8s.io/v1
117
+ kind: ClusterRole
118
+ metadata:
119
+ name: job-manager
120
+ rules:
121
+ - apiGroups: ["batch"]
122
+ resources: ["jobs"]
123
+ verbs: ["get", "create", "update", "delete"]
124
+ ---
125
+ apiVersion: rbac.authorization.k8s.io/v1
126
+ kind: ClusterRoleBinding
127
+ metadata:
128
+ name: job-manager-binding
129
+ subjects:
130
+ - kind: ServiceAccount
131
+ name: openshift-gitops-argocd-application-controller
132
+ namespace: openshift-gitops
133
+ roleRef:
134
+ kind: ClusterRole
135
+ name: job-manager
136
+ apiGroup: rbac.authorization.k8s.io
137
+ ---
138
+ apiVersion: rbac.authorization.k8s.io/v1
139
+ kind: ClusterRole
140
+ metadata:
141
+ name: argocd-application-controller
142
+ rules:
143
+ - apiGroups: [""]
144
+ resources: ["serviceaccounts", "services", "secrets"]
145
+ verbs: ["create", "get", "list", "update", "delete", "patch"]
146
+ - apiGroups: ["apps"]
147
+ resources: ["deployments"]
148
+ verbs: ["create", "get", "list", "update", "delete", "patch"]
149
+ - apiGroups: ["route.openshift.io"]
150
+ resources: ["routes"]
151
+ verbs: ["create", "get", "list", "update", "delete", "patch"]
152
+ - apiGroups: ["image.openshift.io"]
153
+ resources: ["imagestreams"]
154
+ verbs: ["create", "get", "list", "update", "delete", "patch"]
155
+ - apiGroups: ["build.openshift.io"]
156
+ resources: ["buildconfigs"]
157
+ verbs: ["create", "get", "list", "update", "delete", "patch"]
158
+
159
+ ---
160
+ apiVersion: rbac.authorization.k8s.io/v1
161
+ kind: ClusterRoleBinding
162
+ metadata:
163
+ name: argocd-application-controller-binding
164
+ subjects:
165
+ - kind: ServiceAccount
166
+ name: openshift-gitops-argocd-application-controller
167
+ namespace: openshift-gitops
168
+ roleRef:
169
+ kind: ClusterRole
170
+ name: argocd-application-controller
171
+ apiGroup: rbac.authorization.k8s.io
172
+ ---
173
+ apiVersion: rbac.authorization.k8s.io/v1
174
+ kind: Role
175
+ metadata:
176
+ name: argocd-secrets-role
177
+ namespace: openshift-mtv
178
+ rules:
179
+ - apiGroups: [""]
180
+ resources: ["secrets"]
181
+ verbs: ["create", "get", "list", "update", "delete", "patch"]
182
+
183
+ ---
184
+ apiVersion: rbac.authorization.k8s.io/v1
185
+ kind: RoleBinding
186
+ metadata:
187
+ name: argocd-secrets-rolebinding
188
+ namespace: openshift-mtv
189
+ subjects:
190
+ - kind: ServiceAccount
191
+ name: openshift-gitops-argocd-application-controller
192
+ namespace: openshift-gitops
193
+ roleRef:
194
+ kind: Role
195
+ name: argocd-secrets-role
196
+ apiGroup: rbac.authorization.k8s.io
197
+ `;