katello 4.0.0 → 4.1.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 (554) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +0 -33
  3. data/app/assets/stylesheets/katello/contents.scss +1 -1
  4. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +10 -18
  5. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +2 -9
  6. data/app/controllers/katello/api/v2/activation_keys_controller.rb +10 -24
  7. data/app/controllers/katello/api/v2/api_controller.rb +15 -3
  8. data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -1
  9. data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +1 -8
  10. data/app/controllers/katello/api/v2/content_exports_controller.rb +1 -14
  11. data/app/controllers/katello/api/v2/content_imports_controller.rb +38 -15
  12. data/app/controllers/katello/api/v2/content_uploads_controller.rb +1 -1
  13. data/app/controllers/katello/api/v2/content_view_components_controller.rb +22 -1
  14. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +6 -1
  15. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +2 -59
  16. data/app/controllers/katello/api/v2/content_views_controller.rb +3 -58
  17. data/app/controllers/katello/api/v2/host_errata_controller.rb +7 -6
  18. data/app/controllers/katello/api/v2/host_packages_controller.rb +4 -4
  19. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +18 -22
  20. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +16 -16
  21. data/app/controllers/katello/api/v2/organizations_controller.rb +2 -1
  22. data/app/controllers/katello/api/v2/package_groups_controller.rb +4 -0
  23. data/app/controllers/katello/api/v2/repositories_controller.rb +17 -15
  24. data/app/controllers/katello/api/v2/repository_sets_controller.rb +50 -4
  25. data/app/controllers/katello/api/v2/subscriptions_controller.rb +7 -1
  26. data/app/controllers/katello/concerns/api/api_controller.rb +10 -0
  27. data/app/controllers/katello/concerns/api/v2/registration_commands_controller_extensions.rb +46 -0
  28. data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +8 -0
  29. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +31 -22
  30. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +0 -8
  31. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +1 -1
  32. data/app/controllers/katello/concerns/registration_commands_controller_extensions.rb +34 -0
  33. data/app/helpers/katello/katello_urls_helper.rb +23 -0
  34. data/app/lib/actions/candlepin/owner/import.rb +10 -3
  35. data/app/lib/actions/candlepin/product/content_update.rb +1 -1
  36. data/app/lib/actions/foreman/environment/destroy.rb +2 -2
  37. data/app/lib/actions/katello/agent_action.rb +20 -16
  38. data/app/lib/actions/katello/bulk_agent_action.rb +18 -5
  39. data/app/lib/actions/katello/capsule_content/refresh_repos.rb +0 -7
  40. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +45 -8
  41. data/app/lib/actions/katello/content_view/add_to_environment.rb +9 -7
  42. data/app/lib/actions/katello/content_view/incremental_updates.rb +3 -10
  43. data/app/lib/actions/katello/content_view/presenters/incremental_updates_presenter.rb +2 -3
  44. data/app/lib/actions/katello/content_view/promote.rb +25 -0
  45. data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -4
  46. data/app/lib/actions/katello/content_view/publish.rb +42 -23
  47. data/app/lib/actions/katello/content_view_environment/destroy.rb +0 -5
  48. data/app/lib/actions/katello/content_view_version/auto_create_products.rb +22 -0
  49. data/app/lib/actions/katello/content_view_version/auto_create_repositories.rb +22 -0
  50. data/app/lib/actions/katello/content_view_version/destroy.rb +0 -10
  51. data/app/lib/actions/katello/content_view_version/export.rb +20 -22
  52. data/app/lib/actions/katello/content_view_version/import.rb +27 -13
  53. data/app/lib/actions/katello/content_view_version/import_library.rb +4 -2
  54. data/app/lib/actions/katello/content_view_version/incremental_update.rb +4 -57
  55. data/app/lib/actions/katello/content_view_version/republish_repositories.rb +0 -4
  56. data/app/lib/actions/katello/content_view_version/reset_content_view_repositories_from_metadata.rb +11 -0
  57. data/app/lib/actions/katello/foreman/content_update.rb +0 -3
  58. data/app/lib/actions/katello/host/auto_attach_subscriptions.rb +0 -4
  59. data/app/lib/actions/katello/jail_concern/content_view.rb +30 -0
  60. data/app/lib/actions/katello/jail_concern/organization.rb +30 -0
  61. data/app/lib/actions/katello/organization/manifest_import.rb +7 -1
  62. data/app/lib/actions/katello/organization/manifest_refresh.rb +28 -7
  63. data/app/lib/actions/katello/product/create.rb +0 -1
  64. data/app/lib/actions/katello/repository/destroy.rb +1 -1
  65. data/app/lib/actions/katello/repository/discover.rb +1 -1
  66. data/app/lib/actions/katello/repository/filtered_index_content.rb +1 -4
  67. data/app/lib/actions/katello/repository/import_upload.rb +0 -1
  68. data/app/lib/actions/katello/repository/sync.rb +59 -0
  69. data/app/lib/actions/katello/repository/update.rb +0 -1
  70. data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +0 -5
  71. data/app/lib/actions/pulp/repository/create.rb +1 -7
  72. data/app/lib/actions/pulp/repository/distributor_publish.rb +2 -10
  73. data/app/lib/actions/pulp/repository/sync.rb +1 -3
  74. data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +57 -0
  75. data/app/lib/actions/pulp3/content_view_version/create_import_history.rb +34 -0
  76. data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +2 -3
  77. data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +34 -51
  78. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +2 -2
  79. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +13 -1
  80. data/app/lib/actions/pulp3/orchestration/repository/sync.rb +1 -0
  81. data/app/lib/actions/pulp3/repository/refresh_remote.rb +17 -0
  82. data/app/lib/katello/agent/client_message_handler.rb +1 -0
  83. data/app/lib/katello/concerns/base_template_scope_extensions.rb +117 -3
  84. data/app/lib/katello/errors.rb +5 -10
  85. data/app/lib/katello/event_daemon/runner.rb +2 -2
  86. data/app/lib/katello/http_resource.rb +1 -6
  87. data/app/lib/katello/logging.rb +11 -6
  88. data/app/lib/katello/repo_discovery.rb +15 -1
  89. data/app/lib/katello/resources/candlepin.rb +10 -0
  90. data/app/lib/katello/resources/candlepin/owner.rb +3 -2
  91. data/app/lib/katello/resources/candlepin/pool.rb +6 -2
  92. data/app/lib/katello/util/package.rb +1 -1
  93. data/app/lib/katello/util/pulpcore_content_filters.rb +1 -1
  94. data/app/lib/katello/validators/hostgroup_kickstart_repository_validator.rb +0 -6
  95. data/app/models/katello/agent/dispatch_history.rb +2 -0
  96. data/app/models/katello/authorization/content_view.rb +20 -0
  97. data/app/models/katello/authorization/content_view_version_import_history.rb +11 -0
  98. data/app/models/katello/authorization/repository.rb +18 -0
  99. data/app/models/katello/concerns/content_facet_host_extensions.rb +1 -1
  100. data/app/models/katello/concerns/content_view_filter_rule_common.rb +2 -2
  101. data/app/models/katello/concerns/host_managed_extensions.rb +0 -18
  102. data/app/models/katello/concerns/hostgroup_extensions.rb +0 -5
  103. data/app/models/katello/concerns/http_proxy_extensions.rb +2 -4
  104. data/app/models/katello/concerns/location_extensions.rb +2 -25
  105. data/app/models/katello/concerns/operatingsystem_extensions.rb +0 -2
  106. data/app/models/katello/concerns/organization_extensions.rb +4 -18
  107. data/app/models/katello/concerns/redhat_extensions.rb +5 -8
  108. data/app/models/katello/concerns/smart_proxy_extensions.rb +16 -18
  109. data/app/models/katello/content_view.rb +30 -120
  110. data/app/models/katello/content_view_component.rb +5 -0
  111. data/app/models/katello/content_view_docker_filter_rule.rb +1 -0
  112. data/app/models/katello/content_view_package_filter_rule.rb +4 -0
  113. data/app/models/katello/content_view_package_group_filter.rb +1 -0
  114. data/app/models/katello/content_view_repository.rb +4 -5
  115. data/app/models/katello/content_view_version.rb +9 -33
  116. data/app/models/katello/content_view_version_export_history.rb +18 -4
  117. data/app/models/katello/content_view_version_import_history.rb +42 -0
  118. data/app/models/katello/erratum.rb +1 -1
  119. data/app/models/katello/events/delete_pool.rb +19 -0
  120. data/app/models/katello/glue/candlepin/environment.rb +7 -0
  121. data/app/models/katello/glue/candlepin/owner.rb +12 -1
  122. data/app/models/katello/glue/candlepin/pool.rb +42 -25
  123. data/app/models/katello/glue/provider.rb +3 -6
  124. data/app/models/katello/glue/pulp/repo.rb +0 -9
  125. data/app/models/katello/host/content_facet.rb +1 -0
  126. data/app/models/katello/host/subscription_facet.rb +3 -1
  127. data/app/models/katello/kt_environment.rb +0 -6
  128. data/app/models/katello/package_group.rb +4 -0
  129. data/app/models/katello/ping.rb +7 -3
  130. data/app/models/katello/pool.rb +9 -0
  131. data/app/models/katello/product.rb +0 -6
  132. data/app/models/katello/product_content.rb +3 -1
  133. data/app/models/katello/pulp_sync_status.rb +0 -10
  134. data/app/models/katello/repository.rb +22 -23
  135. data/app/models/katello/root_repository.rb +1 -6
  136. data/app/models/katello/subscription.rb +10 -0
  137. data/app/models/katello/sync_plan.rb +7 -0
  138. data/app/models/setting/content.rb +7 -8
  139. data/app/presenters/katello/content_view_version_compare_presenter.rb +2 -6
  140. data/app/presenters/katello/product_content_presenter.rb +3 -5
  141. data/app/services/cert/certs.rb +3 -3
  142. data/app/services/katello/agent/dispatcher.rb +18 -24
  143. data/app/services/katello/applicability/applicable_content_helper.rb +8 -6
  144. data/app/services/katello/candlepin/event_handler.rb +22 -22
  145. data/app/services/katello/candlepin/message_handler.rb +24 -15
  146. data/app/services/katello/content_view_manager.rb +24 -0
  147. data/app/services/katello/event_monitor/poller_thread.rb +25 -20
  148. data/app/services/katello/managed_content_medium_provider.rb +7 -3
  149. data/app/services/katello/organization_creator.rb +120 -0
  150. data/app/services/katello/product_content_finder.rb +5 -1
  151. data/app/services/katello/pulp/pulp_content_unit.rb +6 -6
  152. data/app/services/katello/pulp/smart_proxy_repository.rb +2 -17
  153. data/app/services/katello/pulp3/api/ansible_collection.rb +14 -2
  154. data/app/services/katello/pulp3/api/apt.rb +1 -1
  155. data/app/services/katello/pulp3/api/content_guard.rb +1 -1
  156. data/app/services/katello/pulp3/api/core.rb +27 -2
  157. data/app/services/katello/pulp3/api/docker.rb +1 -1
  158. data/app/services/katello/pulp3/api/file.rb +5 -1
  159. data/app/services/katello/pulp3/api/yum.rb +9 -1
  160. data/app/services/katello/pulp3/content_view_version/export.rb +18 -40
  161. data/app/services/katello/pulp3/content_view_version/import.rb +75 -30
  162. data/app/services/katello/pulp3/content_view_version/import_gpg_keys.rb +32 -0
  163. data/app/services/katello/pulp3/content_view_version/import_validator.rb +53 -21
  164. data/app/services/katello/pulp3/content_view_version/importable_products.rb +47 -0
  165. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +52 -0
  166. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +99 -0
  167. data/app/services/katello/pulp3/pulp_content_unit.rb +1 -1
  168. data/app/services/katello/pulp3/repository.rb +52 -5
  169. data/app/services/katello/pulp3/repository/ansible_collection.rb +5 -1
  170. data/app/services/katello/pulp3/repository/yum.rb +1 -17
  171. data/app/services/katello/pulp3/rpm.rb +5 -1
  172. data/app/services/katello/pulp3/task.rb +12 -5
  173. data/app/services/katello/pulp3/task_group.rb +10 -5
  174. data/app/services/katello/smart_proxy_helper.rb +1 -8
  175. data/app/services/katello/ui_notifications/system_error.rb +25 -0
  176. data/app/views/katello/api/v2/content_view_components/show.json.rabl +1 -1
  177. data/app/views/katello/api/v2/content_view_filters/show.json.rabl +0 -1
  178. data/app/views/katello/api/v2/{puppet_modules → content_view_version_import_histories}/index.json.rabl +1 -1
  179. data/app/views/katello/api/v2/content_view_version_import_histories/show.json.rabl +14 -0
  180. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +2 -2
  181. data/app/views/katello/api/v2/content_view_versions/show.json.rabl +0 -7
  182. data/app/views/katello/api/v2/content_views/base.json.rabl +20 -9
  183. data/app/views/katello/api/v2/environments/show.json.rabl +0 -1
  184. data/app/views/katello/api/v2/package_groups/index.json.rabl +4 -0
  185. data/app/views/katello/api/v2/repositories/base.json.rabl +0 -1
  186. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -1
  187. data/app/views/katello/api/v2/repository_sets/index.json.rabl +4 -1
  188. data/app/views/katello/api/v2/repository_sets/show.json.rabl +22 -0
  189. data/app/views/katello/api/v2/subscriptions/show.json.rabl +1 -1
  190. data/app/views/overrides/activation_keys/_host_media_type_select.html.erb +1 -1
  191. data/config/initializers/monkeys.rb +0 -1
  192. data/config/katello.yaml.example +0 -1
  193. data/config/routes/api/v2.rb +9 -21
  194. data/config/routes/overrides.rb +1 -2
  195. data/db/migrate/20140422000001_update_products_add_organization.rb +3 -2
  196. data/db/migrate/20160701180402_add_sortable_version_to_puppet_modules.rb +2 -0
  197. data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +9 -2
  198. data/db/migrate/20210224160921_remove_disabled_products_from_sync_plans.rb +6 -0
  199. data/db/migrate/20210302165636_remove_katello_puppet_modules.rb +62 -0
  200. data/db/migrate/20210309160925_create_katello_content_view_version_import_histories.rb +13 -0
  201. data/db/migrate/20210318204533_add_import_type_to_import_histories.rb +8 -0
  202. data/db/migrate/20210319123300_add_foreign_keys_to_import_export_histories.rb +6 -0
  203. data/db/migrate/20210322142311_add_auth_url_token_to_root_repositories.rb +6 -0
  204. data/db/migrate/20210331180353_katello_pool_organization_id_not_nullable.rb +16 -0
  205. data/db/migrate/20210409033915_add_created_in_katello_to_taxonomy.rb +9 -0
  206. data/db/seeds.d/101-locations.rb +0 -3
  207. data/db/seeds.d/102-organizations.rb +1 -5
  208. data/db/seeds.d/109-katello-notification-blueprints.rb +12 -0
  209. data/db/seeds.d/111-upgrade_tasks.rb +3 -2
  210. data/engines/bastion/vendor/assets/javascripts/bastion/angular-animate/angular-animate.js +3 -3
  211. data/engines/bastion/vendor/assets/javascripts/bastion/angular-resource/angular-resource.js +3 -3
  212. data/engines/bastion/vendor/assets/javascripts/bastion/angular-route/angular-route.js +3 -3
  213. data/engines/bastion/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +21 -43
  214. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +325 -156
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +9 -10
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +2 -9
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion-katello-bootstrap.js +0 -1
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +0 -3
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +2 -0
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-packages-modal.controller.js +2 -0
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +11 -4
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-packages-modal.html +18 -11
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +10 -4
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +0 -14
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +2 -0
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-actions.controller.js +5 -1
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-applicable.controller.js +7 -2
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +7 -2
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +6 -6
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +7 -7
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +14 -6
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +5 -5
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-repository-sets.controller.js +9 -11
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -2
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-repository-sets.html +2 -8
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +3 -6
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register.html +5 -0
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-view.factory.js +0 -6
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +0 -56
  240. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +0 -5
  241. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +0 -5
  242. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +2 -9
  243. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +0 -12
  244. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -3
  245. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +2 -6
  246. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-versions.module.js +0 -1
  247. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +0 -7
  248. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/content.service.js +0 -5
  249. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.module.js +0 -1
  250. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +0 -11
  251. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +0 -3
  252. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +21 -6
  253. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +9 -0
  254. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +71 -311
  255. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +0 -10
  256. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/fenced-pages.service.js +0 -1
  257. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-advanced-sync-modal.html +2 -2
  258. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +2 -4
  259. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +13 -15
  260. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +24 -11
  261. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.routes.js +0 -9
  262. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +0 -6
  263. data/engines/bastion_katello/lib/bastion_katello/engine.rb +3 -3
  264. data/lib/katello/engine.rb +26 -25
  265. data/lib/katello/middleware/organization_created_enforcer.rb +22 -0
  266. data/lib/katello/permission_creator.rb +12 -28
  267. data/lib/katello/permissions/host_permissions.rb +3 -2
  268. data/lib/katello/plugin.rb +11 -21
  269. data/lib/katello/repository_types/ansible_collection.rb +1 -1
  270. data/lib/katello/repository_types/deb.rb +1 -1
  271. data/lib/katello/repository_types/docker.rb +1 -1
  272. data/lib/katello/repository_types/file.rb +1 -1
  273. data/lib/katello/repository_types/yum.rb +1 -1
  274. data/lib/katello/tasks/jenkins.rake +6 -0
  275. data/lib/katello/tasks/receptor/extract_orgs.rake +1 -3
  276. data/lib/katello/tasks/reimport.rake +0 -1
  277. data/lib/katello/tasks/repository.rake +0 -30
  278. data/lib/katello/tasks/update_subscription_facet_backend_data.rake +3 -3
  279. data/lib/katello/tasks/upgrades/4.1/fix_invalid_pools.rake +62 -0
  280. data/lib/katello/tasks/upgrades/4.1/sync_noarch_content.rake +15 -0
  281. data/lib/katello/version.rb +1 -1
  282. data/lib/proxy_api/container_gateway.rb +22 -11
  283. data/locale/action_names.rb +65 -63
  284. data/locale/bn/katello.edit.po +1357 -1606
  285. data/locale/bn/katello.po +465 -744
  286. data/locale/cs/katello.edit.po +1213 -1087
  287. data/locale/cs/katello.po +307 -219
  288. data/locale/de/katello.edit.po +1498 -1520
  289. data/locale/de/katello.po +589 -625
  290. data/locale/en/katello.edit.po +1198 -1074
  291. data/locale/en/katello.po +304 -213
  292. data/locale/es/katello.edit.po +2344 -2304
  293. data/locale/es/katello.po +1407 -1407
  294. data/locale/fr/katello.edit.po +2720 -2642
  295. data/locale/fr/katello.po +1703 -1750
  296. data/locale/gu/katello.edit.po +1546 -1797
  297. data/locale/gu/katello.po +654 -935
  298. data/locale/hi/katello.edit.po +1545 -1793
  299. data/locale/hi/katello.po +653 -931
  300. data/locale/it/katello.edit.po +1323 -1310
  301. data/locale/it/katello.po +407 -409
  302. data/locale/ja/katello.edit.po +2645 -2557
  303. data/locale/ja/katello.po +1646 -1664
  304. data/locale/katello.pot +1435 -1289
  305. data/locale/kn/katello.edit.po +1546 -1795
  306. data/locale/kn/katello.po +654 -933
  307. data/locale/ko/katello.edit.po +1464 -1449
  308. data/locale/ko/katello.po +554 -554
  309. data/locale/mr/katello.edit.po +1545 -1758
  310. data/locale/mr/katello.po +653 -896
  311. data/locale/or/katello.edit.po +1546 -1795
  312. data/locale/or/katello.po +654 -933
  313. data/locale/pa/katello.edit.po +1541 -1775
  314. data/locale/pa/katello.po +649 -913
  315. data/locale/pt/katello.edit.po +1289 -1255
  316. data/locale/pt/katello.po +398 -394
  317. data/locale/pt_BR/katello.edit.po +2370 -2315
  318. data/locale/pt_BR/katello.po +1435 -1421
  319. data/locale/ru/katello.edit.po +1611 -1608
  320. data/locale/ru/katello.po +704 -716
  321. data/locale/ta/katello.edit.po +1358 -1605
  322. data/locale/ta/katello.po +465 -742
  323. data/locale/te/katello.edit.po +1545 -1792
  324. data/locale/te/katello.po +653 -930
  325. data/locale/zh_CN/katello.edit.po +3052 -2930
  326. data/locale/zh_CN/katello.po +2055 -2039
  327. data/locale/zh_TW/katello.edit.po +1571 -1669
  328. data/locale/zh_TW/katello.po +649 -777
  329. data/package.json +2 -2
  330. data/webpack/{scenes/ContentViews/Details/Repositories/RepoAddedStatus.js → components/AddedStatusLabel.js} +5 -5
  331. data/webpack/components/RoutedTabs/RoutedTabs.js +91 -0
  332. data/webpack/components/RoutedTabs/__tests__/RoutedTabs.test.js +32 -0
  333. data/webpack/components/RoutedTabs/index.js +4 -0
  334. data/webpack/components/extensions/RegistrationCommands/RegistrationCommandsPageConstants.js +2 -0
  335. data/webpack/components/extensions/RegistrationCommands/RegistrationCommandsPageHelpers.js +21 -0
  336. data/webpack/components/extensions/RegistrationCommands/RegistrationCommandsPageSelectors.js +21 -0
  337. data/webpack/components/extensions/RegistrationCommands/__tests__/ActivationKeys.test.js +18 -0
  338. data/webpack/components/extensions/RegistrationCommands/__tests__/Force.test.js +9 -0
  339. data/webpack/components/extensions/RegistrationCommands/__tests__/IgnoreSubmanErrors.test.js +9 -0
  340. data/webpack/components/extensions/RegistrationCommands/__tests__/LifeCycleEnvironment.test.js +11 -0
  341. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +58 -0
  342. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +25 -0
  343. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +25 -0
  344. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/LifeCycleEnvironment.test.js.snap +27 -0
  345. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +99 -0
  346. data/webpack/components/extensions/RegistrationCommands/fields/Force.js +38 -0
  347. data/webpack/components/extensions/RegistrationCommands/fields/IgnoreSubmanErrors.js +38 -0
  348. data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +56 -0
  349. data/webpack/components/extensions/RegistrationCommands/index.js +81 -0
  350. data/webpack/components/pf3Table/formatters/EntitlementsInlineEditFormatter.js +23 -24
  351. data/webpack/components/pf3Table/formatters/__tests__/__snapshots__/EntitlementsInlineEditFormatter.test.js.snap +3 -1
  352. data/webpack/components/pf3Table/formatters/entitlementsValueFormatter.js +16 -0
  353. data/webpack/containers/Application/overrides.scss +3 -0
  354. data/webpack/fills_index.js +3 -0
  355. data/webpack/redux/reducers/RedHatRepositories/enabled.fixtures.js +0 -2
  356. data/webpack/scenes/ContentViews/ContentViewsConstants.js +8 -1
  357. data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +1 -3
  358. data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -3
  359. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +28 -0
  360. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentVersion.js +45 -0
  361. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +124 -0
  362. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.fixtures.json +161 -0
  363. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +163 -0
  364. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/unpublishedCVComponents.fixtures.json +64 -0
  365. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +67 -7
  366. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +61 -4
  367. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +34 -11
  368. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +33 -0
  369. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +117 -0
  370. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +115 -0
  371. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +7 -10
  372. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +49 -0
  373. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +56 -0
  374. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +3 -17
  375. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +116 -0
  376. data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterPackageGroups.fixtures.json +69 -0
  377. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetail.fixtures.json +103 -0
  378. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +116 -0
  379. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvPackageFilterDetail.fixtures.json +147 -0
  380. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvPackageFilterRules.fixtures.json +30 -0
  381. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +136 -0
  382. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.fixtures.json +370 -0
  383. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +94 -0
  384. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +0 -1
  385. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +106 -13
  386. data/webpack/scenes/ContentViews/Details/Repositories/LastSync.js +11 -5
  387. data/webpack/scenes/ContentViews/Details/Repositories/RepoIcon.js +5 -1
  388. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +138 -0
  389. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.fixtures.json +0 -2
  390. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +1 -1
  391. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +57 -0
  392. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +73 -0
  393. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +31 -0
  394. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.js +64 -0
  395. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.scss +8 -0
  396. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionPackages.js +0 -0
  397. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +105 -0
  398. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +728 -0
  399. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +154 -0
  400. data/webpack/scenes/ContentViews/Details/Versions/__tests__/emptyCVVersion.fixtures.json +13 -0
  401. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +3 -1
  402. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +0 -2
  403. data/webpack/scenes/ContentViews/Table/ContentViewVersionCell.js +33 -0
  404. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +17 -22
  405. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +51 -102
  406. data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +5 -3
  407. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +30 -5
  408. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +95 -0
  409. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +11 -5
  410. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +16 -0
  411. data/webpack/scenes/ContentViews/components/IconWithCount.js +1 -1
  412. data/webpack/scenes/ContentViews/components/InactiveText.js +15 -0
  413. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +19 -1
  414. data/webpack/scenes/Subscriptions/Details/SubscriptionPurposeAttributes.js +1 -1
  415. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +1 -1
  416. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +3 -3
  417. data/webpack/scenes/Subscriptions/Details/__tests__/subscriptionDetails.fixtures.js +1 -1
  418. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableHelpers.js +17 -0
  419. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableSchema.js +2 -1
  420. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +1 -1
  421. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +144 -0
  422. data/webpack/scenes/Tasks/helpers.js +2 -2
  423. data/webpack/test-utils/react-testing-lib-wrapper.js +11 -3
  424. data/webpack/utils/__tests__/useParamsWithHash.test.js +22 -0
  425. data/webpack/utils/helpers.js +2 -0
  426. data/webpack/utils/paramsFromHash.js +16 -0
  427. data/webpack/utils/useUrlParams.js +14 -0
  428. metadata +121 -181
  429. data/app/controllers/katello/api/v2/content_view_puppet_modules_controller.rb +0 -82
  430. data/app/controllers/katello/api/v2/puppet_modules_controller.rb +0 -19
  431. data/app/controllers/katello/concerns/registration_controller_extensions.rb +0 -16
  432. data/app/helpers/katello/concerns/hosts_and_hostgroups_helper_extensions.rb +0 -20
  433. data/app/lib/actions/candlepin/owner/create.rb +0 -16
  434. data/app/lib/actions/katello/content_view_puppet_environment/clear.rb +0 -11
  435. data/app/lib/actions/katello/content_view_puppet_environment/clone.rb +0 -78
  436. data/app/lib/actions/katello/content_view_puppet_environment/clone_content_for_version.rb +0 -20
  437. data/app/lib/actions/katello/content_view_puppet_environment/create.rb +0 -34
  438. data/app/lib/actions/katello/content_view_puppet_environment/create_for_version.rb +0 -23
  439. data/app/lib/actions/katello/content_view_puppet_environment/destroy.rb +0 -28
  440. data/app/lib/actions/katello/content_view_puppet_module/destroy.rb +0 -46
  441. data/app/lib/actions/katello/environment/library_create.rb +0 -35
  442. data/app/lib/actions/katello/organization/create.rb +0 -38
  443. data/app/lib/actions/pulp/content_view_puppet_environment/copy_contents.rb +0 -36
  444. data/app/lib/actions/pulp/content_view_puppet_environment/index_content.rb +0 -19
  445. data/app/lib/actions/pulp/repository/presenters/puppet_presenter.rb +0 -54
  446. data/app/lib/actions/pulp3/content_migration.rb +0 -31
  447. data/app/lib/actions/pulp3/content_migration_presenter.rb +0 -59
  448. data/app/lib/actions/pulp3/content_migration_reset.rb +0 -22
  449. data/app/lib/katello/foreman.rb +0 -32
  450. data/app/lib/katello/mapping.rb +0 -31
  451. data/app/lib/katello/validators/content_view_puppet_module_validator.rb +0 -32
  452. data/app/models/katello/concerns/environment_extensions.rb +0 -74
  453. data/app/models/katello/content_view_puppet_environment.rb +0 -116
  454. data/app/models/katello/content_view_puppet_environment_puppet_module.rb +0 -11
  455. data/app/models/katello/content_view_puppet_module.rb +0 -63
  456. data/app/models/katello/puppet_module.rb +0 -77
  457. data/app/models/katello/repository_puppet_module.rb +0 -7
  458. data/app/services/katello/pulp/puppet_module.rb +0 -21
  459. data/app/services/katello/pulp/repository/puppet.rb +0 -68
  460. data/app/services/katello/pulp3/migration.rb +0 -328
  461. data/app/services/katello/pulp3/migration_plan.rb +0 -137
  462. data/app/services/katello/pulp3/migration_switchover.rb +0 -126
  463. data/app/services/katello/puppet_class_importer_extensions.rb +0 -32
  464. data/app/views/foreman/hosts/_registration.html.erb +0 -12
  465. data/app/views/katello/api/v2/activation_keys/product_content.json.rabl +0 -30
  466. data/app/views/katello/api/v2/content_view_puppet_modules/create.json.rabl +0 -3
  467. data/app/views/katello/api/v2/content_view_puppet_modules/index.json.rabl +0 -7
  468. data/app/views/katello/api/v2/content_view_puppet_modules/show.json.rabl +0 -9
  469. data/app/views/katello/api/v2/content_views/puppet_modules.json.rabl +0 -7
  470. data/app/views/katello/api/v2/host_subscriptions/content_override.json.rabl +0 -3
  471. data/app/views/katello/api/v2/host_subscriptions/product_content.json.rabl +0 -29
  472. data/app/views/katello/api/v2/puppet_modules/backend.json.rabl +0 -7
  473. data/app/views/katello/api/v2/puppet_modules/base.json.rabl +0 -9
  474. data/app/views/katello/api/v2/puppet_modules/compare.json.rabl +0 -10
  475. data/app/views/katello/api/v2/puppet_modules/name.json.rabl +0 -3
  476. data/app/views/katello/api/v2/puppet_modules/names.json.rabl +0 -7
  477. data/app/views/katello/api/v2/puppet_modules/show.json.rabl +0 -4
  478. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-register-client.directive.js +0 -6
  479. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-register-os-client.directive.js +0 -17
  480. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-register.controller.js +0 -44
  481. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-client.html +0 -28
  482. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-deb-client.html +0 -38
  483. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-oracle-client.html +0 -5
  484. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-sles-client.html +0 -28
  485. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-puppet-modules.controller.js +0 -9
  486. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-names.controller.js +0 -45
  487. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-versions.controller.js +0 -61
  488. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module.factory.js +0 -23
  489. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-modules.controller.js +0 -74
  490. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-module-names.html +0 -57
  491. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-module-versions.html +0 -64
  492. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-modules.html +0 -54
  493. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-puppet-modules.html +0 -19
  494. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-puppet-modules.html +0 -25
  495. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +0 -6903
  496. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +0 -7094
  497. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +0 -7303
  498. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +0 -6895
  499. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +0 -6865
  500. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +0 -6720
  501. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +0 -7077
  502. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +0 -6832
  503. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +0 -6766
  504. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +0 -6703
  505. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-puppet-modules.html +0 -66
  506. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/puppet-module-content-views.controller.js +0 -44
  507. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/puppet-module-repositories.controller.js +0 -36
  508. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/puppet-module.controller.js +0 -34
  509. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module-content-views.html +0 -41
  510. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module-info.html +0 -32
  511. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module-repositories.html +0 -52
  512. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module.html +0 -37
  513. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-module.factory.js +0 -28
  514. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.controller.js +0 -35
  515. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.module.js +0 -20
  516. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.routes.js +0 -71
  517. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/views/puppet-modules.html +0 -47
  518. data/lib/katello/repository_types/puppet.rb +0 -5
  519. data/lib/katello/tasks/pulp3_content_switchover.rake +0 -32
  520. data/lib/katello/tasks/pulp3_migration.rake +0 -41
  521. data/lib/katello/tasks/pulp3_migration_abort.rake +0 -22
  522. data/lib/katello/tasks/pulp3_migration_reset.rake +0 -26
  523. data/lib/katello/tasks/pulp3_migration_stats.rake +0 -41
  524. data/lib/katello/tasks/pulp3_post_migration_check.rake +0 -51
  525. data/lib/monkeys/passenger_tee_input.rb +0 -20
  526. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  527. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  528. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  529. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  530. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  531. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  532. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  533. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  534. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  535. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  536. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  537. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  538. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  539. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  540. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  541. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  542. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  543. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  544. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  545. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  546. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  547. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  548. data/webpack/components/TabWrapper/TabWrapper.js +0 -26
  549. data/webpack/components/TabWrapper/index.js +0 -3
  550. data/webpack/components/TabbedView/TabbedView.js +0 -38
  551. data/webpack/components/TabbedView/TabbedView.scss +0 -3
  552. data/webpack/components/TabbedView/index.js +0 -3
  553. data/webpack/scenes/ContentViews/expansions/EnvironmentsExpansion.js +0 -19
  554. data/webpack/scenes/ContentViews/expansions/VersionsExpansion.js +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a68ac9c26daead6a548c835d225d8dbebe0ce33ca5b6315b6505ef64660d9ee6
