katello 3.3.2 → 3.4.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 (542) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/katello/containers/container.scss +1 -2
  3. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +2 -1
  4. data/app/controllers/katello/api/v2/activation_keys_controller.rb +28 -23
  5. data/app/controllers/katello/api/v2/api_controller.rb +2 -1
  6. data/app/controllers/katello/api/v2/capsule_content_controller.rb +1 -1
  7. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +2 -0
  8. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  9. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +12 -2
  10. data/app/controllers/katello/api/v2/content_views_controller.rb +4 -1
  11. data/app/controllers/katello/api/v2/docker_tags_controller.rb +14 -0
  12. data/app/controllers/katello/api/v2/environments_controller.rb +2 -1
  13. data/app/controllers/katello/api/v2/host_collections_controller.rb +2 -1
  14. data/app/controllers/katello/api/v2/host_packages_controller.rb +1 -0
  15. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +27 -23
  16. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +19 -0
  17. data/app/controllers/katello/api/v2/organizations_controller.rb +8 -4
  18. data/app/controllers/katello/api/v2/package_groups_controller.rb +51 -0
  19. data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +15 -1
  20. data/app/controllers/katello/api/v2/repositories_controller.rb +57 -32
  21. data/app/controllers/katello/api/v2/repository_sets_controller.rb +1 -0
  22. data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
  23. data/app/controllers/katello/api/v2/sync_plans_controller.rb +1 -0
  24. data/app/controllers/katello/concerns/api/v2/content_overrides_controller.rb +39 -0
  25. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +1 -0
  26. data/app/controllers/katello/providers_controller.rb +3 -1
  27. data/app/controllers/katello/sync_management_controller.rb +2 -0
  28. data/app/helpers/katello/errata_mailer_helper.rb +1 -1
  29. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +2 -7
  30. data/app/lib/actions/candlepin/candlepin_listening_service.rb +2 -1
  31. data/app/lib/actions/candlepin/environment/set_content.rb +1 -1
  32. data/app/lib/actions/candlepin/owner/upstream_regenerate_certificates.rb +17 -0
  33. data/app/lib/actions/candlepin/product/content_add.rb +2 -1
  34. data/app/lib/actions/candlepin/product/content_create.rb +3 -1
  35. data/app/lib/actions/candlepin/product/content_destroy.rb +2 -1
  36. data/app/lib/actions/candlepin/product/content_remove.rb +2 -1
  37. data/app/lib/actions/candlepin/product/content_update.rb +3 -1
  38. data/app/lib/actions/candlepin/product/create.rb +12 -1
  39. data/app/lib/actions/candlepin/product/destroy.rb +2 -1
  40. data/app/lib/actions/candlepin/product/update.rb +4 -0
  41. data/app/lib/actions/katello/capsule_content/create_repos.rb +1 -1
  42. data/app/lib/actions/katello/content_view/promote.rb +3 -2
  43. data/app/lib/actions/katello/content_view/promote_to_environment.rb +3 -2
  44. data/app/lib/actions/katello/content_view/publish.rb +3 -2
  45. data/app/lib/actions/katello/content_view_version/destroy.rb +7 -1
  46. data/app/lib/actions/katello/content_view_version/incremental_update.rb +1 -1
  47. data/app/lib/actions/katello/content_view_version/republish_repositories.rb +40 -0
  48. data/app/lib/actions/katello/host/destroy.rb +1 -0
  49. data/app/lib/actions/katello/host/erratum/install.rb +13 -4
  50. data/app/lib/actions/katello/host/hypervisors_update.rb +3 -2
  51. data/app/lib/actions/katello/host/register.rb +10 -4
  52. data/app/lib/actions/katello/host/remove_subscriptions.rb +14 -12
  53. data/app/lib/actions/katello/host/update.rb +9 -7
  54. data/app/lib/actions/katello/host/update_content_overrides.rb +43 -0
  55. data/app/lib/actions/katello/organization/destroy.rb +1 -1
  56. data/app/lib/actions/katello/organization/manifest_refresh.rb +3 -0
  57. data/app/lib/actions/katello/product/content_create.rb +3 -0
  58. data/app/lib/actions/katello/product/content_destroy.rb +2 -0
  59. data/app/lib/actions/katello/product/create.rb +1 -2
  60. data/app/lib/actions/katello/product/destroy.rb +3 -2
  61. data/app/lib/actions/katello/repository/check_matching_content.rb +49 -0
  62. data/app/lib/actions/katello/repository/clone_to_environment.rb +3 -2
  63. data/app/lib/actions/katello/repository/clone_yum_content.rb +17 -1
  64. data/app/lib/actions/katello/repository/create.rb +4 -1
  65. data/app/lib/actions/katello/repository/destroy_package_group.rb +26 -0
  66. data/app/lib/actions/katello/repository/discover.rb +8 -3
  67. data/app/lib/actions/katello/repository/errata_mail.rb +1 -1
  68. data/app/lib/actions/katello/repository/finish_upload.rb +6 -2
  69. data/app/lib/actions/katello/repository/import_upload.rb +30 -7
  70. data/app/lib/actions/katello/repository/index_content.rb +2 -1
  71. data/app/lib/actions/katello/repository/metadata_generate.rb +19 -5
  72. data/app/lib/actions/katello/repository/remove_content.rb +7 -4
  73. data/app/lib/actions/katello/repository/sync.rb +28 -14
  74. data/app/lib/actions/katello/repository/update.rb +1 -0
  75. data/app/lib/actions/katello/repository/upload_package_group.rb +34 -0
  76. data/app/lib/actions/katello/repository_set/scan_cdn.rb +2 -4
  77. data/app/lib/actions/middleware/skip_if_matching_content.rb +24 -0
  78. data/app/lib/actions/pulp/abstract.rb +2 -2
  79. data/app/lib/actions/pulp/consumer/generate_applicability.rb +5 -1
  80. data/app/lib/actions/pulp/consumer/sync_capsule.rb +10 -0
  81. data/app/lib/actions/pulp/content_view_puppet_environment/index_content.rb +5 -3
  82. data/app/lib/actions/pulp/repository/copy_errata.rb +4 -0
  83. data/app/lib/actions/pulp/repository/create.rb +6 -1
  84. data/app/lib/actions/pulp/repository/distributor_publish.rb +3 -0
  85. data/app/lib/actions/pulp/repository/download.rb +16 -0
  86. data/app/lib/actions/pulp/repository/import_upload.rb +2 -1
  87. data/app/lib/actions/pulp/repository/presenters/{file_presenter.rb → file_unit_presenter.rb} +0 -0
  88. data/app/lib/actions/pulp/repository/presenters/ostree_presenter.rb +16 -3
  89. data/app/lib/actions/pulp/repository/remove_errata.rb +4 -0
  90. data/app/lib/actions/pulp/repository/sync.rb +3 -3
  91. data/app/lib/katello/errors.rb +2 -0
  92. data/app/lib/katello/repo_discovery.rb +33 -8
  93. data/app/lib/katello/resources/candlepin.rb +87 -68
  94. data/app/lib/katello/resources/cdn.rb +26 -13
  95. data/app/lib/katello/util/cdn_var_substitutor.rb +39 -124
  96. data/app/lib/katello/util/path_with_substitutions.rb +58 -0
  97. data/app/models/katello/activation_key.rb +11 -15
  98. data/app/models/katello/candlepin/content.rb +6 -14
  99. data/app/models/katello/candlepin/product_content.rb +11 -3
  100. data/app/models/katello/concerns/content_facet_host_extensions.rb +19 -10
  101. data/app/models/katello/concerns/environment_extensions.rb +6 -3
  102. data/app/models/katello/concerns/host_managed_extensions.rb +21 -7
  103. data/app/models/katello/concerns/hostgroup_extensions.rb +3 -3
  104. data/app/models/katello/concerns/location_extensions.rb +32 -24
  105. data/app/models/katello/concerns/pulp_database_unit.rb +10 -2
  106. data/app/models/katello/concerns/smart_proxy_extensions.rb +8 -6
  107. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +27 -10
  108. data/app/models/katello/content_override.rb +63 -0
  109. data/app/models/katello/content_view.rb +3 -8
  110. data/app/models/katello/content_view_history.rb +1 -1
  111. data/app/models/katello/content_view_puppet_environment.rb +10 -2
  112. data/app/models/katello/content_view_puppet_module.rb +1 -1
  113. data/app/models/katello/content_view_version.rb +2 -2
  114. data/app/models/katello/docker_manifest.rb +1 -1
  115. data/app/models/katello/docker_tag.rb +3 -3
  116. data/app/models/katello/erratum.rb +4 -4
  117. data/app/models/katello/file_unit.rb +1 -1
  118. data/app/models/katello/glue/candlepin/activation_key.rb +10 -8
  119. data/app/models/katello/glue/candlepin/content.rb +1 -21
  120. data/app/models/katello/glue/candlepin/owner.rb +3 -1
  121. data/app/models/katello/glue/candlepin/pool.rb +3 -1
  122. data/app/models/katello/glue/candlepin/product.rb +2 -7
  123. data/app/models/katello/glue/provider.rb +19 -1
  124. data/app/models/katello/glue/pulp/repo.rb +33 -19
  125. data/app/models/katello/glue/pulp/repos.rb +0 -8
  126. data/app/models/katello/gpg_key.rb +1 -1
  127. data/app/models/katello/host/subscription_facet.rb +47 -4
  128. data/app/models/katello/host_collection.rb +2 -2
  129. data/app/models/katello/kt_environment.rb +1 -1
  130. data/app/models/katello/ostree_branch.rb +1 -1
  131. data/app/models/katello/package_group.rb +1 -1
  132. data/app/models/katello/pool.rb +14 -15
  133. data/app/models/katello/product.rb +2 -2
  134. data/app/models/katello/provider.rb +0 -28
  135. data/app/models/katello/repository.rb +91 -29
  136. data/app/models/katello/subscription.rb +12 -0
  137. data/app/models/katello/subscription_status.rb +1 -1
  138. data/app/models/katello/sync_plan.rb +9 -2
  139. data/app/models/katello/trace_status.rb +53 -0
  140. data/app/models/setting/content.rb +55 -25
  141. data/app/overrides/add_activation_keys_input.rb +0 -5
  142. data/app/presenters/katello/product_content_presenter.rb +11 -3
  143. data/app/services/katello/candlepin/consumer.rb +24 -16
  144. data/app/services/katello/pulp/erratum.rb +1 -0
  145. data/app/services/katello/pulp/file_unit.rb +1 -1
  146. data/app/views/dashboard/_errata_widget.html.erb +2 -2
  147. data/app/views/foreman/unattended/kickstart-katello.erb +1 -1
  148. data/app/views/katello/api/v2/activation_keys/product_content.json.rabl +14 -1
  149. data/app/views/katello/api/v2/host_subscriptions/product_content.json.rabl +15 -1
  150. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
  151. data/app/views/katello/api/v2/repositories/show.json.rabl +5 -0
  152. data/app/views/katello/api/v2/subscription_facet/show.json.rabl +1 -1
  153. data/app/views/katello/api/v2/subscriptions/base.json.rabl +1 -0
  154. data/app/views/katello/providers/redhat/_repo_sets.html.erb +1 -1
  155. data/app/views/katello/providers/redhat/_repos.html.erb +1 -1
  156. data/app/views/katello/providers/redhat/show.html.erb +1 -1
  157. data/app/views/overrides/activation_keys/_host_environment_select.html.erb +2 -1
  158. data/app/views/overrides/hosts/_subscription_link.html.erb +1 -1
  159. data/config/initializers/pagelets.rb +6 -0
  160. data/config/routes/api/v2.rb +8 -0
  161. data/config/routes/overrides.rb +1 -0
  162. data/db/migrate/20161209162947_add_virt_who_to_katello_pools.rb +9 -0
  163. data/db/migrate/20170114051758_add_depth_to_repositories.rb +6 -0
  164. data/db/migrate/20170122204325_add_hypervisor_to_subscription_facets.rb +6 -0
  165. data/db/migrate/20170125152421_move_default_location_to_settings.rb +25 -0
  166. data/db/migrate/20170208215148_add_docker_repo_name.rb +14 -0
  167. data/db/migrate/20170222131211_change_pool_columns_to_dates.rb +19 -0
  168. data/db/seeds.d/101-locations.rb +9 -3
  169. data/db/seeds.d/103-provisioning_templates.rb +2 -2
  170. data/db/seeds.d/106-mail_notifications.rb +6 -0
  171. data/db/seeds.d/108-subcription-bookmarks.rb +19 -0
  172. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-key.factory.js +2 -2
  173. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.controller.js +1 -1
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.module.js +2 -1
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.routes.js +3 -3
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-host-collections.controller.js +1 -0
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-subscriptions.controller.js +1 -0
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +1 -0
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-host-collections.controller.js +1 -0
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +64 -0
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-subscriptions.controller.js +1 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-add-subscriptions.html +2 -52
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html +1 -1
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-details.html +3 -3
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-host-collections-table.html +2 -0
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-host-collections.html +1 -1
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +85 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions-list.html +3 -39
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions.html +1 -1
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/new/views/activation-key-new.html +15 -15
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/views/activation-keys.html +3 -3
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion-katello-bootstrap.js +1 -0
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +6 -0
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/subscription-add-or-remove.html +50 -0
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/{content-hosts-bulk-action-environment.controller.js → content-hosts-bulk-environment-modal.controller.js} +24 -13
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +124 -0
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-host-collections-modal.controller.js +86 -0
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/{content-hosts-bulk-action-packages.controller.js → content-hosts-bulk-packages-modal.controller.js} +24 -17
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/{content-hosts-bulk-action-subscriptions.controller.js → content-hosts-bulk-subscriptions-modal.controller.js} +31 -12
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-destroy-modal.html +4 -0
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/{bulk-actions-environment.html → content-hosts-bulk-environment-modal.html} +27 -13
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +107 -0
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-host-collections-modal.html +91 -0
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-packages-modal.html +162 -0
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +121 -0
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/errata-details.html +0 -5
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +108 -16
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.module.js +2 -279
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +251 -0
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +19 -19
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-applicable.controller.js +5 -4
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +3 -3
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +2 -2
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +5 -5
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +35 -34
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +3 -3
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +8 -7
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +12 -13
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-traces.html +28 -20
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/errata-details.html +42 -62
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-host-collections.controller.js +17 -12
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-subscriptions.controller.js +22 -10
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +4 -0
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +2 -4
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-host-collections.controller.js +17 -12
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-repository-sets.controller.js +64 -0
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-subscriptions.controller.js +12 -12
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-add-subscriptions.html +21 -49
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +136 -148
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-events.html +1 -1
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-host-collections-table.html +59 -0
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-host-collections.html +20 -0
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +198 -256
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-provisioning-info.html +38 -54
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-repository-sets.html +93 -0
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-subscriptions-list.html +6 -54
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-subscriptions.html +47 -82
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-tasks.html +3 -4
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +107 -13
  240. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register.html +26 -31
  241. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +1 -1
  242. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +115 -33
  243. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +1 -0
  244. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +2 -1
  245. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html +2 -2
  246. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html +3 -3
  247. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-confirm.html +3 -3
  248. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-content-hosts.html +3 -3
  249. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html +2 -2
  250. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +1 -0
  251. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +1 -0
  252. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +4 -6
  253. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +4 -6
  254. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite.html +1 -1
  255. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +1 -0
  256. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-file-repositories.controller.js +1 -0
  257. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +1 -0
  258. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-repositories.controller.js +1 -0
  259. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +1 -0
  260. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-file-repositories-list.controller.js +1 -0
  261. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +1 -0
  262. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +2 -1
  263. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +2 -1
  264. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories-list.controller.js +1 -0
  265. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +7 -0
  266. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +10 -1
  267. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +1 -0
  268. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +9 -1
  269. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/docker-tag-filter.controller.js +137 -0
  270. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +1 -1
  271. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-helper.service.js +2 -1
  272. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +9 -0
  273. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter.factory.js +28 -0
  274. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +11 -7
  275. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +22 -5
  276. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +66 -80
  277. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +1 -0
  278. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata-filter.html +1 -1
  279. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-filter.html +28 -0
  280. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-tag-filter-details.html +65 -0
  281. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter-details.html +10 -8
  282. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter.html +48 -51
  283. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-repositories.html +5 -5
  284. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +17 -8
  285. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/new-filter.html +49 -42
  286. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +144 -171
  287. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter.html +7 -7
  288. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html +4 -4
  289. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter.html +9 -9
  290. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/partials/filter-repositories-count.html +2 -2
  291. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +1 -0
  292. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/views/content-view-history.html +1 -3
  293. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-names.controller.js +1 -0
  294. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-versions.controller.js +1 -0
  295. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-module-names.html +17 -19
  296. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-module-versions.html +17 -21
  297. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-modules.html +3 -3
  298. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +20 -6
  299. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-docker-repositories.html +6 -8
  300. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-file-repositories.html +5 -7
  301. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +2 -3
  302. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-ostree-repositories.html +5 -7
  303. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +21 -2
  304. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +29 -11
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-repositories.html +8 -10
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +34 -16
  307. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +2 -2
  308. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.factory.js +2 -1
  309. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-errata.html +1 -1
  310. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-ostree-branches.html +2 -7
  311. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-package-groups.html +2 -7
  312. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-packages.html +2 -7
  313. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-puppet-modules.html +1 -1
  314. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +13 -0
  315. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +2 -1
  316. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +1 -1
  317. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-details.controller.js +1 -0
  318. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-environments.html +1 -1
  319. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.controller.js +1 -1
  320. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.factory.js +7 -1
  321. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +1 -1
  322. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +1 -1
  323. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +2 -8
  324. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-details.html +15 -19
  325. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-docker.html +5 -12
  326. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-errata.html +7 -14
  327. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-ostree.html +5 -12
  328. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-packages.html +5 -12
  329. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-puppet-modules.html +4 -11
  330. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-repositories.html +4 -9
  331. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment.html +32 -51
  332. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +73 -29
  333. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/new-environment.controller.js +1 -1
  334. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +8 -12
  335. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/new-environment.html +2 -2
  336. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +17 -21
  337. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/{errata-content-hosts.controller.js → erratum-content-hosts.controller.js} +13 -12
  338. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/{errata-details-repositories.controller.js → erratum-repositories.controller.js} +7 -6
  339. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/{errata-details.controller.js → erratum.controller.js} +3 -3
  340. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-content-hosts.html +78 -0
  341. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +58 -0
  342. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/{errata-details-repositories.html → erratum-repositories.html} +22 -35
  343. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum.html +37 -0
  344. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.controller.js +8 -30
  345. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.module.js +2 -1
  346. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.routes.js +90 -83
  347. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/incremental-update.service.js +149 -0
  348. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +7 -17
  349. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-select-content-hosts.html +4 -14
  350. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata.html +9 -26
  351. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-task-details.html +1 -1
  352. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-tasks-list.html +1 -1
  353. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-tasks.html +6 -9
  354. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata.html +77 -34
  355. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-content-views.controller.js +44 -0
  356. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-repositories.controller.js +36 -0
  357. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file.controller.js +37 -0
  358. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-content-views.html +43 -0
  359. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-info.html +15 -0
  360. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-repositories.html +54 -0
  361. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file.html +37 -0
  362. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/file.factory.js +28 -0
  363. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.controller.js +35 -0
  364. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.module.js +20 -0
  365. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.routes.js +71 -0
  366. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/views/files.html +39 -0
  367. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/gpg-key-products.controller.js +1 -0
  368. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/gpg-key-repositories.controller.js +1 -0
  369. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/views/gpg-key-info.html +1 -1
  370. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/gpg-keys.controller.js +1 -1
  371. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/new/views/new-gpg-key.html +2 -2
  372. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/views/gpg-keys.html +3 -2
  373. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +1 -0
  374. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +1 -0
  375. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-add-hosts.html +3 -4
  376. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-copy.html +1 -1
  377. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-details.html +3 -3
  378. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts-list.html +2 -2
  379. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts.html +1 -1
  380. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collection.factory.js +1 -1
  381. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collections.controller.js +1 -1
  382. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/new/views/new-host-collection.html +24 -23
  383. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/views/host-collections.html +2 -2
  384. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-bulk-action.factory.js +1 -0
  385. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-subscription.factory.js +1 -1
  386. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +3 -3
  387. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +6 -6
  388. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +6 -6
  389. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +6 -6
  390. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +6 -6
  391. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +6 -6
  392. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +6 -6
  393. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +6 -6
  394. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +6 -6
  395. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +6 -6
  396. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +10 -10
  397. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/katello-features.run.js +2 -2
  398. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/fenced-pages.service.js +24 -14
  399. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/views/organization-selector.html +3 -1
  400. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/{ostree-branches-details-repositories.controller.js → ostree-branch-repositories.controller.js} +7 -6
  401. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/{ostree-branches-details.controller.js → ostree-branch.controller.js} +2 -2
  402. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branch-info.html +18 -0
  403. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/{ostree-branches-details-repositories.html → ostree-branch-repositories.html} +25 -34
  404. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branch.html +30 -0
  405. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branches.controller.js +1 -1
  406. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branches.routes.js +24 -27
  407. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/views/ostree-branches.html +28 -7
  408. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package-repositories.controller.js +1 -0
  409. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-files.html +1 -3
  410. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-repositories.html +17 -27
  411. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +1 -1
  412. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/views/packages.html +12 -14
  413. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/{product-bulk-action.factory.js → bulk/product-bulk-action.factory.js} +1 -1
  414. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js +54 -0
  415. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-sync-plan-modal.controller.js +80 -0
  416. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-advanced-sync-modal.html +26 -0
  417. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +87 -0
  418. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +1 -0
  419. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-advanced-sync.controller.js +33 -0
  420. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +17 -2
  421. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +29 -0
  422. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +5 -4
  423. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +18 -0
  424. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-advanced-sync-options.html +54 -0
  425. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-advanced-sync.html +29 -0
  426. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +26 -9
  427. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +46 -11
  428. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html +1 -1
  429. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-files.html +64 -0
  430. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-packages.html +1 -1
  431. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-puppet-modules.html +5 -5
  432. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +6 -3
  433. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +52 -31
  434. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/ostree-upstream-sync-policy.service.js +26 -0
  435. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.module.js +2 -1
  436. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.routes.js +19 -0
  437. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +2 -1
  438. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +12 -7
  439. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-details.html +2 -2
  440. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/{discovery-form.controller.js → discovery-create.controller.js} +109 -35
  441. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery-repositories.service.js +94 -0
  442. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery.controller.js +84 -30
  443. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-base.html +1 -1
  444. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create-status.html +3 -0
  445. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +154 -123
  446. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery.html +94 -67
  447. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/new/views/product-new-form.html +4 -1
  448. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/new/views/product-new.html +3 -3
  449. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +93 -11
  450. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +3 -4
  451. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/products.html +43 -44
  452. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/{puppet-modules-details-content-views.controller.js → puppet-module-content-views.controller.js} +6 -5
  453. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/{puppet-modules-details-repositories.controller.js → puppet-module-repositories.controller.js} +6 -5
  454. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/{puppet-modules-details.controller.js → puppet-module.controller.js} +4 -4
  455. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/{puppet-modules-details-content-views.html → puppet-module-content-views.html} +12 -6
  456. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module-info.html +32 -0
  457. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/{puppet-modules-details-repositories.html → puppet-module-repositories.html} +11 -9
  458. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module.html +37 -0
  459. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.controller.js +3 -4
  460. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.routes.js +31 -29
  461. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/views/puppet-modules.html +34 -7
  462. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/repository-sets/content-override-helper.service.js +47 -0
  463. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/repository-sets/repository-sets-enabled.filter.js +34 -0
  464. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/repository-sets/repository-sets.module.js +8 -0
  465. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/subscription-details.controller.js +2 -0
  466. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/views/subscription-content-hosts.html +1 -1
  467. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/views/subscription-info.html +13 -0
  468. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/views/subscription-products.html +1 -1
  469. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/manifest/manifest-import.controller.js +8 -0
  470. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/manifest/views/manifest-delete-modal.html +19 -0
  471. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/manifest/views/manifest-import.html +11 -5
  472. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/subscription-start-date.directive.js +21 -0
  473. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/subscriptions.controller.js +2 -2
  474. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscription-start-date.html +2 -0
  475. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscriptions.html +8 -9
  476. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-add-products.controller.js +1 -0
  477. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-products.controller.js +1 -0
  478. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-details.html +2 -2
  479. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-products.html +4 -2
  480. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/new/views/new-sync-plan.html +2 -2
  481. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/sync-plans.controller.js +1 -1
  482. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/views/sync-plans.html +2 -2
  483. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/tasks-nutupane.factory.js +1 -0
  484. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/task-details.html +53 -66
  485. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +5 -0
  486. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/host_subscriptions.scss +14 -0
  487. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/tasks.scss +4 -0
  488. data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -0
  489. data/lib/katello/engine.rb +3 -22
  490. data/lib/katello/permissions/content_view_permissions.rb +2 -2
  491. data/lib/katello/permissions/host_permissions.rb +1 -0
  492. data/lib/katello/permissions/product_permissions.rb +7 -4
  493. data/lib/katello/plugin.rb +18 -2
  494. data/lib/katello/tasks/regenerate_ueber_certs.rake +15 -0
  495. data/lib/katello/tasks/rubocop.rake +3 -2
  496. data/lib/katello/tasks/test.rake +17 -5
  497. data/lib/katello/tasks/unify_hosts.rake +1 -1
  498. data/lib/katello/tasks/update_subscription_facet_backend_data.rake +61 -0
  499. data/lib/katello/tasks/upgrades/3.3/hypervisors.rake +7 -0
  500. data/lib/katello/tasks/upgrades/3.3/import_subscriptions.rake +12 -0
  501. data/lib/katello/tasks/virt_who_report.rake +150 -0
  502. data/lib/katello/version.rb +1 -1
  503. metadata +116 -115
  504. data/app/lib/actions/candlepin/owner/refresh_subscriptions.rb +0 -15
  505. data/app/lib/actions/candlepin/product/delete_unused.rb +0 -13
  506. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-product-details.controller.js +0 -88
  507. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-products.controller.js +0 -46
  508. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-products.html +0 -49
  509. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-action-errata.controller.js +0 -127
  510. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-action-host-collections.controller.js +0 -79
  511. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-action.controller.js +0 -81
  512. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions-errata.html +0 -113
  513. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions-host-collections.html +0 -82
  514. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions-packages.html +0 -153
  515. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions-subscriptions.html +0 -86
  516. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions.html +0 -92
  517. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-products.controller.js +0 -99
  518. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-products.html +0 -56
  519. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/host-collections-table.html +0 -90
  520. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/host-collections.html +0 -20
  521. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts-table-collapsed.html +0 -25
  522. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts-table-full.html +0 -61
  523. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/errata-details-content-hosts.html +0 -91
  524. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/errata-details-info.html +0 -62
  525. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/errata-details.html +0 -52
  526. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-table-collapsed.html +0 -20
  527. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-table-full.html +0 -46
  528. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branches-details-info.html +0 -23
  529. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branches-details.html +0 -43
  530. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/views/ostree-branches-table-collapsed.html +0 -19
  531. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/views/ostree-branches-table-full.html +0 -21
  532. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products-bulk-action.controller.js +0 -93
  533. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-modules-details-info.html +0 -31
  534. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-modules-details.html +0 -52
  535. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/views/puppet-modules-table-collapsed.html +0 -20
  536. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/views/puppet-modules-table-full.html +0 -29
  537. data/lib/katello/tasks/gettext.rake +0 -5
  538. data/lib/katello/tasks/jshint.rake +0 -50
  539. data/lib/katello/tasks/jsroutes.rake +0 -5
  540. data/lib/katello/tasks/pretty_routes.rake +0 -30
  541. data/lib/katello/tasks/simplecov.rake +0 -7
  542. data/vendor/assets/javascripts/katello/jquery-1.7.2.js +0 -9404
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1aafb92d51f13eb142a3d6336be8e73f13fc70f3
4
- data.tar.gz: f2d506e35428a7e34ab70860dfe1b4d2b46a64da
3
+ metadata.gz: 897fa651304dc5619b708e385760771d00b77b2c
4
+ data.tar.gz: eecdade43f76979c8d3a610745f9d924e02ffd15
5
5
  SHA512:
