katello 4.5.1 → 4.6.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +10 -0
  3. data/app/controllers/katello/api/v2/activation_keys_controller.rb +7 -0
  4. data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +52 -22
  5. data/app/controllers/katello/api/v2/content_uploads_controller.rb +2 -0
  6. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  7. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  8. data/app/controllers/katello/api/v2/debs_controller.rb +42 -10
  9. data/app/controllers/katello/api/v2/host_collections_controller.rb +5 -1
  10. data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -0
  11. data/app/controllers/katello/api/v2/host_module_streams_controller.rb +9 -1
  12. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +8 -1
  13. data/app/controllers/katello/api/v2/organizations_controller.rb +3 -1
  14. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +8 -0
  15. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +34 -11
  16. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +7 -16
  17. data/app/lib/actions/katello/alternate_content_source/alternate_content_source_common.rb +16 -0
  18. data/app/lib/actions/katello/alternate_content_source/create.rb +11 -5
  19. data/app/lib/actions/katello/alternate_content_source/destroy.rb +3 -4
  20. data/app/lib/actions/katello/alternate_content_source/refresh.rb +3 -5
  21. data/app/lib/actions/katello/alternate_content_source/update.rb +57 -13
  22. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +2 -2
  23. data/app/lib/actions/katello/organization/manifest_refresh.rb +8 -4
  24. data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +1 -9
  25. data/app/lib/actions/katello/repository/create.rb +9 -0
  26. data/app/lib/actions/katello/repository/destroy.rb +21 -0
  27. data/app/lib/actions/katello/repository/errata_mail.rb +3 -3
  28. data/app/lib/actions/katello/repository/refresh_repository.rb +3 -0
  29. data/app/lib/actions/katello/repository/update.rb +33 -0
  30. data/app/lib/actions/katello/repository/update_redhat_repository.rb +1 -1
  31. data/app/lib/actions/pulp3/alternate_content_source/create.rb +5 -4
  32. data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +5 -4
  33. data/app/lib/actions/pulp3/alternate_content_source/delete.rb +4 -4
  34. data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +4 -4
  35. data/app/lib/actions/pulp3/alternate_content_source/refresh.rb +4 -4
  36. data/app/lib/actions/pulp3/alternate_content_source/update.rb +4 -4
  37. data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +5 -5
  38. data/app/lib/actions/pulp3/capsule_content/reclaim_space.rb +1 -0
  39. data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +3 -3
  40. data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +6 -7
  41. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +2 -2
  42. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh_remote.rb +18 -0
  43. data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +3 -3
  44. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
  45. data/app/lib/katello/concerns/base_template_scope_extensions.rb +1 -1
  46. data/app/lib/katello/errors.rb +1 -1
  47. data/app/lib/katello/resources/candlepin/owner.rb +9 -2
  48. data/app/lib/katello/validators/alternate_content_source_products_validator.rb +17 -0
  49. data/app/models/katello/alternate_content_source.rb +39 -8
  50. data/app/models/katello/alternate_content_source_product.rb +13 -0
  51. data/app/models/katello/concerns/host_managed_extensions.rb +12 -2
  52. data/app/models/katello/concerns/pulp_database_unit.rb +2 -2
  53. data/app/models/katello/concerns/smart_proxy_extensions.rb +5 -6
  54. data/app/models/katello/content_view.rb +4 -0
  55. data/app/models/katello/content_view_deb_filter.rb +51 -0
  56. data/app/models/katello/content_view_deb_filter_rule.rb +24 -0
  57. data/app/models/katello/content_view_filter.rb +10 -3
  58. data/app/models/katello/glue/candlepin/owner.rb +0 -1
  59. data/app/models/katello/installed_package.rb +1 -0
  60. data/app/models/katello/product.rb +3 -0
  61. data/app/models/katello/repository.rb +2 -0
  62. data/app/models/katello/smart_proxy_alternate_content_source.rb +6 -0
  63. data/app/services/cert/certs.rb +8 -16
  64. data/app/services/katello/content_unit_indexer.rb +2 -1
  65. data/app/services/katello/organization_creator.rb +4 -4
  66. data/app/services/katello/pulp/server.rb +2 -2
  67. data/app/services/katello/pulp3/alternate_content_source.rb +22 -4
  68. data/app/services/katello/pulp3/api/apt.rb +12 -0
  69. data/app/services/katello/pulp3/erratum.rb +1 -4
  70. data/app/services/katello/pulp3/repository/apt.rb +186 -2
  71. data/app/services/katello/pulp3/repository.rb +4 -3
  72. data/app/services/katello/pulp3/service_common.rb +1 -1
  73. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
  74. data/app/views/foreman/smart_proxies/show.html.erb +3 -3
  75. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +18 -3
  76. data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +20 -0
  77. data/app/views/katello/api/v2/ansible_collections/compare.json.rabl +10 -0
  78. data/app/views/katello/api/v2/content_view_filters/base.json.rabl +5 -0
  79. data/app/views/katello/api/v2/module_streams/compare.json.rabl +10 -0
  80. data/app/views/katello/api/v2/repository_sets/show.json.rabl +4 -0
  81. data/app/views/katello/layouts/foreman_with_bastion.html.erb +1 -1
  82. data/app/views/katello/layouts/react.html.erb +1 -1
  83. data/app/views/overrides/organizations/_edit_override.html.erb +5 -8
  84. data/app/views/overrides/organizations/_index_row_override.html.erb +1 -1
  85. data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
  86. data/ca/redhat-uep.pem +18 -23
  87. data/config/katello.yaml.example +0 -2
  88. data/config/routes/api/v2.rb +2 -0
  89. data/config/routes/overrides.rb +1 -0
  90. data/db/migrate/20201116161820_create_content_view_deb_filter_rules.rb +17 -0
  91. data/db/migrate/20220524132259_remove_last_refreshed_from_katello_alternate_content_sources.rb +5 -0
  92. data/db/migrate/20220601163911_add_vendor_to_katello_installed_packages.rb +5 -0
  93. data/db/migrate/20220610165621_add_repositories_and_products_to_acs.rb +23 -0
  94. data/db/seeds.d/102-organizations.rb +1 -1
  95. data/engines/bastion/app/views/bastion/layouts/application.html.erb +1 -1
  96. data/engines/bastion/app/views/bastion/layouts/application_ie.html.erb +1 -1
  97. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -1
  98. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +2 -0
  99. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +2 -0
  100. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  101. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
  102. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +3 -3
  103. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -5
  104. data/engines/bastion_katello/lib/bastion_katello/engine.rb +0 -1
  105. data/lib/katello/engine.rb +1 -2
  106. data/lib/katello/permission_creator.rb +2 -2
  107. data/lib/katello/permissions/host_permissions.rb +1 -0
  108. data/lib/katello/plugin.rb +6 -12
  109. data/lib/katello/version.rb +1 -1
  110. data/locale/action_names.rb +49 -46
  111. data/locale/bn/katello.po +361 -53
  112. data/{webpack/scenes/AnsibleCollections/AnsibleCollectionsTables.scss → locale/bn/katello.po.time_stamp} +0 -0
  113. data/locale/cs/katello.po +361 -53
  114. data/locale/cs/katello.po.time_stamp +0 -0
  115. data/locale/de/katello.po +366 -58
  116. data/locale/de/katello.po.time_stamp +0 -0
  117. data/locale/en/katello.po +361 -53
  118. data/locale/en/katello.po.time_stamp +0 -0
  119. data/locale/es/katello.po +364 -56
  120. data/locale/es/katello.po.time_stamp +0 -0
  121. data/locale/fr/katello.po +376 -68
  122. data/locale/fr/katello.po.time_stamp +0 -0
  123. data/locale/gu/katello.po +361 -53
  124. data/locale/gu/katello.po.time_stamp +0 -0
  125. data/locale/hi/katello.po +361 -53
  126. data/locale/hi/katello.po.time_stamp +0 -0
  127. data/locale/it/katello.po +361 -53
  128. data/locale/it/katello.po.time_stamp +0 -0
  129. data/locale/ja/katello.po +374 -66
  130. data/locale/ja/katello.po.time_stamp +0 -0
  131. data/locale/katello.pot +1626 -1079
  132. data/locale/kn/katello.po +361 -53
  133. data/locale/kn/katello.po.time_stamp +0 -0
  134. data/locale/ko/katello.po +361 -53
  135. data/locale/ko/katello.po.time_stamp +0 -0
  136. data/locale/mr/katello.po +361 -53
  137. data/locale/mr/katello.po.time_stamp +0 -0
  138. data/locale/or/katello.po +361 -53
  139. data/locale/or/katello.po.time_stamp +0 -0
  140. data/locale/pa/katello.po +361 -53
  141. data/locale/pa/katello.po.time_stamp +0 -0
  142. data/locale/pt/katello.po +361 -53
  143. data/locale/pt/katello.po.time_stamp +0 -0
  144. data/locale/pt_BR/katello.po +364 -56
  145. data/locale/pt_BR/katello.po.time_stamp +0 -0
  146. data/locale/ru/katello.po +361 -53
  147. data/locale/ru/katello.po.time_stamp +0 -0
  148. data/locale/ta/katello.po +361 -53
  149. data/locale/ta/katello.po.time_stamp +0 -0
  150. data/locale/te/katello.po +361 -53
  151. data/locale/te/katello.po.time_stamp +0 -0
  152. data/locale/zh_CN/katello.po +374 -66
  153. data/locale/zh_CN/katello.po.time_stamp +0 -0
  154. data/locale/zh_TW/katello.po +361 -53
  155. data/locale/zh_TW/katello.po.time_stamp +0 -0
  156. data/package.json +0 -3
  157. data/webpack/components/EditableTextInput/EditableTextInput.js +3 -16
  158. data/webpack/components/EditableTextInput/PencilEditButton.js +33 -0
  159. data/webpack/components/Errata/index.js +18 -3
  160. data/webpack/components/Loading.js +1 -1
  161. data/webpack/components/RoutedTabs/index.js +1 -17
  162. data/webpack/components/Search/Search.js +0 -1
  163. data/webpack/components/Search/__tests__/search.test.js +1 -2
  164. data/webpack/components/SelectAllCheckbox/index.js +7 -4
  165. data/webpack/components/SelectableDropdown/SelectableDropdown.js +1 -0
  166. data/webpack/components/Table/EmptyStateMessage.js +77 -2
  167. data/webpack/components/Table/MainTable.js +46 -4
  168. data/webpack/components/Table/TableHooks.js +9 -6
  169. data/webpack/components/Table/TableWrapper.js +14 -8
  170. data/webpack/components/TypeAhead/TypeAhead.js +26 -11
  171. data/webpack/components/TypeAhead/pf3Search/TypeAheadItems.js +1 -1
  172. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +1 -0
  173. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +2 -1
  174. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +9 -4
  175. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeActions.js +37 -0
  176. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +173 -0
  177. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +6 -0
  178. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeConstants.js +6 -0
  179. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +301 -0
  180. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeSelectors.js +25 -0
  181. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +108 -0
  182. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +161 -0
  183. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +12 -12
  184. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +100 -0
  185. data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +26 -4
  186. data/webpack/components/extensions/HostDetails/HostDetailsConstants.js +3 -1
  187. data/webpack/components/extensions/HostDetails/HostDetailsReducer.js +14 -0
  188. data/webpack/components/extensions/HostDetails/HostDetailsSelectors.js +8 -2
  189. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +8 -12
  190. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +23 -2
  191. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +5 -0
  192. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +57 -7
  193. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +2 -0
  194. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +3 -0
  195. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +4 -1
  196. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +1 -10
  197. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +1 -1
  198. data/webpack/components/extensions/RegistrationCommands/index.js +49 -17
  199. data/webpack/containers/Application/config.js +5 -10
  200. data/webpack/global_index.js +19 -7
  201. data/webpack/global_test_setup.js +14 -2
  202. data/webpack/ouia_id_check.js +95 -0
  203. data/webpack/redux/actions/RedHatRepositories/helpers.js +2 -0
  204. data/webpack/redux/reducers/index.js +2 -4
  205. data/webpack/scenes/AlternateContentSources/ACSActions.js +36 -3
  206. data/webpack/scenes/AlternateContentSources/ACSConstants.js +3 -0
  207. data/webpack/scenes/AlternateContentSources/ACSSelectors.js +15 -6
  208. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +73 -42
  209. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +26 -10
  210. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSProducts.js +44 -0
  211. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +59 -45
  212. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +2 -1
  213. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +0 -1
  214. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +35 -19
  215. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +120 -13
  216. data/webpack/scenes/AlternateContentSources/Create/__tests__/products.fixtures.json +92 -0
  217. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +459 -0
  218. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +354 -0
  219. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +104 -0
  220. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +120 -0
  221. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +118 -0
  222. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +118 -0
  223. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +242 -0
  224. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +106 -0
  225. data/webpack/scenes/AlternateContentSources/Details/__tests__/acsDetails.fixtures.json +49 -0
  226. data/webpack/scenes/AlternateContentSources/Details/__tests__/acsProducts.fixtures.json +95 -0
  227. data/webpack/scenes/AlternateContentSources/Details/__tests__/simplifiedAcsDetails.fixtures.json +39 -0
  228. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +215 -87
  229. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.scss +3 -0
  230. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +1 -2
  231. data/webpack/scenes/Content/__tests__/contentTable.test.js +1 -2
  232. data/webpack/scenes/ContentViews/ContentViewsConstants.js +15 -4
  233. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +1 -2
  234. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -0
  235. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -2
  236. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +113 -0
  237. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +89 -0
  238. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +32 -9
  239. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +13 -3
  240. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +39 -27
  241. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +236 -0
  242. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +1 -0
  243. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +10 -0
  244. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +3 -0
  245. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +3 -1
  246. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +17 -4
  247. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +1 -0
  248. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +34 -22
  249. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +97 -0
  250. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +1 -2
  251. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +128 -0
  252. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +56 -3
  253. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +62 -8
  254. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +1 -5
  255. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +1 -2
  256. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +32 -2
  257. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +1 -2
  258. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +1 -2
  259. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVContainerImageFilterContent.fixtures.json +13 -0
  260. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVPackageFilterRules.fixtures.json +13 -0
  261. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyContentViewFilters.fixtures.json +13 -0
  262. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
  263. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +5 -1
  264. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +1 -2
  265. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +3 -0
  266. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.js +143 -0
  267. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +51 -0
  268. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +314 -0
  269. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +186 -0
  270. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +74 -0
  271. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/AnsibleCollectionsCompareAllContentData.fixtures.json +63 -0
  272. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js +657 -0
  273. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionEmptyContentCompareData.fixtures.json +14 -0
  274. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ContainerTagsCompareAllContentData.fixtures.json +95 -0
  275. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/DebPackagesCompareAllContentData.fixtures.json +87 -0
  276. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareAllContentData.fixtures.json +319 -0
  277. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareThreeContentTypesData.fixtures.json +131 -0
  278. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareAllContentData.fixtures.json +51 -0
  279. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareThreeContentTypesData.fixtures.json +48 -0
  280. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ModuleStreamsCompareAllContentData.fixtures.json +239 -0
  281. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PackageGroupsCompareAllContentData.fixtures.json +51 -0
  282. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PythonPackagesCompareAllContentData.fixtures.json +315 -0
  283. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareAllContentData.fixtures.json +470 -0
  284. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareThreeContentTypesData.fixtures.json +475 -0
  285. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewDetails.fixtures.json +160 -0
  286. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +161 -0
  287. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +154 -0
  288. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +211 -0
  289. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +1013 -0
  290. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +145 -0
  291. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +145 -0
  292. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +102 -36
  293. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +1 -2
  294. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +4 -2
  295. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +1 -2
  296. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +1 -2
  297. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +113 -40
  298. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +96 -81
  299. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -2
  300. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +7 -2
  301. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +1 -1
  302. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +0 -30
  303. data/webpack/test-utils/nockWrapper.js +7 -0
  304. metadata +100 -145
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +0 -34
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +0 -751
  307. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-deletion.controller.js +0 -42
  308. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +0 -81
  309. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-confirm.controller.js +0 -65
  310. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +0 -82
  311. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-environments.controller.js +0 -76
  312. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion.controller.js +0 -160
  313. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html +0 -58
  314. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html +0 -94
  315. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-confirm.html +0 -76
  316. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-content-hosts.html +0 -88
  317. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html +0 -73
  318. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-component.factory.js +0 -32
  319. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +0 -75
  320. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +0 -68
  321. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +0 -81
  322. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +0 -81
  323. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite.html +0 -24
  324. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-deb-repositories.controller.js +0 -50
  325. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +0 -42
  326. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-file-repositories.controller.js +0 -50
  327. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +0 -42
  328. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-repositories.controller.js +0 -45
  329. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-deb-repositories-list.controller.js +0 -48
  330. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +0 -100
  331. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +0 -49
  332. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-file-repositories-list.controller.js +0 -48
  333. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +0 -49
  334. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +0 -129
  335. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +0 -46
  336. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories-list.controller.js +0 -42
  337. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories.service.js +0 -91
  338. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +0 -240
  339. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +0 -115
  340. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-module-stream-filter.controller.js +0 -68
  341. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +0 -66
  342. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +0 -77
  343. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/docker-tag-filter.controller.js +0 -137
  344. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/edit-filter.controller.js +0 -36
  345. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +0 -78
  346. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter.controller.js +0 -74
  347. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-content-type.filter.js +0 -21
  348. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-details.controller.js +0 -34
  349. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-helper.service.js +0 -30
  350. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +0 -86
  351. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-rule-matching-package-modal.controller.js +0 -37
  352. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-type.filter.js +0 -21
  353. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter.factory.js +0 -66
  354. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +0 -85
  355. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/module-stream-list-filter.controller.js +0 -73
  356. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +0 -100
  357. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +0 -179
  358. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +0 -75
  359. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/rule.factory.js +0 -21
  360. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata-filter.html +0 -9
  361. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata.html +0 -75
  362. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-filter.html +0 -28
  363. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-tag-filter-details.html +0 -65
  364. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/edit-filter.html +0 -19
  365. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter-details.html +0 -63
  366. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter.html +0 -50
  367. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-details.html +0 -9
  368. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-repositories.html +0 -121
  369. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-rule-matching-package-modal.html +0 -43
  370. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +0 -85
  371. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter-details.html +0 -58
  372. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter.html +0 -43
  373. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/new-filter.html +0 -62
  374. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +0 -182
  375. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter.html +0 -28
  376. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html +0 -42
  377. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter.html +0 -43
  378. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/partials/filter-repositories-count.html +0 -2
  379. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +0 -47
  380. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.factory.js +0 -22
  381. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/views/content-view-history.html +0 -36
  382. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-copy.html +0 -20
  383. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-deb-repositories.html +0 -87
  384. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details-tasks.html +0 -4
  385. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +0 -144
  386. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-docker-repositories.html +0 -114
  387. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-file-repositories.html +0 -87
  388. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +0 -63
  389. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-ostree-repositories.html +0 -87
  390. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +0 -59
  391. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +0 -58
  392. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-repositories.html +0 -116
  393. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -126
  394. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +0 -78
  395. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +0 -127
  396. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +0 -138
  397. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.controller.js +0 -59
  398. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-apt.html +0 -25
  399. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-components.html +0 -19
  400. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-deb.html +0 -19
  401. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-details.html +0 -15
  402. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-docker.html +0 -23
  403. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-errata.html +0 -48
  404. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-file.html +0 -21
  405. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-module-streams.html +0 -8
  406. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-package-groups.html +0 -21
  407. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-packages.html +0 -27
  408. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +0 -42
  409. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +0 -83
  410. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +0 -74
  411. data/webpack/components/Table/__test__/useBulkSelect.test.js +0 -99
  412. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsActions.js +0 -30
  413. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsConstants.js +0 -3
  414. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsPage.js +0 -80
  415. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +0 -39
  416. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +0 -60
  417. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetails.js +0 -94
  418. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsActions.js +0 -23
  419. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsConstants.js +0 -3
  420. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +0 -30
  421. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionsSchema.js +0 -35
  422. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailInfo.test.js +0 -16
  423. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.fixtures.js +0 -25
  424. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -27
  425. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsActions.test.js +0 -41
  426. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsReducer.test.js +0 -33
  427. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailInfo.test.js.snap +0 -83
  428. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetails.test.js.snap +0 -190
  429. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsActions.test.js.snap +0 -58
  430. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsReducer.test.js.snap +0 -50
  431. data/webpack/scenes/AnsibleCollections/Details/index.js +0 -17
  432. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -23
  433. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollections.fixtures.js +0 -52
  434. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsActions.test.js +0 -48
  435. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsReducer.test.js +0 -46
  436. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -25
  437. data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionPage.test.js.snap +0 -73
  438. data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionsTable.test.js.snap +0 -81
  439. data/webpack/scenes/AnsibleCollections/index.js +0 -17
  440. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +0 -123
