katello 4.3.0.rc4 → 4.4.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 (458) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/vendor.js +0 -1
  3. data/app/controllers/katello/api/v2/api_controller.rb +13 -4
  4. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +4 -1
  5. data/app/controllers/katello/api/v2/content_views_controller.rb +46 -0
  6. data/app/controllers/katello/api/v2/host_packages_controller.rb +21 -1
  7. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +30 -1
  8. data/app/controllers/katello/api/v2/organizations_controller.rb +10 -6
  9. data/app/controllers/katello/api/v2/packages_controller.rb +4 -0
  10. data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +10 -1
  11. data/app/controllers/katello/api/v2/repositories_controller.rb +42 -14
  12. data/app/controllers/katello/api/v2/repository_sets_controller.rb +7 -0
  13. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +3 -0
  14. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +32 -0
  15. data/app/controllers/katello/remote_execution_controller.rb +5 -4
  16. data/app/graphql/types/host_collection.rb +18 -0
  17. data/app/helpers/katello/content_source_helper.rb +43 -0
  18. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +4 -0
  19. data/app/lib/actions/katello/cdn_configuration/update.rb +5 -7
  20. data/app/lib/actions/katello/content_view/publish.rb +5 -0
  21. data/app/lib/actions/katello/content_view_version/incremental_update.rb +17 -3
  22. data/app/lib/actions/katello/repository/discover.rb +1 -14
  23. data/app/lib/actions/katello/repository/errata_mail.rb +4 -5
  24. data/app/lib/actions/katello/repository/filtered_index_content.rb +1 -1
  25. data/app/lib/actions/katello/repository/sync.rb +2 -2
  26. data/app/lib/actions/pulp3/abstract.rb +1 -1
  27. data/app/lib/actions/pulp3/abstract_async_task.rb +1 -1
  28. data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +14 -4
  29. data/app/lib/actions/pulp3/content_view_version/create_import_history.rb +1 -2
  30. data/app/lib/actions/pulp3/content_view_version/import.rb +7 -0
  31. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +7 -5
  32. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
  33. data/app/lib/actions/pulp3/repository/reclaim_space.rb +3 -10
  34. data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -0
  35. data/app/lib/katello/concerns/base_template_scope_extensions.rb +11 -0
  36. data/app/lib/katello/errors.rb +3 -3
  37. data/app/lib/katello/logging.rb +6 -1
  38. data/app/lib/katello/repo_discovery.rb +27 -19
  39. data/app/lib/katello/resources/cdn/katello_cdn.rb +41 -3
  40. data/app/lib/katello/resources/cdn.rb +4 -2
  41. data/app/lib/katello/util/deduplication_migrator.rb +105 -0
  42. data/app/lib/katello/util/pulpcore_content_filters.rb +2 -1
  43. data/app/models/katello/candlepin/repository_mapper.rb +3 -2
  44. data/app/models/katello/cdn_configuration.rb +38 -6
  45. data/app/models/katello/concerns/audit_comment_extensions.rb +17 -0
  46. data/app/models/katello/concerns/host_managed_extensions.rb +34 -2
  47. data/app/models/katello/concerns/organization_extensions.rb +5 -1
  48. data/app/models/katello/concerns/pulp_database_unit.rb +59 -173
  49. data/app/models/katello/concerns/remote_execution_proxy_selector_extensions.rb +11 -0
  50. data/app/models/katello/concerns/smart_proxy_extensions.rb +2 -1
  51. data/app/models/katello/content_view.rb +4 -4
  52. data/app/models/katello/content_view_filter.rb +1 -1
  53. data/app/models/katello/content_view_history.rb +1 -1
  54. data/app/models/katello/content_view_version.rb +6 -2
  55. data/app/models/katello/content_view_version_export_history.rb +3 -2
  56. data/app/models/katello/content_view_version_import_history.rb +4 -4
  57. data/app/models/katello/deb.rb +1 -3
  58. data/app/models/katello/docker_meta_tag.rb +1 -1
  59. data/app/models/katello/erratum.rb +0 -15
  60. data/app/models/katello/glue/provider.rb +1 -1
  61. data/app/models/katello/glue/pulp/repos.rb +3 -1
  62. data/app/models/katello/host/content_facet.rb +2 -27
  63. data/app/models/katello/host/info_provider.rb +9 -0
  64. data/app/models/katello/host/subscription_facet.rb +2 -2
  65. data/app/models/katello/host_available_module_stream.rb +10 -0
  66. data/app/models/katello/hostgroup/content_facet.rb +2 -2
  67. data/app/models/katello/installed_package.rb +1 -0
  68. data/app/models/katello/product.rb +1 -1
  69. data/app/models/katello/product_content.rb +2 -2
  70. data/app/models/katello/repository.rb +13 -12
  71. data/app/models/katello/root_repository.rb +65 -16
  72. data/app/models/katello/rpm.rb +8 -2
  73. data/app/models/setting/content.rb +15 -5
  74. data/app/services/cert/rhsm_client.rb +1 -5
  75. data/app/services/katello/component_view_presenter.rb +1 -1
  76. data/app/services/katello/content_unit_indexer.rb +166 -0
  77. data/app/services/katello/organization_creator.rb +23 -8
  78. data/app/services/katello/pulp/repository/docker.rb +1 -1
  79. data/app/services/katello/pulp/repository/yum.rb +0 -54
  80. data/app/services/katello/pulp/repository.rb +0 -6
  81. data/app/services/katello/pulp3/ansible_collection.rb +26 -10
  82. data/app/services/katello/pulp3/api/apt.rb +7 -0
  83. data/app/services/katello/pulp3/api/yum.rb +4 -0
  84. data/app/services/katello/pulp3/content_view_version/import.rb +11 -2
  85. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +1 -1
  86. data/app/services/katello/pulp3/deb.rb +10 -9
  87. data/app/services/katello/pulp3/docker_manifest.rb +6 -5
  88. data/app/services/katello/pulp3/docker_manifest_list.rb +23 -6
  89. data/app/services/katello/pulp3/docker_tag.rb +16 -7
  90. data/app/services/katello/pulp3/erratum.rb +51 -56
  91. data/app/services/katello/pulp3/file_unit.rb +9 -6
  92. data/app/services/katello/pulp3/generic_content_unit.rb +11 -12
  93. data/app/services/katello/pulp3/module_stream.rb +76 -30
  94. data/app/services/katello/pulp3/package_group.rb +5 -5
  95. data/app/services/katello/pulp3/pulp_content_unit.rb +19 -11
  96. data/app/services/katello/pulp3/repository/apt.rb +5 -3
  97. data/app/services/katello/pulp3/repository/docker.rb +14 -7
  98. data/app/services/katello/pulp3/repository/generic.rb +1 -1
  99. data/app/services/katello/pulp3/repository/yum.rb +23 -16
  100. data/app/services/katello/pulp3/repository.rb +31 -10
  101. data/app/services/katello/pulp3/repository_mirror.rb +18 -4
  102. data/app/services/katello/pulp3/rpm.rb +13 -13
  103. data/app/services/katello/pulp3/srpm.rb +10 -9
  104. data/app/services/katello/registration_manager.rb +1 -1
  105. data/app/services/katello/repository_type.rb +15 -4
  106. data/app/services/katello/repository_type_manager.rb +1 -1
  107. data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +1 -1
  108. data/app/services/katello/upstream_connection_checker.rb +2 -2
  109. data/app/views/foreman/job_templates/change_content_source.erb +1 -31
  110. data/app/views/foreman/job_templates/install_errata.erb +6 -9
  111. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +26 -0
  112. data/app/views/foreman/job_templates/install_packages_by_search_query.erb +19 -0
  113. data/app/views/foreman/job_templates/remove_packages_by_search_query.erb +19 -0
  114. data/app/views/foreman/job_templates/update_packages_by_search_query.erb +19 -0
  115. data/app/views/katello/api/v2/cdn_configurations/show.json.rabl +1 -1
  116. data/app/views/katello/api/v2/content_views/base.json.rabl +8 -4
  117. data/app/views/katello/api/v2/environments/show.json.rabl +9 -0
  118. data/app/views/katello/api/v2/host_module_streams/base.json.rabl +1 -0
  119. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
  120. data/app/views/katello/api/v2/repositories/show.json.rabl +3 -1
  121. data/app/views/katello/layouts/react.html.erb +0 -1
  122. data/app/views/katello/sync_management/_repo.html.erb +36 -25
  123. data/config/initializers/monkeys.rb +0 -1
  124. data/config/routes/api/v2.rb +1 -0
  125. data/config/routes/overrides.rb +3 -0
  126. data/config/routes.rb +2 -0
  127. data/db/migrate/20150930183738_migrate_content_hosts.rb +1 -1
  128. data/db/migrate/20180612164926_add_content_org_id.rb +2 -2
  129. data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +2 -0
  130. data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +11 -2
  131. data/db/migrate/20211201154845_add_unique_indexes.rb +20 -0
  132. data/db/migrate/20211202172358_add_repository_mirroring_policy.rb +26 -0
  133. data/db/migrate/20211208034230_add_content_view_and_lifecycle_environment.rb +6 -0
  134. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +144 -0
  135. data/db/migrate/20220110223754_update_disconnected_settings.rb +20 -0
  136. data/db/migrate/20220120163252_fix_docker_download_policy.rb +11 -0
  137. data/db/migrate/20220124191056_add_type_to_cdn_configuration.rb +22 -0
  138. data/db/migrate/20220127120843_fix_debian_download_policy.rb +11 -0
  139. data/db/migrate/20220204171908_rename_docker_tags_whitelist_and_add_exclude_tags.rb +8 -0
  140. data/db/migrate/20220207140355_change_deb_attributes_size_limit.rb +7 -0
  141. data/db/migrate/20220209205137_expand_sync_timeout_settings.rb +23 -0
  142. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  143. data/engines/bastion/app/views/bastion/layouts/application.html.erb +0 -1
  144. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +0 -1
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.controller.js +1 -1
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-products.controller.js +1 -1
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-repositories.controller.js +1 -1
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +1 -1
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment.html +26 -1
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +10 -3
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +212 -152
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +1 -0
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +29 -10
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +2 -3
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +8 -3
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +49 -35
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/mirroring-policy.service.js +30 -0
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +29 -6
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +48 -23
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery.controller.js +5 -4
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +4 -3
  162. data/lib/katello/engine.rb +4 -0
  163. data/lib/katello/permission_creator.rb +1 -1
  164. data/lib/katello/permissions/host_permissions.rb +3 -1
  165. data/lib/katello/plugin.rb +9 -1
  166. data/lib/katello/repository_types/deb.rb +0 -1
  167. data/lib/katello/repository_types/docker.rb +4 -4
  168. data/lib/katello/repository_types/file.rb +0 -1
  169. data/lib/katello/repository_types/ostree.rb +4 -6
  170. data/lib/katello/repository_types/python.rb +5 -1
  171. data/lib/katello/repository_types/yum.rb +2 -9
  172. data/lib/katello/tasks/content_view_import_only.rake +34 -0
  173. data/lib/katello/tasks/import_applicability.rake +1 -1
  174. data/lib/katello/tasks/jenkins.rake +0 -2
  175. data/lib/katello/tasks/repository.rake +4 -1
  176. data/lib/katello/tasks/upgrades/4.4/publish_import_cvvs.rake +17 -0
  177. data/lib/katello/version.rb +1 -1
  178. data/locale/action_names.rb +8 -7
  179. data/locale/bn/katello.po +1402 -650
  180. data/locale/cs/katello.po +1217 -96
  181. data/locale/de/katello.po +2359 -1347
  182. data/locale/en/katello.po +1216 -94
  183. data/locale/es/katello.po +2201 -1172
  184. data/locale/fr/katello.po +2601 -1615
  185. data/locale/gu/katello.po +1564 -814
  186. data/locale/hi/katello.po +1563 -810
  187. data/locale/it/katello.po +1311 -282
  188. data/locale/ja/katello.po +2534 -1518
  189. data/locale/katello.pot +3430 -1326
  190. data/locale/kn/katello.po +1564 -812
  191. data/locale/ko/katello.po +1441 -409
  192. data/locale/mr/katello.po +1564 -776
  193. data/locale/or/katello.po +1565 -813
  194. data/locale/pa/katello.po +1559 -792
  195. data/locale/pt/katello.po +1314 -277
  196. data/locale/pt_BR/katello.po +2226 -1181
  197. data/locale/ru/katello.po +1587 -563
  198. data/locale/ta/katello.po +1373 -619
  199. data/locale/te/katello.po +1564 -810
  200. data/locale/zh_CN/katello.po +2936 -1890
  201. data/locale/zh_TW/katello.po +1508 -606
  202. data/webpack/__mocks__/foremanReact/{redux/actions/toasts.js → components/ToastsList/index.js} +3 -2
  203. data/webpack/components/ActionableDetail.js +35 -21
  204. data/webpack/components/Content/Details/ContentDetails.js +1 -1
  205. data/webpack/components/Content/Details/__tests__/ContentDetailInfo.test.js +0 -2
  206. data/webpack/components/Content/Details/__tests__/ContentDetailRepositories.test.js +0 -2
  207. data/webpack/components/Content/Details/__tests__/ContentDetails.test.js +0 -2
  208. data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +1 -1
  209. data/webpack/components/Content/__tests__/ContentPage.test.js +0 -2
  210. data/webpack/components/Content/__tests__/ContentTable.test.js +0 -2
  211. data/webpack/components/EditableSwitch.js +8 -2
  212. data/webpack/components/EditableTextInput/EditableTextInput.js +44 -86
  213. data/webpack/components/EditableTextInput/__tests__/editableTextInput.test.js +3 -3
  214. data/webpack/components/Errata/index.js +95 -29
  215. data/webpack/components/ErratumTypeLabel.js +16 -16
  216. data/webpack/components/MultiSelect/index.js +2 -2
  217. data/webpack/components/Packages/index.js +1 -1
  218. data/webpack/components/RoutedTabs/index.js +2 -1
  219. data/webpack/components/Search/Search.js +5 -2
  220. data/webpack/components/Search/__tests__/search.test.js +2 -3
  221. data/webpack/components/Select/Select.js +1 -1
  222. data/webpack/components/SelectOrg/SelectOrgReducer.js +15 -15
  223. data/webpack/components/SelectOrg/SetOrganization.js +2 -2
  224. data/webpack/components/Table/PageControls.js +3 -6
  225. data/webpack/components/Table/TableHooks.js +47 -7
  226. data/webpack/components/Table/TableWrapper.js +25 -7
  227. data/webpack/components/TypeAhead/TypeAhead.js +5 -1
  228. data/webpack/components/TypeAhead/helpers/commonPropTypes.js +1 -1
  229. data/webpack/components/TypeAhead/helpers/helpers.js +14 -14
  230. data/webpack/components/TypeAhead/pf3Search/TypeAheadSearch.js +1 -1
  231. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +4 -1
  232. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +2 -1
  233. data/webpack/components/WithOrganization/withOrganization.js +3 -3
  234. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +1 -1
  235. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +108 -0
  236. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +56 -0
  237. data/webpack/components/extensions/HostDetails/HostDetailsActions.js +2 -0
  238. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesActions.js +49 -2
  239. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesConstants.js +14 -1
  240. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +6 -4
  241. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +1 -0
  242. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +1 -0
  243. data/webpack/components/extensions/HostDetails/Tabs/{ErrataTab.js → ErrataTab/ErrataTab.js} +86 -75
  244. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.scss +11 -0
  245. data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionContents.js → ErrataTab/ErratumExpansionContents.js} +3 -3
  246. data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionDetail.js → ErrataTab/ErratumExpansionDetail.js} +0 -0
  247. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataActions.js +3 -3
  248. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataConstants.js +11 -0
  249. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataSelectors.js +0 -0
  250. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsActions.js +16 -0
  251. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsConstants.js +3 -0
  252. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsSelectors.js +19 -0
  253. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +241 -0
  254. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/moduleStreamsTab.test.js +108 -0
  255. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/modules.fixtures.json +34 -0
  256. data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.js +279 -0
  257. data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.scss +3 -0
  258. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.js +357 -64
  259. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.scss +3 -7
  260. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +103 -4
  261. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +6 -1
  262. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +45 -42
  263. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.scss +3 -3
  264. data/webpack/components/extensions/HostDetails/Tabs/{EnableTracerEmptyState.js → TracesTab/EnableTracerEmptyState.js} +0 -0
  265. data/webpack/components/extensions/HostDetails/Tabs/{EnableTracerModal.js → TracesTab/EnableTracerModal.js} +3 -2
  266. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesActions.js → TracesTab/HostTracesActions.js} +2 -2
  267. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesConstants.js → TracesTab/HostTracesConstants.js} +0 -0
  268. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesSelectors.js → TracesTab/HostTracesSelectors.js} +0 -0
  269. data/webpack/components/extensions/HostDetails/Tabs/{TracesTab.js → TracesTab/TracesTab.js} +66 -61
  270. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.scss +11 -0
  271. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +17 -18
  272. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +385 -0
  273. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packages.fixtures.json +1 -1
  274. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +312 -11
  275. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +2 -2
  276. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +26 -30
  277. data/webpack/components/extensions/HostDetails/Tabs/__tests__/yumInstallablePackages.fixtures.json +72 -0
  278. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +25 -5
  279. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesActions.js +18 -0
  280. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesConstants.js +3 -0
  281. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesSelectors.js +16 -0
  282. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +19 -0
  283. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +4 -0
  284. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
  285. data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +1 -1
  286. data/webpack/components/extensions/about/SystemStatuses.js +1 -1
  287. data/webpack/components/extensions/about/SystemStatusesReducer.js +10 -10
  288. data/webpack/components/pf3Table/components/Table.js +4 -5
  289. data/webpack/components/pf3Table/components/Table.test.js +0 -3
  290. data/webpack/components/pf3Table/components/TableBody.js +2 -2
  291. data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +9 -8
  292. data/webpack/containers/Application/config.js +6 -1
  293. data/webpack/containers/Application/overrides.scss +56 -7
  294. data/webpack/global_index.js +4 -1
  295. data/webpack/global_test_setup.js +1 -1
  296. data/webpack/index.js +7 -0
  297. data/webpack/redux/OrganizationProducts/OrganizationProductsReducer.js +15 -15
  298. data/webpack/redux/reducers/RedHatRepositories/enabled.js +43 -43
  299. data/webpack/redux/reducers/RedHatRepositories/repositorySetRepositories.js +43 -43
  300. data/webpack/redux/reducers/RedHatRepositories/sets.js +31 -31
  301. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +26 -26
  302. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +19 -19
  303. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -2
  304. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -2
  305. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -2
  306. data/webpack/scenes/Content/ContentConfig.js +55 -5
  307. data/webpack/scenes/Content/ContentPage.js +5 -5
  308. data/webpack/scenes/Content/Details/ContentDetails.js +23 -21
  309. data/webpack/scenes/Content/Details/ContentInfo.js +2 -2
  310. data/webpack/scenes/Content/Details/ContentRepositories.js +1 -1
  311. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +4 -4
  312. data/webpack/scenes/Content/Table/ContentTable.js +2 -2
  313. data/webpack/scenes/Content/__tests__/contentTable.test.js +3 -3
  314. data/webpack/scenes/ContentViews/ContentViewsConstants.js +5 -4
  315. data/webpack/scenes/ContentViews/ContentViewsPage.js +17 -13
  316. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -1
  317. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +3 -2
  318. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +2 -2
  319. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +6 -6
  320. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +22 -11
  321. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +31 -18
  322. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +1 -1
  323. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +2 -2
  324. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +22 -28
  325. data/webpack/scenes/ContentViews/Details/ContentViewDetailReducer.js +8 -8
  326. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +5 -5
  327. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +32 -30
  328. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +9 -4
  329. data/webpack/scenes/ContentViews/Details/DetailsContainer.js +14 -17
  330. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +3 -0
  331. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +1 -1
  332. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +8 -8
  333. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +4 -4
  334. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +6 -6
  335. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +16 -9
  336. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +46 -46
  337. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +17 -17
  338. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +17 -17
  339. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +4 -4
  340. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +2 -2
  341. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +17 -11
  342. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +1 -1
  343. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +2 -2
  344. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +17 -17
  345. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +2 -3
  346. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +2 -9
  347. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +3 -5
  348. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +2 -10
  349. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +2 -3
  350. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +2 -3
  351. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +2 -2
  352. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +1 -1
  353. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +24 -3
  354. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +11 -5
  355. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +28 -28
  356. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +1 -1
  357. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +18 -18
  358. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +3 -3
  359. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +3 -3
  360. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -6
  361. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
  362. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -1
  363. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +31 -35
  364. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +9 -8
  365. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +5 -2
  366. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +39 -40
  367. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +46 -34
  368. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +66 -49
  369. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +5 -5
  370. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +3 -3
  371. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +5 -3
  372. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +2 -2
  373. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +5 -5
  374. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +3 -3
  375. data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +1 -1
  376. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +1 -1
  377. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +18 -18
  378. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +10 -10
  379. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +2 -2
  380. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +8 -8
  381. data/webpack/scenes/Hosts/ChangeContentSource/actions.js +43 -0
  382. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +87 -0
  383. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +90 -0
  384. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +43 -0
  385. data/webpack/scenes/Hosts/ChangeContentSource/constants.js +3 -0
  386. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +27 -0
  387. data/webpack/scenes/Hosts/ChangeContentSource/index.js +126 -0
  388. data/webpack/scenes/Hosts/ChangeContentSource/selectors.js +42 -0
  389. data/webpack/scenes/Hosts/ChangeContentSource/styles.scss +11 -0
  390. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetailsReducer.js +18 -18
  391. data/webpack/scenes/ModuleStreams/Details/Profiles/__tests__/ModuleStreamDetailProfiles.test.js +0 -1
  392. data/webpack/scenes/ModuleStreams/Details/__tests__/ModuleStreamDetails.test.js +0 -2
  393. data/webpack/scenes/ModuleStreams/ModuleStreamsReducer.js +26 -26
  394. data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamPage.test.js +0 -2
  395. data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamsTable.test.js +0 -2
  396. data/webpack/scenes/Organizations/OrganizationActions.js +5 -1
  397. data/webpack/scenes/Organizations/OrganizationReducer.js +8 -8
  398. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +31 -1
  399. data/webpack/scenes/RedHatRepositories/__tests__/RedHatRepositoriesPage.test.js +16 -0
  400. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +11 -2
  401. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +4 -4
  402. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -1
  403. data/webpack/scenes/RedHatRepositories/helpers.js +5 -5
  404. data/webpack/scenes/RedHatRepositories/index.js +11 -3
  405. data/webpack/scenes/Settings/SettingsReducer.js +14 -14
  406. data/webpack/scenes/Settings/Tables/TableReducer.js +23 -23
  407. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailInfo.js +2 -2
  408. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProductContent.js +15 -15
  409. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProducts.js +1 -1
  410. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailReducer.js +34 -34
  411. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +13 -13
  412. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/AirGappedTypeForm.js +81 -0
  413. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +13 -0
  414. data/webpack/scenes/Subscriptions/Manifest/{CdnConfigurationForm.scss → CdnConfigurationTab/CdnConfigurationForm.scss} +0 -0
  415. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +106 -0
  416. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/UpstreamServerTypeForm.js +259 -0
  417. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/AirGappedTypeForm.test.js +44 -0
  418. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +67 -0
  419. data/webpack/scenes/Subscriptions/Manifest/{__tests__/CdnConfigurationForm.test.js → CdnConfigurationTab/__tests__/UpstreamServerTypeForm.test.js} +46 -17
  420. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +97 -0
  421. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +11 -6
  422. data/webpack/scenes/Subscriptions/Manifest/ManifestHistoryReducer.js +16 -16
  423. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +149 -149
  424. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsReducer.js +41 -41
  425. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/UpstreamSubscriptionsPage.test.js +0 -1
  426. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +0 -1
  427. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +3 -2
  428. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +4 -0
  429. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +9 -0
  430. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/DeleteDialog.js +6 -6
  431. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +12 -12
  432. data/webpack/scenes/Tasks/TaskActions.js +1 -1
  433. data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap +3 -2
  434. data/webpack/services/api/testHelpers.js +5 -3
  435. data/webpack/services/index.js +36 -36
  436. data/webpack/utils/helpers.js +11 -8
  437. metadata +98 -60
  438. data/app/services/katello/pulp/deb.rb +0 -55
  439. data/app/services/katello/pulp/distribution.rb +0 -7
  440. data/app/services/katello/pulp/docker_blob.rb +0 -7
  441. data/app/services/katello/pulp/docker_manifest.rb +0 -13
  442. data/app/services/katello/pulp/docker_manifest_list.rb +0 -14
  443. data/app/services/katello/pulp/docker_tag.rb +0 -14
  444. data/app/services/katello/pulp/erratum.rb +0 -129
  445. data/app/services/katello/pulp/file_unit.rb +0 -21
  446. data/app/services/katello/pulp/module_stream.rb +0 -39
  447. data/app/services/katello/pulp/package_category.rb +0 -7
  448. data/app/services/katello/pulp/package_group.rb +0 -20
  449. data/app/services/katello/pulp/pulp_content_unit.rb +0 -156
  450. data/app/services/katello/pulp/rpm.rb +0 -57
  451. data/app/services/katello/pulp/srpm.rb +0 -29
  452. data/app/services/katello/pulp/yum_metadata_file.rb +0 -30
  453. data/lib/monkeys/pulp3_13_checksumfix.rb +0 -17
  454. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +0 -2
  455. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +0 -2
  456. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.scss +0 -16
  457. data/webpack/components/extensions/HostDetails/Tabs/TracesTab.scss +0 -12
  458. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationForm.js +0 -185
