katello 4.5.0.rc2 → 4.6.0.rc2

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 (479) 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/rhsm/candlepin_proxies_controller.rb +3 -0
  4. data/app/controllers/katello/api/v2/activation_keys_controller.rb +7 -0
  5. data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +52 -22
  6. data/app/controllers/katello/api/v2/content_exports_controller.rb +33 -3
  7. data/app/controllers/katello/api/v2/content_uploads_controller.rb +2 -0
  8. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  9. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  10. data/app/controllers/katello/api/v2/content_views_controller.rb +1 -1
  11. data/app/controllers/katello/api/v2/debs_controller.rb +42 -10
  12. data/app/controllers/katello/api/v2/host_collections_controller.rb +5 -1
  13. data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -0
  14. data/app/controllers/katello/api/v2/host_module_streams_controller.rb +9 -1
  15. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +8 -1
  16. data/app/controllers/katello/api/v2/organizations_controller.rb +3 -1
  17. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +8 -0
  18. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +34 -11
  19. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +7 -16
  20. data/app/lib/actions/katello/alternate_content_source/alternate_content_source_common.rb +16 -0
  21. data/app/lib/actions/katello/alternate_content_source/create.rb +11 -5
  22. data/app/lib/actions/katello/alternate_content_source/destroy.rb +3 -4
  23. data/app/lib/actions/katello/alternate_content_source/refresh.rb +3 -5
  24. data/app/lib/actions/katello/alternate_content_source/update.rb +57 -13
  25. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +2 -2
  26. data/app/lib/actions/katello/content_view/promote_to_environment.rb +4 -2
  27. data/app/lib/actions/katello/content_view/publish.rb +5 -2
  28. data/app/lib/actions/katello/organization/environment_contents_refresh.rb +20 -0
  29. data/app/lib/actions/katello/organization/manifest_refresh.rb +10 -4
  30. data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +1 -9
  31. data/app/lib/actions/katello/repository/create.rb +9 -0
  32. data/app/lib/actions/katello/repository/destroy.rb +21 -0
  33. data/app/lib/actions/katello/repository/errata_mail.rb +3 -3
  34. data/app/lib/actions/katello/repository/refresh_repository.rb +3 -0
  35. data/app/lib/actions/katello/repository/update.rb +33 -0
  36. data/app/lib/actions/katello/repository/update_redhat_repository.rb +1 -1
  37. data/app/lib/actions/pulp3/alternate_content_source/create.rb +5 -4
  38. data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +5 -4
  39. data/app/lib/actions/pulp3/alternate_content_source/delete.rb +4 -4
  40. data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +4 -4
  41. data/app/lib/actions/pulp3/alternate_content_source/refresh.rb +4 -4
  42. data/app/lib/actions/pulp3/alternate_content_source/update.rb +4 -4
  43. data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +5 -5
  44. data/app/lib/actions/pulp3/capsule_content/reclaim_space.rb +1 -0
  45. data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +3 -1
  46. data/app/lib/actions/pulp3/content_view_version/create_exporter.rb +9 -2
  47. data/app/lib/actions/pulp3/content_view_version/create_syncable_export_history.rb +45 -0
  48. data/app/lib/actions/pulp3/content_view_version/destroy_exporter.rb +6 -1
  49. data/app/lib/actions/pulp3/content_view_version/export.rb +8 -3
  50. data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +3 -3
  51. data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +6 -7
  52. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +2 -2
  53. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh_remote.rb +18 -0
  54. data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +3 -3
  55. data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +28 -13
  56. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +6 -4
  57. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +6 -3
  58. data/app/lib/actions/pulp3/orchestration/content_view_version/syncable_export.rb +82 -0
  59. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
  60. data/app/lib/katello/concerns/base_template_scope_extensions.rb +25 -12
  61. data/app/lib/katello/errors.rb +1 -1
  62. data/app/lib/katello/resources/candlepin/owner.rb +9 -2
  63. data/app/lib/katello/validators/alternate_content_source_products_validator.rb +17 -0
  64. data/app/models/katello/alternate_content_source.rb +39 -8
  65. data/app/models/katello/alternate_content_source_product.rb +13 -0
  66. data/app/models/katello/authorization/repository.rb +4 -2
  67. data/app/models/katello/concerns/host_managed_extensions.rb +12 -2
  68. data/app/models/katello/concerns/pulp_database_unit.rb +2 -2
  69. data/app/models/katello/concerns/smart_proxy_extensions.rb +5 -6
  70. data/app/models/katello/content_view.rb +50 -32
  71. data/app/models/katello/content_view_deb_filter.rb +51 -0
  72. data/app/models/katello/content_view_deb_filter_rule.rb +24 -0
  73. data/app/models/katello/content_view_filter.rb +10 -3
  74. data/app/models/katello/glue/candlepin/owner.rb +0 -1
  75. data/app/models/katello/installed_package.rb +1 -0
  76. data/app/models/katello/product.rb +3 -0
  77. data/app/models/katello/repository.rb +5 -3
  78. data/app/models/katello/rpm.rb +1 -0
  79. data/app/models/katello/smart_proxy_alternate_content_source.rb +6 -0
  80. data/app/services/cert/certs.rb +8 -16
  81. data/app/services/katello/organization_creator.rb +18 -7
  82. data/app/services/katello/pulp/server.rb +2 -2
  83. data/app/services/katello/pulp3/alternate_content_source.rb +22 -4
  84. data/app/services/katello/pulp3/api/apt.rb +12 -0
  85. data/app/services/katello/pulp3/api/core.rb +8 -0
  86. data/app/services/katello/pulp3/api/generic.rb +0 -4
  87. data/app/services/katello/pulp3/content_view_version/export.rb +61 -17
  88. data/app/services/katello/pulp3/content_view_version/import.rb +12 -5
  89. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +20 -5
  90. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +3 -1
  91. data/app/services/katello/pulp3/content_view_version/syncable_format_export.rb +34 -0
  92. data/app/services/katello/pulp3/deb.rb +3 -1
  93. data/app/services/katello/pulp3/pulp_content_unit.rb +2 -0
  94. data/app/services/katello/pulp3/repository/apt.rb +186 -2
  95. data/app/services/katello/pulp3/repository.rb +5 -4
  96. data/app/services/katello/pulp3/service_common.rb +1 -1
  97. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
  98. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +4 -3
  99. data/app/views/foreman/smart_proxies/show.html.erb +3 -3
  100. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +18 -3
  101. data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +20 -0
  102. data/app/views/katello/api/v2/ansible_collections/compare.json.rabl +10 -0
  103. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
  104. data/app/views/katello/api/v2/content_view_filters/base.json.rabl +5 -0
  105. data/app/views/katello/api/v2/module_streams/compare.json.rabl +10 -0
  106. data/app/views/katello/api/v2/organizations/show.json.rabl +1 -1
  107. data/app/views/katello/api/v2/repository_sets/show.json.rabl +4 -0
  108. data/app/views/katello/layouts/foreman_with_bastion.html.erb +1 -1
  109. data/app/views/katello/layouts/react.html.erb +1 -1
  110. data/app/views/overrides/organizations/_edit_override.html.erb +5 -8
  111. data/app/views/overrides/organizations/_index_row_override.html.erb +1 -1
  112. data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
  113. data/ca/redhat-uep.pem +18 -23
  114. data/config/katello.yaml.example +0 -2
  115. data/config/routes/api/v2.rb +2 -0
  116. data/config/routes/overrides.rb +1 -0
  117. data/db/migrate/20201116161820_create_content_view_deb_filter_rules.rb +17 -0
  118. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +11 -9
  119. data/db/migrate/20220524132259_remove_last_refreshed_from_katello_alternate_content_sources.rb +5 -0
  120. data/db/migrate/20220601163911_add_vendor_to_katello_installed_packages.rb +5 -0
  121. data/db/migrate/20220610165621_add_repositories_and_products_to_acs.rb +23 -0
  122. data/engines/bastion/app/views/bastion/layouts/application.html.erb +1 -1
  123. data/engines/bastion/app/views/bastion/layouts/application_ie.html.erb +1 -1
  124. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -1
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.routes.js +1 -1
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-details.html +1 -1
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +11 -3
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -1
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -1
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +2 -0
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +2 -0
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +3 -3
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -5
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +0 -3
  137. data/engines/bastion_katello/lib/bastion_katello/engine.rb +0 -1
  138. data/lib/katello/engine.rb +1 -2
  139. data/lib/katello/permission_creator.rb +2 -2
  140. data/lib/katello/permissions/host_permissions.rb +1 -0
  141. data/lib/katello/plugin.rb +6 -12
  142. data/lib/katello/tasks/refresh_alternate_content_sources.rake +9 -4
  143. data/lib/katello/tasks/refresh_repos.rake +8 -0
  144. data/lib/katello/version.rb +1 -1
  145. data/locale/action_names.rb +49 -46
  146. data/locale/bn/katello.po +361 -53
  147. data/locale/cs/katello.po +361 -53
  148. data/locale/de/katello.po +366 -58
  149. data/locale/en/katello.po +361 -53
  150. data/locale/es/katello.po +364 -56
  151. data/locale/fr/katello.po +374 -66
  152. data/locale/gu/katello.po +361 -53
  153. data/locale/hi/katello.po +361 -53
  154. data/locale/it/katello.po +361 -53
  155. data/locale/ja/katello.po +374 -66
  156. data/locale/katello.pot +1626 -1079
  157. data/locale/kn/katello.po +361 -53
  158. data/locale/ko/katello.po +361 -53
  159. data/locale/mr/katello.po +361 -53
  160. data/locale/or/katello.po +361 -53
  161. data/locale/pa/katello.po +361 -53
  162. data/locale/pt/katello.po +361 -53
  163. data/locale/pt_BR/katello.po +364 -56
  164. data/locale/ru/katello.po +361 -53
  165. data/locale/ta/katello.po +361 -53
  166. data/locale/te/katello.po +361 -53
  167. data/locale/zh_CN/katello.po +374 -66
  168. data/locale/zh_TW/katello.po +361 -53
  169. data/webpack/components/EditableTextInput/EditableTextInput.js +3 -16
  170. data/webpack/components/EditableTextInput/PencilEditButton.js +33 -0
  171. data/webpack/components/Errata/index.js +18 -3
  172. data/webpack/components/Loading.js +1 -1
  173. data/webpack/components/RoutedTabs/index.js +1 -17
  174. data/webpack/components/Search/Search.js +0 -1
  175. data/webpack/components/Search/__tests__/search.test.js +1 -2
  176. data/webpack/components/SelectAllCheckbox/index.js +7 -4
  177. data/webpack/components/SelectableDropdown/SelectableDropdown.js +1 -0
  178. data/webpack/components/Table/EmptyStateMessage.js +77 -2
  179. data/webpack/components/Table/MainTable.js +46 -4
  180. data/webpack/components/Table/TableHooks.js +8 -4
  181. data/webpack/components/Table/TableWrapper.js +14 -8
  182. data/webpack/components/TypeAhead/TypeAhead.js +26 -11
  183. data/webpack/components/TypeAhead/pf3Search/TypeAheadItems.js +1 -1
  184. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +1 -0
  185. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +8 -1
  186. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +2 -1
  187. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +9 -4
  188. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeActions.js +37 -0
  189. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +175 -0
  190. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +6 -0
  191. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeConstants.js +6 -0
  192. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +301 -0
  193. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeSelectors.js +25 -0
  194. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +109 -0
  195. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +161 -0
  196. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +12 -12
  197. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +103 -0
  198. data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +1 -0
  199. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +1 -0
  200. data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +26 -4
  201. data/webpack/components/extensions/HostDetails/HostDetailsConstants.js +3 -1
  202. data/webpack/components/extensions/HostDetails/HostDetailsReducer.js +14 -0
  203. data/webpack/components/extensions/HostDetails/HostDetailsSelectors.js +8 -2
  204. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +9 -1
  205. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +23 -8
  206. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +11 -9
  207. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +58 -8
  208. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +2 -0
  209. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +30 -3
  210. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +3 -0
  211. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +48 -20
  212. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +1 -10
  213. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +1 -1
  214. data/webpack/components/extensions/RegistrationCommands/index.js +49 -17
  215. data/webpack/containers/Application/config.js +5 -10
  216. data/webpack/global_index.js +19 -7
  217. data/webpack/global_test_setup.js +14 -2
  218. data/webpack/ouia_id_check.js +95 -0
  219. data/webpack/redux/actions/RedHatRepositories/helpers.js +2 -0
  220. data/webpack/redux/reducers/index.js +2 -4
  221. data/webpack/scenes/AlternateContentSources/ACSActions.js +36 -3
  222. data/webpack/scenes/AlternateContentSources/ACSConstants.js +3 -0
  223. data/webpack/scenes/AlternateContentSources/ACSSelectors.js +15 -6
  224. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +73 -42
  225. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +26 -10
  226. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSProducts.js +44 -0
  227. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +59 -45
  228. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +4 -3
  229. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +0 -1
  230. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +35 -19
  231. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +120 -13
  232. data/webpack/scenes/AlternateContentSources/Create/__tests__/products.fixtures.json +92 -0
  233. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +459 -0
  234. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +354 -0
  235. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +104 -0
  236. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +120 -0
  237. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +118 -0
  238. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +118 -0
  239. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +242 -0
  240. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +106 -0
  241. data/webpack/scenes/AlternateContentSources/Details/__tests__/acsDetails.fixtures.json +49 -0
  242. data/webpack/scenes/AlternateContentSources/Details/__tests__/acsProducts.fixtures.json +95 -0
  243. data/webpack/scenes/AlternateContentSources/Details/__tests__/simplifiedAcsDetails.fixtures.json +39 -0
  244. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +215 -87
  245. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.scss +3 -0
  246. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +1 -2
  247. data/webpack/scenes/Content/__tests__/contentTable.test.js +1 -2
  248. data/webpack/scenes/ContentViews/ContentViewsConstants.js +15 -4
  249. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +1 -2
  250. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -0
  251. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -2
  252. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +113 -0
  253. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +89 -0
  254. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +32 -9
  255. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +13 -3
  256. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +39 -27
  257. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +236 -0
  258. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +1 -0
  259. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +10 -0
  260. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +3 -0
  261. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +3 -1
  262. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +17 -4
  263. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +1 -0
  264. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +34 -22
  265. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +97 -0
  266. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +1 -2
  267. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +128 -0
  268. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +56 -3
  269. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +62 -8
  270. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +1 -5
  271. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +1 -2
  272. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +32 -2
  273. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +1 -2
  274. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +1 -2
  275. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVContainerImageFilterContent.fixtures.json +13 -0
  276. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVPackageFilterRules.fixtures.json +13 -0
  277. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyContentViewFilters.fixtures.json +13 -0
  278. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
  279. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +5 -1
  280. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +1 -2
  281. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +3 -0
  282. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.js +143 -0
  283. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +51 -0
  284. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +314 -0
  285. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +186 -0
  286. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +74 -0
  287. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/AnsibleCollectionsCompareAllContentData.fixtures.json +63 -0
  288. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js +657 -0
  289. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionEmptyContentCompareData.fixtures.json +14 -0
  290. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ContainerTagsCompareAllContentData.fixtures.json +95 -0
  291. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/DebPackagesCompareAllContentData.fixtures.json +87 -0
  292. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareAllContentData.fixtures.json +319 -0
  293. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareThreeContentTypesData.fixtures.json +131 -0
  294. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareAllContentData.fixtures.json +51 -0
  295. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareThreeContentTypesData.fixtures.json +48 -0
  296. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ModuleStreamsCompareAllContentData.fixtures.json +239 -0
  297. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PackageGroupsCompareAllContentData.fixtures.json +51 -0
  298. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PythonPackagesCompareAllContentData.fixtures.json +315 -0
  299. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareAllContentData.fixtures.json +470 -0
  300. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareThreeContentTypesData.fixtures.json +475 -0
  301. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewDetails.fixtures.json +160 -0
  302. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +161 -0
  303. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +154 -0
  304. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +211 -0
  305. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +1013 -0
  306. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +145 -0
  307. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +145 -0
  308. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +102 -36
  309. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +1 -2
  310. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +4 -2
  311. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +1 -2
  312. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +1 -2
  313. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +113 -40
  314. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +96 -81
  315. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -2
  316. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +7 -2
  317. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +1 -1
  318. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +0 -30
  319. data/webpack/test-utils/nockWrapper.js +7 -0
  320. metadata +83 -181
  321. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +0 -34
  322. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +0 -751
  323. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-deletion.controller.js +0 -42
  324. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +0 -81
  325. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-confirm.controller.js +0 -65
  326. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +0 -82
  327. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-environments.controller.js +0 -76
  328. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion.controller.js +0 -160
  329. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html +0 -58
  330. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html +0 -94
  331. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-confirm.html +0 -76
  332. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-content-hosts.html +0 -88
  333. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html +0 -73
  334. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-component.factory.js +0 -32
  335. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +0 -75
  336. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +0 -68
  337. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +0 -81
  338. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +0 -81
  339. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite.html +0 -24
  340. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-deb-repositories.controller.js +0 -50
  341. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +0 -42
  342. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-file-repositories.controller.js +0 -50
  343. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +0 -42
  344. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-repositories.controller.js +0 -45
  345. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-deb-repositories-list.controller.js +0 -48
  346. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +0 -100
  347. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +0 -49
  348. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-file-repositories-list.controller.js +0 -48
  349. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +0 -49
  350. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +0 -129
  351. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +0 -46
  352. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories-list.controller.js +0 -42
  353. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories.service.js +0 -91
  354. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +0 -240
  355. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +0 -115
  356. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-module-stream-filter.controller.js +0 -68
  357. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +0 -66
  358. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +0 -77
  359. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/docker-tag-filter.controller.js +0 -137
  360. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/edit-filter.controller.js +0 -36
  361. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +0 -78
  362. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter.controller.js +0 -74
  363. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-content-type.filter.js +0 -21
  364. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-details.controller.js +0 -34
  365. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-helper.service.js +0 -30
  366. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +0 -86
  367. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-rule-matching-package-modal.controller.js +0 -37
  368. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-type.filter.js +0 -21
  369. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter.factory.js +0 -66
  370. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +0 -85
  371. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/module-stream-list-filter.controller.js +0 -73
  372. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +0 -100
  373. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +0 -179
  374. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +0 -75
  375. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/rule.factory.js +0 -21
  376. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata-filter.html +0 -9
  377. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata.html +0 -75
  378. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-filter.html +0 -28
  379. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-tag-filter-details.html +0 -65
  380. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/edit-filter.html +0 -19
  381. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter-details.html +0 -63
  382. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter.html +0 -50
  383. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-details.html +0 -9
  384. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-repositories.html +0 -121
  385. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-rule-matching-package-modal.html +0 -43
  386. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +0 -85
  387. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter-details.html +0 -58
  388. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter.html +0 -43
  389. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/new-filter.html +0 -62
  390. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +0 -182
  391. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter.html +0 -28
  392. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html +0 -42
  393. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter.html +0 -43
  394. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/partials/filter-repositories-count.html +0 -2
  395. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +0 -47
  396. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.factory.js +0 -22
  397. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/views/content-view-history.html +0 -36
  398. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-copy.html +0 -20
  399. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-deb-repositories.html +0 -87
  400. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details-tasks.html +0 -4
  401. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +0 -144
  402. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-docker-repositories.html +0 -114
  403. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-file-repositories.html +0 -87
  404. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +0 -63
  405. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-ostree-repositories.html +0 -87
  406. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +0 -59
  407. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +0 -58
  408. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-repositories.html +0 -116
  409. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -126
  410. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +0 -78
  411. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +0 -127
  412. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +0 -138
  413. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.controller.js +0 -59
  414. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-apt.html +0 -25
  415. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-components.html +0 -19
  416. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-deb.html +0 -19
  417. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-details.html +0 -15
  418. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-docker.html +0 -23
  419. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-errata.html +0 -48
  420. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-file.html +0 -21
  421. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-module-streams.html +0 -8
  422. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-package-groups.html +0 -21
  423. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-packages.html +0 -27
  424. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +0 -42
  425. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +0 -83
  426. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +0 -74
  427. data/lib/katello/tasks/reset.rake.bak +0 -67
  428. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  429. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  430. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  431. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  432. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  433. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  434. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  435. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  436. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  437. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  438. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  439. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  440. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  441. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  442. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  443. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  444. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  445. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  446. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  447. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  448. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  449. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  450. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsActions.js +0 -30
  451. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsConstants.js +0 -3
  452. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsPage.js +0 -80
  453. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +0 -39
  454. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +0 -60
  455. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTables.scss +0 -0
  456. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetails.js +0 -94
  457. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsActions.js +0 -23
  458. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsConstants.js +0 -3
  459. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +0 -30
  460. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionsSchema.js +0 -35
  461. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailInfo.test.js +0 -16
  462. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.fixtures.js +0 -25
  463. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -27
  464. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsActions.test.js +0 -41
  465. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsReducer.test.js +0 -33
  466. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailInfo.test.js.snap +0 -83
  467. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetails.test.js.snap +0 -190
  468. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsActions.test.js.snap +0 -58
  469. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsReducer.test.js.snap +0 -50
  470. data/webpack/scenes/AnsibleCollections/Details/index.js +0 -17
  471. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -23
  472. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollections.fixtures.js +0 -52
  473. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsActions.test.js +0 -48
  474. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsReducer.test.js +0 -46
  475. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -25
  476. data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionPage.test.js.snap +0 -73
  477. data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionsTable.test.js.snap +0 -81
  478. data/webpack/scenes/AnsibleCollections/index.js +0 -17
  479. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +0 -123