6
- metadata.gz: 65f5203e595cebe8d47f169443ea88e5d84cc83bee0c4a998eaf19f2099dffa1afc9724e55840dcfe21b4d5258c85ff406718b96765698967cb4fb5038612d5f
7
- data.tar.gz: 93580eae8da88bf7513fe39c613479a44dc0b3322c2948d6e10296fd5c61c8f2707aa98544c41810fde07880c1af5688e28e75fcf3b5cdd91bc06f36ff073951
6
+ metadata.gz: b2d7b411f35b2c9881233219db63ab76d7aba65612a84f175582d1f4b3f0e8db13218f0f3b60ada315e1d6a9294386c2d55e203ed69633906ad63ffad5cbb48c
7
+ data.tar.gz: ac61028dcca1a4af146cbc628d7d00003fe48b9798e795168342691741f63a91f8e10e46b6086805f81e55ad02d86c80edaac78b9aaf0db0ec765b4e31884cdb
@@ -1,4 +1,3 @@
1
1
  .spinner-form-control {
2
- display: initial;
3
2
  width: 90%
4
- }
3
+ }
@@ -257,6 +257,7 @@ module Katello
257
257
  render :json => status
258
258
  end
259
259
 
260
+ #api :PUT, "/consumers/:id", N_("Update consumer information")
260
261
  def facts