@@ -20,9 +20,10 @@ import TableWrapper from '../../../../../components/Table/TableWrapper';
20
20
  import { enableRepoSetRepo, disableRepoSetRepo, resetRepoSetRepo, getHostRepositorySets } from './RepositorySetsActions';
21
21
  import { selectRepositorySetsStatus } from './RepositorySetsSelectors';
22
22
  import { selectHostDetailsStatus } from '../../HostDetailsSelectors.js';
23
- import { useBulkSelect } from '../../../../../components/Table/TableHooks';
23
+ import { useBulkSelect, useUrlParams } from '../../../../../components/Table/TableHooks';
24
24
  import { REPOSITORY_SETS_KEY } from './RepositorySetsConstants.js';
25
25
  import './RepositorySetsTab.scss';
26
+ import hostIdNotReady from '../../HostDetailsActions';
26
27
 
27
28
  const getEnabledValue = ({ enabled, enabledContentOverride }) => {
28
29
  const isOverridden = (enabledContentOverride !== null);
@@ -78,11 +79,12 @@ const RepositorySetsTab = () => {
78
79
  lifecycleEnvironmentLibrary === false;
79
80
  const simpleContentAccess = (Number(subscriptionStatus) === 5);
80
81
  const dispatch = useDispatch();
82
+ const { searchParam, show } = useUrlParams();
81
83
  const toggleGroupStates = ['noLimit', 'limitToEnvironment'];
82
84
  const [noLimit, limitToEnvironment] = toggleGroupStates;
83
85
  const defaultToggleGroupState = nonLibraryHost ? limitToEnvironment : noLimit;
84
86
  const [toggleGroupState, setToggleGroupState] =
85
- useState(defaultToggleGroupState);
87
+ useState(show ?? defaultToggleGroupState);
86
88
  const [alertShowing, setAlertShowing] = useState(false);
87
89
  const emptyContentTitle = __('No repository sets to show.');
88
90
  const emptyContentBody = __('Repository sets will appear here when available.');
@@ -101,7 +103,7 @@ const RepositorySetsTab = () => {
101
103
  content_access_mode_all: simpleContentAccess,
102
104
  host_id: hostId,
103
105
  ...params,
104
- }) : null),
106
+ }) : hostIdNotReady),
105
107
  [hostId, toggleGroupState, limitToEnvironment, simpleContentAccess],