4
- data.tar.gz: '09d66a70cef13109aff1e38a9e409862c5cae6263c5c7aea415399c7cd0e08b0'
3
+ metadata.gz: cc20921c082e7725e89028befc8b8e9469b5088304795b5cbeb4cfc9bc343866
4
+ data.tar.gz: aee4945d14f0e66a96d516eb3e47ee0e93fc02d9bb7384e28f5d360646a73a88
5
5
  SHA512:
6
- metadata.gz: cd9715ea64ef37bf05df3ae49a209e15f0ffe0c51d8f69d4b3fcba119909349fea1fe1ab4f464240515057e1529304850176ec5a48cbbfb25cd04fb1ee788137
7
- data.tar.gz: 6ab0c5c117c51017b37ca1366fc05f64efcc7a17375e2bb4ac9ee3633990baedf68ba505cc29292295f5a01e31ac6fd4bef209d9272e2f5cfce0f3f9c7f29a65
6
+ metadata.gz: b868b400fb3a0be4e7db0755700b45b5388e4c433a447dfe335c7bc156f40b5dc557fce7553aa79fa2eaa61bb83e0ceae3c27cbb7deb2458efb15f7ac890df22
7
+ data.tar.gz: 550c55ae8bec58857cfa5b75d33579f9c9de56013a58f273487fdccdf9378890f2d47ac257fdf8b2b29a89fd648cdd8e668725358b169dcf35f0277d7758e0a3
@@ -9,12 +9,6 @@ $(document).on('ContentLoad', function(){
9
9
  $("#hostgroup_lifecycle_environment_id").change(KT.hosts.environmentChanged);
10
10
  $("#host_lifecycle_environment_id").change(KT.hosts.environmentChanged);
11
11
 
12
- $("#hostgroup_content_view_id").change(KT.hosts.contentViewSelected);
13
- $("#host_content_view_id").change(KT.hosts.contentViewSelected);
14
- $("#reset_puppet_environment").click(function() {
15
- KT.hosts.getPuppetEnvironmentSelect().data('content_puppet_match', 'true');
16
- KT.hosts.setDefaultPuppetEnvironment(KT.hosts.getSelectedContentView(), KT.hosts.getSelectedEnvironment());
17
- });
18
12
  KT.hosts.update_media_enablement();
19
13
  KT.hosts.set_media_selection_bindings();
20
14
  });
