katello 4.2.2 → 4.3.0.rc1

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

Potentially problematic release.


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

Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/katello.common.js +0 -67
  3. data/app/assets/javascripts/katello/common/katello.js +0 -27
  4. data/app/assets/javascripts/katello/common/vendor.js +0 -1
  5. data/app/assets/stylesheets/katello/katello.scss +0 -1
  6. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +10 -2
  7. data/app/controllers/katello/api/v2/api_controller.rb +35 -9
  8. data/app/controllers/katello/api/v2/capsule_content_controller.rb +16 -2
  9. data/app/controllers/katello/api/v2/content_view_components_controller.rb +22 -1
  10. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +65 -1
  11. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +5 -1
  12. data/app/controllers/katello/api/v2/content_views_controller.rb +13 -6
  13. data/app/controllers/katello/api/v2/debs_controller.rb +74 -1
  14. data/app/controllers/katello/api/v2/errata_controller.rb +13 -10
  15. data/app/controllers/katello/api/v2/file_units_controller.rb +1 -0
  16. data/app/controllers/katello/api/v2/generic_content_units_controller.rb +1 -1
  17. data/app/controllers/katello/api/v2/host_errata_controller.rb +46 -5
  18. data/app/controllers/katello/api/v2/host_tracer_controller.rb +2 -1
  19. data/app/controllers/katello/api/v2/module_streams_controller.rb +4 -0
  20. data/app/controllers/katello/api/v2/organizations_controller.rb +22 -7
  21. data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
  22. data/app/controllers/katello/api/v2/repositories_controller.rb +36 -19
  23. data/app/controllers/katello/api/v2/subscriptions_controller.rb +0 -8
  24. data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +5 -1
  25. data/app/controllers/katello/concerns/api/v2/bulk_extensions.rb +40 -0
  26. data/app/controllers/katello/concerns/api/v2/host_errata_extensions.rb +4 -31
  27. data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +1 -1
  28. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +1 -1
  29. data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +2 -6
  30. data/app/helpers/katello/katello_url_helper.rb +1 -1
  31. data/app/lib/actions/candlepin/abstract_async_task.rb +6 -3
  32. data/app/lib/actions/candlepin/async_hypervisors.rb +12 -8
  33. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +10 -1
  34. data/app/lib/actions/katello/capsule_content/refresh_repos.rb +1 -1
  35. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +2 -2
  36. data/app/lib/actions/katello/cdn_configuration/update.rb +38 -0
  37. data/app/lib/actions/katello/content_view/remove.rb +18 -7
  38. data/app/lib/actions/katello/content_view_version/destroy.rb +2 -2
  39. data/app/lib/actions/katello/content_view_version/republish_repositories.rb +1 -1
  40. data/app/lib/actions/katello/repository/clone_contents.rb +1 -2
  41. data/app/lib/actions/katello/repository/destroy.rb +21 -5
  42. data/app/lib/actions/katello/repository/fetch_pxe_files.rb +1 -1
  43. data/app/lib/actions/katello/repository/index_content.rb +19 -6
  44. data/app/lib/actions/katello/repository/multi_clone_contents.rb +1 -1
  45. data/app/lib/actions/katello/repository/sync.rb +3 -5
  46. data/app/lib/actions/katello/repository_set/scan_cdn.rb +0 -4
  47. data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +1 -1
  48. data/app/lib/actions/pulp/orphan_cleanup/remove_unneeded_repos.rb +1 -1
  49. data/app/lib/actions/pulp/repository/clear.rb +1 -1
  50. data/app/lib/actions/pulp3/abstract_async_task.rb +10 -1
  51. data/app/lib/actions/pulp3/capsule_content/generate_metadata.rb +4 -5
  52. data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +1 -1
  53. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +25 -42
  54. data/app/lib/actions/pulp3/orchestration/repository/upload_content.rb +3 -3
  55. data/app/lib/actions/pulp3/repository/commit_upload.rb +1 -1
  56. data/app/lib/actions/pulp3/repository/import_upload.rb +8 -4
  57. data/app/lib/actions/pulp3/repository/multi_copy_content.rb +1 -1
  58. data/app/lib/actions/pulp3/repository/multi_copy_units.rb +1 -1
  59. data/app/lib/actions/pulp3/repository/presenters/abstract_sync_presenter.rb +18 -0
  60. data/app/lib/actions/pulp3/repository/presenters/content_unit_presenter.rb +7 -2
  61. data/app/lib/actions/pulp3/repository/presenters/repair_presenter.rb +6 -1
  62. data/app/lib/actions/pulp3/repository/save_artifact.rb +14 -4
  63. data/app/lib/katello/errors.rb +2 -0
  64. data/app/lib/katello/resources/candlepin/consumer.rb +0 -20
  65. data/app/lib/katello/resources/candlepin/proxy.rb +8 -2
  66. data/app/lib/katello/resources/candlepin/upstream_consumer.rb +2 -0
  67. data/app/lib/katello/resources/cdn/katello_cdn.rb +68 -0
  68. data/app/lib/katello/resources/cdn.rb +61 -29
  69. data/app/lib/katello/resources/registry.rb +1 -1
  70. data/app/lib/katello/util/cdn_var_substitutor.rb +15 -9
  71. data/app/lib/katello/util/package.rb +22 -0
  72. data/app/lib/katello/util/path_with_substitutions.rb +12 -14
  73. data/app/models/katello/activation_key.rb +10 -0
  74. data/app/models/katello/ansible_collection.rb +1 -1
  75. data/app/models/katello/authorization/repository.rb +4 -4
  76. data/app/models/katello/candlepin/repository_mapper.rb +5 -1
  77. data/app/models/katello/cdn_configuration.rb +32 -0
  78. data/app/models/katello/concerns/content_facet_host_extensions.rb +40 -0
  79. data/app/models/katello/concerns/host_managed_extensions.rb +29 -3
  80. data/app/models/katello/concerns/hostgroup_extensions.rb +1 -1
  81. data/app/models/katello/concerns/organization_extensions.rb +3 -1
  82. data/app/models/katello/concerns/pulp_database_unit.rb +16 -6
  83. data/app/models/katello/concerns/remote_execution_provider_extensions.rb +9 -0
  84. data/app/models/katello/concerns/setting_extensions.rb +1 -1
  85. data/app/models/katello/concerns/smart_proxy_extensions.rb +9 -8
  86. data/app/models/katello/content_credential.rb +4 -0
  87. data/app/models/katello/content_facet_applicable_deb.rb +7 -0
  88. data/app/models/katello/content_view.rb +24 -1
  89. data/app/models/katello/content_view_component.rb +4 -0
  90. data/app/models/katello/content_view_erratum_filter.rb +2 -0
  91. data/app/models/katello/content_view_filter.rb +1 -1
  92. data/app/models/katello/content_view_package_filter_rule.rb +2 -1
  93. data/app/models/katello/content_view_version.rb +30 -1
  94. data/app/models/katello/deb.rb +71 -0
  95. data/app/models/katello/erratum.rb +13 -1
  96. data/app/models/katello/generic_content_unit.rb +3 -1
  97. data/app/models/katello/glue/pulp/repos.rb +2 -2
  98. data/app/models/katello/host/content_facet.rb +23 -2
  99. data/app/models/katello/host/subscription_facet.rb +1 -1
  100. data/app/models/katello/host_tracer.rb +21 -2
  101. data/app/models/katello/installed_deb.rb +1 -1
  102. data/app/models/katello/module_stream.rb +4 -0
  103. data/app/models/katello/ping.rb +20 -1
  104. data/app/models/katello/product.rb +7 -5
  105. data/app/models/katello/provider.rb +1 -24
  106. data/app/models/katello/repository.rb +33 -10
  107. data/app/models/katello/root_repository.rb +28 -14
  108. data/app/models/setting/content.rb +8 -13
  109. data/app/services/katello/applicability/applicable_content_helper.rb +20 -0
  110. data/app/services/katello/organization_creator.rb +12 -11
  111. data/app/services/katello/pulp3/api/ansible_collection.rb +0 -40
  112. data/app/services/katello/pulp3/api/apt.rb +0 -47
  113. data/app/services/katello/pulp3/api/content_guard.rb +1 -1
  114. data/app/services/katello/pulp3/api/core.rb +28 -23
  115. data/app/services/katello/pulp3/api/docker.rb +0 -50
  116. data/app/services/katello/pulp3/api/file.rb +0 -48
  117. data/app/services/katello/pulp3/api/generic.rb +1 -44
  118. data/app/services/katello/pulp3/api/yum.rb +4 -44
  119. data/app/services/katello/pulp3/erratum.rb +1 -9
  120. data/app/services/katello/pulp3/generic_content_unit.rb +8 -4
  121. data/app/services/katello/pulp3/repository/ansible_collection.rb +4 -0
  122. data/app/services/katello/pulp3/repository/apt.rb +3 -3
  123. data/app/services/katello/pulp3/repository/generic.rb +10 -65
  124. data/app/services/katello/pulp3/repository/yum.rb +10 -0
  125. data/app/services/katello/pulp3/repository.rb +51 -21
  126. data/app/services/katello/pulp3/repository_mirror.rb +18 -9
  127. data/app/services/katello/pulp3/rpm.rb +2 -32
  128. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +7 -8
  129. data/app/services/katello/pulp3/smart_proxy_repository.rb +1 -1
  130. data/app/services/katello/registration_manager.rb +2 -0
  131. data/app/services/katello/repository_type.rb +103 -15
  132. data/app/services/katello/repository_type_manager.rb +14 -8
  133. data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +1 -1
  134. data/app/services/katello/upstream_connection_checker.rb +1 -0
  135. data/app/views/foreman/job_templates/resolve_traces.erb +25 -0
  136. data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +28 -0
  137. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
  138. data/app/views/katello/api/v2/common/_metadata.json.rabl +1 -0
  139. data/app/views/katello/api/v2/content_facet/base.json.rabl +3 -1
  140. data/app/views/katello/api/v2/content_facet/show.json.rabl +2 -1
  141. data/app/views/katello/api/v2/content_view_components/show.json.rabl +4 -0
  142. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +7 -0
  143. data/app/views/katello/api/v2/content_views/base.json.rabl +12 -8
  144. data/app/views/katello/api/v2/content_views/index.json.rabl +1 -0
  145. data/app/views/katello/api/v2/content_views/permissions.rabl +8 -0
  146. data/app/views/katello/api/v2/debs/base.json.rabl +5 -0
  147. data/app/views/katello/api/v2/errata/index.json.rabl +4 -0
  148. data/app/views/katello/api/v2/generic_content_units/base.json.rabl +2 -0
  149. data/app/views/katello/api/v2/generic_content_units/show.json.rabl +7 -0
  150. data/app/views/katello/api/v2/host_tracer/base.json.rabl +1 -0
  151. data/app/views/katello/api/v2/module_streams/index.json.rabl +4 -0
  152. data/app/views/katello/api/v2/organizations/cdn_configuration.rabl +1 -0
  153. data/app/views/katello/api/v2/organizations/show.json.rabl +7 -0
  154. data/app/views/katello/api/v2/repositories/base.json.rabl +10 -17
  155. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +2 -6
  156. data/config/routes/api/v2.rb +13 -0
  157. data/config/routes/overrides.rb +2 -0
  158. data/config/routes.rb +14 -2
  159. data/db/migrate/20140110000001_update_environments_add_katello_id.rb +1 -3
  160. data/db/migrate/20140610154745_content_view_puppet_environment_id.rb +0 -35
  161. data/db/migrate/20190802112101_add_applicable_debs.rb +16 -0
  162. data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +2 -2
  163. data/db/migrate/20210331180353_katello_pool_organization_id_not_nullable.rb +0 -2
  164. data/db/migrate/20210909140337_add_last_indexed_to_repos.rb +5 -0
  165. data/db/migrate/20210910190324_move_background_settings_to_immediate.rb +25 -0
  166. data/db/migrate/20211006161617_add_filename_to_katello_generic_content_units.rb +5 -0
  167. data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +30 -0
  168. data/db/migrate/20211025181315_add_additional_metadata_to_katello_generic_content_units.rb +5 -0
  169. data/engines/bastion/README.md +15 -0
  170. data/engines/bastion/app/assets/javascripts/bastion/components/nutupane.factory.js +2 -2
  171. data/engines/bastion/config/routes.rb +2 -0
  172. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +3 -3
  173. data/engines/bastion/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +1 -1
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +3 -0
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/registration.html +1 -1
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-applicable.controller.js +44 -0
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs.controller.js +1 -1
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-applicable.html +70 -0
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs.html +1 -1
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +10 -0
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +5 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +25 -9
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +2 -2
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -9
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +22 -2
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.routes.js +1 -1
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb.controller.js +22 -2
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-content-views.html +1 -1
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +36 -4
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-repositories.html +1 -1
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb.html +4 -4
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/views/debs.html +31 -4
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/generic-content/generic-content.factory.js +21 -0
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/generic-content/generic-content.module.js +17 -0
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package.controller.js +4 -0
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +3 -3
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +6 -2
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +30 -2
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +1 -13
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +32 -9
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +15 -4
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +32 -19
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +28 -28
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-generic-content.html +57 -0
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +46 -4
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +57 -27
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.module.js +1 -0
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.routes.js +16 -7
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +30 -4
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +2 -1
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +8 -0
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-details-info.controller.js +6 -2
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
  214. data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -1
  215. data/lib/katello/engine.rb +0 -1
  216. data/lib/katello/permission_creator.rb +4 -3
  217. data/lib/katello/permissions/host_permissions.rb +1 -0
  218. data/lib/katello/permissions/organization_permissions.rb +2 -1
  219. data/lib/katello/plugin.rb +15 -11
  220. data/lib/katello/repository_types/ansible_collection.rb +13 -1
  221. data/lib/katello/repository_types/deb.rb +13 -0
  222. data/lib/katello/repository_types/docker.rb +13 -1
  223. data/lib/katello/repository_types/file.rb +13 -0
  224. data/lib/katello/repository_types/ostree.rb +48 -4
  225. data/lib/katello/repository_types/python.rb +26 -12
  226. data/lib/katello/repository_types/yum.rb +16 -1
  227. data/lib/katello/tasks/repository.rake +3 -12
  228. data/lib/katello/tasks/reset.rake +4 -5
  229. data/lib/katello/version.rb +1 -1
  230. data/package.json +3 -2
  231. data/webpack/__mocks__/react-intl/index.js +4 -0
  232. data/webpack/components/ActionableDetail.js +23 -3
  233. data/webpack/components/AddedStatusLabel.js +1 -1
  234. data/webpack/components/Bookmark/AddBookmarkModal.js +96 -0
  235. data/webpack/components/Bookmark/Bookmark.scss +28 -0
  236. data/webpack/components/Bookmark/BookmarkActions.js +24 -0
  237. data/webpack/components/Bookmark/BookmarkConstants.js +3 -0
  238. data/webpack/components/Bookmark/BookmarkSelectors.js +15 -0
  239. data/webpack/components/Bookmark/index.js +94 -0
  240. data/webpack/components/EditableSwitch.js +6 -1
  241. data/webpack/components/EditableTextInput/EditableTextInput.js +41 -13
  242. data/webpack/components/Errata/index.js +69 -0
  243. data/webpack/components/ErratumTypeLabel.js +31 -0
  244. data/webpack/components/Loading.js +5 -2
  245. data/webpack/components/RoutedTabs/__tests__/RoutedTabs.test.js +5 -11
  246. data/webpack/components/RoutedTabs/index.js +77 -2
  247. data/webpack/components/Search/Search.js +67 -80
  248. data/webpack/components/Search/__tests__/search.test.js +8 -26
  249. data/webpack/components/SelectAllCheckbox/SelectAllCheckbox.scss +3 -0
  250. data/webpack/components/SelectAllCheckbox/index.js +126 -0
  251. data/webpack/components/SelectableDropdown/SelectableDropdown.js +7 -2
  252. data/webpack/components/Table/EmptyStateMessage.js +38 -17
  253. data/webpack/components/Table/MainTable.js +49 -10
  254. data/webpack/components/Table/MainTable.scss +11 -0
  255. data/webpack/components/Table/PageControls.js +45 -0
  256. data/webpack/components/Table/TableHooks.js +230 -0
  257. data/webpack/components/Table/TableWrapper.js +221 -50
  258. data/webpack/components/Table/helpers.js +17 -0
  259. data/webpack/components/TypeAhead/TypeAhead.js +74 -58
  260. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +25 -10
  261. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.scss +9 -8
  262. data/webpack/components/TypeAhead/pf4Search/TypeAheadItems.js +2 -2
  263. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +32 -22
  264. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +101 -0
  265. data/webpack/components/extensions/HostDetails/Cards/__tests__/contentViewDetailsCard.test.js +53 -0
  266. data/webpack/components/extensions/HostDetails/HostErrata/HostErrataActions.js +47 -0
  267. data/webpack/components/extensions/HostDetails/HostErrata/HostErrataConstants.js +32 -0
  268. data/webpack/components/extensions/HostDetails/HostErrata/HostErrataSelectors.js +16 -0
  269. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/EmptyPage.js +19 -0
  270. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +17 -0
  271. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +7 -0
  272. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/helpers.js +3 -0
  273. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +40 -0
  274. data/webpack/components/extensions/HostDetails/Tabs/EnableTracerEmptyState.js +42 -0
  275. data/webpack/components/extensions/HostDetails/Tabs/EnableTracerModal.js +118 -0
  276. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.js +347 -0
  277. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.scss +16 -0
  278. data/webpack/components/extensions/HostDetails/Tabs/ErratumExpansionContents.js +60 -0
  279. data/webpack/components/extensions/HostDetails/Tabs/ErratumExpansionDetail.js +69 -0
  280. data/webpack/components/extensions/HostDetails/Tabs/HostTracesActions.js +19 -0
  281. data/webpack/components/extensions/HostDetails/Tabs/HostTracesConstants.js +2 -0
  282. data/webpack/components/extensions/HostDetails/Tabs/HostTracesSelectors.js +19 -0
  283. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +56 -0
  284. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +5 -0
  285. data/webpack/components/extensions/HostDetails/Tabs/TracesTab.js +188 -0
  286. data/webpack/components/extensions/HostDetails/Tabs/TracesTab.scss +12 -0
  287. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errata.fixtures.json +67 -0
  288. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +785 -0
  289. data/webpack/components/extensions/HostDetails/Tabs/__tests__/resolveTraces.fixtures.json +35 -0
  290. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracerEmptyTraceResults.fixtures.json +7 -0
  291. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracerEnableJobInvocation.fixtures.json +35 -0
  292. data/webpack/components/extensions/HostDetails/Tabs/__tests__/traces.fixtures.json +44 -0
  293. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +386 -0
  294. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +20 -0
  295. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
  296. data/webpack/components/extensions/RegistrationCommands/index.js +1 -1
  297. data/webpack/components/pf3Table/components/Table.js +1 -1
  298. data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +3 -3
  299. data/webpack/containers/Application/Routes.js +3 -3
  300. data/webpack/containers/Application/config.js +21 -6
  301. data/webpack/containers/Application/overrides.scss +34 -3
  302. data/webpack/{fills_index.js → global_index.js} +11 -2
  303. data/webpack/global_test_setup.js +6 -1
  304. data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -4
  305. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +1 -1
  306. data/webpack/scenes/Content/ContentActions.js +31 -0
  307. data/webpack/scenes/Content/ContentConfig.js +138 -0
  308. data/webpack/scenes/Content/ContentConstants.js +7 -0
  309. data/webpack/scenes/Content/ContentPage.js +89 -0
  310. data/webpack/scenes/Content/ContentSelectors.js +43 -0
  311. data/webpack/scenes/Content/Details/ContentCounts.js +42 -0
  312. data/webpack/scenes/Content/Details/ContentDetails.js +66 -0
  313. data/webpack/scenes/Content/Details/ContentInfo.js +60 -0
  314. data/webpack/scenes/Content/Details/ContentRepositories.js +78 -0
  315. data/webpack/scenes/Content/Details/__tests__/ansibleCollectionDetails.fixtures.json +20 -0
  316. data/webpack/scenes/Content/Details/__tests__/ansibleCollectionRepositoryDetails.fixtures.json +71 -0
  317. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +152 -0
  318. data/webpack/scenes/Content/Details/__tests__/pythonPackageDetails.fixtures.json +20 -0
  319. data/webpack/scenes/Content/Details/__tests__/pythonPackageRepositoryDetails.fixtures.json +71 -0
  320. data/webpack/scenes/Content/Details/index.js +4 -0
  321. data/webpack/scenes/Content/Table/ContentTable.js +90 -0
  322. data/webpack/scenes/Content/Table/index.js +3 -0
  323. data/webpack/scenes/Content/__tests__/ansibleCollections.fixtures.json +50 -0
  324. data/webpack/scenes/Content/__tests__/contentTable.test.js +89 -0
  325. data/webpack/scenes/Content/__tests__/contentTypes.fixtures.json +66 -0
  326. data/webpack/scenes/Content/__tests__/pythonPackages.fixtures.json +30 -0
  327. data/webpack/scenes/Content/index.js +4 -0
  328. data/webpack/scenes/ContentViews/ContentViewSelectors.js +5 -6
  329. data/webpack/scenes/ContentViews/ContentViewsActions.js +13 -8
  330. data/webpack/scenes/ContentViews/ContentViewsConstants.js +31 -4
  331. data/webpack/scenes/ContentViews/ContentViewsPage.js +4 -0
  332. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +19 -7
  333. data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +7 -5
  334. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +1 -1
  335. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +7 -3
  336. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +1 -2
  337. data/webpack/scenes/ContentViews/Delete/CVDeleteContext.js +4 -0
  338. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +170 -0
  339. data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +108 -0
  340. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +69 -0
  341. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +121 -0
  342. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +120 -0
  343. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +62 -0
  344. data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +4 -0
  345. data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +259 -0
  346. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +155 -0
  347. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +241 -0
  348. data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +248 -0
  349. data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +865 -0
  350. data/webpack/scenes/ContentViews/Delete/__tests__/envPathData.fixtures.json +424 -0
  351. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +15 -7
  352. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +123 -0
  353. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
  354. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentVersion.js +8 -5
  355. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +109 -51
  356. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.fixtures.json +21 -6
  357. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +80 -16
  358. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +248 -3
  359. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +141 -0
  360. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +36 -54
  361. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +20 -4
  362. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +63 -38
  363. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +3 -4
  364. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +65 -0
  365. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +260 -0
  366. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +54 -0
  367. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +202 -0
  368. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +291 -0
  369. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +441 -0
  370. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +62 -3
  371. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +302 -0
  372. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +186 -23
  373. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +144 -19
  374. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +2 -0
  375. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +44 -13
  376. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +81 -17
  377. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +43 -43
  378. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +96 -0
  379. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContent.fixtures.json +166 -0
  380. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +90 -0
  381. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentSearch.fixtures.json +33 -0
  382. data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +91 -0
  383. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +237 -0
  384. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.fixtures.json +42 -0
  385. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +265 -0
  386. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +218 -11
  387. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +517 -0
  388. data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterErrata.fixtures.json +122 -0
  389. data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterModulesStreams.fixtures.json +60 -0
  390. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +359 -0
  391. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetail.fixtures.json +88 -102
  392. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +34 -9
  393. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +148 -132
  394. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +25 -7
  395. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvAllRepos.fixtures.json +150 -0
  396. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +74 -0
  397. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +404 -0
  398. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +89 -0
  399. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +383 -0
  400. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +375 -0
  401. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +282 -0
  402. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +392 -0
  403. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +97 -0
  404. data/webpack/scenes/ContentViews/Details/Filters/index.js +26 -0
  405. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +68 -79
  406. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
  407. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +163 -0
  408. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromoteSelectors.js +16 -0
  409. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +9 -1
  410. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +88 -74
  411. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +8 -9
  412. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.fixtures.json +3 -3
  413. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +30 -9
  414. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
  415. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.js +9 -5
  416. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.scss +2 -2
  417. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +132 -14
  418. data/webpack/scenes/ContentViews/Details/Versions/Delete/DeleteContext.js +4 -0
  419. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +176 -0
  420. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +127 -0
  421. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +131 -0
  422. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +128 -0
  423. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +94 -0
  424. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +67 -0
  425. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedActivationKeys.fixture.json +53 -0
  426. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +153 -0
  427. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvDropDownOptionsResponse.fixture.json +192 -0
  428. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +313 -0
  429. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemoveResponse.fixture.json +74 -0
  430. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionRemoveEnvPaths.fixtures.json +352 -0
  431. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +583 -0
  432. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +96 -0
  433. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +97 -0
  434. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +332 -0
  435. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +128 -0
  436. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +44 -0
  437. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +66 -0
  438. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +125 -0
  439. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +115 -0
  440. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionAnsibleCollections.fixtures.json +449 -0
  441. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +753 -0
  442. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDebPackages.fixtures.json +58 -0
  443. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +158 -0
  444. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +289 -0
  445. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsCounts.fixtures.json +73 -0
  446. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +44 -0
  447. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDockerTags.fixtures.json +3024 -0
  448. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionErrata.fixtures.json +201 -0
  449. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionFiles.fixtures.json +22 -0
  450. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionModuleStreams.fixtures.json +196 -0
  451. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRepositories.fixtures.json +1000 -0
  452. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRpmPackageGroups.fixtures.json +44 -0
  453. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRpmPackages.fixtures.json +394 -0
  454. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +4 -4
  455. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +95 -26
  456. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +2 -2
  457. data/webpack/scenes/ContentViews/Details/Versions/index.js +25 -0
  458. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +20 -16
  459. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +3 -5
  460. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +106 -64
  461. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +25 -4
  462. data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -1
  463. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +4 -1
  464. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +29 -36
  465. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +10 -0
  466. data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +117 -0
  467. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +59 -0
  468. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +4 -3
  469. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +30 -11
  470. data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +1 -1
  471. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +38 -1
  472. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +79 -0
  473. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +107 -0
  474. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +59 -0
  475. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsResponse.fixtures.json +116 -0
  476. data/webpack/scenes/ContentViews/expansions/__tests__/relatedCompositeCvs.fixtures.json +4 -0
  477. data/webpack/scenes/ContentViews/helpers.js +1 -0
  478. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/RepositorySetRepository.js +1 -1
  479. data/webpack/scenes/RedHatRepositories/components/SearchBar.js +4 -3
  480. data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +1 -1
  481. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +17 -9
  482. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +3 -3
  483. data/webpack/test-utils/nockWrapper.js +20 -3
  484. data/webpack/utils/helpers.js +16 -2
  485. data/webpack/utils/useDebounce.js +20 -0
  486. metadata +232 -54
  487. data/app/assets/javascripts/katello/widgets/tabs.js +0 -13
  488. data/app/assets/stylesheets/katello/widgets/tabs.scss +0 -69
  489. data/app/lib/actions/katello/provider/update.rb +0 -38
  490. data/webpack/components/RoutedTabs/RoutedTabs.js +0 -90
  491. data/webpack/components/Search/Search.test.js +0 -23
  492. data/webpack/components/Search/__snapshots__/Search.test.js.snap +0 -21
  493. data/webpack/components/extensions/HostDetails/Tabs/ContentTab.js +0 -42
  494. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +0 -145
  495. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionPackages.js +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3cdba19f418c59dd75998081c306267defc02548958e1c48b38db4db29f2c633