106
108
  );
107
109
 
@@ -115,6 +117,7 @@ const RepositorySetsTab = () => {
115
117
  results,
116
118
  metadata,
117
119
  isSelectable: () => false,
120
+ initialSearchQuery: searchParam || '',
118
121
  });
119
122
 
120
123
  const hostDetailsStatus = useSelector(state => selectHostDetailsStatus(state));
@@ -241,18 +244,18 @@ const RepositorySetsTab = () => {
241
244
  </div>
242
245
  <TableWrapper
243
246
  {...{
244
- metadata,
245
- emptyContentTitle,
246
- emptyContentBody,
247
- emptySearchTitle,
248
- emptySearchBody,
249
- status,
250
- searchQuery,
251
- updateSearchQuery,
252
- selectedCount,
253
- selectNone,
254
- toggleGroup,
255
- }
247
+ metadata,
248
+ emptyContentTitle,
249
+ emptyContentBody,
250
+ emptySearchTitle,
251
+ emptySearchBody,
252
+ status,
253
+ searchQuery,
254
+ updateSearchQuery,
255
+ selectedCount,
256
+ selectNone,
257
+ toggleGroup,
258
+ }
256
259
  }
257
260
  activeFilters={[toggleGroupState]}
258
261
  defaultFilters={[defaultToggleGroupState]}