261
262
  User.current = User.anonymous_admin
262
263
  async_task(::Actions::Katello::Host::Update, @host, rhsm_params)
@@ -298,7 +299,7 @@ module Katello
298
299
  User.as_anonymous_admin { Resources::Candlepin::Consumer.get(uuid) }
299
300
  fail HttpErrors::NotFound, _("Couldn't find consumer '%s'") % uuid
300
301
  end
301
- @host = facet.host
302
+ @host = ::Host::Managed.unscoped.find(facet.host_id)
302
303
  end
303
304
 
304
305
  def find_content_view_environment
@@ -1,7 +1,7 @@
1
1
  module Katello
2
2
  class Api::V2::ActivationKeysController < Api::V2::ApiController
3
3
  include Katello::Concerns::FilteredAutoCompleteSearch
4
-
4
+ include Katello::Concerns::Api::V2::ContentOverridesController
5
5
  before_action :verify_presence_of_organization_or_environment, :only => [:index]
6
6
  before_action :find_environment, :only => [:index, :create, :update]
7
7
  before_action :find_optional_organization, :only => [:index, :create, :show]
@@ -197,13 +197,36 @@ module Katello
197
197
 
198
198
  api :PUT, "/activation_keys/:id/content_override", N_("Override content for activation_key")
199
199
  param :id, :identifier, :desc => N_("ID of the activation key"), :required => true