@@ -68,33 +62,6 @@ KT.hosts.signalContentViewFetch = function(fetching) {
68
62
  }
69
63
  };
70
64
 
71
-
72
- KT.hosts.contentViewSelected = function() {
73
- if (KT.hosts.getPuppetEnvironmentSelect().data('content_puppet_match')) {
74
- KT.hosts.setDefaultPuppetEnvironment(KT.hosts.getSelectedContentView(), KT.hosts.getSelectedEnvironment());
75
- }
76
- };
77
-
78
- KT.hosts.setDefaultPuppetEnvironment = function(view_id, env_id) {
79
- if (view_id && env_id) {
80
- $.get('/hosts/puppet_environment_for_content_view', {content_view_id: view_id, lifecycle_environment_id: env_id}, function (data) {
81
- var select = KT.hosts.getPuppetEnvironmentSelect();
82
- if (data !== null) {
83
- select.val(data.id);
84
- select.trigger('change');
85
- }
86
- })
87
- }
88
- };
89
-
90
- KT.hosts.getPuppetEnvironmentSelect = function() {
91
- var select = $("#host_environment_id").first();
92
- if(select.length === 0) {
93
- select = $("#hostgroup_environment_id").first();
94
- }
95
- return select;
96
- };
97
-
98
65
  KT.hosts.getContentViewSelect2 = function() {
99
66
  var select = $("#s2id_host_content_view_id").first();
100
67
  if(select.length === 0) {
@@ -322,7 +322,7 @@ $container_width: ($static_width/2) - 36;
322
322
  position: relative;
323
323
  text-align: left;
324
324
  bottom: 18px;
325
- left: 30px;
325
+ left: 10px;
326
326
  }
327
327
  .progress {
328
328
  display: inline-block;
@@ -93,27 +93,21 @@ module Katello
93
93
  true
94
94
  end
95
95
 
96
- # Reduce visible repos to include lifecycle env permissions
97
- # http://projects.theforeman.org/issues/22914
98
- # Also include repositories in lifecycle environments with registry_unauthenticated_pull=true
99
- def readable_repositories
100
- table_name = Repository.table_name
101
- in_unauth_environments = Repository.joins(:environment).where("#{Katello::KTEnvironment.table_name}.registry_unauthenticated_pull" => true).select(:id)
102
- Repository.readable.or(Repository.joins(:root).where("#{table_name}.id in (?)", in_unauth_environments))
103
- end
104
-
105
96
  def find_readable_repository
106
97
  return nil unless params[:repository]
107
98
  repository = Repository.docker_type.find_by(container_repository_name: params[:repository])
108
99
  if require_user_authorization?(repository)
109
- repository = readable_repositories.docker_type.find_by(container_repository_name: params[:repository])
100
+ repository = Repository.readable_docker_catalog.find_by(container_repository_name: params[:repository])
110
101
  end
111
102
  repository
112
103
  end
113
104
 
114
105
  def require_user_authorization?(repository = @repository)
115
106
  !(params['action'] == 'token' && params['scope'].blank? && params['account'].blank?) &&
116
- (!repository || (!repository.environment.registry_unauthenticated_pull && !ssl_client_authorized?(repository.organization.label)))
107
+ (!repository ||
108
+ (!repository.archive? &&
109
+ !repository.environment.registry_unauthenticated_pull &&
110
+ !ssl_client_authorized?(repository.organization.label)))
117
111
  end
118
112
 
119
113
  def ssl_client_authorized?(org_label)
@@ -167,11 +161,9 @@ module Katello
167
161
  end
168
162
 
169
163
  if (manifest_response = redirect_client { Resources::Registry::Proxy.get(@_request.fullpath, headers) })
170
- #when pulp 2 is removed, this should no longer be needed, and all clients should be redirected
171
- logger.debug filter_sensitive_data(manifest_response)
164
+ #for some requests, we get a redirect, but for others we get the actual manifest in response
172
165
  results = JSON.parse(manifest_response)
173
-
174
- response.header['Docker-Content-Digest'] = "sha256:#{Digest::SHA256.hexdigest(manifest_response)}"
166
+ response.header['Docker-Content-Digest'] = manifest_response.headers[:docker_content_digest]
175
167
  # https://docs.docker.com/registry/spec/manifest-v2-2/
176
168
  # If its v2 schema 2 only the mediaType attribute will be present in the manifest
177
169
  media_type = results['mediaType']
@@ -333,7 +325,7 @@ module Katello
333
325
  params[:per_page] = params[:n] || 25
334
326
  params[:search] = params[:q]
335
327
 
336
- search_results = scoped_search(readable_repositories.docker_type.distinct,
328
+ search_results = scoped_search(Repository.readable_docker_catalog.distinct,
337
329
  :container_repository_name, :asc, options)
338
330
 
339
331
  results = {
@@ -347,7 +339,7 @@ module Katello
347
339
  end
348
340
 
349
341
  def catalog
350
- repositories = readable_repositories.docker_type.collect do |repository|
342
+ repositories = Repository.readable_docker_catalog.collect do |repository|
351
343
  repository.container_repository_name
352
344
  end
353
345
  render json: { repositories: repositories }
@@ -485,7 +477,7 @@ module Katello
485
477
  return nil unless scope
486
478
 
487
479
  scopes = scope.split(':')
488
- scopes[2] == 'pull' ? Repository.docker_type.find_by_container_repository_name(scopes[1]) : nil
480
+ scopes[2] == 'pull' ? Repository.docker_type.non_archived.find_by_container_repository_name(scopes[1]) : nil
489
481
  end
490
482
 
491
483
  def disable_strong_params
@@ -242,15 +242,8 @@ module Katello
242
242
  #description N_("This service is available for unauthenticated users")
243
243
  def server_status
244
244
  candlepin_response = Resources::Candlepin::CandlepinPing.ping
245
- status = { :managerCapabilities => candlepin_response['managerCapabilities'] + ["combined_reporting"],
246
- :result => candlepin_response['result'],
247
- :rulesSource => candlepin_response['rulesSource'],
248
- :rulesVersion => candlepin_response['rulesVersion'],
249
- :standalone => candlepin_response['standalone'],
250
- :timeUTC => Time.now.getutc,
251
- :version => Katello::VERSION }
252
-
253
- render :json => status
245
+ candlepin_response[:managerCapabilities] << 'combined_reporting'
246
+ render :json => candlepin_response
254
247
  end
255
248
 
256
249
  #api :PUT, "/consumers/:id", N_("Update consumer information")
@@ -6,7 +6,7 @@ module Katello
6
6
  before_action :find_environment, :only => [:index, :create, :update]
7
7
  before_action :find_optional_organization, :only => [:index, :create, :show]
8
8
  before_action :find_content_view, :only => [:index]
9
- before_action :find_authorized_katello_resource, :only => [:show, :update, :destroy, :available_releases, :product_content,
9
+ before_action :find_authorized_katello_resource, :only => [:show, :update, :destroy, :available_releases,
10
10
  :available_host_collections, :add_host_collections, :remove_host_collections,
11
11
  :content_override, :add_subscriptions, :remove_subscriptions,
12
12
  :subscriptions]
@@ -141,29 +141,6 @@ module Katello
141
141
  respond_for_index :collection => response
142
142
  end
143
143
 
144
- api :GET, "/activation_keys/:id/product_content", N_("Show content available for an activation key")
145
- param :id, String, :desc => N_("ID of the activation key"), :required => true
146
- param :content_access_mode_all, :bool, :desc => N_("Get all content available, not just that provided by subscriptions")
147
- param :content_access_mode_env, :bool, :desc => N_("Limit content to just that available in the activation key's content view version")
148
- def product_content
149
- content_access_mode_all = ::Foreman::Cast.to_bool(params[:content_access_mode_all])
150
- content_access_mode_env = ::Foreman::Cast.to_bool(params[:content_access_mode_env])
151
-
152
- content_finder = ProductContentFinder.new(
153
- :match_subscription => !content_access_mode_all,
154
- :match_environment => content_access_mode_env,
155
- :consumable => @activation_key
156
- )
157
-
158
- content = content_finder.presenter_with_overrides(@activation_key.content_overrides)
159
- response = {
160
- :results => content,
161
- :total => content.size,
162
- :subtotal => content.size
163
- }
164
- respond_for_index :collection => response
165
- end
166
-
167
144
  api :POST, "/activation_keys/:id/host_collections"
168
145
  param :id, :number, :desc => N_("ID of the activation key"), :required => true
169
146
  param :host_collection_ids, Array, :required => true, :desc => N_("List of host collection IDs to associate with activation key")
@@ -248,6 +225,15 @@ module Katello
248
225
  respond_for_show(:resource => @activation_key)
249
226
  end
250
227
 
228
+ api :GET, "/activation_keys/:id/product_content", N_("Show content available for an activation key")
229
+ param :id, String, :desc => N_("ID of the activation key"), :required => true
230
+ param :content_access_mode_all, :bool, :desc => N_("Get all content available, not just that provided by subscriptions")
231
+ param :content_access_mode_env, :bool, :desc => N_("Limit content to just that available in the activation key's content view version")
232
+ def product_content
233
+ # note this is just there as a place holder for apipie.
234
+ # The routing would automatically redirect it to repository_sets#index
235
+ end
236
+
251
237
  def index_relation
252
238
  activation_keys = ActivationKey.readable
253
239
  activation_keys = activation_keys.where(:name => params[:name]) if params[:name]
@@ -39,7 +39,18 @@ module Katello
39
39
  end
40
40
 
41
41
  def deprecate_katello_agent
42
- ::Foreman::Deprecation.api_deprecation_warning("Katello-agent is deprecated and will be removed in a future release.")
42
+ check_katello_agent_not_disabled
43
+ ::Foreman::Deprecation.api_deprecation_warning("This action uses katello-agent, which is deprecated and will be removed in #{katello_agent_removal_release}.")
44
+ end
45
+
46
+ def check_katello_agent_not_disabled
47
+ unless ::Katello.with_katello_agent?
48
+ fail HttpErrors::BadRequest, _("This action uses katello-agent, which is currently disabled. Use remote execution instead.")
49
+ end
50
+ end
51
+
52
+ def katello_agent_removal_release
53
+ self.class.katello_agent_removal_release
43
54
  end
44
55
 
45
56
  def full_result_response(collection)
@@ -75,7 +86,8 @@ module Katello
75
86
  end
76
87
 
77
88
  total = scoped_search_total(query, group)
78
-
89
+ # If you get an ArgumentError here (wrong number of arguments given)
90
+ # it's probably because query is an array and not an ActiveRecord::Relation
79
91
  query = query.select(:id) if query.respond_to?(:select)
80
92
  query = resource.search_for(*search_options).where("#{resource.table_name}.id" => query)
81
93
 
@@ -207,7 +219,7 @@ module Katello
207
219
  end
208
220
 
209
221
  def find_host_with_subscriptions(id, permission)
210
- @host = resource_finder(::Host::Managed.authorized(permission, ::Host::Managed), id)
222
+ @host = resource_finder(::Host::Managed.authorized(permission, ::Host::Managed), id&.to_i)
211
223
  fail HttpErrors::BadRequest, _("Host has not been registered with subscription-manager") if @host.subscription_facet.nil?
212
224
  end
213
225
 
@@ -49,7 +49,7 @@ module Katello
49
49
 
50
50
  content = nil
51
51
  if filepath
52
- content = File.open(filepath, 'rb') { |file| file.read }
52
+ content = File.read(filepath, mode: 'rb')
53
53
  else
54
54
  content = params[:content]
55
55
  end
@@ -1,6 +1,5 @@
1
1
  module Katello
2
2
  class Api::V2::ContentExportIncrementalsController < Api::V2::ApiController
3
- before_action :fail_if_not_pulp3, :only => [:version, :library]
4
3
  before_action :find_exportable_organization, :only => [:library]
5
4
  before_action :find_exportable_content_view_version, :only => [:version]
6
5
  before_action :find_library_export_view, :only => [:library]
@@ -16,7 +15,7 @@ module Katello
16
15
  param :fail_on_missing_content, :bool, :desc => N_("Fails if any of the repositories belonging to this version"\
17
16
  " are unexportable. False by default."), :required => false
18
17
  def version
19
- tasks = async_task(::Actions::Pulp3::Orchestration::ContentViewVersion::Export,
18
+ tasks = async_task(Actions::Katello::ContentViewVersion::Export,
20
19
  content_view_version: @version,
21
20
  destination_server: params[:destination_server],
22
21
  chunk_size: params[:chunk_size_mb],
@@ -88,11 +87,5 @@ module Katello
88
87
  throw_resource_not_found(name: 'organization', id: params[:organization_id])
89
88
  end
90
89
  end
91
-
92
- def fail_if_not_pulp3
93
- unless SmartProxy.pulp_primary.pulp3_repository_type_support?(Katello::Repository::YUM_TYPE)
94
- fail HttpErrors::BadRequest, _("Invalid usage for Pulp 2 repositories. Use export for Yum repositories")
95
- end
96
- end
97
90
  end
98
91
  end
@@ -1,6 +1,5 @@
1
1
  module Katello
2
2
  class Api::V2::ContentExportsController < Api::V2::ApiController
3
- before_action :fail_if_not_pulp3, :only => [:version, :library]
4
3
  before_action :find_exportable_organization, :only => [:library]
5
4
  before_action :find_exportable_content_view_version, :only => [:version]
6
5
 
@@ -27,12 +26,6 @@ module Katello
27
26
  :collection => scoped_search(history, 'id', 'asc', resource_class: ContentViewVersionExportHistory))
28
27
  end
29
28
 
30
- api :GET, "/content_exports/api_status", N_("true if the export api is pulp3 ready and usable. This API is intended for use by hammer-cli only.")
31
- def api_status
32
- ::Foreman::Deprecation.api_deprecation_warning("/content_exports/api_status is being deprecated and will be removed in Katello 4.1.")
33
- render json: { api_usable: SmartProxy.pulp_primary.pulp3_repository_type_support?(Katello::Repository::YUM_TYPE) }, status: :ok
34
- end
35
-
36
29
  api :POST, "/content_exports/version", N_("Performs a full-export of a content view version.")
37
30
  param :id, :number, :desc => N_("Content view version identifier"), :required => true
38
31
  param :destination_server, String, :desc => N_("Destination Server name"), :required => false
@@ -41,7 +34,7 @@ module Katello
41
34
  param :fail_on_missing_content, :bool, :desc => N_("Fails if any of the repositories belonging to this version"\
42
35
  " are unexportable. False by default."), :required => false
43
36
  def version
44
- tasks = async_task(::Actions::Pulp3::Orchestration::ContentViewVersion::Export,
37
+ tasks = async_task(::Actions::Katello::ContentViewVersion::Export,
45
38
  content_view_version: @version,
46
39
  destination_server: params[:destination_server],
47
40
  chunk_size: params[:chunk_size_mb],
@@ -78,11 +71,5 @@ module Katello
78
71
  throw_resource_not_found(name: 'organization', id: params[:organization_id])
79
72
  end
80
73
  end
81
-
82
- def fail_if_not_pulp3
83
- unless SmartProxy.pulp_primary.pulp3_repository_type_support?(Katello::Repository::YUM_TYPE)
84
- fail HttpErrors::BadRequest, _("Invalid usage for Pulp 2 repositories. Use export for Yum repositories")
85
- end
86
- end
87
74
  end
88
75
  end
@@ -1,20 +1,39 @@
1
1
  module Katello
2
2
  class Api::V2::ContentImportsController < Api::V2::ApiController
3
- before_action :find_publishable_content_view, :only => [:version]
3
+ before_action :find_organization, :only => [:version]
4
+ before_action :check_authorized, :only => [:version]
5
+
4
6
  before_action :find_importable_organization, :only => [:library]
5
7
  before_action :find_default_content_view, :only => [:library]
6
8
 
9
+ api :GET, "/content_imports", N_("List import histories")
10
+ param :content_view_version_id, :number, :desc => N_("Content view version identifier"), :required => false
11
+ param :content_view_id, :number, :desc => N_("Content view identifier"), :required => false
12
+ param :organization_id, :number, :desc => N_("Organization identifier"), :required => false
13
+ param :id, :number, :desc => N_("Content view version import history identifier"), :required => false
14
+ param :type, ::Katello::ContentViewVersionExportHistory::EXPORT_TYPES,
15
+ :desc => N_("Import Types"),
16
+ :required => false
17
+ param_group :search, Api::V2::ApiController
18
+ add_scoped_search_description_for(ContentViewVersionImportHistory)
19
+ def index
20
+ history = ContentViewVersionImportHistory.readable
21
+ history = history.where(:id => params[:id]) unless params[:id].blank?
22
+ history = history.where(:content_view_version_id => params[:content_view_version_id]) unless params[:content_view_version_id].blank?
23
+ history = history.with_organization_id(params[:organization_id]) unless params[:organization_id].blank?
24
+ history = history.with_content_view_id(params[:content_view_id]) unless params[:content_view_id].blank?
25
+ history = history.where(:import_type => params[:type]) unless params[:type].blank?
26
+ respond_with_template_collection("index", 'content_view_version_import_histories',
27
+ :collection => scoped_search(history, 'id', 'asc', resource_class: ContentViewVersionImportHistory))
28
+ end
29
+
7
30
  api :POST, "/content_imports/version", N_("Import a content view version")
8
- param :content_view_id, :number, :desc => N_("Content view identifier"), :required => true
31
+ param :organization_id, :number, :desc => N_("Organization identifier"), :required => true
9
32
  param :path, String, :desc => N_("Directory containing the exported Content View Version"), :required => true
10
33
  param :metadata, Hash, :desc => N_("Metadata taken from the upstream export history for this Content View Version"), :required => true
11
34
  def version
12
- if @view.default?
13
- fail HttpErrors::BadRequest, _("Cannot use this end point for importing to library. "\
14
- "If you intented to upload to library, use the library endpoint.")
15
- end
16
-
17
- task = async_task(::Actions::Katello::ContentViewVersion::Import, @view, path: params[:path], metadata: metadata_params.to_h)
35
+ task = async_task(::Actions::Katello::ContentViewVersion::Import, organization: @organization,
36
+ path: params[:path], metadata: metadata_params.to_h)
18
37
  respond_for_async :resource => task
19
38
  end
20
39
 
@@ -29,9 +48,8 @@ module Katello
29
48
 
30
49
  private
31
50
 
32
- def find_publishable_content_view
33
- @view = ContentView.publishable.find(params[:content_view_id])
34
- throw_resource_not_found(name: 'content_view', id: params[:content_view_id]) if @view.blank?
51
+ def check_authorized
52
+ fail HttpErrors::Forbidden, _("Action unauthorized to be performed in this organization.") unless ContentView.importable?
35
53
  end
36
54
 
37
55
  def find_default_content_view
@@ -47,12 +65,17 @@ module Katello
47
65
  def metadata_params
48
66
  params.require(:metadata).permit(
49
67
  :organization,
50
- :content_view,
51
- :repository_mapping,
68
+ :repositories,
69
+ :products,
52
70
  :toc,
53
- content_view_version: [:major, :minor]
71
+ :incremental,
72
+ gpg_keys: {},
73
+ content_view: [:name, :label, :description],
74
+ content_view_version: [:major, :minor, :description],
75
+ from_content_view_version: [:major, :minor]
54
76
  ).tap do |nested|
55
- nested[:repository_mapping] = params[:metadata].require(:repository_mapping).permit!
77
+ nested[:repositories] = params[:metadata].require(:repositories).permit!
78
+ nested[:products] = params[:metadata].require(:products).permit!
56
79
  end
57
80
  end
58
81
  end
@@ -10,7 +10,7 @@ module Katello
10
10
  param :repository_id, :number, :required => true, :desc => N_("repository id")
11
11
  param :size, :number, :required => true, :desc => N_("Size of file to upload")
12
12
  param :checksum, String, :required => false, :desc => N_("Checksum of file to upload")
13
- param :content_type, RepositoryTypeManager.uploadable_content_types.map(&:label), :required => false, :desc => N_("content type ('deb', 'docker_manifest', 'file', 'ostree', 'puppet_module', 'rpm', 'srpm')")
13
+ param :content_type, RepositoryTypeManager.uploadable_content_types.map(&:label), :required => false, :desc => N_("content type ('deb', 'docker_manifest', 'file', 'ostree', 'rpm', 'srpm')")
14
14
  def create
15
15
  content_type = params[:content_type] || ::Katello::RepositoryTypeManager.find(@repository.content_type).default_managed_content_type.label
16
16
  unit_type_id = SmartProxy.pulp_primary.content_service(content_type).content_type
@@ -1,5 +1,6 @@
1
1
  module Katello
2
2
  class Api::V2::ContentViewComponentsController < Api::V2::ApiController
3
+ include Katello::Concerns::FilteredAutoCompleteSearch
3
4
  before_action :find_composite_content_view, :only => [:show, :index]
4
5
  before_action :find_composite_content_view_for_edit, :only => [:add_components, :remove_components, :update]
5
6
  before_action :find_authorized_katello_resource, :only => [:show, :update]
@@ -10,7 +11,12 @@ module Katello
10
11
  N_("List components attached to this content view")
11
12
  param :composite_content_view_id, :number, :desc => N_("composite content view identifier"), :required => true
12
13
  def index
13
- respond :collection => index_response
14
+ sort_by, sort_order, options = sort_options
15
+ respond(:collection => scoped_search(index_relation, sort_by, sort_order, options))
16
+ end
17
+
18
+ def index_relation
19
+ @view.content_view_components.readable
14
20
  end
15
21
 
16
22
  def index_response
@@ -114,5 +120,20 @@ module Katello
114
120
  attrs = [:latest, :content_view_version_id, :content_view_id]
115
121
  params.require(:content_view_component).permit(*attrs)
116
122
  end
123
+
124
+ def default_sort
125
+ %w(label asc)
126
+ end
127
+
128
+ def sort_options
129
+ case default_sort
130
+ when Array
131
+ [default_sort[0], default_sort[1], {}]
132
+ when Proc
133
+ [nil, nil, { :custom_sort => default_sort }]
134
+ else
135
+ fail "Unsupported default_sort type"
136
+ end
137
+ end
117
138
  end
118
139
  end