@@ -291,12 +294,12 @@ const RepositorySetsTab = () => {
291
294
  <Tbody key={`${id}_${repoPath}`}>
292
295
  <Tr>
293
296
  <Td select={{
294
- disable: !isSelectable(id),
295
- isSelected: isSelected(id),
296
- onSelect: (event, selected) => selectOne(selected, id),
297
- rowIndex,
298
- variant: 'checkbox',
299
- }}
297
+ disable: !isSelectable(id),
298
+ isSelected: isSelected(id),
299
+ onSelect: (event, selected) => selectOne(selected, id),
300
+ rowIndex,
301
+ variant: 'checkbox',
302
+ }}
300
303
  />
301
304
  <Td>
302
305
  <span>{repoName}</span>
@@ -313,30 +316,30 @@ const RepositorySetsTab = () => {
313
316
  <Td
314
317
  key={`rowActions-${id}`}
315
318
  actions={{
316
- items: [
317
- {
318
- title: __('Override to disabled'),
319
- isDisabled: isOverridden && !isEnabled,
320
- onClick: () => overrideToDisabled({ labels: [label] }),
321
- },
322
- {
323
- title: __('Override to enabled'),
324
- isDisabled: isOverridden && isEnabled,
325
- onClick: () => overrideToEnabled({ labels: [label] }),
326
- },
327
- {
328
- title: __('Reset to default'),
329
- isDisabled: !isOverridden,
330
- onClick: () => resetToDefault({ labels: [label] }),
331
- },
332
- ],
333
- }}
319
+ items: [
320
+ {
321
+ title: __('Override to disabled'),
322
+ isDisabled: isOverridden && !isEnabled,
323
+ onClick: () => overrideToDisabled({ labels: [label] }),
324
+ },
325
+ {
326
+ title: __('Override to enabled'),
327
+ isDisabled: isOverridden && isEnabled,
328
+ onClick: () => overrideToEnabled({ labels: [label] }),
329
+ },
330
+ {
331
+ title: __('Reset to default'),
332
+ isDisabled: !isOverridden,
333
+ onClick: () => resetToDefault({ labels: [label] }),
334
+ },
335
+ ],
336
+ }}
334
337
  />