200
- param :content_override, Hash, :desc => N_("Content override parameters") do
200
+ param :content_override, Hash, :desc => N_("Content override parameters"), :deprecated => true do
201
+ param :content_label, String, :desc => N_("Label of the content"), :required => true
202
+ param :value, String, :desc => N_("Override to a boolean value or 'default'"), :required => true
203
+ end
204
+ param :content_overrides, Array, :desc => N_("Array of Content override parameters") do
201
205
  param :content_label, String, :desc => N_("Label of the content"), :required => true
202
- param :value, [0, 1, "default"], :desc => N_("Override to 0/1, or 'default'"), :required => true
206
+ param :value, String, :desc => N_("Override value. Provide a boolean value if name is 'enabled'"), :required => false
207
+ param :name, String, :desc => N_("Override key or name. Note if name is not provided the default name will be 'enabled'"), :required => false
208
+ param :remove, :bool, :desc => N_("Set true to remove an override and reset it to 'default'"), :required => false
203
209
  end
204
210
  def content_override
205
- content_override = validate_content_overrides(params[:content_override])
206
- @activation_key.set_content_override(content_override[:content_label], 'enabled', content_override[:value])
211
+ content_overrides = []
212
+ if params[:content_override]
213
+ ::Foreman::Deprecation.api_deprecation_warning("The parameter content_override will be removed in Katello 3.5. Please update to use the content_overrides parameter.")
214
+ content_override_params = {:content_label => params[:content_override][:content_label]}
215
+ value = params[:content_override][:value]
216
+ if value == "default"
217
+ content_override_params[:remove] = true
218
+ elsif value
219
+ content_override_params[:value] = ::Foreman::Cast.to_bool(value)
220
+ end
221
+ content_overrides << content_override_params
222
+ elsif params[:content_overrides]
223
+ content_overrides = params[:content_overrides]
224
+ end
225
+
226
+ content_override_values = content_overrides.map do |override_params|
227
+ validate_content_overrides_enabled(override_params, @activation_key)
228
+ end
229
+ @activation_key.set_content_overrides(content_override_values)
207
230
  respond_for_show(:resource => @activation_key)