@@ -111,6 +111,29 @@ EnabledIcon.propTypes = {
111
111
  isOverridden: PropTypes.bool.isRequired,
112
112
  };
113
113
 
114
+ const ArchRestrictedIcon = ({ archRestricted }) => (
115
+ <Tooltip
116
+ position="right"
117
+ content={<FormattedMessage
118
+ id="arch-restricted-tooltip"
119
+ defaultMessage={__('Architecture restricted to {archRestricted}. If host architecture does not match, the repository will not be available on this host.')}
120
+ values={{ archRestricted }}
121
+ />}
122
+ >
123
+ <Label color="orange" className="arch-restricted-label" style={{ marginLeft: '8px' }}>
124
+ {__(archRestricted)}
125
+ </Label>
126
+ </Tooltip>
127
+ );
128
+
129
+ ArchRestrictedIcon.propTypes = {
130
+ archRestricted: PropTypes.string,
131
+ };
132
+
133
+ ArchRestrictedIcon.defaultProps = {
134
+ archRestricted: null,
135
+ };
136
+
114
137
  const OsRestrictedIcon = ({ osRestricted }) => (
115
138
  <Tooltip
116
139
  position="right"
@@ -174,9 +197,15 @@ const RepositorySetsTab = () => {
174
197
 
175
198
  const [alertShowing, setAlertShowing] = useState(false);
176
199
  const emptyContentTitle = __('No repository sets to show.');
177
- const emptyContentBody = __('Repository sets will appear here when available.');
200
+ const emptyContentBody = __('Repository sets will appear here after enabling Red Hat repositories or creating custom products.');
178
201
  const emptySearchTitle = __('No matching repository sets found');
179
202
  const emptySearchBody = __('Try changing your search query.');
203
+ const showPrimaryAction = true;
204
+ const showSecondaryAction = true;
205
+ const primaryActionTitle = __('Enable Red Hat repositories');
206
+ const secondaryActionTitle = __('Create a custom product');
207
+ const primaryActionLink = '/redhat_repositories';
208
+ const secondaryActionLink = '/products/new';
180
209
  const errorSearchTitle = __('Problem searching repository sets');
181
210
  const columnHeaders = useMemo(() => [
182
211
  __('Repository'),
@@ -233,6 +262,10 @@ const RepositorySetsTab = () => {
233
262
 
234
263
  const hostDetailsStatus = useSelector(state => selectHostDetailsStatus(state));
235
264
 
265
+ const resetFilters = () => {
266
+ setStatusSelected(STATUS_LABEL);
267
+ setToggleGroupState(defaultToggleGroupState);
268
+ };
236
269
  useEffect(() => {
237
270
  // wait until host details are loaded to set alertShowing
238
271
  if (hostDetailsStatus === STATUS.RESOLVED) {
@@ -306,13 +339,13 @@ const RepositorySetsTab = () => {
306
339
  cannot(createBookmarks, userPermissionsFromHostDetails({ hostDetails }));
307
340
 
308
341
  const dropdownItems = [
309
- <DropdownItem aria-label="bulk_enable" key="bulk_enable" component="button" onClick={enableRepoSets} isDisabled={selectedCount === 0}>
342
+ <DropdownItem aria-label="bulk_enable" key="bulk_enable" ouiaId="bulk_enable" component="button" onClick={enableRepoSets} isDisabled={selectedCount === 0}>
310
343
  {__('Override to enabled')}
311
344
  </DropdownItem>,
312
- <DropdownItem aria-label="bulk_disable" key="bulk_disable" component="button" onClick={disableRepoSets} isDisabled={selectedCount === 0}>
345
+ <DropdownItem aria-label="bulk_disable" key="bulk_disable" ouiaId="bulk_disable" component="button" onClick={disableRepoSets} isDisabled={selectedCount === 0}>
313
346
  {__('Override to disabled')}
314
347
  </DropdownItem>,
315
- <DropdownItem aria-label="bulk_reset_default" key="bulk_reset_default" component="button" onClick={resetToDefaultRepoSets} isDisabled={selectedCount === 0}>
348
+ <DropdownItem aria-label="bulk_reset_default" key="bulk_reset_default" ouiaId="bulk_reset_default" component="button" onClick={resetToDefaultRepoSets} isDisabled={selectedCount === 0}>
316
349
  {__('Reset to default')}
317
350
  </DropdownItem>,
318
351
  ];
@@ -342,6 +375,7 @@ const RepositorySetsTab = () => {
342
375
  <SplitItem>
343
376
  <SelectableDropdown
344
377
  id="status-dropdown"
378
+ ouiaId="status-dropdown"
345
379
  title={STATUS_LABEL}
346
380
  showTitle={false}
347
381
  items={Object.values(STATUSES)}
@@ -362,6 +396,7 @@ const RepositorySetsTab = () => {
362
396
  isOpen={isBulkActionOpen}
363
397
  isPlain
364
398
  dropdownItems={dropdownItems}
399
+ ouiaId="repository-sets-bulk-actions"
365
400
  />
366
401
  </ActionListItem>
367
402
  </ActionList>
@@ -403,6 +438,7 @@ const RepositorySetsTab = () => {
403
438
  <Alert
404
439
  variant="info"
405
440
  className="repo-sets-alert"
441
+ ouiaId="repo-sets-alert"
406
442
  isInline
407
443
  title={
408
444
  <FormattedMessage
@@ -415,7 +451,7 @@ const RepositorySetsTab = () => {
415
451
  }}
416
452
  />
417
453
  }
418
- actionClose={<AlertActionCloseButton onClose={() => setAlertShowing(false)} />}
454
+ actionClose={<AlertActionCloseButton ouiaId="alert-close-button" onClose={() => setAlertShowing(false)} />}
419
455
  />
420
456
  }
421
457
  </div>
@@ -435,6 +471,13 @@ const RepositorySetsTab = () => {
435
471
  emptySearchBody,
436
472
  activeFilters,
437
473
  defaultFilters,
474
+ showPrimaryAction,
475
+ showSecondaryAction,
476
+ primaryActionLink,
477
+ secondaryActionLink,
478
+ primaryActionTitle,
479
+ secondaryActionTitle,
480
+ resetFilters,
438
481
  }
439
482
  }
440
483
  ouiaId="host-repository-sets-table"
@@ -449,10 +492,12 @@ const RepositorySetsTab = () => {
449
492
  rowsCount={results?.length}
450
493
  variant={TableVariant.compact}
451
494
  {...selectAll}
495
+ requestKey={REPOSITORY_SETS_KEY}
452
496
  displaySelectAllCheckbox={canDoContentOverrides}
497
+ alwaysShowActionButtons={false}
453
498
  >
454
499
  <Thead>
455
- <Tr>
500
+ <Tr ouiaId="header-tr">
456
501
  <Th key="select-all" />
457
502
  <SortableColumnHeaders
458
503
  columnHeaders={columnHeaders}
@@ -473,11 +518,13 @@ const RepositorySetsTab = () => {
473
518
  contentUrl: repoPath,
474
519
  product: { name: productName, id: productId },
475
520
  osRestricted,
521
+ archRestricted,
476
522
  } = repoSet;
477
523
  const { isEnabled, isOverridden } =
478
524
  getEnabledValue({ enabled, enabledContentOverride });
525
+ const showArchRestricted = archRestricted !== 'noarch';
479
526
  return (
480
- <Tr key={id}>
527
+ <Tr key={id} ouiaId={`tr-${rowIndex}`}>
481
528
  {canDoContentOverrides ? (
482
529
  <Td select={{
483
530
  disable: !isSelectable(id),
@@ -499,6 +546,9 @@ const RepositorySetsTab = () => {
499
546
  </Td>
500
547
  <Td>
501
548
  <span><EnabledIcon key={`enabled-icon-${id}`} {...{ isEnabled, isOverridden }} /></span>
549
+ {showArchRestricted &&
550
+ <span><ArchRestrictedIcon key={`arch-restricted-icon-${id}`} {...{ archRestricted }} /></span>
551
+ }
502
552
  {osRestricted &&
503
553
  <span><OsRestrictedIcon key={`os-restricted-icon-${id}`} {...{ osRestricted }} /></span>
504
554
  }
@@ -22,6 +22,7 @@ import { useRexJobPolling } from '../RemoteExecutionHooks';
22
22
  import { hasRequiredPermissions as can,
23
23
  missingRequiredPermissions as cannot,
24
24
  userPermissionsFromHostDetails } from '../../hostDetailsHelpers';
25
+ import { HOST_TRACES_KEY } from './HostTracesConstants';
25
26
 
26
27
  const invokeRexJobs = ['create_job_invocations'];
27
28
  const createBookmarks = ['create_bookmarks'];
@@ -201,6 +202,7 @@ const TracesTab = () => {
201
202
  lastCompletedAppRestart, lastCompletedBulkRestart]}
202
203
  displaySelectAllCheckbox={showActions}
203
204
  {...selectAll}
205
+ requestKey={HOST_TRACES_KEY}
204
206
  >
205
207
  <Thead>
206
208
  <Tr>
@@ -42,6 +42,7 @@
42
42
  "gpgUrl": null,
43
43
  "contentUrl": "/custom/ParthaProduct/empty_repo",
44
44
  "osRestricted": null,
45
+ "archRestricted": "noarch",
45
46
  "override": "default",
46
47
  "overrides": [],
47
48
  "enabled_content_override": null
@@ -77,6 +78,7 @@
77
78
  "gpgUrl": null,
78
79
  "contentUrl": "/custom/ParthaProduct/partha_multi-errata",
79
80
  "osRestricted": "rhel-7",
81
+ "archRestricted": "x86_64",
80
82
  "override": "0",
81
83
  "overrides": [
82
84
  {
@@ -110,6 +112,7 @@
110
112
  "gpgUrl": null,
111
113
  "contentUrl": "/custom/Pull_Provider/yggdrasil",
112
114
  "osRestricted": null,
115
+ "archRestricted": "noarch",
113
116
  "override": "1",
114
117
  "overrides": [
115
118
  {
@@ -8,6 +8,7 @@ import mockRepoSetData from './repositorySets.fixtures.json';
8
8
  import mockBookmarkData from './bookmarks.fixtures.json';
9
9
  import mockContentOverride from './contentOverrides.fixtures.json';
10
10
 
11
+
11
12
  jest.mock('../../hostDetailsHelpers', () => ({
12
13
  ...jest.requireActual('../../hostDetailsHelpers'),
13
14
  userPermissionsFromHostDetails: () => ({
@@ -414,7 +415,7 @@ test('Can filter by status', async (done) => {
414
415
  assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
415
416
  });
416
417
 
417
- test('Can display osRestricted as a label', async (done) => {
418
+ test('Can display restrictions as labels', async (done) => {
418
419
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
419
420
  const scope = nockInstance
420
421
  .get(hostRepositorySets)
@@ -426,6 +427,8 @@ test('Can display osRestricted as a label', async (done) => {
426
427
  await patientlyWaitFor(() => expect(getByText(secondRepoSet.contentUrl)).toBeInTheDocument());
427
428
  expect(secondRepoSet.osRestricted).not.toBeNull();
428
429
  expect(getByText(secondRepoSet.osRestricted)).toBeInTheDocument();
430
+ expect(secondRepoSet.archRestricted).not.toBeNull();
431
+ expect(getByText(secondRepoSet.archRestricted)).toBeInTheDocument();
429
432
  assertNockRequest(autocompleteScope);
430
433
  assertNockRequest(scope, done); // Pass jest callback to confirm test is done
431
434
  });
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { renderWithRedux, waitFor, patientlyWaitFor, fireEvent, act } from 'react-testing-lib-wrapper';
3
- import nock, { nockInstance, assertNockRequest, mockForemanAutocomplete, mockSetting } from '../../../../../test-utils/nockWrapper';
3
+ import { nockInstance, assertNockRequest, mockForemanAutocomplete, mockSetting } from '../../../../../test-utils/nockWrapper';
4
4
  import { foremanApi } from '../../../../../services/api';
5
5
  import { REX_FEATURES } from '../RemoteExecutionConstants';
6
6
  import { HOST_TRACES_KEY, TRACES_SEARCH_QUERY } from '../TracesTab/HostTracesConstants';
@@ -74,7 +74,6 @@ describe('With tracer installed', () => {
74
74
  assertNockRequest(searchDelayScope);
75
75
  assertNockRequest(autoSearchScope);
76
76
  assertNockRequest(bookmarkScope);
77
- nock.cleanAll();
78
77
  });
79
78
 
80
79
  test('Can call API for traces and show on screen on page load', async (done) => {
@@ -345,10 +344,6 @@ describe('With tracer installed', () => {
345
344
  [firstTrace] = results;
346
345
  });
347
346
 
348
- afterEach(() => {
349
- nock.cleanAll();
350
- });
351
-
352
347
  test('Does not allow selection of session type traces', async (done) => {
353
348
  const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
354
349
 
@@ -374,10 +369,6 @@ describe('With tracer installed', () => {
374
369
  });
375
370
 
376
371
  describe('Without tracer installed', () => {
377
- afterEach(() => {
378
- nock.cleanAll();
379
- });
380
-
381
372
  test('Shows Enable Tracer empty state', async () => {
382
373
  const { queryByText } = renderWithRedux(<TracesTab />, renderOptions(false));
383
374
 
@@ -35,7 +35,7 @@ export const userPermissionsFromHostDetails = ({ hostDetails }) => {
35
35
 
36
36
  // requiredPermissions is an array
37
37
  // userPermissions is an object, e.g. { view_hosts: true }
38
- export const hasRequiredPermissions = (requiredPermissions = [], userPermissions) => {
38
+ export const hasRequiredPermissions = (requiredPermissions = [], userPermissions = {}) => {
39
39
  const permittedActions = Object.keys(userPermissions).filter(key => userPermissions[key]);
40
40
  return requiredPermissions.every(permission => permittedActions.includes(permission));
41
41
  };
@@ -7,32 +7,20 @@ import LifecycleEnvironment from './fields/LifecycleEnvironment';
7
7
  import IgnoreSubmanErrors from './fields/IgnoreSubmanErrors';
8
8
  import Force from './fields/Force';
9
9
 
10
- const RegistrationCommands = ({
10
+ export const RegistrationCommands = ({
11
11
  organizationId,
12
12
  hostGroupId,
13
13
  pluginValues,
14
14
  pluginData,
15
15
  onChange,
16
- handleInvalidField,
17
16
  isLoading,
18
17
  }) => {
19
18
  useEffect(() => {
20
- onChange({ activationKeys: [], lifecycleEnvironmentId: '' });
19
+ onChange({ lifecycleEnvironmentId: '' });
21
20
  }, [onChange, organizationId, hostGroupId]);
22
21
 
23
22
  return (
24
23
  <>
25
- <ActivationKeys
26
- activationKeys={pluginData?.activationKeys}
27
- organizationId={organizationId}
28
- selectedKeys={(pluginValues?.activationKeys || [])}
29
- hostGroupActivationKeys={pluginData?.hostGroupActivationKeys}
30
- hostGroupId={hostGroupId}
31
- pluginValues={pluginValues}
32
- onChange={onChange}
33
- handleInvalidField={handleInvalidField}
34
- isLoading={isLoading}
35
- />
36
24
  <LifecycleEnvironment
37
25
  pluginValues={pluginValues}
38
26
  lifecycleEnvironments={pluginData?.lifecycleEnvironments}
@@ -63,7 +51,6 @@ RegistrationCommands.propTypes = {
63
51
  pluginValues: PropTypes.object, // eslint-disable-line react/forbid-prop-types
64
52
  pluginData: PropTypes.object, // eslint-disable-line react/forbid-prop-types
65
53
  onChange: PropTypes.func,
66
- handleInvalidField: PropTypes.func,
67
54
  isLoading: PropTypes.bool,
68
55
  };
69
56
 
@@ -74,7 +61,52 @@ RegistrationCommands.defaultProps = {
74
61
  pluginData: {},
75
62
  isLoading: false,
76
63
  onChange: noop,
77
- handleInvalidField: noop,
78
64
  };
79
65
 
80
- export default RegistrationCommands;
66
+ export const RegistrationActivationKeys = ({
67
+ organizationId,
68
+ hostGroupId,
69
+ pluginValues,
70
+ pluginData,
71
+ onChange,
72
+ handleInvalidField,
73
+ isLoading,
74
+ }) => {
75
+ useEffect(() => {
76
+ onChange({ activationKeys: [] });
77
+ }, [onChange, organizationId, hostGroupId]);
78
+
79
+ return (
80
+ <ActivationKeys
81
+ activationKeys={pluginData?.activationKeys}
82
+ organizationId={organizationId}
83
+ selectedKeys={(pluginValues?.activationKeys || [])}
84
+ hostGroupActivationKeys={pluginData?.hostGroupActivationKeys}
85
+ hostGroupId={hostGroupId}
86
+ pluginValues={pluginValues}
87
+ onChange={onChange}
88
+ handleInvalidField={handleInvalidField}
89
+ isLoading={isLoading}
90
+ />
91
+ );
92
+ };
93
+
94
+ RegistrationActivationKeys.propTypes = {
95
+ organizationId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
96
+ hostGroupId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
97
+ pluginValues: PropTypes.object, // eslint-disable-line react/forbid-prop-types
98
+ pluginData: PropTypes.object, // eslint-disable-line react/forbid-prop-types
99
+ onChange: PropTypes.func,
100
+ handleInvalidField: PropTypes.func,
101
+ isLoading: PropTypes.bool,
102
+ };
103
+
104
+ RegistrationActivationKeys.defaultProps = {
105
+ organizationId: undefined,
106
+ hostGroupId: undefined,
107
+ pluginValues: {},
108
+ pluginData: {},
109
+ isLoading: false,
110
+ onChange: noop,
111
+ handleInvalidField: noop,
112
+ };
@@ -7,8 +7,6 @@ import SetOrganization from '../../components/SelectOrg/SetOrganization';
7
7
  import WithOrganization from '../../components/WithOrganization/withOrganization';
8
8
  import ModuleStreams from '../../scenes/ModuleStreams';
9
9
  import ModuleStreamDetails from '../../scenes/ModuleStreams/Details';
10
- import AnsibleCollections from '../../scenes/AnsibleCollections';
11
- import AnsibleCollectionDetails from '../../scenes/AnsibleCollections/Details';
12
10
  import ContentViews from '../../scenes/ContentViews';
13
11
  import ContentViewDetails from '../../scenes/ContentViews/Details';
14
12
  import Content from '../../scenes/Content';
@@ -48,14 +46,6 @@ export const links = [
48
46
  path: 'module_streams/:id([0-9]+)',
49
47
  component: WithOrganization(withHeader(ModuleStreamDetails, { title: __('Module Stream Details') })),
50
48
  },
51
- {
52
- path: 'legacy_ansible_collections',
53
- component: WithOrganization(withHeader(AnsibleCollections, { title: __('Ansible Collections') })),
54
- },
55
- {
56
- path: 'legacy_ansible_collections/:id([0-9]+)',
57
- component: WithOrganization(withHeader(AnsibleCollectionDetails, { title: __('Ansible Collection Details') })),
58
- },
59
49
  {
60
50
  path: 'content_views',
61
51
  component: WithOrganization(withHeader(ContentViews, { title: __('Content views') })),
@@ -85,4 +75,9 @@ export const links = [
85
75
  path: 'labs/alternate_content_sources',
86
76
  component: WithOrganization(withHeader(AlternateContentSource, { title: __('Alternate Content Sources') })),
87
77
  },
78
+ {
79
+ path: 'labs/alternate_content_sources/:id([0-9]+)',
80
+ component: WithOrganization(withHeader(AlternateContentSource, { title: __('Alternate Content Sources') })),
81
+ exact: false,
82
+ },
88
83
  ];
@@ -4,52 +4,63 @@ import { registerReducer } from 'foremanReact/common/MountingService';
4
4
  import { translate as __ } from 'foremanReact/common/I18n';
5
5
 
6
6
  import SystemStatuses from './components/extensions/about';
7
- import RegistrationCommands from './components/extensions/RegistrationCommands';
7
+ import {
8
+ RegistrationCommands,
9
+ RegistrationActivationKeys,
10
+ } from './components/extensions/RegistrationCommands';
8
11
  import ContentTab from './components/extensions/HostDetails/Tabs/ContentTab';
9
12
  import ContentViewDetailsCard from './components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard';
10
13
  import ErrataOverviewCard from './components/extensions/HostDetails/Cards/ErrataOverviewCard';
11
14
  import InstalledProductsCard from './components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard';
12
15
  import RegistrationCard from './components/extensions/HostDetails/DetailsTabCards/RegistrationCard';
16
+ import HwPropertiesCard from './components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard';
13
17
 
14
18
  import TracesTab from './components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js';
15
19
  import extendReducer from './components/extensions/reducers';
16
20
  import rootReducer from './redux/reducers';
17
21
  import HostCollectionsCard from './components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard';
18
22
  import { hostIsNotRegistered } from './components/extensions/HostDetails/hostDetailsHelpers';
19
- import SystemPropertiesCardExtensions from './components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions';
23
+ import {
24
+ SystemPropertiesCardSubscription,
25
+ SystemPropertiesCardTracer,
26
+ } from './components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions';
20
27
  import HostActionsBar from './components/extensions/HostDetails/ActionsBar';
21
28
  import RecentCommunicationCardExtensions from './components/extensions/HostDetails/DetailsTabCards/RecentCommunicationCardExtensions';
29
+ import SystemPurposeCard from './components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard';
22
30
 
23
31
  registerReducer('katelloExtends', extendReducer);
24
32
  registerReducer('katello', rootReducer);
25
33
 
26
34
  addGlobalFill('aboutFooterSlot', '[katello]AboutSystemStatuses', <SystemStatuses key="katello-system-statuses" />, 100);
27
35
  addGlobalFill('registrationAdvanced', '[katello]RegistrationCommands', <RegistrationCommands key="katello-reg" />, 100);
36
+ addGlobalFill('registrationGeneral', '[katello]RegistrationActivationKeys', <RegistrationActivationKeys key="katello-reg-ak" />, 100);
28
37
 
29
38
  // Host details page tabs
30
39
  addGlobalFill('host-details-page-tabs', 'Content', <ContentTab key="content" />, 900, { title: __('Content'), hideTab: hostIsNotRegistered });
31
40
  addGlobalFill('host-details-page-tabs', 'Traces', <TracesTab key="traces" />, 800, { title: __('Traces'), hideTab: hostIsNotRegistered });
32
41
 
33
- // Overview tab cards
42
+ // Overview tab cards & card extensions
34
43
  addGlobalFill(
35
44
  'host-overview-cards',
36
45
  'Content view details',
37
46
  <ContentViewDetailsCard key="content-view-details" />,
38
- 2000,
47
+ 3800,
39
48
  );
40
49
  addGlobalFill(
41
50
  'host-overview-cards',
42
51
  'Host collections',
43
52
  <HostCollectionsCard key="host-collections-details" />,
44
- 700,
53
+ 2600,
45
54
  );
46
- addGlobalFill('host-overview-cards', 'Installable errata', <ErrataOverviewCard key="errata-overview" />, 1900);
55
+ addGlobalFill('host-overview-cards', 'Installable errata', <ErrataOverviewCard key="errata-overview" />, 3600);
56
+ addGlobalFill('host-overview-cards', 'System purpose', <SystemPurposeCard key="system-purpose" />, 1400);
47
57
  addGlobalFill('recent-communication-card-item', 'Recent communication', <RecentCommunicationCardExtensions key="recent-communication" />, 3000);
48
58
 
49
59
  // Details tab cards & card extensions
50
60
  addGlobalFill('host-tab-details-cards', 'Installed products', <InstalledProductsCard key="installed-products" />, 100);
51
61
  addGlobalFill('host-tab-details-cards', 'Registration details', <RegistrationCard key="registration-details" />, 200);
52
- addGlobalFill('host-details-tab-properties-1', 'Subscription UUID', <SystemPropertiesCardExtensions key="subscription-uuid" />);
62
+ addGlobalFill('host-details-tab-properties-1', 'Subscription UUID', <SystemPropertiesCardSubscription key="subscription-uuid" />);
63
+ addGlobalFill('host-details-tab-properties-2', 'Tracer', <SystemPropertiesCardTracer key="tracer-status" />);
53
64
 
54
65
  addGlobalFill(
55
66
  'host-details-kebab',
@@ -57,3 +68,4 @@ addGlobalFill(
57
68
  <HostActionsBar key="katello-host-details-kebab" />,
58
69
  100,
59
70
  );
71
+ addGlobalFill('host-tab-details-cards', 'HW properties', <HwPropertiesCard key="hw-properties" />, 200);
@@ -1,4 +1,5 @@
1
1
  import nock from 'nock';
2
+ // import checkForOuiaIds from './ouia_id_check';
2
3
 
3
4
  // runs before each test to make sure console.error output will
4
5
  // fail a test (i.e. default PropType missing). Check the error
@@ -8,12 +9,18 @@ global.console.error = (error, stack) => {
8
9
  originalConsoleError(error); // ensure error is printed to console
9
10
  /* eslint-disable-next-line no-console */
10
11
  if (stack) console.log(stack); // Prints out original stack trace
11
- throw new Error(error);
12
+ throw new Error(error); // comment this and uncomment the next line when checking for ouia ids
13
+ // if (!error.includes('Failed prop type')) throw new Error(error);
12
14
  };
13
15
 
14
16
  // Increase jest timeout as some tests using multiple http mocks can time out on CI systems.
15
17
  jest.setTimeout(process.env.JEST_TIMEOUT || 15000);
16
18
 
19
+ // uncomment this to see if tests are trying to make real API requests
20
+ // beforeAll(() => {
21
+ // nock.disableNetConnect();
22
+ // });
23
+
17
24
  afterAll(() => {
18
25
  jest.resetModules();
19
26
  if (global.gc) global.gc();
@@ -23,7 +30,12 @@ beforeEach(() => {
23
30
  if (!nock.isActive()) { nock.activate(); }
24
31
  });
25
32
 
33
+ // To see where you need to add ouiaIds:
34
+ // 1. uncomment this and the import above
35
+ // checkForOuiaIds();
36
+ // 2. (optional) uncomment the line in global.console.error function above
37
+
26
38
  afterEach(() => {
27
- nock.restore();
39
+ nock.cleanAll();
28
40
  });
29
41
 
@@ -0,0 +1,95 @@
1
+ import PropTypes from 'prop-types';
2
+ import {
3
+ Alert,
4
+ Breadcrumb,
5
+ Button,
6
+ Card,
7
+ Checkbox,
8
+ Chip,
9
+ ChipGroup,
10
+ ContextSelector,
11
+ Dropdown,
12
+ DropdownItem,
13
+ DropdownSeparator,
14
+ DropdownToggle,
15
+ DropdownToggleCheckbox,
16
+ FormSelect,
17
+ Menu,
18
+ Modal,
19
+ ModalContent,
20
+ Nav,
21
+ NavExpandable,
22
+ NavItem,
23
+ OptionsMenu,
24
+ Pagination,
25
+ Radio,
26
+ Select,
27
+ Switch,
28
+ TabButton,
29
+ TabContent,
30
+ Tabs,
31
+ Text,
32
+ TextInput,
33
+ Title,
34
+ Toolbar,
35
+ } from '@patternfly/react-core';
36
+ import {
37
+ RowWrapper,
38
+ Table,
39
+ TableComposable,
40
+ Tr,
41
+ } from '@patternfly/react-table';
42
+
43
+ const checkForOuiaIds = () => {
44
+ const ouiaSupportedPFComponents = [
45
+ Alert,
46
+ Breadcrumb,
47
+ Button,
48
+ Card,
49
+ Checkbox,
50
+ Chip,
51
+ ChipGroup,
52
+ ContextSelector,
53
+ Dropdown,
54
+ DropdownItem,
55
+ DropdownSeparator,
56
+ DropdownToggle,
57
+ DropdownToggleCheckbox,
58
+ FormSelect,
59
+ Menu,
60
+ Modal,
61
+ ModalContent,
62
+ Nav,
63
+ NavExpandable,
64
+ NavItem,
65
+ OptionsMenu,
66
+ Pagination,
67
+ Radio,
68
+ Select,
69
+ Switch,
70
+ TabButton,
71
+ TabContent,
72
+ Tabs,
73
+ Text,
74
+ TextInput,
75
+ Title,
76
+ Toolbar,
77
+ RowWrapper,
78
+ Table,
79
+ TableComposable,
80
+ Tr,
81
+ ];
82
+ beforeEach(() => {
83
+ // eslint-disable-next-line no-restricted-syntax
84
+ for (const Component of ouiaSupportedPFComponents) {
85
+ // eslint-disable-next-line no-continue
86
+ if (!Component) continue;
87
+ Component.propTypes = {
88
+ ...Component.propTypes,
89
+ ouiaId: PropTypes.string.isRequired,
90
+ };
91
+ }
92
+ });
93
+ };
94
+
95
+ export default checkForOuiaIds;
@@ -10,6 +10,8 @@ const repoTypeSearchQueryMap = {
10
10
  };
11
11
 
12
12
  const recommendedRepositoriesRHEL = [
13
+ 'rhel-9-for-x86_64-baseos-rpms',
14
+ 'rhel-9-for-x86_64-appstream-rpms',
13
15
  'rhel-8-for-x86_64-baseos-rpms',
14
16
  'rhel-8-for-x86_64-baseos-kickstart',
15
17
  'rhel-8-for-x86_64-appstream-rpms',
@@ -11,9 +11,8 @@ import { moduleStreams } from '../../scenes/ModuleStreams';
11
11
  import { reducers as organizationProductsReducers } from '../OrganizationProducts';
12
12
  import { moduleStreamDetails } from '../../scenes/ModuleStreams/Details';
13
13
  import { reducers as systemStatuses } from '../../components/extensions/about';
14
- import { ansibleCollections } from '../../scenes/AnsibleCollections';
15
- import { ansibleCollectionDetails } from '../../scenes/AnsibleCollections/Details';
16
14
  import { contentViewDetails } from '../../scenes/ContentViews/Details';
15
+ import hostDetails from '../../components/extensions/HostDetails/HostDetailsReducer';
17
16
 
18
17
  export default combineReducers({
19
18
  organization,
@@ -26,9 +25,8 @@ export default combineReducers({
26
25
  setOrganization,
27
26
  moduleStreams,
28
27
  moduleStreamDetails,
29
- ansibleCollections,
30
- ansibleCollectionDetails,
31
28
  contentViewDetails,
29
+ hostDetails,
32
30
  ...organizationProductsReducers,
33
31
  ...systemStatuses,
34
32
  });