4
- data.tar.gz: 96f3ff300309604144e935295d3d8f859f757a694cde91768f773a63dfde1106
3
+ metadata.gz: bf975eaf437422cc7622770087b3b996c0834bb4d0077de55ed4748670c888d2
4
+ data.tar.gz: a6fbabac90eeed02b2b4a404e1c2d8af1cb245c083daf5981e2471ca035157b5
5
5
  SHA512:
6
- metadata.gz: e793a484c717492274ee01345a14ccefb4ddad648a0db9b3615232a9b329f8681c1208ccabc21e382d7343bd5a812703db1a9840f59fe895bce42637a125c67f
7
- data.tar.gz: f9a960acb16529071412b353e79c392cb0c79d8cb4f5f001d67b8ddc64056c80d8e9fd51ead49fce0d8f04918063ee95f31856608ddcef013eb22a70cb827f20
6
+ metadata.gz: d349265901e8142d15ad6ee35fcf6045bec5cbc8197799b9f8b8fac3edbdb29433a40f774345118a86a598587b5656e04aa9f20263cdb81ed388c9f373414a55
7
+ data.tar.gz: ee28f705628e3ff302918e2bf30ba5a78addc92454937fe43fc34ed2f48b4388f1f1294c630899884afb0d6071bc9ec733843b52175c1af5ef90160759d0f814
@@ -21,73 +21,6 @@ KT.common = (function() {
21
21
  escapeId: function(myid) {
22
22
  return myid.replace(/([ #;&,.%+*~\':"!\^$\[\]()=>|\/])/g,'\\$1');
23
23
  },
24
- customConfirm : function (params) {
25
- var settings = {
26
- message: undefined,
27
- warning_message: undefined,
28
- yes_text: katelloI18n.yes,
29
- no_text: katelloI18n.no,
30
- yes_callback: function(){},
31
- no_callback: function(){},
32
- include_cancel: false
33
- },
34
- confirmTrue = true,
35
- confirmFalse = false;
36
-
37
- $.extend(settings, params);
38
-
39
- var message = "<div style='margin:20px;'><span class='status_confirm_icon'/><div style='margin-left: 24px; display:table;height:1%;'>" + settings.message + "</div></div>",
40
- warning_message = (settings.warning_message === undefined) ? undefined : "<div style='margin:20px;'><span class='icon-warning-sign'/><div style='margin-left: 24px; display:table;height:1%;color:red;'>" + settings.warning_message + "</div></div>",
41
- html = (warning_message === undefined) ? message : "<div>"+message+warning_message+"</div>",
42
- buttons = {
43
- "Yes": {
44
- click : function () {
45
- $(this).dialog("close");
46
- $(this).dialog("destroy");
47
- settings.yes_callback();
48
- return confirmTrue;
49
- },
50
- 'class' : 'button',
51
- 'text' : settings.yes_text
52
- },
53
- "No": {
54
- click:function () {
55
- $(this).dialog("close");
56
- $(this).dialog("destroy");
57
- settings.no_callback();
58
- return confirmFalse;
59
- },
60
- 'class' : 'button',
61
- 'text' : settings.no_text
62
- }
63
- };
64
-
65
- if(settings.include_cancel === true) {
66
- buttons["Cancel"] = {
67
- click:function () {
68
- $(this).dialog("close");
69
- $(this).dialog("destroy");
70
- return confirmFalse;
71
- },
72
- 'class' : 'button',
73
- 'text' : katelloI18n.cancel
74
- };
75
- }
76
-
77
- $(html).dialog({
78
- closeOnEscape: true,
79
- open: function (event, ui) {
80
- $('.ui-dialog-titlebar-close').hide();
81
- $('.confirmation').find('.ui-button')[1].focus();
82
- },
83
- modal: true,
84
- resizable: false,
85
- width: 450,
86
- title: katelloI18n.confirmation,
87
- dialogClass: "confirmation",
88
- buttons: buttons
89
- });
90
- },
91
24
  customAlert : function(message) {
92
25
  var html = "<div style='margin:20px;'><span class='status_exclamation_icon'/><div style='margin-left: 24px; display:table;height:1%;'>" + message + "</div></div>";
93
26
  $(html).dialog({
@@ -100,30 +100,6 @@ if(!Object.keys) {
100
100
  };
101
101
  }
102
102
 
103
-
104
- //override the jQuery UJS $.rails.allowAction
105
- $.rails.allowAction = function(element) {
106
- var message = element.data('confirm'),
107
- answer = false, callback;
108
- if (!message) { return true; }
109
-
110
- if ($.rails.fire(element, 'confirm')) {
111
- KT.common.customConfirm({
112
- message: message,
113
- yes_callback: function() {
114
- callback = $.rails.fire(element, 'confirm:complete', [answer]);
115
- if(callback) {
116
- var oldAllowAction = $.rails.allowAction;
117
- $.rails.allowAction = function() { return true; };
118
- element.trigger('click');
119
- $.rails.allowAction = oldAllowAction;
120
- }
121
- }
122
- });
123
- }
124
- return false;
125
- };
126
-
127
103
  //make jQuery Contains case insensitive
128
104
  $.expr[':'].Contains = function(a, i, m) {
129
105
  return $(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
@@ -267,7 +243,4 @@ $(window).ready(function(){
267
243
  });
268
244
 
269
245
  window.alert = function(message){KT.common.customAlert(message);return false;};
270
- $.rails.confirm = function(message) {
271
- KT.common.customConfirm({message: message}); return false;
272
- };
273
246
  });
@@ -1,6 +1,5 @@
1
1
  //= require "jquery-ui/widgets/dialog"
2
2
  //= require "jquery-ui/widgets/sortable"
3
- //= require "jquery-ui/widgets/tabs"
4
3
  //= require "jquery-ui/widgets/progressbar"
5
4
  //= require "jquery-ui/effect"
6
5
  //= require "jquery-ui/effect.all"
@@ -4,7 +4,6 @@
4
4
 
5
5
  @import "katello/fancyqueries";
6
6
  @import "katello/widgets/chosen";
7
- @import "katello/widgets/tabs";
8
7
  @import "katello/katello_sprites";
9
8
 
10
9
  @import "katello/contents";
@@ -3,6 +3,8 @@ module Katello
3
3
  class Api::Rhsm::CandlepinProxiesController < Api::V2::ApiController
4
4
  include Katello::Authentication::ClientAuthentication
5
5
 
6
+ IF_MODIFIED_SINCE_HEADER = 'If-Modified-Since'.freeze
7
+
6
8
  before_action :disable_strong_params
7
9
 
8
10
  wrap_parameters false
@@ -71,9 +73,15 @@ module Katello
71
73
  end
72
74
 
73
75
  def get
74
- r = Resources::Candlepin::Proxy.get(@request_path)
76
+ extra_headers = {}
77
+ modified_since = request.headers[IF_MODIFIED_SINCE_HEADER]
78
+ if modified_since.present?
79
+ extra_headers[IF_MODIFIED_SINCE_HEADER] = modified_since
80
+ end
81
+
82
+ r = Resources::Candlepin::Proxy.get(@request_path, extra_headers)
75
83
  logger.debug filter_sensitive_data(r)
76
- render :json => r
84
+ render :json => r, :status => r.code
77
85
  end
78
86
 
79
87
  def delete
@@ -94,7 +94,8 @@ module Katello
94
94
  query = self.final_custom_index_relation(query) if self.respond_to?(:final_custom_index_relation)
95
95
 
96
96
  query = query.select(group).group(group) if group
97
- sub_total = total.zero? ? 0 : scoped_search_total(query, group)
97
+ subtotal = total.zero? ? 0 : scoped_search_total(query, group)
98
+ selectable = total.zero? ? 0 : scoped_search_total_selectable(query, group)
98
99
 
99
100
  if options[:custom_sort]
100
101
  query = options[:custom_sort].call(query)
@@ -109,9 +110,20 @@ module Katello
109
110
  end
110
111
  page = params[:page] || 1
111
112
  per_page = params[:per_page] || Setting[:entries_per_page]
112
- query = (total.zero? || sub_total.zero?) ? blank_query : query
113
+ query = (total.zero? || subtotal.zero?) ? blank_query : query
113
114
 
114
- options[:csv] ? query : scoped_search_results(query, sub_total, total, page, per_page)
115
+ if options[:csv]
116
+ query
117
+ else
118
+ scoped_search_results(
119
+ query: query,
120
+ subtotal: subtotal,
121
+ total: total,
122
+ page: page,
123
+ per_page: per_page,
124
+ selectable: selectable
125
+ )
126
+ end
115
127
  rescue ScopedSearch::QueryNotSupported, ActiveRecord::StatementInvalid => error
116
128
  message = error.message
117
129
  if error.class == ActiveRecord::StatementInvalid
@@ -119,24 +131,38 @@ module Katello
119
131
  message = _('Your search query was invalid. Please revise it and try again. The full error has been sent to the application logs.')
120
132
  end
121
133
 
122
- scoped_search_results(blank_query, 0, 0, page, per_page, message)
134
+ scoped_search_results(query: blank_query, page: page, per_page: per_page, error: message)
123
135
  end
124
136
 
125
137
  protected
126
138
 
127
- def scoped_search_total(query, group)
139
+ def scoped_search_query(query, group)
128
140
  if group
129
- query.select(group).group(group).length
141
+ query.select(group).group(group)
142
+ else
143
+ query
144
+ end
145
+ end
146
+
147
+ def scoped_search_total(query, group)
148
+ scoped_search_query(query, group).length
149
+ end
150
+
151
+ def scoped_search_total_selectable(query, group)
152
+ q = scoped_search_query(query, group)
153
+ if self.respond_to?(:total_selectable, true)
154
+ total_selectable(q)
130
155
  else
131
- query.count
156
+ q.length
132
157
  end
133
158
  end
134
159
 
135
- def scoped_search_results(query, sub_total, total, page, per_page, error = nil)
160
+ def scoped_search_results(query:, subtotal: 0, total: 0, page: 0, per_page: 0, error: nil, selectable: nil)
136
161
  {
137
162
  :results => query,
138
- :subtotal => sub_total,
163
+ :subtotal => subtotal,
139
164
  :total => total,
165
+ :selectable => selectable.blank? ? total : selectable,
140
166
  :page => page,
141
167
  :per_page => per_page,
142
168
  :error => error
@@ -51,13 +51,19 @@ module Katello
51
51
  api :POST, '/capsules/:id/content/sync', N_('Synchronize the content to the smart proxy')
52
52
  param :id, Integer, :desc => N_('Id of the smart proxy'), :required => true
53
53
  param :environment_id, Integer, :desc => N_('Id of the environment to limit the synchronization on')
54
+ param :content_view_id, Integer, :desc => N_('Id of the content view to limit the synchronization on')
55
+ param :repository_id, Integer, :desc => N_('Id of the repository to limit the synchronization on')
54
56
  param :skip_metadata_check, :bool, :desc => N_('Skip metadata check on each repository on the smart proxy')
55
57
  def sync
56
58
  find_environment if params[:environment_id]
59
+ find_content_view if params[:content_view_id]
60
+ find_repository if params[:repository_id]
57
61
  skip_metadata_check = ::Foreman::Cast.to_bool(params[:skip_metadata_check])
58
62
  task = async_task(::Actions::Katello::CapsuleContent::Sync,
59
63
  @capsule,
60
64
  :environment_id => @environment.try(:id),
65
+ :content_view_id => @content_view.try(:id),
66
+ :repository_id => @repository.try(:id),
61
67
  :skip_metadata_check => skip_metadata_check)
62
68
  respond_for_async :resource => task
63
69
  end
@@ -94,14 +100,14 @@ module Katello
94
100
  def find_editable_capsule
95
101
  @capsule = SmartProxy.unscoped.authorized(:manage_capsule_content).find(params[:id])
96
102
  unless @capsule&.pulp_mirror?
97
- fail _("This request may only be performed on a Smart proxy that has the Pulp Node feature.")
103
+ fail _("This request may only be performed on a Smart proxy that has the Pulpcore feature with mirror=true.")
98
104
  end
99
105
  end
100
106
 
101
107
  def find_capsule
102
108
  @capsule = SmartProxy.unscoped.authorized(:view_capsule_content).find(params[:id])
103
109
  unless @capsule&.pulp_mirror?
104
- fail _("This request may only be performed on a Smart proxy that has the Pulp Node feature.")
110
+ fail _("This request may only be performed on a Smart proxy that has the Pulpcore feature with mirror=true.")
105
111
  end
106
112
  end
107
113
 
@@ -109,6 +115,14 @@ module Katello
109
115
  @environment = Katello::KTEnvironment.readable.find(params[:environment_id])
110
116
  end
111
117
 
118
+ def find_content_view
119
+ @content_view = Katello::ContentView.readable.find(params[:content_view_id])
120
+ end
121
+
122
+ def find_repository
123
+ @repository = Katello::Repository.readable.find(params[:repository_id])
124
+ end
125
+
112
126
  def smart_proxy_service
113
127
  Pulp::SmartProxyRepository.new(@capsule)
114
128
  end
@@ -46,9 +46,17 @@ module Katello
46
46
  order_query = <<-SQL
47
47
  CAST (#{kcc}.composite_content_view_id as BOOLEAN) ASC, #{kc}.name
48
48
  SQL
49
-
50
49
  query = Katello::ContentView.readable.in_organization(@organization)
51
50
  query = query&.non_composite&.non_default
51
+ component_cv_ids = Katello::ContentViewComponent.where(composite_content_view_id: @view.id).select(:content_view_id)
52
+ query = case params[:status]
53
+ when "Not added"
54
+ query.where.not(id: component_cv_ids)
55
+ when "Added"
56
+ query.where(id: component_cv_ids)
57
+ else
58
+ query
59
+ end
52
60
  custom_sort = ->(sort_query) { sort_query.joins(join_query).order(order_query) }
53
61
  options = { resource_class: Katello::ContentView, custom_sort: custom_sort }
54
62
  collection = scoped_search(query, nil, nil, options)
@@ -134,6 +142,19 @@ module Katello
134
142
 
135
143
  private
136
144
 
145
+ def get_total(status)
146
+ case status
147
+ when 'All'
148
+ return Katello::ContentView.non_default.non_composite.in_organization(@organization).count
149
+ when 'Added'
150
+ return Katello::ContentViewComponent.where(composite_content_view_id: @view.id).count
151
+ when 'Not added'
152
+ return Katello::ContentView.non_default.non_composite.in_organization(@organization).count - Katello::ContentViewComponent.where(composite_content_view_id: @view.id).count
153
+ else
154
+ return Katello::ContentView.non_default.non_composite.in_organization(@organization).count
155
+ end
156
+ end
157
+
137
158
  def find_composite_content_view
138
159
  @view = ContentView.composite.non_default.readable.find_by(id: params[:composite_content_view_id])
139
160
  throw_resource_not_found(name: 'composite content view', id: params[:composite_content_view_id]) if @view.nil?
@@ -34,7 +34,7 @@ module Katello
34
34
  api :post, "/content_view_filters", N_("create a filter for a content view")
35
35
  param :content_view_id, :number, :desc => N_("content view identifier"), :required => true
36
36
  param :name, String, :desc => N_("name of the filter"), :required => true
37
- param :type, String, :desc => N_("type of filter (e.g. rpm, package_group, erratum, docker, modulemd)"), :required => true
37
+ param :type, String, :desc => N_("type of filter (e.g. rpm, package_group, erratum, erratum_id, erratum_date, docker, modulemd)"), :required => true
38
38
  param :original_packages, :bool, :desc => N_("add all packages without errata to the included/excluded list. " \
39
39
  "(package filter only)")
40
40
  param :original_module_streams, :bool, :desc => N_("add all module streams without errata to the included/excluded list. " \
@@ -43,6 +43,7 @@ module Katello
43
43
  param :repository_ids, Array, :desc => N_("list of repository ids")
44
44
  param :description, String, :desc => N_("description of the filter")
45
45
  def create
46
+ params[:type] = "erratum" if (params[:type] == "erratum_date" || params[:type] == "erratum_id")
46
47
  filter = ContentViewFilter.create_for(params[:type], filter_params.merge(:content_view => @view))
47
48
  respond :resource => filter
48
49
  end
@@ -82,6 +83,63 @@ module Katello
82
83
  respond_for_show :resource => @filter
83
84
  end
84
85
 
86
+ api :put, "/content_views/:content_view_id/filters/:id/remove_filter_rules", N_("bulk delete filter rules")
87
+ api :put, "/content_view_filters/:id/remove_filter_rules", N_("bulk delete filter rules")
88
+ param :content_view_id, :number, :desc => N_("content view identifier")
89
+ param :id, :number, :desc => N_("filter identifier"), :required => true
90
+ param :rule_ids, Array, of: :number, :desc => N_("filter identifiers"), :required => true
91
+ def remove_filter_rules
92
+ rule_clazz = ContentViewFilter.rule_class_for(@filter)
93
+ rule_clazz.where(id: params[:rule_ids]).try(:destroy_all)
94
+ respond_for_show(resource: @filter)
95
+ end
96
+
97
+ api :put, "/content_views/:content_view_id/filters/:id/add_filter_rules", N_("bulk add filter rules")
98
+ api :put, "/content_view_filters/:id/add_filter_rules", N_("bulk add filter rules")
99
+ param :content_view_id, :number, :desc => N_("content view identifier")
100
+ param :id, :number, :desc => N_("filter identifier"), :required => true
101
+ param :rules_params, Array, :desc => N_("Rules to be added"), :required => false do
102
+ param :name, Array, of: [String], :desc => N_("package, package group, or docker tag names")
103
+ param :uuid, String, :desc => N_("package group: uuid")
104
+ param :version, String, :desc => N_("package: version")
105
+ param :architecture, String, :desc => N_("package: architecture")
106
+ param :min_version, String, :desc => N_("package: minimum version")
107
+ param :max_version, String, :desc => N_("package: maximum version")
108
+ param :errata_id, String, :desc => N_("erratum: id")
109
+ param :errata_ids, Array, :desc => N_("erratum: IDs or a select all object")
110
+ param :start_date, String, :desc => N_("erratum: start date (YYYY-MM-DD)")
111
+ param :end_date, String, :desc => N_("erratum: end date (YYYY-MM-DD)")
112
+ param :types, Array, :desc => N_("erratum: types (enhancement, bugfix, security)")
113
+ param :date_type, String, :desc => N_("erratum: search using the 'Issued On' or 'Updated On' column of the errata. Values are 'issued'/'updated'")
114
+ param :module_stream_ids, Array, :desc => N_("module stream ids")
115
+ end
116
+ def add_filter_rules
117
+ rule_clazz = ContentViewFilter.rule_class_for(@filter)
118
+ rules = []
119
+ rules_params[:rules_params].each do |rule_params|
120
+ rules = (rule_params[:name] || []).map do |name|
121
+ rule_clazz.create!(rule_params.except(:name).merge(:filter => @filter, name: name))
122
+ end
123
+
124
+ rules += (rule_params[:errata_ids] || []).map do |errata_id|
125
+ rule_clazz.create!(rule_params.except(:errata_ids)
126
+ .merge(filter: @filter, errata_id: errata_id))
127
+ end
128
+ if rule_params[:module_stream_ids]
129
+ rules += (rule_params[:module_stream_ids] || []).map do |module_stream_id|
130
+ rule_clazz.create!(rule_params.except(:module_stream_ids)
131
+ .merge(filter: @filter, module_stream_id: module_stream_id))
132
+ end
133
+ end
134
+
135
+ if rules.empty?
136
+ rules = [rule_clazz.create!(rule_params.merge(:filter => @filter))]
137
+ end
138
+ end
139
+
140
+ respond_for_show(resource: @filter)
141
+ end
142
+
85
143
  private
86
144
 
87
145
  def find_readable_content_view
@@ -110,5 +168,11 @@ module Katello
110
168
  def filter_params
111
169
  params.require(:content_view_filter).permit(:name, :inclusion, :original_packages, :original_module_streams, :description, :repository_ids => [])
112
170
  end
171
+
172
+ def rules_params
173
+ params.permit(:id, :content_view_id, :rules_params => [:uuid, :version, :min_version, :max_version, :architecture,
174
+ :errata_id, :start_date, :end_date, :date_type,
175
+ :types => [], :module_stream_ids => [], :errata_ids => [], name: []])
176
+ end
113
177
  end
114
178
  end
@@ -64,7 +64,7 @@ module Katello
64
64
  param :id, :number, :desc => N_("Content view version identifier"), :required => true
65
65
  param :description, String, :desc => N_("The description for the content view version"), :required => true
66
66
  def update
67
- history = @content_view_version.history.publish.successful.first
67
+ history = @content_view_version.history.publish.first
68
68
  if history.blank?
69
69
  fail HttpErrors::BadRequest, _("This content view version doesn't have a history.")
70
70
  else
@@ -76,7 +76,11 @@ module Katello
76
76
 
77
77
  api :PUT, "/content_view_versions/:id/republish_repositories", N_("Forces a republish of the version's repositories' metadata")
78
78
  param :id, :number, :desc => N_("Content view version identifier"), :required => true
79
+ param :force, :bool, :desc => N_("Force metadata regeneration to proceed. Dangerous when repositories use mirror on sync."), :required => true
79
80
  def republish_repositories
81
+ unless ::Foreman::Cast.to_bool(params[:force])
82
+ fail HttpErrors::BadRequest, _("Metadata republishing must be forced because it is a dangerous operation.")
83
+ end
80
84
  task = async_task(::Actions::Katello::ContentViewVersion::RepublishRepositories, @content_view_version)
81
85
  respond_for_async :resource => task
82
86
  end
@@ -145,13 +145,19 @@ module Katello
145
145
  param :system_environment_id, :number, :desc => N_("environment to reassign orphaned systems to")
146
146
  param :key_content_view_id, :number, :desc => N_("content view to reassign orphaned activation keys to")
147
147
  param :key_environment_id, :number, :desc => N_("environment to reassign orphaned activation keys to")
148
+ param :destroy_content_view, :boolean, :desc => N_("delete the content view with all the versions and environments")
148
149
  def remove
149
- cv_envs = ContentViewEnvironment.where(:environment_id => params[:environment_ids],
150
- :content_view_id => params[:id]
151
- )
152
- versions = @content_view.versions.where(:id => params[:content_view_version_ids])
150
+ if params[:destroy_content_view]
151
+ cv_envs = @content_view.content_view_environments
152
+ versions = @content_view.versions
153
+ else
154
+ cv_envs = ContentViewEnvironment.where(:environment_id => params[:environment_ids],
155
+ :content_view_id => params[:id]
156
+ )
157
+ versions = @content_view.versions.where(:id => params[:content_view_version_ids])
158
+ end
153
159
 
154
- if cv_envs.empty? && versions.empty?
160
+ if !params[:destroy_content_view] && cv_envs.empty? && versions.empty?
155
161
  fail _("There either were no environments nor versions specified or there were invalid environments/versions specified. "\
156
162
  "Please check environment_ids and content_view_version_ids parameters.")
157
163
  end
@@ -159,7 +165,8 @@ module Katello
159
165
  options = params.slice(:system_content_view_id,
160
166
  :system_environment_id,
161
167
  :key_content_view_id,
162
- :key_environment_id
168
+ :key_environment_id,
169
+ :destroy_content_view
163
170
  ).reject { |_k, v| v.nil? }.to_unsafe_h
164
171
  options[:content_view_versions] = versions
165
172
  options[:content_view_environments] = cv_envs
@@ -2,16 +2,89 @@ module Katello
2
2
  class Api::V2::DebsController < Api::V2::ApiController
3
3
  resource_description do
4
4
  name 'Deb Packages'
5
+ resource_id 'debs'
5
6
  end
6
- apipie_concern_subst(:a_resource => N_("a deb"), :resource => "debs")
7
+ apipie_concern_subst(:a_resource => N_("a deb package"), :resource => "deb packages")
7
8
  include Katello::Concerns::Api::V2::RepositoryContentController
8
9
 
10
+ before_action :find_repositories, :only => [:auto_complete_name, :auto_complete_arch]
11
+ before_action :find_hosts, :only => :index
12
+
13
+ def auto_complete_name
14
+ page_size = Katello::Concerns::FilteredAutoCompleteSearch::PAGE_SIZE
15
+ debs = Deb.in_repositories(@repositories)
16
+ col = "#{Deb.table_name}.name"
17
+ debs = debs.where("#{Deb.table_name}.name ILIKE ?", "#{params[:term]}%").select(col).group(col).order(col).limit(page_size)
18
+ render :json => debs.pluck(col)
19
+ end
20
+
21
+ def auto_complete_arch
22
+ page_size = Katello::Concerns::FilteredAutoCompleteSearch::PAGE_SIZE
23
+ debs = Deb.in_repositories(@repositories)
24
+ col = "#{Deb.table_name}.architecture"
25
+ debs = debs.where("#{col} ILIKE ?", "%#{params[:term]}%").select(col).group(col).order(col).limit(page_size)
26
+ render :json => debs.pluck(col)
27
+ end
28
+
29
+ api :GET, "/debs", N_("List deb packages")
30
+ api :GET, "/content_views/:content_view_id/filters/:filter_id/debs", N_("List deb packages")
31
+ api :GET, "/content_view_filters/:content_view_filter_id/debs", N_("List deb packages")
32
+ api :GET, "/repositories/:repository_id/debs", N_("List deb packages")
33
+ param :organization_id, :number, :desc => N_("Organization identifier")
34
+ param :content_view_version_id, :number, :desc => N_("Content View Version identifier")
35
+ param :content_view_filter_id, :number, :desc => N_("Content View Filter identifier")
36
+ param :repository_id, :number, :desc => N_("Repository identifier")
37
+ param :environment_id, :number, :desc => N_("Environment identifier")
38
+ param :ids, Array, :desc => N_("Deb package identifiers to filter content by")
39
+ param :host_id, :number, :desc => N_("Host id to list applicable deb packages for")
40
+ param :packages_restrict_applicable, :boolean, :desc => N_("Return deb packages that are applicable to one or more hosts (defaults to true if host_id is specified)")
41
+ param :packages_restrict_upgradable, :boolean, :desc => N_("Return deb packages that are upgradable on one or more hosts")
42
+ param :available_for, String, :desc => N_("Return deb packages that can be added to the specified object. Only the value 'content_view_version' is supported.")
43
+ param_group :search, ::Katello::Api::V2::ApiController
44
+ def index
45
+ super
46
+ end
47
+
9
48
  def default_sort
10
49
  %w(name asc)
11
50
  end
12
51
 
52
+ def available_for_content_view_version(version)
53
+ version.available_debs
54
+ end
55
+
56
+ def custom_index_relation(collection)
57
+ applicable = ::Foreman::Cast.to_bool(params[:packages_restrict_applicable]) || params[:host_id]
58
+ upgradable = ::Foreman::Cast.to_bool(params[:packages_restrict_upgradable])
59
+
60
+ if upgradable
61
+ collection = collection.installable_for_hosts(@hosts)
62
+ elsif applicable
63
+ collection = collection.applicable_to_hosts(@hosts)
64
+ end
65
+
66
+ collection
67
+ end
68
+
13
69
  private
14
70
 
71
+ def find_hosts
72
+ @hosts = ::Host::Managed.authorized("view_hosts")
73
+ if params[:host_id]
74
+ @hosts = @hosts.where(:id => params[:host_id])
75
+ fail HttpErrors::NotFound, _('Could not find a host with id %s') % params[:host_id] if @hosts.empty?
76
+ end
77
+ @hosts = @hosts.where(:organization_id => params[:organization_id]) if params[:organization_id]
78
+ end
79
+
80
+ def find_repositories
81
+ @repositories = Repository.readable.where(:id => params[:repoids])
82
+ end
83
+
84
+ def resource_class
85
+ Katello::Deb
86
+ end
87
+
15
88
  def repo_association
16
89
  :repository_id
17
90
  end
@@ -31,19 +31,13 @@ module Katello
31
31
  collection = filter_by_content_view(filter, collection)
32
32
  ids = Katello::ContentViewErratumFilterRule.where(:content_view_filter_id => filter.id).pluck("errata_id")
33
33
  collection = collection.where("errata_id not in (?)", ids) unless ids.empty?
34
-
35
- date_type = params[:date_type].present? ? params[:date_type] : ContentViewErratumFilterRule::UPDATED
36
- unless ContentViewErratumFilterRule::DATE_TYPES.include?(date_type)
37
- msg = _("Invalid params provided - date_type must be one of %s" % ContentViewErratumFilterRule::DATE_TYPES.join(","))
38
- fail HttpErrors::UnprocessableEntity, msg
39
- end
40
-
41
- collection = collection.where("#{date_type} >= ?", params[:start_date]) if params[:start_date]
42
- collection = collection.where("#{date_type} <= ?", params[:end_date]) if params[:end_date]
43
- collection = collection.of_type(params[:types]) if params[:types]
44
34
  collection
45
35
  end
46
36
 
37
+ def all_for_content_view_filter(filter, _collection)
38
+ Erratum.joins(:repositories).merge(filter.applicable_repos)
39
+ end
40
+
47
41
  def custom_index_relation(collection)
48
42
  collection = filter_by_cve(params[:cve], collection) if params[:cve]
49
43
  applicable = ::Foreman::Cast.to_bool(params[:errata_restrict_applicable]) || @host
@@ -57,6 +51,15 @@ module Katello
57
51
  collection = collection.applicable_to_hosts(hosts)
58
52
  end
59
53
  end
54
+ date_type = params[:date_type].present? ? params[:date_type] : ContentViewErratumFilterRule::UPDATED
55
+ unless ContentViewErratumFilterRule::DATE_TYPES.include?(date_type)
56
+ msg = _("Invalid params provided - date_type must be one of %s" % ContentViewErratumFilterRule::DATE_TYPES.join(","))
57
+ fail HttpErrors::UnprocessableEntity, msg
58
+ end
59
+
60
+ collection = collection.where("#{date_type} >= ?", params[:start_date]) if params[:start_date]
61
+ collection = collection.where("#{date_type} <= ?", params[:end_date]) if params[:end_date]
62
+ collection = collection.of_type(params[:types]) if params[:types]
60
63
  collection
61
64
  end
62
65
 
@@ -1,5 +1,6 @@
1
1
  module Katello
2
2
  class Api::V2::FileUnitsController < Api::V2::ApiController
3
+ include Katello::Concerns::FilteredAutoCompleteSearch
3
4
  resource_description do
4
5
  name 'Files'
5
6
  end
@@ -1,6 +1,6 @@
1
1
  module Katello
2
2
  class Api::V2::GenericContentUnitsController < Api::V2::ApiController
3
- Katello::RepositoryTypeManager.generic_content_types(enabled_only: false).each do |type|
3
+ Katello::RepositoryTypeManager.generic_content_types(false).each do |type|
4
4
  apipie_concern_subst(:a_resource => N_(type), :resource_id => type.pluralize)
5
5
  resource_description do
6
6
  name type.pluralize.titleize