208
231
  end
209
232
 
@@ -224,24 +247,6 @@ module Katello
224
247
 
225
248
  private
226
249
 
227
- def validate_content_overrides(content_params)
228
- case content_params[:value].to_s
229
- when 'default'
230
- content_params[:value] = nil
231
- when '1'
232
- content_params[:value] = 1
233
- when '0'
234
- content_params[:value] = 0
235
- else
236
- fail HttpErrors::BadRequest, _("Value must be 0/1, or 'default'")
237
- end
238
-
239
- unless @activation_key.valid_content_label?(content_params[:content_label])
240
- fail HttpErrors::BadRequest, _("Invalid content label: %s") % content_params[:content_label]
241
- end
242
- content_params
243
- end
244
-
245
250
  def subscription_index
246
251
  subs = @activation_key.subscriptions
247
252
  subscriptions = {
@@ -51,6 +51,7 @@ module Katello
51
51
 
52
52
  total = scoped_search_total(query, group)
53
53
 
54
+ query = query.pluck(:id) if query.respond_to?(:pluck)
54
55
  query = resource.search_for(*search_options).where("#{resource.table_name}.id" => query)
55
56
 
56
57
  query = query.select(group).group(group) if group
@@ -74,7 +75,7 @@ module Katello
74
75
  query = query.paginate(paginate_options)
75
76
  end
76
77
  page = params[:page] || 1
77
- per_page = params[:per_page] || ::Setting::General.entries_per_page
78
+ per_page = params[:per_page] || Setting[:entries_per_page]
78
79
  query = (total.zero? || sub_total.zero?) ? [] : query
79
80
 
80
81
  scoped_search_results(query, sub_total, total, page, per_page)
@@ -86,7 +86,7 @@ module Katello
86
86
  end
87
87
 
88
88
  def find_capsule
89
- @capsule = SmartProxy.authorized(:manage_capsule_content).find(params[:id])
89
+ @capsule = SmartProxy.unscoped.authorized(:manage_capsule_content).find(params[:id])
90
90
  unless @capsule && @capsule.has_feature?(SmartProxy::PULP_NODE_FEATURE)
91
91
  fail _("This request may only be performed on a Smart proxy that has the Pulp Node feature.")
92
92
  end
@@ -5,6 +5,7 @@ module Katello
5
5
 
6
6
  api :GET, "/content_view_filters/:content_view_filter_id/rules", N_("List filter rules")
7
7
  param :content_view_filter_id, :identifier, :desc => N_("filter identifier"), :required => true
8
+ param_group :search, Api::V2::ApiController
8
9
  def index
9
10
  ids = ContentViewFilter.rule_ids_for(@filter)
10
11
  results = ids.map { |id| ContentViewFilter.rule_class_for(@filter).find(id) }
@@ -20,6 +21,7 @@ module Katello
20
21
  N_("Create a filter rule. The parameters included should be based upon the filter type.")
21
22
  param :content_view_filter_id, :identifier, :desc => N_("filter identifier"), :required => true
22
23
  param :name, [String, Array], :desc => N_("package, package group, or docker tag names")
24
+ param :uuid, String, :desc => N_("package group: uuid")
23
25
  param :version, String, :desc => N_("package: version")
24
26
  param :arch, String, :desc => N_("package: architecture")
25
27
  param :min_version, String, :desc => N_("package: minimum version")
@@ -21,7 +21,7 @@ module Katello
21
21
  query = ContentViewFilter.where(:content_view_id => (@view || ContentView.readable))
22
22
  query = query.where(:name => params[:name]) if params[:name]
23
23
  if params[:types]
24
- types = params[:types].each.collect do |type|
24
+ types = params[:types].collect do |type|
25
25
  ::Katello::ContentViewFilter.class_for(type)
26
26
  end
27
27
  query = query.where("#{::Katello::ContentViewFilter.table_name}.type IN (?)", types)
@@ -3,7 +3,7 @@ module Katello
3
3
  include Concerns::Api::V2::BulkHostsExtensions
4
4
  include Katello::Concerns::FilteredAutoCompleteSearch
5
5
 
6
- before_action :find_content_view_version, :only => [:show, :promote, :destroy, :export]
6
+ before_action :find_content_view_version, :only => [:show, :promote, :destroy, :export, :republish_repositories]
7
7
  before_action :find_content_view, :except => [:incremental_update]
8
8
  before_action :find_environment, :only => [:index]
9
9
  before_action :find_environments, :only => [:promote]
@@ -53,10 +53,20 @@ module Katello
53
53
  param :environment_id, :identifier, :deprecated => true, :desc => N_("LifeCycle Environment identifier")
54
54
  param :environment_ids, Array, :desc => N_("Identifiers for Lifecycle Environment")
55
55
  param :description, String, :desc => N_("The description for the content view version promotion")
56
+ param :force_yum_metadata_regeneration, :bool, :desc => N_("Force metadata regeneration on the repositories " \
57
+ "in the content view version")
56
58
  def promote
57
59
  is_force = ::Foreman::Cast.to_bool(params[:force])
58
60
  task = async_task(::Actions::Katello::ContentView::Promote,
59
- @version, @environments, is_force, params[:description])
61
+ @version, @environments, is_force, params[:description],
62
+ :force_yum_metadata_regeneration => params[:force_yum_metadata_regeneration])
63
+ respond_for_async :resource => task
64
+ end
65
+
66
+ api :PUT, "/content_view_versions/:id/republish_repositories", N_("Forces a republish of the version's repositories' metadata.")
67
+ param :id, :identifier, :desc => N_("Content view version identifier"), :required => true
68
+ def republish_repositories
69
+ task = async_task(::Actions::Katello::ContentViewVersion::RepublishRepositories, @version)
60
70
  respond_for_async :resource => task