335
338
  </Tr>
336
339
  </Tbody>
337
- );
338
- })
339
- }
340
+ );
341
+ })
342
+ }
340
343
  </>
341
344
  </TableWrapper>
342
345
  </div>
@@ -1,7 +1,7 @@
1
1
  #repo-sets-tab .content-header .repo-sets-alert {
2
- margin: 15px 24px;
2
+ margin: 16px 24px;
3
3
  }
4
4
 
5
- #repo-sets-tab .content-header > .repo-sets-blurb {
6
- margin: 15px 24px;
5
+ #repo-sets-tab .content-header>.repo-sets-blurb {
6
+ margin: 16px 24px;
7
7
  }
@@ -15,7 +15,8 @@ import { translate as __ } from 'foremanReact/common/I18n';
15
15
  import { useSelector, useDispatch } from 'react-redux';
16
16
  import { selectAPIResponse } from 'foremanReact/redux/API/APISelectors';
17
17
  import { installTracerPackage } from './HostTracesActions';
18
- import { katelloPackageInstallUrl } from './customizedRexUrlHelpers';
18
+ import { katelloPackageInstallUrl } from '../customizedRexUrlHelpers';
19
+ import { KATELLO_TRACER_PACKAGE } from './HostTracesConstants';
19
20
 
20
21
  const EnableTracerModal = ({ isOpen, setIsOpen }) => {
21
22
  const title = __('Enable Tracer');
@@ -43,7 +44,7 @@ const EnableTracerModal = ({ isOpen, setIsOpen }) => {
43
44
  <DropdownItem key={`option_${text}`} onClick={() => setSelectedOption(text)}>{text}</DropdownItem>
44
45
  ));