@@ -0,0 +1,103 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { propsToCamelCase } from 'foremanReact/common/helpers';
4
+ import { translate as __ } from 'foremanReact/common/I18n';
5
+ import {
6
+ DescriptionList,
7
+ DescriptionListTerm,
8
+ DescriptionListGroup,
9
+ DescriptionListDescription,
10
+ Text,
11
+ TextVariants,
12
+ } from '@patternfly/react-core';
13
+ import CardTemplate from 'foremanReact/components/HostDetails/Templates/CardItem/CardTemplate';
14
+ import { TranslatedPlural } from '../../../Table/components/TranslatedPlural';
15
+ import { hostIsNotRegistered } from '../hostDetailsHelpers';
16
+
17
+ const HostDisks = ({ totalDisks }) => {
18
+ if (!totalDisks) return null;
19
+ return (
20
+ <>
21
+ <DescriptionListTerm>{__('Storage')}</DescriptionListTerm>
22
+ <Text component={TextVariants.h4}><TranslatedPlural count={totalDisks} singular={__('disk')} id="total-disks" /></Text>
23
+ </>
24
+ );
25
+ };
26
+
27
+ HostDisks.propTypes = {
28
+ totalDisks: PropTypes.number,
29
+ };
30
+
31
+ HostDisks.defaultProps = {
32
+ totalDisks: null,
33
+ };
34
+
35
+ const HwPropertiesCard = ({ isExpandedGlobal, hostDetails }) => {
36
+ if (hostIsNotRegistered({ hostDetails })) return null;
37
+ const { facts } = hostDetails || {};
38
+ const model = facts?.['virt::host_type'];
39
+ const cpuCount = facts?.['cpu::cpu(s)'];
40
+ const cpuSockets = facts?.['cpu::cpu_socket(s)'];
41
+ const coreSocket = facts?.['cpu::core(s)_per_socket'];
42
+ const reportedFacts = propsToCamelCase(hostDetails?.reported_data || {});
43
+ const totalDisks = reportedFacts?.disksTotal;
44
+ const memory = facts?.['dmi::memory::maximum_capacity'];
45
+
46
+ return (
47
+ <CardTemplate
48
+ header={__('HW properties')}
49
+ expandable
50
+ isExpandedGlobal={isExpandedGlobal}
51
+ masonryLayout
52
+ >
53
+ <DescriptionList isHorizontal>
54
+ <DescriptionListGroup>
55
+ <DescriptionListTerm>{__('Model')}</DescriptionListTerm>
56
+ <DescriptionListDescription>{model}</DescriptionListDescription>
57
+ </DescriptionListGroup>
58
+ <DescriptionListGroup>
59
+ <DescriptionListTerm>{__('Number of CPU(s)')}</DescriptionListTerm>
60
+ <DescriptionListDescription>{cpuCount}</DescriptionListDescription>
61
+ </DescriptionListGroup>
62
+ <DescriptionListGroup>
63
+ <DescriptionListTerm>{__('Sockets')}</DescriptionListTerm>
64
+ <DescriptionListDescription>{cpuSockets}</DescriptionListDescription>
65
+ </DescriptionListGroup>
66
+ <DescriptionListGroup>
67
+ <DescriptionListTerm>{__('Cores per socket')}</DescriptionListTerm>
68
+ <DescriptionListDescription>{coreSocket}</DescriptionListDescription>
69
+ </DescriptionListGroup>
70
+ <DescriptionListGroup>
71
+ <DescriptionListTerm>{__('RAM')}</DescriptionListTerm>
72
+ <DescriptionListDescription>{memory}</DescriptionListDescription>
73
+ </DescriptionListGroup>
74
+ <DescriptionListGroup>
75
+ <HostDisks totalDisks={totalDisks} />
76
+ </DescriptionListGroup>
77
+ </DescriptionList>
78
+ </CardTemplate>
79
+ );
80
+ };
81
+
82
+ HwPropertiesCard.propTypes = {
83
+ isExpandedGlobal: PropTypes.bool,
84
+ hostDetails: PropTypes.shape({
85
+ facts: PropTypes.shape({
86
+ model: PropTypes.string,
87
+ cpuCount: PropTypes.number,
88
+ cpuSockets: PropTypes.number,
89
+ coreSocket: PropTypes.number,
90
+ memory: PropTypes.string,
91
+ }),
92
+ reported_data: PropTypes.shape({
93
+ totalDisks: PropTypes.number,
94
+ }),
95
+ }),
96
+ };
97
+
98
+ HwPropertiesCard.defaultProps = {
99
+ isExpandedGlobal: false,
100
+ hostDetails: {},
101
+ };
102
+
103
+ export default HwPropertiesCard;
@@ -11,6 +11,7 @@ const InstalledProductsCard = ({ isExpandedGlobal, hostDetails }) => {
11
11
  <CardTemplate
12
12
  header={__('Installed products')}
13
13
  expandable
14
+ masonryLayout
14
15
  isExpandedGlobal={isExpandedGlobal}
15
16
  >
16
17
  <List isPlain>
@@ -62,6 +62,7 @@ const RegistrationCard = ({ isExpandedGlobal, hostDetails }) => {
62
62
  <CardTemplate
63
63
  header={__('Registration details')}
64
64
  expandable
65
+ masonryLayout
65
66
  isExpandedGlobal={isExpandedGlobal}
66
67
  >
67
68
  <DescriptionList isHorizontal>
@@ -8,7 +8,7 @@ import {
8
8
  } from '@patternfly/react-core';
9
9
  import { translate as __ } from 'foremanReact/common/I18n';
10
10
 
11
- const SystemPropertiesCardExtensions = ({ hostDetails }) => {
11
+ export const SystemPropertiesCardSubscription = ({ hostDetails }) => {
12
12
  const subscriptionUuid = hostDetails?.subscription_facet_attributes?.uuid;
13
13
  if (!subscriptionUuid) return null;
14
14
  return (
@@ -23,7 +23,7 @@ const SystemPropertiesCardExtensions = ({ hostDetails }) => {
23
23
  );
24
24
  };
25
25
 
26
- SystemPropertiesCardExtensions.propTypes = {
26
+ SystemPropertiesCardSubscription.propTypes = {
27
27
  hostDetails: PropTypes.shape({
28
28
  subscription_facet_attributes: PropTypes.shape({
29
29
  uuid: PropTypes.string,
@@ -31,8 +31,30 @@ SystemPropertiesCardExtensions.propTypes = {
31
31
  }),
32
32
  };
33
33
 
34
- SystemPropertiesCardExtensions.defaultProps = {
34
+ SystemPropertiesCardSubscription.defaultProps = {
35
35
  hostDetails: {},
36
36
  };
37
37
 
38
- export default SystemPropertiesCardExtensions;
38
+ export const SystemPropertiesCardTracer = ({ hostDetails }) => {
39
+ const tracerStatus = hostDetails?.content_facet_attributes?.katello_tracer_installed;
40
+ return (
41
+ <DescriptionListGroup>
42
+ <DescriptionListTerm>{__('Tracer')}</DescriptionListTerm>
43
+ <DescriptionListDescription>
44
+ {tracerStatus ? __('Installed') : __('Not installed')}
45
+ </DescriptionListDescription>
46
+ </DescriptionListGroup>
47
+ );
48
+ };
49
+
50
+ SystemPropertiesCardTracer.propTypes = {
51
+ hostDetails: PropTypes.shape({
52
+ content_facet_attributes: PropTypes.shape({
53
+ katello_tracer_installed: PropTypes.bool,
54
+ }),
55
+ }),
56
+ };
57
+
58
+ SystemPropertiesCardTracer.defaultProps = {
59
+ hostDetails: {},
60
+ };
@@ -1 +1,3 @@
1
- export default 'HOST_DETAILS';
1
+ export const SET_CLEAR_SEARCH = 'SET_CLEAR_SEARCH';
2
+ const HOST_DETAILS = 'HOST_DETAILS';
3
+ export default HOST_DETAILS;
@@ -0,0 +1,14 @@
1
+ import Immutable from 'seamless-immutable';
2
+
3
+ import { SET_CLEAR_SEARCH } from './HostDetailsConstants';
4
+
5
+ const initialState = Immutable({ clearSearch: undefined });
6
+
7
+ export default (state = initialState, action) => {
8
+ switch (action.type) {
9
+ case SET_CLEAR_SEARCH:
10
+ return state.set('clearSearch', action.payload);
11
+ default:
12
+ return state;
13
+ }
14
+ };
@@ -7,10 +7,16 @@ import { STATUS } from 'foremanReact/constants';
7
7
  import HOST_DETAILS_KEY from './HostDetailsConstants';
8
8
 
9
9
  export const selectHostDetails = state =>
10
- selectAPIResponse(state, HOST_DETAILS_KEY) || {};
10
+ selectAPIResponse(state, HOST_DETAILS_KEY) ?? {};
11
11
 
12
12
  export const selectHostDetailsStatus = state =>
13
- selectAPIStatus(state, HOST_DETAILS_KEY) || STATUS.PENDING;
13
+ selectAPIStatus(state, HOST_DETAILS_KEY) ?? STATUS.PENDING;
14
14
 
15
15
  export const selectHostDetailsError = state =>
16
16
  selectAPIError(state, HOST_DETAILS_KEY);
17
+
18
+ export const selectHostDetailsState = state =>
19
+ state.katello.hostDetails;
20
+
21
+ export const selectHostDetailsClearSearch = state =>
22
+ selectHostDetailsState(state).clearSearch;
@@ -231,6 +231,11 @@ export const ErrataTab = () => {
231
231
  }
232
232
  };
233
233
 
234
+ const resetFilters = () => {
235
+ setErrataTypeSelected(ERRATA_TYPE);
236
+ setErrataSeveritySelected(ERRATA_SEVERITY);
237
+ };
238
+
234
239
  const readOnlyBookmarks =
235
240
  cannot(createBookmarks, userPermissionsFromHostDetails({ hostDetails }));
236
241
 
@@ -336,7 +341,7 @@ export const ErrataTab = () => {
336
341
  ) : null;
337
342
 
338
343
  const hostIsNonLibrary = (
339
- contentFacet?.contentViewDefault === false && contentFacet.lifecycleEnvironmentLibrary === false
344
+ contentFacet?.contentViewDefault === false || contentFacet.lifecycleEnvironmentLibrary === false
340
345
  );
341
346
  const toggleGroup = (
342
347
  <Split hasGutter>
@@ -406,6 +411,7 @@ export const ErrataTab = () => {
406
411
  selectedCount,
407
412
  selectNone,
408
413
  toggleGroup,
414
+ resetFilters,
409
415
  }
410
416
  }
411
417
  happyEmptyContent={allUpToDate}
@@ -423,6 +429,8 @@ export const ErrataTab = () => {
423
429
  variant={TableVariant.compact}
424
430
  {...selectAll}
425
431
  displaySelectAllCheckbox={showActions}
432
+ requestKey={HOST_ERRATA_KEY}
433
+ alwaysShowActionButtons={false}
426
434
  >
427
435
  <Thead>
428
436
  <Tr>
@@ -7,7 +7,6 @@ import { Skeleton,
7
7
  Button,
8
8
  Split,
9
9
  SplitItem,
10
- Spinner,
11
10
  Checkbox,
12
11
  Dropdown,
13
12
  Text,
@@ -36,7 +35,7 @@ import SortableColumnHeaders from '../../../../Table/components/SortableColumnHe
36
35
  import SelectableDropdown from '../../../../SelectableDropdown/SelectableDropdown';
37
36
  import {
38
37
  HOST_MODULE_STREAM_STATUSES, INSTALL_STATUS_PARAM_TO_FRIENDLY_NAME, INSTALLED_STATE,
39
- STATUS_PARAM_TO_FRIENDLY_NAME,
38
+ STATUS_PARAM_TO_FRIENDLY_NAME, MODULE_STREAMS_KEY,
40
39
  } from './ModuleStreamsConstants';
41
40
  import { moduleStreamAction } from '../RemoteExecutionActions';
42
41
  import { katelloModuleStreamActionUrl } from '../customizedRexUrlHelpers';
@@ -213,9 +212,15 @@ export const ModuleStreamsTab = () => {
213
212
  const [hostModuleStreamAction, setHostModuleStreamAction] = useState(null);
214
213
 
215
214
  const emptyContentTitle = __('This host does not have any Module streams.');
216
- const emptyContentBody = __('Module streams will appear here when available.');
215
+ const emptyContentBody = __('Module streams will appear here after enabling Red Hat repositories or creating custom products.');
217
216
  const emptySearchTitle = __('Your search returned no matching Module streams.');
218
217
  const emptySearchBody = __('Try changing your search criteria.');
218
+ const showPrimaryAction = true;
219
+ const showSecondaryAction = true;
220
+ const primaryActionTitle = __('Enable Red Hat repositories');
221
+ const secondaryActionTitle = __('Create a custom product');
222
+ const primaryActionLink = '/redhat_repositories';
223
+ const secondaryActionLink = '/products/new';
219
224
  const errorSearchTitle = __('Problem searching module streams');
220
225
  const {
221
226
  status: initialStatus,
@@ -324,6 +329,12 @@ export const ModuleStreamsTab = () => {
324
329
 
325
330
  const activeFilters = [statusSelected, installStatusSelected];
326
331
  const defaultFilters = [MODULE_STREAM_STATUS, MODULE_STREAM_INSTALLATION_STATUS];
332
+
333
+ const resetFilters = () => {
334
+ setStatusSelected(MODULE_STREAM_STATUS);
335
+ setInstallStatusSelected(MODULE_STREAM_INSTALLATION_STATUS);
336
+ };
337
+
327
338
  return (
328
339
  <div>
329
340
  <div id="modulestreams-tab">
@@ -342,6 +353,13 @@ export const ModuleStreamsTab = () => {
342
353
  activeFilters,
343
354
  defaultFilters,
344
355
  status,
356
+ showPrimaryAction,
357
+ showSecondaryAction,
358
+ primaryActionTitle,
359
+ secondaryActionTitle,
360
+ primaryActionLink,
361
+ secondaryActionLink,
362
+ resetFilters,
345
363
  }}
346
364
  ouiaId="host-module-stream-table"
347
365
  additionalListeners={[hostId, activeSortColumn, activeSortDirection,
@@ -354,6 +372,8 @@ export const ModuleStreamsTab = () => {
354
372
  foremanApiAutoComplete
355
373
  rowsCount={results?.length}
356
374
  variant={TableVariant.compact}
375
+ requestKey={MODULE_STREAMS_KEY}
376
+ alwaysShowActionButtons={false}
357
377
  actionButtons={
358
378
  <Split hasGutter>
359
379
  <SplitItem>
@@ -376,11 +396,6 @@ export const ModuleStreamsTab = () => {
376
396
  setSelected={handleModuleStreamInstallationStatusSelected}
377
397
  />
378
398
  </SplitItem>
379
- {actionInProgress && (
380
- <SplitItem style={{ alignSelf: 'center' }}>
381
- <Spinner size="lg" style={{ marginTop: '2px' }} />
382
- </SplitItem>
383
- )}
384
399
  </Split>
385
400
  }
386
401
  >
@@ -12,7 +12,6 @@ import {
12
12
  Skeleton,
13
13
  Split,
14
14
  SplitItem,
15
- Spinner,
16
15
  } from '@patternfly/react-core';
17
16
  import { TableVariant, Thead, Tbody, Tr, Th, Td } from '@patternfly/react-table';
18
17
  import { translate as __ } from 'foremanReact/common/I18n';
@@ -358,14 +357,12 @@ export const PackagesTab = () => {
358
357
  />
359
358
  </ActionListItem>
360
359
  <ActionListItem>
361
- {actionInProgress ? <Spinner size="lg" style={{ marginLeft: '1em', marginTop: '4px' }} /> : (
362
- <Dropdown
363
- toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
364
- isOpen={isBulkActionOpen}
365
- isPlain
366
- dropdownItems={dropdownRemoveItems}
367
- />
368
- )}
360
+ <Dropdown
361
+ toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
362
+ isOpen={isBulkActionOpen}
363
+ isPlain
364
+ dropdownItems={dropdownRemoveItems}
365
+ />
369
366
  </ActionListItem>
370
367
  </ActionList>
371
368
  </SplitItem>
@@ -387,6 +384,8 @@ export const PackagesTab = () => {
387
384
  </Split>
388
385
  );
389
386
 
387
+ const resetFilters = () => setPackageStatusSelected(PACKAGE_STATUS);
388
+
390
389
  return (
391
390
  <div>
392
391
  <div id="packages-tab">
@@ -409,6 +408,7 @@ export const PackagesTab = () => {
409
408
  selectedCount,
410
409
  selectNone,
411
410
  areAllRowsSelected,
411
+ resetFilters,
412
412
  }
413
413
  }
414
414
  ouiaId="host-packages-table"
@@ -425,6 +425,8 @@ export const PackagesTab = () => {
425
425
  variant={TableVariant.compact}
426
426
  {...selectAll}
427
427
  displaySelectAllCheckbox={showActions}
428
+ requestKey={HOST_PACKAGES_KEY}
429
+ alwaysShowActionButtons={false}
428
430
  >
429
431
  <Thead>
430
432
  <Tr>
@@ -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"
@@ -154,7 +177,7 @@ const RepositorySetsTab = () => {
154
177
  contentViewName,
155
178
  lifecycleEnvironmentName,
156
179
  } = contentFacet;
157
- const nonLibraryHost = contentViewDefault === false &&
180
+ const nonLibraryHost = contentViewDefault === false ||
158
181
  lifecycleEnvironmentLibrary === false;
159
182
  const simpleContentAccess = (Number(subscriptionStatus) === 5);
160
183
  const [isBulkActionOpen, setIsBulkActionOpen] = useState(false);
@@ -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>
@@ -577,7 +577,7 @@ test('Toggle Group shows if it\'s not the default content view or library enviro
577
577
  assertNockRequest(scope, done); // Pass jest callback to confirm test is done
578
578
  });
579
579
 
580
- test('Toggle Group does not show if it\'s the default content view ', async (done) => {
580
+ test('Toggle Group shows if it\'s the default content view but non-library environment', async (done) => {
581
581
  const options = renderOptions({
582
582
  ...contentFacetAttributes,
583
583
  content_view_default: true,
@@ -598,14 +598,41 @@ test('Toggle Group does not show if it\'s the default content view ', async (don
598
598
 
599
599
  // Assert that the errata are now showing on the screen, but wait for them to appear.
600
600
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
601
- expect(queryByLabelText('Installable Errata')).not.toBeInTheDocument();
601
+ expect(queryByLabelText('Installable Errata')).toBeInTheDocument();
602
+ assertNockRequest(autocompleteScope);
603
+ assertNockRequest(scope, done); // Pass jest callback to confirm test is done
604
+ });
605
+
606
+ test('Toggle Group shows if it\'s the library environment but non-default content view', async (done) => {
607
+ const options = renderOptions({
608
+ ...contentFacetAttributes,
609
+ lifecycle_environment_library: true,
610
+ });
611
+ // Setup autocomplete with mockForemanAutoComplete since we aren't adding /katello
612
+ const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
613
+ const mockErrata = makeMockErrata({});
614
+ // return errata data results when we look for errata
615
+ const scope = nockInstance
616
+ .get(hostErrata)
617
+ .query(defaultQuery)
618
+ .reply(200, mockErrata);
619
+
620
+ const {
621
+ queryByLabelText,
622
+ getAllByText,
623
+ } = renderWithRedux(<ErrataTab />, options);
624
+
625
+ // Assert that the errata are now showing on the screen, but wait for them to appear.
626
+ await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
627
+ expect(queryByLabelText('Installable Errata')).toBeInTheDocument();
602
628
  assertNockRequest(autocompleteScope);
603
629
  assertNockRequest(scope, done); // Pass jest callback to confirm test is done
604
630
  });
605
631
 
606
- test('Toggle Group does not show if it\'s the library environment', async (done) => {
632
+ test('Toggle Group does not show if it\'s the default content view and library environment', async (done) => {
607
633
  const options = renderOptions({
608
634
  ...contentFacetAttributes,
635
+ content_view_default: true,
609
636
  lifecycle_environment_library: true,
610
637
  });
611
638
  // Setup autocomplete with mockForemanAutoComplete since we aren't adding /katello
@@ -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
  {