61
71
  end
62
72
 
@@ -76,8 +76,11 @@ module Katello
76
76
  api :POST, "/content_views/:id/publish", N_("Publish a content view")
77
77
  param :id, :identifier, :desc => N_("Content view identifier"), :required => true
78
78
  param :description, String, :desc => N_("Description for the new published content view version")
79
+ param :force_yum_metadata_regeneration, :bool, :desc => N_("Force yum metadata regeneration on the repositories " \
80
+ "in the content view version")
79
81
  def publish
80
- task = async_task(::Actions::Katello::ContentView::Publish, @view, params[:description])
82
+ task = async_task(::Actions::Katello::ContentView::Publish, @view, params[:description],
83
+ :force_yum_metadata_regeneration => params[:force_yum_metadata_regeneration])
81
84
  respond_for_async :resource => task
82
85
  end
83
86
 
@@ -3,6 +3,16 @@ module Katello
3
3
  apipie_concern_subst(:a_resource => N_("a docker tag"), :resource => "docker_tags")
4
4
  include Katello::Concerns::Api::V2::RepositoryContentController
5
5
 
6
+ before_action :find_repositories, :only => [:auto_complete_name]
7
+
8
+ def auto_complete_name
9
+ page_size = Katello::Concerns::FilteredAutoCompleteSearch::PAGE_SIZE
10
+ tags = Katello::DockerTag.in_repositories(@repositories)
11
+ col = "#{Katello::DockerTag.table_name}.name"
12
+ tags = tags.where("#{Katello::DockerTag.table_name}.name ILIKE ?", "#{params[:term]}%").select(col).group(col).order(col).limit(page_size)
13
+ render :json => tags.pluck(col)
14
+ end
15
+
6
16
  def index