45
46
 
46
- const customizedRexUrl = katelloPackageInstallUrl({ hostname });
47
+ const customizedRexUrl = katelloPackageInstallUrl({ hostname, packages: KATELLO_TRACER_PACKAGE });
47
48
 
48
49
  const getEnableTracerButton = () => {
49
50
  const [viaRex] = dropdownOptions;
@@ -3,8 +3,8 @@ import {
3
3
  HOST_TRACES_KEY,
4
4
  KATELLO_TRACER_PACKAGE,
5
5
  } from './HostTracesConstants';
6
- import { installPackage } from './RemoteExecutionActions';
7
- import { foremanApi } from '../../../../services/api';
6
+ import { installPackage } from '../RemoteExecutionActions';
7
+ import { foremanApi } from '../../../../../services/api';
8
8
 
9
9
  export const getHostTraces = (hostId, params) => get({
10
10
  type: API_OPERATIONS.GET,
@@ -1,18 +1,21 @@
1
1
  import React, { useState, useCallback } from 'react';
2
- import { Skeleton, Button, Split, SplitItem, ActionList, ActionListItem, Dropdown,
3
- DropdownItem, KebabToggle } from '@patternfly/react-core';
2
+ import {
3
+ Skeleton, Button, Split, SplitItem, ActionList, ActionListItem, Dropdown,
4
+ DropdownItem, KebabToggle,
5
+ } from '@patternfly/react-core';
4
6
  import { translate as __ } from 'foremanReact/common/I18n';
5
7
  import { TableVariant, Thead, Tbody, Tr, Th, Td } from '@patternfly/react-table';
6
8
  import { useSelector, useDispatch } from 'react-redux';
7
9
  import { selectAPIResponse } from 'foremanReact/redux/API/APISelectors';
8
10
  import EnableTracerEmptyState from './EnableTracerEmptyState';
9
- import TableWrapper from '../../../Table/TableWrapper';
10
- import { useBulkSelect } from '../../../Table/TableHooks';
11
+ import TableWrapper from '../../../../Table/TableWrapper';
12
+ import { useBulkSelect, useUrlParams } from '../../../../Table/TableHooks';
11
13
  import { getHostTraces } from './HostTracesActions';
12
- import { resolveTraces } from './RemoteExecutionActions';
14
+ import { resolveTraces } from '../RemoteExecutionActions';
13
15
  import { selectHostTracesStatus } from './HostTracesSelectors';
14
- import { resolveTraceUrl } from './customizedRexUrlHelpers';
16
+ import { resolveTraceUrl } from '../customizedRexUrlHelpers';
15
17
  import './TracesTab.scss';
18
+ import hostIdNotReady from '../../HostDetailsActions';
16
19
 
17
20
  const TracesTab = () => {
18
21
  const hostDetails = useSelector(state => selectAPIResponse(state, 'HOST_DETAILS'));
@@ -29,9 +32,10 @@ const TracesTab = () => {
29
32
  const emptySearchBody = __('Try changing your search settings.');
30
33
  const fetchItems = useCallback(
31
34
  params =>
32
- (hostId ? getHostTraces(hostId, params) : null),
35
+ (hostId ? getHostTraces(hostId, params) : hostIdNotReady),
33
36
  [hostId],
34
37
  );
38
+ const { searchParam } = useUrlParams();
35
39
  const [isBulkActionOpen, setIsBulkActionOpen] = useState(false);
36
40
  const toggleBulkAction = () => setIsBulkActionOpen(prev => !prev);
37
41
  const response = useSelector(state => selectAPIResponse(state, 'HOST_TRACES'));
@@ -44,6 +48,7 @@ const TracesTab = () => {
44
48
  results,
45
49
  metadata: meta,
46
50
  isSelectable: result => !!result.restart_command,
51
+ initialSearchQuery: searchParam || '',
47
52
  });
48
53
 
49
54
 
@@ -111,19 +116,19 @@ const TracesTab = () => {
111
116
  <h3>{__('Tracer helps administrators identify applications that need to be restarted after a system is patched.')}</h3>
112
117
  <TableWrapper
113
118
  {...{
114
- emptyContentTitle,
115
- emptyContentBody,
116
- emptySearchTitle,
117
- emptySearchBody,
118
- status,
119
- searchQuery,
120
- updateSearchQuery,
121
- selectedCount,
122
- selectNone,
123
- fetchItems,
124
- actionButtons,
125
- }
126
- }
119
+ emptyContentTitle,
120
+ emptyContentBody,
121
+ emptySearchTitle,
122
+ emptySearchBody,
123
+ status,
124
+ searchQuery,
125
+ updateSearchQuery,
126
+ selectedCount,
127
+ selectNone,
128
+ fetchItems,
129
+ actionButtons,
130
+ }
131
+ }
127
132
  metadata={meta}
128
133
  autocompleteEndpoint={`/hosts/${hostId}/traces/auto_complete_search`}
129
134
  foremanApiAutoComplete
@@ -143,49 +148,49 @@ const TracesTab = () => {
143
148
  </Thead>
144
149
  <Tbody>
145
150
  {results?.map((result, rowIndex) => {
146
- const {
147
- id,
148
- application,
149
- helper,
150
- app_type: appType,
151
- } = result;
152
- const resolveDisabled = !isSelectable(id);
153
- let rowDropdownItems = [
154
- { title: 'Restart via remote execution', onClick: () => onRestartApp(id) },
155
- {
156
- component: 'a', href: resolveTraceUrl({ hostname, search: tracesSearchQuery(id) }), title: 'Restart via customized remote execution',
157
- },
158
- ];
159
- if (resolveDisabled) {
160
- rowDropdownItems = [
161
- { isDisabled: true, title: __('Traces that require logout cannot be restarted remotely') },
151
+ const {
152
+ id,
153
+ application,
154
+ helper,
155
+ app_type: appType,
156
+ } = result;
157
+ const resolveDisabled = !isSelectable(id);
158
+ let rowDropdownItems = [
159
+ { title: 'Restart via remote execution', onClick: () => onRestartApp(id) },
160
+ {
161
+ component: 'a', href: resolveTraceUrl({ hostname, search: tracesSearchQuery(id) }), title: 'Restart via customized remote execution',
162
+ },
162
163
  ];
163
- }
164
- return (
165
- <Tr key={id} >
166
- <Td select={{
167
- disable: resolveDisabled,
168
- props: {
169
- 'aria-label': `check-${application}`,
170
- },
171
- isSelected: isSelected(id),
172
- onSelect: (event, selected) => selectOne(selected, id),
173
- rowIndex,
174
- variant: 'checkbox',
175
- }}
176
- />
177
- <Td>{application}</Td>
178
- <Td>{appType}</Td>
179
- <Td>{helper}</Td>
180
- <Td
181
- actions={{
182
- items: rowDropdownItems,
164
+ if (resolveDisabled) {
165
+ rowDropdownItems = [
166
+ { isDisabled: true, title: __('Traces that require logout cannot be restarted remotely') },
167
+ ];
168
+ }
169
+ return (
170
+ <Tr key={id} >
171
+ <Td select={{
172
+ disable: resolveDisabled,
173
+ props: {
174
+ 'aria-label': `check-${application}`,
175
+ },
176
+ isSelected: isSelected(id),
177
+ onSelect: (event, selected) => selectOne(selected, id),
178
+ rowIndex,
179
+ variant: 'checkbox',
183
180
  }}
184
- />
185
- </Tr>
186
- );
187
- })
188
- }
181
+ />
182
+ <Td>{application}</Td>
183
+ <Td>{appType}</Td>
184
+ <Td>{helper}</Td>
185
+ <Td
186
+ actions={{
187
+ items: rowDropdownItems,
188
+ }}
189
+ />
190
+ </Tr>
191
+ );
192
+ })
193
+ }
189
194
  </Tbody>
190
195
  </TableWrapper>
191
196
  </div>
@@ -0,0 +1,11 @@
1
+ #traces-tab {
2
+ margin: 16px 0;
3
+
4
+ h3 {
5
+ margin: 0 24px 16px;
6
+ }
7
+ }
8
+
9
+ #traces-alert {
10
+ margin: 16px 24px;
11
+ }
@@ -3,9 +3,9 @@ import { isEqual } from 'lodash';
3
3
  import { renderWithRedux, patientlyWaitFor, within, fireEvent } from 'react-testing-lib-wrapper';
4
4
  import { nockInstance, assertNockRequest, mockForemanAutocomplete, mockSetting } from '../../../../../test-utils/nockWrapper';
5
5
  import { foremanApi } from '../../../../../services/api';
6
- import { HOST_ERRATA_KEY, ERRATA_SEARCH_QUERY } from '../../HostErrata/HostErrataConstants';
6
+ import { HOST_ERRATA_KEY, ERRATA_SEARCH_QUERY } from '../ErrataTab/HostErrataConstants';
7
7
  import { REX_FEATURES } from '../RemoteExecutionConstants';
8
- import { ErrataTab } from '../ErrataTab';
8
+ import { ErrataTab } from '../ErrataTab/ErrataTab.js';
9
9
  import mockErrataData from './errata.fixtures.json';
10
10
  import mockResolveErrataTask from './resolveErrata.fixtures.json';
11
11
 
@@ -81,11 +81,10 @@ let searchDelayScope;
81
81
  let autoSearchScope;
82
82
 
83
83
  beforeEach(() => {
84
- // jest.resetModules();
85
84
  const { results } = mockErrataData;
86
85
  [firstErrata, , thirdErrata] = results;
87
- searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 500);
88
- autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing', true);
86
+ searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
87
+ autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
89
88
  });
90
89
 
91
90
  afterEach(() => {
@@ -813,7 +812,7 @@ test('apply button chooses katello agent if enabled', async (done) => {
813
812
  <ErrataTab />,
814
813
  options,
815
814
  );
816
- // Assert that the errata are now showing on the screen, but wait for them to appear.
815
+ // Assert that the errata are now showing on the screen, but wait for them to appear.
817
816
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
818
817
 
819
818
  getByLabelText('Select row 0').click();
@@ -855,7 +854,7 @@ test('Can bulk apply via katello agent', async (done) => {
855
854
  <ErrataTab />,
856
855
  options,
857
856
  );
858
- // Assert that the errata are now showing on the screen, but wait for them to appear.
857
+ // Assert that the errata are now showing on the screen, but wait for them to appear.
859
858
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
860
859
 
861
860
  getByLabelText('Select row 0').click();
@@ -874,7 +873,7 @@ test('Can bulk apply via katello agent', async (done) => {
874
873
 
875
874
  test('Can select all, exclude and bulk apply via katello agent', async (done) => {
876
875
  // This is the same test as above,
877
- // but using the table action bar instead of the Restart app button
876
+ // but using the table action bar instead of the Apply button
878
877
  const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
879
878
  const mockErrata = makeMockErrata({});
880
879
  const { results } = mockErrata;
@@ -902,12 +901,12 @@ test('Can select all, exclude and bulk apply via katello agent', async (done) =>
902
901
  <ErrataTab />,
903
902
  options,
904
903
  );
905
- // Assert that the errata are now showing on the screen, but wait for them to appear.
904
+ // Assert that the errata are now showing on the screen, but wait for them to appear.
906
905
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
907
906
  const selectAllCheckbox = getByLabelText('Select all');
908
907
  selectAllCheckbox.click();
909
908
 
910
- getByLabelText('Select row 0').click(); // de select
909
+ getByLabelText('Select row 0').click(); // deselect
911
910
 
912
911
  const actionMenu = getByLabelText('bulk_actions');
913
912
  actionMenu.click();
@@ -948,7 +947,7 @@ test('Apply button chooses remote execution', async (done) => {
948
947
  <ErrataTab />,
949
948
  options,
950
949
  );
951
- // Assert that the errata are now showing on the screen, but wait for them to appear.
950
+ // Assert that the errata are now showing on the screen, but wait for them to appear.
952
951
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
953
952
 
954
953
  getByLabelText('Select row 0').click();
@@ -981,9 +980,9 @@ test('Can bulk apply via remote execution', async (done) => {
981
980
  // eslint-disable-next-line camelcase
982
981
  const jobInvocationBody = ({ job_invocation: { inputs, feature, search_query } }) =>
983
982
  inputs[ERRATA_SEARCH_QUERY] === `errata_id ^ (${results[0].errata_id},${results[1].errata_id})` &&
984
- feature === REX_FEATURES.KATELLO_HOST_ERRATA_INSTALL &&
985
- // eslint-disable-next-line camelcase
986
- search_query === `name ^ (${hostName})`;
983
+ feature === REX_FEATURES.KATELLO_HOST_ERRATA_INSTALL_BY_SEARCH &&
984
+ // eslint-disable-next-line camelcase
985
+ search_query === `name ^ (${hostName})`;
987
986
 
988
987
  const resolveErrataScope = nockInstance
989
988
  .post(jobInvocations, jobInvocationBody)
@@ -993,7 +992,7 @@ test('Can bulk apply via remote execution', async (done) => {
993
992
  <ErrataTab />,
994
993
  renderOptions(),
995
994
  );
996
- // Assert that the errata are now showing on the screen, but wait for them to appear.
995
+ // Assert that the errata are now showing on the screen, but wait for them to appear.
997
996
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
998
997
 
999
998
  getByLabelText('Select row 0').click();
@@ -1038,7 +1037,7 @@ test('Can select all, exclude and bulk apply via remote execution', async (done)
1038
1037
  <ErrataTab />,
1039
1038
  renderOptions(),
1040
1039
  );
1041
- // Assert that the errata are now showing on the screen, but wait for them to appear.
1040
+ // Assert that the errata are now showing on the screen, but wait for them to appear.
1042
1041
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
1043
1042
  const selectAllCheckbox = getByLabelText('Select all');
1044
1043
  selectAllCheckbox.click();
@@ -1076,7 +1075,7 @@ test('Can apply errata in bulk via customized remote execution', async (done) =>
1076
1075
  getByLabelText('Select row 0').click();
1077
1076
  getByLabelText('Select row 1').click();
1078
1077
  const errata = `${results[0].errata_id},${results[1].errata_id}`;
1079
- const feature = REX_FEATURES.KATELLO_HOST_ERRATA_INSTALL;
1078
+ const feature = REX_FEATURES.KATELLO_HOST_ERRATA_INSTALL_BY_SEARCH;
1080
1079
  const actionMenu = getByLabelText('bulk_actions');
1081
1080
  actionMenu.click();
1082
1081
  const viaRexAction = queryByText('Apply via customized remote execution');
@@ -1176,7 +1175,7 @@ test('Can apply a single erratum to the host via customized remote execution', a
1176
1175
  const mockErrata = makeMockErrata({});
1177
1176
  const { results } = mockErrata;
1178
1177
  const { errata_id: errataId } = results[0];
1179
- const feature = REX_FEATURES.KATELLO_HOST_ERRATA_INSTALL;
1178
+ const feature = REX_FEATURES.KATELLO_HOST_ERRATA_INSTALL_BY_SEARCH;
1180
1179
  const scope = nockInstance
1181
1180
  .get(hostErrata)
1182
1181
  .query(defaultQuery)