7
17
  if params[:grouped]
8
18
  # group docker tags by name, repo, and product
@@ -18,6 +28,10 @@ module Katello
18
28
 
19
29
  private
20
30
 
31
+ def find_repositories
32
+ @repositories = Repository.readable.where(:id => params[:repoids])
33
+ end
34
+
21
35
  def resource_class
22
36
  DockerTag
23
37
  end
@@ -47,6 +47,7 @@ module Katello
47
47
  param :organization_id, :number, :desc => N_("organization identifier")
48
48
  param :library, [true, false], :desc => N_("set true if you want to see only library environments")
49
49
  param :name, String, :desc => N_("filter only environments containing this name")
50
+ param_group :search, Api::V2::ApiController
50
51
  def index
51
52
  respond(:collection => scoped_search(index_relation.uniq, :name, :asc, :resource_class => KTEnvironment))
52
53
  end
@@ -125,7 +126,7 @@ module Katello
125
126
  end
126
127
 
127
128
  paths = env_paths.inject([]) do |result, path|
128
- result << { :environments => [@organization.library] + path }
129
+ result << { :environments => [@organization.library] + path.select(&:readable?) }
129
130
  end
130
131
  paths = [{ :environments => [@organization.library] }] if paths.empty?
131
132
 
@@ -92,7 +92,8 @@ module Katello
92
92
  already_added_host_ids = @host_collection.host_ids & host_ids
93
93
  unfound_host_ids = host_ids - @hosts.pluck(:id)
94
94
 
95
- @host_collection.host_ids += @editable_hosts.pluck(:id)
95
+ @host_collection.host_ids = (@host_collection.host_ids +
96
+ @editable_hosts.pluck(:id)).uniq
96
97
  @host_collection.save!
97
98
 
98
99
  messages = format_bulk_action_messages(
@@ -19,6 +19,7 @@ module Katello
19
19
 
20
20
  api :GET, "/hosts/:host_id/packages", N_("List packages installed on the host")
21
21
  param :host_id, :identifier, :required => true, :desc => N_("ID of the host")
22
+ param_group :search, Api::V2::ApiController
22
23
  def index
23
24
  collection = scoped_search(index_relation.uniq, :name, :asc, :resource_class => ::Katello::InstalledPackage)
24
25
  respond_for_index(:collection => collection)
@@ -1,5 +1,6 @@
1
1
  module Katello
2
2
  class Api::V2::HostSubscriptionsController < Katello::Api::V2::ApiController
3
+ include Katello::Concerns::Api::V2::ContentOverridesController
3
4
  before_action :find_host, :except => :create
4
5
  before_action :check_subscriptions, :only => [:add_subscriptions, :remove_subscriptions]
5
6
  before_action :find_content_view_environment, :only => :create
@@ -133,12 +134,34 @@ module Katello
133
134
 
134
135
  api :PUT, "/hosts/:host_id/subscriptions/content_override", N_("Set content overrides for the host")
135
136
  param :host_id, String, :desc => N_("Id of the content host"), :required => true
136
- param :content_label, String, :desc => N_("Label of the content"), :required => true
137
- param :value, [0, 1, String], :desc => N_("Override to 'yes', 'no', or 'default'"), :required => true
137
+ param :content_label, String, :desc => N_("Label of the content"), :required => false
138
+ param :value, String, :desc => N_("Override to a boolean value or 'default'"), :required => false
139
+ param :content_overrides, Array, :desc => N_("Array of Content override parameters") do
140
+ param :content_label, String, :desc => N_("Label of the content"), :required => true
141
+ param :value, String, :desc => N_("Override value. Provide a boolean value if name is 'enabled'"), :required => false
142
+ param :name, String, :desc => N_("Override key or name. Note if name is not provided the default name will be 'enabled'"), :required => false
143
+ param :remove, :bool, :desc => N_("Set true to remove an override and reset it to 'default'"), :required => false
144
+ end
138
145
  def content_override
139
- content_override = validate_content_overrides(params)
140
- @host.subscription_facet.candlepin_consumer.set_content_override(content_override[:content_label], 'enabled', content_override[:value])
146
+ content_overrides = []
147
+ if params[:content_label]
148
+ ::Foreman::Deprecation.api_deprecation_warning("The parameter content_label will be removed in Katello 3.5. Please update to use the content_overrides parameter.")
149
+ content_override_params = {:content_label => params[:content_label]}
150
+ value = params[:value]
151
+ if value == "default"
152
+ content_override_params[:remove] = true
153
+ elsif value
154
+ content_override_params[:value] = ::Foreman::Cast.to_bool(value)
155
+ end
156
+ content_overrides << content_override_params
157
+ elsif params[:content_overrides]
158
+ content_overrides = params[:content_overrides]
159
+ end
141
160
 
161
+ content_override_values = content_overrides.map do |override_params|
162
+ validate_content_overrides_enabled(override_params, @host)
163
+ end
164
+ sync_task(::Actions::Katello::Host::UpdateContentOverrides, @host, content_override_values, false)
142
165
  product_content
143
166
  end
144
167
 
@@ -161,25 +184,6 @@ module Katello
161
184
 
162
185
  private
163
186
 
164
- def validate_content_overrides(content_params)
165
- case content_params[:value].to_s.downcase
166
- when 'default'
167
- content_params[:value] = nil
168
- when '1', 'yes'
169
- content_params[:value] = 1
170
- when '0', 'no'
171
- content_params[:value] = 0
172
- else
173
- fail HttpErrors::BadRequest, _("Value must be 'yes', 'no', or 'default'")
174
- end
175
-
176
- available_content = @host.subscription_facet.candlepin_consumer.available_product_content
177
- unless available_content.map(&:content).any? { |content| content.label == content_params[:content_label] }
178
- fail HttpErrors::BadRequest, _("Invalid content label: %s") % content_params[:content_label]
179
- end
180
- content_params
181
- end
182
-
183
187
  def find_content_view_environment
184
188
  @content_view_environment = Katello::ContentViewEnvironment.where(:content_view_id => params[:content_view_id],
185
189
  :environment_id => params[:lifecycle_environment_id]).first
@@ -1,6 +1,7 @@
1
1
  module Katello
2
2
  class Api::V2::HostsBulkActionsController < Api::V2::ApiController
3
3
  include Concerns::Api::V2::BulkHostsExtensions
4
+ include Katello::Concerns::Api::V2::ContentOverridesController
4
5
 
5
6
  before_action :find_host_collections, :only => [:bulk_add_host_collections, :bulk_remove_host_collections]
6
7
  before_action :find_environment, :only => [:environment_content_view]
@@ -175,6 +176,24 @@ module Katello
175
176
  respond_for_async :resource => task
176
177
  end
177
178
 
179
+ api :PUT, "/hosts/bulk/subscriptions/content_overrides", N_("Set content overrides to one or more hosts")
180
+ param_group :bulk_params
181
+ param :content_overrides, Array, :desc => N_("Array of Content override parameters") do
182
+ param :content_label, String, :desc => N_("Label of the content"), :required => true
183
+ param :value, String, :desc => N_("Override value. Provide a boolean value if name is 'enabled'"), :required => false
184
+ param :name, String, :desc => N_("Override key or name. Note if name is not provided the default name will be 'enabled'"), :required => false
185
+ param :remove, :bool, :desc => N_("Set true to remove an override and reset it to 'default'"), :required => false
186
+ end
187
+ def content_overrides
188
+ content_overrides = params[:content_overrides] || []
189
+ content_override_values = content_overrides.map do |content_override_params|
190
+ validate_content_overrides_enabled(content_override_params)
191
+ end
192
+
193
+ task = async_task(::Actions::BulkAction, ::Actions::Katello::Host::UpdateContentOverrides, @hosts, content_override_values)
194
+ respond_for_async :resource => task
195
+ end
196
+
178
197
  api :PUT, "/hosts/bulk/environment_content_view", N_("Assign the environment and content view to one or more hosts")
179
198
  param_group :bulk_params
180
199
  param :environment_id, Integer
@@ -78,8 +78,8 @@ module Katello
78
78
  sync_task(::Actions::Katello::Organization::Create, @organization)
79
79
  @organization.reload
80
80
  respond_for_show :resource => @organization
81
- rescue
82
- process_resource_error
81
+ rescue => e
82
+ process_resource_error(message: e.message)
83
83
  end
84
84
 
85
85
  api :DELETE, '/organizations/:id', N_('Delete an organization')
@@ -91,10 +91,14 @@ module Katello
91
91
 
92
92
  api :PUT, "/organizations/:id/repo_discover", N_("Discover Repositories")
93
93
  param :id, :number, :desc => N_("Organization ID"), :required => true
94
- param :url, String, :desc => N_("base url to perform repo discovery on")
94
+ param :url, String, :desc => N_("Base URL to perform repo discovery on")
95
+ param :content_type, String, :desc => N_("One of yum or docker")
96
+ param :upstream_username, String, :desc => N_("Username to access URL")
97
+ param :upstream_password, String, :desc => N_("Password to access URL")
95
98
  def repo_discover
96
99
  fail _("url not defined.") if params[:url].blank?
97
- task = async_task(::Actions::Katello::Repository::Discover, params[:url])
100
+ task = async_task(::Actions::Katello::Repository::Discover, params[:url], params[:content_type],
101
+ params[:upstream_username], params[:upstream_password])
98
102
  respond_for_async :resource => task
99
103
  end
100
104
 
@@ -3,6 +3,57 @@ module Katello
3
3
  apipie_concern_subst(:a_resource => N_("a package group"), :resource => "package_groups")
4
4
  include Katello::Concerns::Api::V2::RepositoryContentController
5
5
 
6
+ before_action :find_repository
7
+
8
+ api :POST, "/package_group", N_("Create a package group")
9
+ param :repository_id, String, :required => true, :desc => N_("repository_id")
10
+ param :name, String, :required => true, :desc => N_("package group name.")
11
+ param :description, String, :desc => N_("package group description. Defaults to params[:name]")
12
+ param :user_visible, :bool, :desc => N_("set \"user_visible\" flag on package group. Defaults to true")
13
+ param :mandatory_package_names, Array, :desc => N_("mandatory package names to include in the package group")
14
+ param :optional_package_names, Array, :desc => N_("optional package names to include in the package group")
15
+ param :conditional_package_names, Array, :desc => N_("conditional package names to include in the package group")
16
+ param :default_package_names, Array, :desc => N_("default package names to include in the package group")
17
+
18
+ def create
19
+ fail HttpErrors::BadRequest, _("name not defined.") if params[:name].blank?
20
+ fail HttpErrors::BadRequest, _("repository_id not defined.") if params[:repository_id].blank?
21
+ fail Katello::Errors::InvalidRepositoryContent, _("Can only upload to Yum Repositories.") unless @repo.yum?
22
+
23
+ if params[:mandatory_package_names].empty? && params[:optional_package_names].empty? &&
24
+ params[:conditional_package_names].empty? && params[:default_package_names].empty?
25
+ fail HttpErrors::BadRequest, _("Must supply at least one of mandatory_package_names, " \
26
+ "optional_package_names, conditional_package_names, default_package_names parameters")
27
+ end
28
+
29
+ params.each do |key, value|
30
+ if key.to_s.include?('_package_names')
31
+ if value.present?
32
+ fail HttpErrors::BadRequest, _("%s must be an array.") % key unless value.is_a?(Array)
33
+ end
34
+ end
35
+ end
36
+
37
+ params[:description] = params[:name] if params[:description].empty?
38
+ params[:user_visible] = ::Foreman::Cast.to_bool(params[:user_visible])
39
+ params[:user_visible] ||= true
40
+
41
+ sync_task(::Actions::Katello::Repository::UploadPackageGroup, @repo, params)
42
+ render :json => {:status => "success"}
43
+ end
44
+
45
+ api :DELETE, "/package_group", N_("Delete a package group")
46
+ param :name, String, :required => true, :desc => N_("package group name")
47
+ param :repository_id, String, :required => true, :desc => N_("repository_id")
48
+
49
+ def destroy
50
+ fail Katello::Errors::InvalidRepositoryContent, _("Can only destroy on Yum Repositories.") unless @repo.yum?
51
+ fail _("name not defined.") if params[:name].blank?
52
+
53
+ sync_task(::Actions::Katello::Repository::DestroyPackageGroup, @repo, params[:name])
54
+ render :json => {:status => "success"}
55
+ end
56
+
6
57
  def available_for_content_view_filter(filter, collection)
7
58
  collection_ids = []
8
59
  current_ids = filter.package_group_rules.map(&:uuid)