katello 3.12.3 → 3.13.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 (360) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +22 -3
  3. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +2 -2
  4. data/app/controllers/katello/api/v2/activation_keys_controller.rb +32 -15
  5. data/app/controllers/katello/api/v2/ansible_collections_controller.rb +19 -0
  6. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +3 -0
  7. data/app/controllers/katello/api/v2/content_view_puppet_modules_controller.rb +1 -0
  8. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +1 -0
  9. data/app/controllers/katello/api/v2/content_views_controller.rb +1 -0
  10. data/app/controllers/katello/api/v2/environments_controller.rb +1 -0
  11. data/app/controllers/katello/api/v2/errata_controller.rb +2 -1
  12. data/app/controllers/katello/api/v2/gpg_keys_controller.rb +1 -0
  13. data/app/controllers/katello/api/v2/host_collections_controller.rb +1 -0
  14. data/app/controllers/katello/api/v2/host_debs_controller.rb +34 -0
  15. data/app/controllers/katello/api/v2/host_errata_controller.rb +51 -4
  16. data/app/controllers/katello/api/v2/host_packages_controller.rb +1 -0
  17. data/app/controllers/katello/api/v2/module_streams_controller.rb +1 -0
  18. data/app/controllers/katello/api/v2/organizations_controller.rb +1 -3
  19. data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +18 -0
  20. data/app/controllers/katello/api/v2/products_controller.rb +1 -0
  21. data/app/controllers/katello/api/v2/repositories_controller.rb +46 -11
  22. data/app/controllers/katello/api/v2/repository_sets_controller.rb +6 -5
  23. data/app/controllers/katello/api/v2/srpms_controller.rb +24 -0
  24. data/app/controllers/katello/api/v2/sync_plans_controller.rb +1 -0
  25. data/app/controllers/katello/application_controller.rb +1 -0
  26. data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +2 -2
  27. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +9 -0
  28. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +2 -0
  29. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +1 -1
  30. data/app/helpers/katello/concerns/dashboard_helper_extensions.rb +13 -10
  31. data/app/lib/actions/candlepin/activation_key/create.rb +7 -1
  32. data/app/lib/actions/candlepin/activation_key/update.rb +7 -1
  33. data/app/lib/actions/candlepin/owner/destroy.rb +1 -1
  34. data/app/lib/actions/candlepin/product/update.rb +17 -0
  35. data/app/lib/actions/helpers/output_propagator.rb +13 -0
  36. data/app/lib/actions/katello/activation_key/create.rb +4 -1
  37. data/app/lib/actions/katello/activation_key/update.rb +8 -2
  38. data/app/lib/actions/katello/content_view/publish.rb +22 -34
  39. data/app/lib/actions/katello/event_queue/poller_thread.rb +22 -9
  40. data/app/lib/actions/katello/host/update.rb +3 -1
  41. data/app/lib/actions/katello/host/upload_profiles.rb +16 -0
  42. data/app/lib/actions/katello/organization/destroy.rb +0 -11
  43. data/app/lib/actions/katello/product/update.rb +8 -0
  44. data/app/lib/actions/katello/product/update_http_proxy.rb +19 -0
  45. data/app/lib/actions/katello/provider/update.rb +6 -7
  46. data/app/lib/actions/katello/pulp_selector.rb +15 -5
  47. data/app/lib/actions/katello/repository/check_matching_content.rb +3 -1
  48. data/app/lib/actions/katello/repository/clone_contents.rb +19 -6
  49. data/app/lib/actions/katello/repository/clone_to_environment.rb +3 -5
  50. data/app/lib/actions/katello/repository/create.rb +3 -1
  51. data/app/lib/actions/katello/repository/destroy.rb +5 -4
  52. data/app/lib/actions/katello/repository/discover.rb +8 -8
  53. data/app/lib/actions/katello/repository/export.rb +1 -1
  54. data/app/lib/actions/katello/repository/filtered_index_content.rb +10 -5
  55. data/app/lib/actions/katello/repository/finish_upload.rb +8 -0
  56. data/app/lib/actions/katello/repository/import_upload.rb +5 -2
  57. data/app/lib/actions/katello/repository/index_content.rb +3 -2
  58. data/app/lib/actions/katello/repository/metadata_generate.rb +10 -4
  59. data/app/lib/actions/katello/repository/remove_content.rb +11 -3
  60. data/app/lib/actions/katello/repository/sync.rb +14 -7
  61. data/app/lib/actions/katello/repository/update.rb +11 -5
  62. data/app/lib/actions/katello/repository/update_http_proxy_details.rb +17 -0
  63. data/app/lib/actions/katello/repository/upload_files.rb +7 -3
  64. data/app/lib/actions/katello/subscription/update.rb +11 -0
  65. data/app/lib/actions/katello/upstream_subscriptions/remove_entitlement.rb +3 -0
  66. data/app/lib/actions/katello/upstream_subscriptions/remove_entitlements.rb +4 -1
  67. data/app/lib/actions/middleware/backend_services_check.rb +10 -2
  68. data/app/lib/actions/middleware/propagate_output.rb +15 -0
  69. data/app/lib/actions/middleware/pulp3_services_check.rb +9 -0
  70. data/app/lib/actions/pulp/abstract_async_task.rb +8 -1
  71. data/app/lib/actions/pulp/orchestration/repository/copy_all_units.rb +19 -0
  72. data/app/lib/actions/pulp/orchestration/repository/refresh.rb +14 -0
  73. data/app/lib/actions/pulp/orchestration/repository/refresh_if_needed.rb +13 -0
  74. data/app/lib/actions/pulp/orchestration/repository/remove_units.rb +14 -0
  75. data/app/lib/actions/pulp/orchestration/repository/sync.rb +17 -0
  76. data/app/lib/actions/pulp/repository/copy_all_units.rb +1 -1
  77. data/app/lib/actions/pulp/repository/create.rb +0 -1
  78. data/app/lib/actions/pulp/repository/refresh.rb +0 -5
  79. data/app/lib/actions/pulp/repository/remove_units.rb +1 -1
  80. data/app/lib/actions/pulp/repository/sync.rb +8 -14
  81. data/app/lib/actions/pulp3/abstract.rb +2 -1
  82. data/app/lib/actions/pulp3/abstract_async_task.rb +15 -6
  83. data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +55 -0
  84. data/app/lib/actions/pulp3/orchestration/repository/create.rb +1 -2
  85. data/app/lib/actions/pulp3/orchestration/repository/delete.rb +1 -2
  86. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +17 -2
  87. data/app/lib/actions/pulp3/orchestration/repository/remove_units.rb +18 -0
  88. data/app/lib/actions/pulp3/orchestration/repository/sync.rb +19 -0
  89. data/app/lib/actions/pulp3/orchestration/repository/update.rb +15 -0
  90. data/app/lib/actions/pulp3/repository/copy_content.rb +19 -0
  91. data/app/lib/actions/pulp3/repository/copy_version.rb +19 -0
  92. data/app/lib/actions/pulp3/repository/create_publication.rb +3 -2
  93. data/app/lib/actions/pulp3/repository/presenters/abstract_sync_presenter.rb +42 -0
  94. data/app/lib/actions/pulp3/repository/presenters/content_unit_presenter.rb +57 -0
  95. data/app/lib/actions/pulp3/repository/refresh_distribution.rb +7 -3
  96. data/app/lib/actions/pulp3/repository/remove_units.rb +23 -0
  97. data/app/lib/actions/pulp3/repository/save_distribution_references.rb +6 -4
  98. data/app/lib/actions/pulp3/repository/save_publication.rb +5 -4
  99. data/app/lib/actions/pulp3/repository/save_version.rb +8 -4
  100. data/app/lib/actions/pulp3/repository/sync.rb +55 -0
  101. data/app/lib/actions/pulp3/repository/{delete_publisher.rb → update_distributions.rb} +5 -5
  102. data/app/lib/actions/pulp3/repository/{create_publisher.rb → update_remote.rb} +2 -2
  103. data/app/lib/actions/pulp3/repository/update_repository.rb +16 -0
  104. data/app/lib/katello/errors.rb +9 -0
  105. data/app/lib/katello/resources/candlepin/activation_key.rb +5 -4
  106. data/app/lib/katello/resources/candlepin/product.rb +4 -0
  107. data/app/lib/katello/resources/candlepin/upstream_consumer.rb +11 -0
  108. data/app/lib/katello/resources/candlepin/upstream_pool.rb +6 -2
  109. data/app/lib/katello/resources/cdn.rb +3 -16
  110. data/app/lib/katello/util/cdn_var_substitutor.rb +0 -3
  111. data/app/lib/katello/util/http_proxy.rb +9 -9
  112. data/app/lib/katello/validators/hostgroup_kickstart_repository_validator.rb +1 -1
  113. data/app/models/katello/activation_key.rb +14 -0
  114. data/app/models/katello/activation_key_purpose_addon.rb +6 -0
  115. data/app/models/katello/ansible_collection.rb +32 -0
  116. data/app/models/katello/candlepin/repository_mapper.rb +1 -1
  117. data/app/models/katello/concerns/host_managed_extensions.rb +3 -0
  118. data/app/models/katello/concerns/http_proxy_extensions.rb +60 -0
  119. data/app/models/katello/concerns/location_extensions.rb +8 -0
  120. data/app/models/katello/concerns/organization_extensions.rb +9 -0
  121. data/app/models/katello/concerns/pulp_database_unit.rb +56 -81
  122. data/app/models/katello/concerns/setting_extensions.rb +14 -0
  123. data/app/models/katello/concerns/smart_proxy_extensions.rb +27 -11
  124. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +8 -1
  125. data/app/models/katello/content_view.rb +4 -0
  126. data/app/models/katello/content_view_filter.rb +4 -8
  127. data/app/models/katello/docker_tag.rb +11 -10
  128. data/app/models/katello/erratum.rb +22 -0
  129. data/app/models/katello/event.rb +2 -0
  130. data/app/models/katello/events/auto_publish_composite_view.rb +41 -0
  131. data/app/models/katello/glue/pulp/repo.rb +0 -15
  132. data/app/models/katello/host/content_facet.rb +35 -4
  133. data/app/models/katello/host/subscription_facet.rb +14 -16
  134. data/app/models/katello/host_installed_deb.rb +7 -0
  135. data/app/models/katello/installed_deb.rb +10 -0
  136. data/app/models/katello/ping.rb +45 -10
  137. data/app/models/katello/product_content.rb +1 -1
  138. data/app/models/katello/purpose_addon.rb +11 -0
  139. data/app/models/katello/repository.rb +52 -41
  140. data/app/models/katello/repository_ansible_collection.rb +6 -0
  141. data/app/models/katello/repository_content_view_filter.rb +7 -0
  142. data/app/models/katello/rhsm_fact_parser.rb +11 -1
  143. data/app/models/katello/root_repository.rb +46 -4
  144. data/app/models/katello/srpm.rb +4 -0
  145. data/app/models/katello/subscription_facet_purpose_addon.rb +6 -0
  146. data/app/models/katello/yum_metadata_file.rb +3 -3
  147. data/app/models/setting/content.rb +32 -7
  148. data/app/overrides/add_about_page.rb +0 -7
  149. data/app/services/cert/certs.rb +1 -1
  150. data/app/services/katello/candlepin/consumer.rb +4 -0
  151. data/app/services/katello/event_queue.rb +33 -3
  152. data/app/services/katello/pulp/content_counts_calculator.rb +6 -0
  153. data/app/services/katello/pulp/docker_manifest.rb +1 -2
  154. data/app/services/katello/pulp/docker_manifest_list.rb +0 -1
  155. data/app/services/katello/pulp/file_unit.rb +1 -1
  156. data/app/services/katello/pulp/pulp_content_unit.rb +43 -0
  157. data/app/services/katello/pulp/repository.rb +32 -5
  158. data/app/services/katello/pulp/repository/file.rb +6 -1
  159. data/app/services/katello/pulp/repository/yum.rb +6 -6
  160. data/app/services/katello/pulp/rpm.rb +1 -1
  161. data/app/services/katello/pulp/srpm.rb +1 -1
  162. data/app/services/katello/pulp3/ansible_collection.rb +31 -0
  163. data/app/services/katello/pulp3/docker_blob.rb +17 -0
  164. data/app/services/katello/pulp3/docker_manifest.rb +36 -0
  165. data/app/services/katello/pulp3/docker_manifest_list.rb +30 -0
  166. data/app/services/katello/pulp3/docker_tag.rb +28 -0
  167. data/app/services/katello/pulp3/file_unit.rb +25 -0
  168. data/app/services/katello/pulp3/pulp_content_unit.rb +75 -0
  169. data/app/services/katello/pulp3/repository.rb +160 -47
  170. data/app/services/katello/pulp3/repository/ansible_collection.rb +49 -0
  171. data/app/services/katello/pulp3/repository/docker.rb +55 -0
  172. data/app/services/katello/pulp3/repository/file.rb +35 -25
  173. data/app/services/katello/repository_type.rb +15 -5
  174. data/app/services/katello/repository_type_manager.rb +32 -1
  175. data/app/views/dashboard/_subscription_widget.html.erb +7 -7
  176. data/app/views/foreman/smart_proxies/_content_tab.html.erb +5 -1
  177. data/app/views/katello/api/v2/activation_keys/base.json.rabl +5 -1
  178. data/app/views/katello/api/v2/ansible_collections/base.json.rabl +7 -0
  179. data/app/views/katello/api/v2/ansible_collections/index.json.rabl +7 -0
  180. data/app/views/katello/api/v2/ansible_collections/show.json.rabl +3 -0
  181. data/app/views/katello/api/v2/host_debs/base.json.rabl +4 -0
  182. data/app/views/katello/api/v2/host_debs/index.json.rabl +7 -0
  183. data/app/views/katello/api/v2/ping/show.json.rabl +2 -1
  184. data/app/views/katello/api/v2/repositories/base.json.rabl +3 -2
  185. data/app/views/katello/api/v2/repositories/show.json.rabl +8 -1
  186. data/app/views/katello/api/v2/srpms/index.json.rabl +7 -0
  187. data/app/views/katello/api/v2/srpms/show.json.rabl +5 -0
  188. data/app/views/katello/api/v2/subscription_facet/base.json.rabl +5 -1
  189. data/config/katello.yaml.example +1 -0
  190. data/config/routes/api/rhsm.rb +1 -0
  191. data/config/routes/api/v2.rb +16 -0
  192. data/config/routes/overrides.rb +4 -0
  193. data/db/migrate/20180502155123_add_installed_deb.rb +23 -0
  194. data/db/migrate/20190513162209_drop_repository_reference_publisher_href.rb +5 -0
  195. data/db/migrate/20190605014649_add_purpose_addons.rb +29 -0
  196. data/db/migrate/20190617142328_create_katello_ansible_collections.rb +25 -0
  197. data/db/migrate/20190618034438_add_ansible_collection_whitelist_to_katello_root_repositories.rb +5 -0
  198. data/db/migrate/20190619192151_add_activation_key_system_purpose_attributes.rb +14 -0
  199. data/db/migrate/20190701174401_add_http_proxy_policy_to_repository_root.rb +12 -0
  200. data/db/migrate/20190701192616_add_http_proxy_to_repository_root.rb +6 -0
  201. data/db/migrate/20190702182118_add_metadata_process_after_to_katello_event.rb +6 -0
  202. data/db/migrate/20190708195809_remove_all_manifest_downloaded.rb +11 -0
  203. data/db/migrate/20190723171639_update_content_view_filters_repositories_join_table.rb +11 -0
  204. data/db/seeds.d/115-http_proxy.rb +25 -0
  205. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -0
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details-info.controller.js +15 -0
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +69 -4
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +39 -0
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion-katello-bootstrap.js +1 -0
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +3 -0
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-repository-sets-modal.controller.js +2 -1
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +1 -7
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +26 -0
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-actions.controller.js +14 -0
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-installed.controller.js +77 -0
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs.controller.js +63 -0
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +18 -21
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-actions.html +62 -0
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-installed.html +52 -0
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs.html +9 -0
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -1
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +21 -1
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -1
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +1 -2
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +1 -1
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +4 -4
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-debs.factory.js +20 -0
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host.factory.js +9 -0
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/http-proxies/http-proxies.module.js +14 -0
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/http-proxies/http-proxy.factory.js +21 -0
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/product-bulk-action.factory.js +2 -1
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-http-proxy-modal.controller.js +77 -0
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-http-proxy-modal.html +57 -0
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +25 -3
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +13 -1
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +75 -29
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/http-proxy-service.js +53 -0
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +18 -2
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +42 -16
  240. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +7 -0
  241. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +16 -0
  242. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/products.html +6 -0
  243. data/lib/katello.rb +0 -1
  244. data/lib/katello/engine.rb +2 -0
  245. data/lib/katello/permission_creator.rb +7 -2
  246. data/lib/katello/permissions/host_permissions.rb +3 -0
  247. data/lib/katello/plugin.rb +3 -2
  248. data/lib/katello/repository_types/ansible_collection.rb +8 -0
  249. data/lib/katello/repository_types/deb.rb +2 -1
  250. data/lib/katello/repository_types/docker.rb +23 -4
  251. data/lib/katello/repository_types/file.rb +7 -1
  252. data/lib/katello/repository_types/ostree.rb +2 -1
  253. data/lib/katello/repository_types/puppet.rb +2 -1
  254. data/lib/katello/repository_types/yum.rb +3 -2
  255. data/lib/katello/tasks/clean_published_repo_directories.rake +1 -1
  256. data/lib/katello/tasks/delete_orphaned_content.rake +16 -5
  257. data/lib/katello/tasks/jenkins.rake +2 -0
  258. data/lib/katello/tasks/update_content_default_http_proxy.rake +69 -0
  259. data/lib/katello/version.rb +1 -1
  260. data/package.json +10 -22
  261. data/webpack/{move_to_foreman/__mocks__ → __mocks__/foremanJS}/foreman_toast_notifications.js +0 -0
  262. data/webpack/__mocks__/foremanReact/common/helpers.js +3 -6
  263. data/webpack/__mocks__/foremanReact/common/keyCodes.js +8 -0
  264. data/webpack/__mocks__/foremanReact/common/urlHelpers.js +7 -0
  265. data/webpack/__mocks__/foremanReact/components/Settings/SettingsActions.js +4 -0
  266. data/webpack/__mocks__/foremanReact/components/Settings/SettingsConstants.js +2 -0
  267. data/webpack/__mocks__/foremanReact/components/common/Fill/GlobalFill.js +3 -0
  268. data/webpack/__mocks__/foremanReact/components/common/ModalProgressBar.js +8 -0
  269. data/webpack/components/SelectOrg/SetOrganization.js +11 -19
  270. data/webpack/components/WithOrganization/__snapshots__/withOrganization.test.js.snap +1 -3
  271. data/webpack/components/WithOrganization/withOrganization.js +2 -2
  272. data/webpack/components/WithOrganization/withOrganization.test.js +2 -2
  273. data/webpack/components/extensions/about/SystemStatuses.js +55 -0
  274. data/webpack/components/extensions/about/SystemStatusesActions.js +16 -0
  275. data/webpack/components/extensions/about/SystemStatusesConsts.js +3 -0
  276. data/webpack/components/extensions/about/SystemStatusesReducer.js +26 -0
  277. data/webpack/components/extensions/about/SystemStatusesSelectors.js +3 -0
  278. data/webpack/components/extensions/about/__tests__/SystemStatuses.fixtures.js +20 -0
  279. data/webpack/components/extensions/about/__tests__/SystemStatuses.test.js +14 -0
  280. data/webpack/components/extensions/about/__tests__/SystemStatusesReducer.test.js +32 -0
  281. data/webpack/components/extensions/about/__tests__/__snapshots__/SystemStatuses.test.js.snap +156 -0
  282. data/webpack/components/extensions/about/__tests__/__snapshots__/SystemStatusesReducer.test.js.snap +47 -0
  283. data/webpack/components/extensions/about/index.js +19 -0
  284. data/webpack/components/extensions/reducers.js +6 -0
  285. data/webpack/containers/Application/config.js +4 -10
  286. data/webpack/fills_index.js +10 -0
  287. data/webpack/move_to_foreman/common/helpers.js +0 -20
  288. data/webpack/move_to_foreman/components/common/table/components/TableSelectionCell.js +1 -0
  289. data/webpack/move_to_foreman/components/common/table/formatters/EntitlementsInlineEditFormatter.js +3 -3
  290. data/webpack/move_to_pf/LoadingState/LoadingState.js +1 -0
  291. data/webpack/move_to_pf/OptionTooltip/OptionTooltip.scss +2 -1
  292. data/webpack/move_to_pf/TypeAhead/TypeAhead.js +3 -4
  293. data/webpack/redux/actions/RedHatRepositories/helpers.js +6 -1
  294. data/webpack/redux/reducers/index.js +2 -0
  295. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetailInfo.js +1 -0
  296. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +1 -0
  297. data/webpack/scenes/ModuleStreams/Details/Profiles/TableSchema.js +1 -0
  298. data/webpack/scenes/ModuleStreams/Details/Profiles/__tests__/ProfileRpmsCellFormatter.test.js +0 -2
  299. data/webpack/scenes/ModuleStreams/Details/Repositories/TableSchema.js +3 -2
  300. data/webpack/scenes/ModuleStreams/Details/index.js +1 -1
  301. data/webpack/scenes/ModuleStreams/ModuleStreamsPage.js +2 -0
  302. data/webpack/scenes/ModuleStreams/ModuleStreamsTable.js +2 -0
  303. data/webpack/scenes/ModuleStreams/ModuleStreamsTableSchema.js +3 -2
  304. data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamPage.test.js +0 -1
  305. data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamsTable.test.js +0 -1
  306. data/webpack/scenes/ModuleStreams/index.js +1 -1
  307. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +2 -3
  308. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +1 -0
  309. data/webpack/scenes/RedHatRepositories/components/RecommendedRepositorySetsToggler.js +1 -0
  310. data/webpack/scenes/RedHatRepositories/components/RecommendedRepositorySetsToggler.scss +1 -1
  311. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -0
  312. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/RepositorySetRepository.js +3 -4
  313. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/__test__/RepositorySetRepository.test.js +0 -2
  314. data/webpack/scenes/RedHatRepositories/components/SearchBar.js +1 -0
  315. data/webpack/scenes/RedHatRepositories/helpers.js +1 -1
  316. data/webpack/scenes/RedHatRepositories/index.js +3 -2
  317. data/webpack/scenes/RedHatRepositories/index.scss +1 -1
  318. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailAssociations.js +3 -3
  319. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProductContent.js +1 -0
  320. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProducts.js +1 -0
  321. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +1 -2
  322. data/webpack/scenes/Subscriptions/Details/__tests__/SubscriptionDetails.test.js +0 -1
  323. data/webpack/scenes/Subscriptions/Details/index.js +1 -1
  324. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +1 -0
  325. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +1 -2
  326. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +1 -1
  327. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +3 -2
  328. data/webpack/scenes/Subscriptions/SubscriptionsPage.scss +1 -2
  329. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +9 -9
  330. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsTableSchema.js +2 -2
  331. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/UpstreamSubscriptionsPage.test.js +0 -1
  332. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/index.js +1 -1
  333. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +1 -2
  334. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +2 -1
  335. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +2 -1
  336. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionTypeFormatter.js +3 -2
  337. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +1 -0
  338. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableSchema.js +3 -2
  339. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +1 -1
  340. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/DeleteDialog.js +1 -1
  341. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/InputsErrorsDialog.js +1 -0
  342. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/UnsavedChangesDialog.js +1 -0
  343. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/UpdateDialog.js +1 -1
  344. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +1 -0
  345. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +1 -0
  346. data/webpack/scenes/Subscriptions/index.js +1 -1
  347. data/webpack/scenes/Tasks/helpers.js +5 -6
  348. metadata +161 -20
  349. data/app/lib/actions/katello/repository/clear.rb +0 -11
  350. data/app/views/overrides/about/_system_status.html.erb +0 -19
  351. data/webpack/move_to_foreman/Settings/SettingsActions.js +0 -28
  352. data/webpack/move_to_foreman/Settings/SettingsConstants.js +0 -3
  353. data/webpack/move_to_foreman/Settings/__tests__/SettingsActions.test.js +0 -41
  354. data/webpack/move_to_foreman/Settings/__tests__/settings.fixtures.js +0 -34
  355. data/webpack/move_to_foreman/components/common/ModalProgressBar/ModalProgressBar.js +0 -48
  356. data/webpack/move_to_foreman/components/common/ModalProgressBar/ModalProgressBar.scss +0 -15
  357. data/webpack/move_to_foreman/components/common/ModalProgressBar/__tests__/ModalProgressBar.test.js +0 -22
  358. data/webpack/move_to_foreman/components/common/ModalProgressBar/__tests__/__snapshots__/ModalProgressBar.test.js.snap +0 -60
  359. data/webpack/move_to_foreman/components/common/ModalProgressBar/index.js +0 -4
  360. data/webpack/move_to_foreman/foreman_toast_notifications.js +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57454653134acc1d275c22a1e8df7bed953b3cc15fbc45cf6a519f197867d2d5
4
- data.tar.gz: 07ed05ad436f0cf25cc31324fdf0d613eeed837b55926573dfc874505556ce1a
3
+ metadata.gz: a68154d032a02256c3ff6e96034502c068733fe1d9a56563752eaf0872aaf3d8
4
+ data.tar.gz: 5c0142999143ffc5b34c5f8a7e22b706fde67ae5a19cde1e5f6efe91afe261a1
5
5
  SHA512:
6
- metadata.gz: a177b3f0adfd8a8a02c697faf17ac209f3c9adad880006087c1fa0fa59f27967f216abea195df1ca840feb733c77a5d45e95d6381abd3ef33f6f17346eecc73a
7
- data.tar.gz: 2dd25b82086662e95942e799f2b8822be30ce6b8d66597b09acdab2d93596867fe82a8dec7052f8498d4672262f28aa963ad1e9dcbfd7f21b3c1a8a9e43e6eb8
6
+ metadata.gz: 15618682b388b7d4c21599f02a15ad962a24dc82f67576f19df37d16456000e2c342c520b16d8b1092f3d97e3daae8fa07c1574a34f9780e5491990919bb361f
7
+ data.tar.gz: 63055d639c7ec06fa43dba4f659f3b87e7ace99a33e62b5a494eb90d79100ac1da22d4719f66b58378355d08ec0d52e6c7f869884b0c850e652b9a55b8e0ae9f
@@ -4,9 +4,11 @@ module Katello
4
4
  include ForemanTasks::Triggers
5
5
  include AbstractController::Callbacks
6
6
 
7
- skip_before_action :authorize, :only => [:upload_package_profile, :upload_profiles]
8
- before_action :find_host, :only => [:upload_package_profile, :upload_profiles]
9
- before_action :authorize_client_or_user, :only => [:upload_package_profile, :upload_profiles]
7
+ before_action :deprecated, only: :deb_package_profile
8
+
9
+ skip_before_action :authorize, :only => [:upload_package_profile, :upload_profiles, :deb_package_profile]
10
+ before_action :find_host, :only => [:upload_package_profile, :upload_profiles, :deb_package_profile]
11
+ before_action :authorize_client_or_user, :only => [:upload_package_profile, :upload_profiles, :deb_package_profile]
10
12
 
11
13
  skip_before_action :check_content_type
12
14
 
@@ -29,6 +31,19 @@ module Katello
29
31
  render :json => Resources::Candlepin::Consumer.get(@host.subscription_facet.uuid)
30
32
  end
31
33
 
34
+ api :PUT, "/systems/:id/deb_package_profile", N_("Update installed deb packages")
35
+ param :deb_package_profile, Hash, :required => true do
36
+ param :deb_packages, Array, :required => true do
37
+ param :name, String, :required => true
38
+ param :architecture, String, :required => true
39
+ param :version, String, :required => true
40
+ end
41
+ end
42
+ param :id, String, :desc => N_("UUID of the system"), :required => true
43
+ def deb_package_profile
44
+ upload_profiles
45
+ end
46
+
32
47
  def find_host(uuid = nil)
33
48
  params = request.path_parameters
34
49
  uuid ||= params[:id]
@@ -50,5 +65,9 @@ module Katello
50
65
  authorized = (User.current.uuid == @host.subscription_facet.uuid) if @host && User.consumer?
51
66
  authorized
52
67
  end
68
+
69
+ def deprecated
70
+ ::Foreman::Deprecation.api_deprecation_warning("it will be removed in Katello 3.15 - please use /consumers/:id/profiles instead.")
71
+ end
53
72
  end
54
73
  end
@@ -185,8 +185,8 @@ module Katello
185
185
  end
186
186
  param :id, String, :desc => N_("UUID of the system"), :required => true
187
187
  def enabled_repos
188
- repos_params = params['enabled_repos'] rescue raise(HttpErrors::BadRequest, _("Expected attribute is missing:") + " enabled_repos")
189
- repos_params = repos_params['repos'] || []
188
+ repos_params = params.dig('enabled_repos', 'repos')
189
+ fail(HttpErrors::BadRequest, _("The request did not contain any repository information.")) if repos_params.nil?
190
190
 
191
191
  result = nil
192
192
  User.as_anonymous_admin do
@@ -12,7 +12,7 @@ module Katello
12
12
  :subscriptions]
13
13
  before_action :authorize
14
14
 
15
- wrap_parameters :include => (ActivationKey.attribute_names + %w(host_collection_ids service_level auto_attach content_view_environment))
15
+ wrap_parameters :include => (ActivationKey.attribute_names + %w(host_collection_ids service_level auto_attach purpose_role purpose_usage purpose_addons content_view_environment))
16
16
 
17
17
  api :GET, "/activation_keys", N_("List activation keys")
18
18
  api :GET, "/environments/:environment_id/activation_keys"
@@ -22,6 +22,7 @@ module Katello
22
22
  param :content_view_id, :number, :desc => N_("content view identifier")
23
23
  param :name, String, :desc => N_("activation key name to filter by")
24
24
  param_group :search, Api::V2::ApiController
25
+ add_scoped_search_description_for(ActivationKey)
25
26
  def index
26
27
  activation_key_includes = [:content_view, :environment, :host_collections, :organization]
27
28
  respond(:collection => scoped_search(index_relation.distinct, :name, :asc, :includes => activation_key_includes))
@@ -36,6 +37,9 @@ module Katello
36
37
  param :content_view_id, :number, :desc => N_("content view id")
37
38
  param :max_hosts, :number, :desc => N_("maximum number of registered content hosts")
38
39
  param :unlimited_hosts, :bool, :desc => N_("can the activation key have unlimited hosts")
40
+ param :purpose_usage, String, :desc => N_("Sets the system purpose usage")
41
+ param :purpose_role, String, :desc => N_("Sets the system purpose usage")
42
+ param :purpose_addons, Array, :desc => N_("Sets the system add-ons")
39
43
  def create
40
44
  @activation_key = ActivationKey.new(activation_key_params) do |activation_key|
41
45
  activation_key.environment = @environment if @environment
@@ -59,6 +63,9 @@ module Katello
59
63
  param :release_version, String, :desc => N_("content release version")
60
64
  param :service_level, String, :desc => N_("service level")
61
65
  param :auto_attach, :bool, :desc => N_("auto attach subscriptions upon registration")
66
+ param :purpose_usage, String, :desc => N_("Sets the system purpose usage")
67
+ param :purpose_role, String, :desc => N_("Sets the system purpose usage")
68
+ param :purpose_addons, Array, :desc => N_("Sets the system add-ons")
62
69
  def update
63
70
  sync_task(::Actions::Katello::ActivationKey::Update, @activation_key, activation_key_params)
64
71
  respond_for_show(:resource => @activation_key)
@@ -304,24 +311,34 @@ module Katello
304
311
  end
305
312
  end
306
313
 
314
+ def permitted_params
315
+ params.require(:activation_key).permit(:name,
316
+ :description,
317
+ :environment_id,
318
+ :organization_id,
319
+ :content_view_id,
320
+ :release_version,
321
+ :service_level,
322
+ :auto_attach,
323
+ :max_hosts,
324
+ :unlimited_hosts,
325
+ :purpose_role,
326
+ :purpose_usage,
327
+ :purpose_addon_ids,
328
+ # For deep_munge; Remove for Rails 5
329
+ :host_collection_ids,
330
+ :content_overrides => [],
331
+ :host_collection_ids => []).to_h
332
+ end
333
+
307
334
  def activation_key_params
308
- key_params = params.require(:activation_key).permit(:name,
309
- :description,
310
- :environment_id,
311
- :organization_id,
312
- :content_view_id,
313
- :release_version,
314
- :service_level,
315
- :auto_attach,
316
- :max_hosts,
317
- :unlimited_hosts,
318
- # For deep_munge; Remove for Rails 5
319
- :host_collection_ids,
320
- :content_overrides => [],
321
- :host_collection_ids => []).to_h
335
+ key_params = permitted_params
322
336
 
323
337
  key_params[:environment_id] = params[:environment][:id] if params[:environment].try(:[], :id)
324
338
  key_params[:content_view_id] = params[:content_view][:id] if params[:content_view].try(:[], :id)
339
+ unless params[:purpose_addons].nil?
340
+ key_params[:purpose_addon_ids] = params[:purpose_addons].map { |addon| ::Katello::PurposeAddon.find_or_create_by(name: addon).id }
341
+ end
325
342
  unlimited = params[:activation_key].try(:[], :unlimited_hosts)
326
343
  max_hosts = params[:activation_key].try(:[], :max_hosts)
327
344
 
@@ -0,0 +1,19 @@
1
+ module Katello
2
+ class Api::V2::AnsibleCollectionsController < Api::V2::ApiController
3
+ resource_description do
4
+ name 'Ansible Collections'
5
+ end
6
+ apipie_concern_subst(:a_resource => N_("an ansible collection"), :resource_id => "ansible_collections")
7
+ include Katello::Concerns::Api::V2::RepositoryContentController
8
+
9
+ def default_sort
10
+ %w(name asc)
11
+ end
12
+
13
+ private
14
+
15
+ def repo_association
16
+ :repository_id
17
+ end
18
+ end
19
+ end
@@ -13,6 +13,7 @@ module Katello
13
13
  param :content_view_id, :number, :desc => N_("content view identifier"), :required => true
14
14
  param :name, String, :desc => N_("filter content view filters by name")
15
15
  param :types, Array, :desc => N_("types of filters")
16
+ add_scoped_search_description_for(ContentViewFilter)
16
17
  def index
17
18
  respond(:collection => scoped_search(index_relation.distinct, :name, :asc))
18
19
  end
@@ -61,6 +62,8 @@ module Katello
61
62
  "(package filter only)")
62
63
  param :inclusion, :bool, :desc => N_("specifies if content should be included or excluded, default: inclusion=false")
63
64
  param :repository_ids, Array, :desc => N_("list of repository ids")
65
+ param :description, String, :desc => N_("description of the filter"), :required => false
66
+
64
67
  def update
65
68
  @filter.update_attributes!(filter_params)
66
69
  respond :resource => @filter
@@ -11,6 +11,7 @@ module Katello
11
11
  param :author, String, :desc => N_("author of the puppet module")
12
12
  param :uuid, String, :desc => N_("uuid of the puppet module"), :deprecated => true
13
13
  param_group :search, ::Katello::Api::V2::ApiController
14
+ add_scoped_search_description_for(ContentViewPuppetModule)
14
15
  def index
15
16
  respond(:collection => scoped_search(index_relation.distinct, :name, :asc))
16
17
  end
@@ -22,6 +22,7 @@ module Katello
22
22
  param :organization_id, :number, :desc => N_("Organization identifier")
23
23
  param :triggered_by_id, :number, :desc => N_("Filter composite versions whose publish was triggered by the specified component version"), :required => false
24
24
  param_group :search, Api::V2::ApiController
25
+ add_scoped_search_description_for(ContentViewVersion)
25
26
  def index
26
27
  options = {
27
28
  :includes => [:content_view, :environments, :composite_content_views, :history => :task]
@@ -32,6 +32,7 @@ module Katello
32
32
  param :without, Array, :desc => N_("Do not include this array of content views")
33
33
  param :name, String, :desc => N_("Name of the content view"), :required => false
34
34
  param_group :search, Api::V2::ApiController
35
+ add_scoped_search_description_for(ContentView)
35
36
  def index
36
37
  content_view_includes = [:activation_keys, :content_view_puppet_modules, :content_view_versions,
37
38
  :environments, :organization, :repositories]
@@ -49,6 +49,7 @@ module Katello
49
49
  param :library, [true, false], :desc => N_("set true if you want to see only library environments")
50
50
  param :name, String, :desc => N_("filter only environments containing this name")
51
51
  param_group :search, Api::V2::ApiController
52
+ add_scoped_search_description_for(KTEnvironment)
52
53
  def index
53
54
  respond(:collection => scoped_search(index_relation.distinct, :name, :asc, :resource_class => KTEnvironment))
54
55
  end
@@ -20,6 +20,7 @@ module Katello
20
20
  param :errata_restrict_installable, :bool, :desc => N_("Return errata that are upgradable on one or more hosts")
21
21
  param :available_for, String, :desc => N_("Return errata that can be added to the specified object. The values 'content_view_version' and 'content_view_filter are supported.")
22
22
  param_group :search, Api::V2::ApiController
23
+ add_scoped_search_description_for(Erratum)
23
24
  def index
24
25
  super
25
26
  end
@@ -42,7 +43,7 @@ module Katello
42
43
  collection = collection.where("#{date_type} >= ?", params[:start_date]) if params[:start_date]
43
44
  collection = collection.where("#{date_type} <= ?", params[:end_date]) if params[:end_date]
44
45
  collection = collection.of_type(params[:types]) if params[:types]
45
- collection
46
+ collection.non_modular
46
47
  end
47
48
 
48
49
  def custom_index_relation(collection)
@@ -24,6 +24,7 @@ module Katello
24
24
  param :organization_id, :number, :desc => N_("organization identifier"), :required => true
25
25
  param :name, String, :desc => N_("name of the GPG key"), :required => false
26
26
  param_group :search, Api::V2::ApiController
27
+ add_scoped_search_description_for(GpgKey)
27
28
  def index
28
29
  respond(:collection => scoped_search(index_relation.distinct, :name, :asc))
29
30
  end
@@ -33,6 +33,7 @@ module Katello
33
33
  param :host_id, :number, :desc => N_("Filter products by host id")
34
34
  param :available_for, String, :required => false,
35
35
  :desc => N_("Interpret specified object to return only Host Collections that can be associated with specified object. The value 'host' is supported.")
36
+ add_scoped_search_description_for(HostCollection)
36
37
  def index
37
38
  respond(:collection => scoped_search(index_relation.distinct, :name, :asc))
38
39
  end
@@ -0,0 +1,34 @@
1
+ module Katello
2
+ class Api::V2::HostDebsController < Api::V2::ApiController
3
+ include Katello::Concerns::FilteredAutoCompleteSearch
4
+
5
+ before_action :find_host
6
+
7
+ resource_description do
8
+ api_version 'v2'
9
+ api_base_url "/api"
10
+ end
11
+
12
+ api :GET, "/hosts/:host_id/debs", N_("List deb packages installed on the host")
13
+ param :host_id, :number, :required => true, :desc => N_("ID of the host")
14
+ param_group :search, Api::V2::ApiController
15
+ def index
16
+ collection = scoped_search(index_relation, :name, :asc, :resource_class => ::Katello::InstalledDeb)
17
+ respond_for_index(:collection => collection)
18
+ end
19
+
20
+ def index_relation
21
+ @host.installed_debs
22
+ end
23
+
24
+ def resource_class
25
+ Katello::InstalledDeb
26
+ end
27
+
28
+ private
29
+
30
+ def find_host
31
+ @host = resource_finder(::Host::Managed.authorized(:view_hosts, ::Host::Managed), params[:host_id])
32
+ end
33
+ end
34
+ end
@@ -17,6 +17,18 @@ module Katello
17
17
  Erratum
18
18
  end
19
19
 
20
+ def_param_group :bulk_errata_ids do
21
+ param :included, Hash, :desc => N_("Errata to exclusively include in the action"), :required => true, :action_aware => true do
22
+ param :search, String, :required => false, :desc => N_("Search string for erratum to perform an action on")
23
+ param :ids, Array, :required => false, :desc => N_("List of errata ids to perform an action on, (ex: RHSA-2019:1168)")
24
+ end
25
+ param :excluded, Hash, :desc => N_("Errata to explicitly exclude in the action."\
26
+ " All other applicable errata will be included in the action,"\
27
+ " unless an included parameter is passed as well."), :required => true, :action_aware => true do
28
+ param :ids, Array, :required => false, :desc => N_("List of errata ids to exclude and not run an action on, (ex: RHSA-2019:1168)")
29
+ end
30
+ end
31
+
20
32
  api :GET, "/hosts/:host_id/errata", N_("List errata available for the content host")
21
33
  param :host_id, :number, :desc => N_("UUID of the content host"), :required => true
22
34
  param :content_view_id, :number, :desc => N_("Calculate Applicable Errata based on a particular Content View"), :required => false
@@ -39,9 +51,11 @@ module Katello
39
51
 
40
52
  api :PUT, "/hosts/:host_id/errata/apply", N_("Schedule errata for installation")
41
53
  param :host_id, :number, :desc => N_("Host ID"), :required => true
42
- param :errata_ids, Array, :desc => N_("List of Errata ids to install"), :required => true
54
+ param :errata_ids, Array, :desc => N_("List of Errata ids to install"), :required => false, :deprecated => true
55
+
56
+ param_group :bulk_errata_ids
43
57
  def apply
44
- task = async_task(::Actions::Katello::Host::Erratum::Install, @host, params[:errata_ids])
58
+ task = async_task(::Actions::Katello::Host::Erratum::Install, @host, @errata_ids)
45
59
  respond_for_async :resource => task
46
60
  end
47
61
 
@@ -61,6 +75,34 @@ module Katello
61
75
  respond_for_async :resource => task
62
76
  end
63
77
 
78
+ def find_bulk_errata_ids(bulk_params)
79
+ #works on a structure of param_group bulk_params and transforms it into a list of errata_ids
80
+ bulk_params[:included] ||= {}
81
+ bulk_params[:excluded] ||= {}
82
+ @errata = []
83
+
84
+ unless bulk_params[:included][:ids].blank?
85
+ @errata = @host.content_facet.installable_errata.where(:errata_id => bulk_params[:included][:ids])
86
+ end
87
+
88
+ if bulk_params[:included][:search]
89
+ search_errata = @host.content_facet.installable_errata
90
+ search_errata = search_errata.search_for(bulk_params[:included][:search])
91
+ if @errata.any?
92
+ @errata = ::Katello::Erratum.where(errata_id: @errata).or(::Katello::Erratum.where(errata_id: search_errata))
93
+ else
94
+ @errata = search_errata
95
+ end
96
+ end
97
+
98
+ @errata = @errata.where.not(errata_id: bulk_params[:excluded][:ids]) unless @errata.empty? || bulk_params[:excluded][:ids].blank?
99
+
100
+ if bulk_params[:included][:ids].blank? && bulk_params[:included][:search].nil?
101
+ fail HttpErrors::BadRequest, _("No errata has been specified.")
102
+ end
103
+ @errata.pluck(:errata_id)
104
+ end
105
+
64
106
  protected
65
107
 
66
108
  def index_relation
@@ -94,8 +136,13 @@ module Katello
94
136
  end
95
137
 
96
138
  def find_errata_ids
97
- missing = params[:errata_ids] - Erratum.where(:errata_id => params[:errata_ids]).pluck(:errata_id)
98
- fail HttpErrors::NotFound, _("Couldn't find errata ids '%s'") % missing.to_sentence if missing.any?
139
+ if params[:errata_ids]
140
+ missing = params[:errata_ids] - Erratum.where(:errata_id => params[:errata_ids]).pluck(:errata_id)
141
+ fail HttpErrors::NotFound, _("Couldn't find errata ids '%s'") % missing.to_sentence if missing.any?
142
+ @errata_ids = params[:errata_ids]
143
+ else
144
+ @errata_ids = find_bulk_errata_ids(params[:bulk_errata_ids])
145
+ end
99
146
  end
100
147
  end
101
148
  end
@@ -20,6 +20,7 @@ module Katello
20
20
  api :GET, "/hosts/:host_id/packages", N_("List packages installed on the host")
21
21
  param :host_id, :number, :required => true, :desc => N_("ID of the host")
22
22
  param_group :search, Api::V2::ApiController
23
+ add_scoped_search_description_for(Katello::InstalledPackage)
23
24
  def index
24
25
  collection = scoped_search(index_relation, :name, :asc, :resource_class => ::Katello::InstalledPackage)
25
26
  respond_for_index(:collection => collection)
@@ -11,6 +11,7 @@ module Katello
11
11
  param :host_ids, Array, :desc => N_("List of host id to list available module streams for")
12
12
  param :name_stream_only, :boolean, :desc => N_("Return name and stream information only)")
13
13
  end
14
+ add_scoped_search_description_for(ModuleStream)
14
15
  def index
15
16
  if @name_stream_only
16
17
  sort_by, sort_order, options = sort_options
@@ -41,6 +41,7 @@ module Katello
41
41
 
42
42
  api :GET, '/organizations', N_('List all organizations')
43
43
  param_group :search, Api::V2::ApiController
44
+ add_scoped_search_description_for(Organization)
44
45
  def index
45
46
  @render_template = 'katello/api/v2/organizations/index'
46
47
  super
@@ -70,9 +71,6 @@ module Katello
70
71
  end
71
72
 
72
73
  api :POST, '/organizations', N_('Create organization')
73
- param :name, String, :desc => N_("name"), :required => true
74
- param :label, String, :desc => N_("unique label")
75
- param :description, String, :desc => N_("description")
76
74
  param_group :resource
77
75
  def create
78
76
  @organization = Organization.new(resource_params)
@@ -1,6 +1,7 @@
1
1
  module Katello
2
2
  class Api::V2::ProductsBulkActionsController < Api::V2::ApiController
3
3
  before_action :find_products
4
+ before_action :find_optional_proxy, :only => :update_http_proxy
4
5
 
5
6
  api :PUT, "/products/bulk/destroy", N_("Destroy one or more products")
6
7
  param :ids, Array, :desc => N_("List of product ids"), :required => true
@@ -49,6 +50,19 @@ module Katello
49
50
  respond_for_async :resource => task
50
51
  end
51
52
 
53
+ api :PUT, "/products/bulk/http_proxy", N_("Update the http proxy configuration on the repositories of one or more products.")
54
+ param :ids, Array, :desc => N_("List of product ids"), :required => true
55
+ param :http_proxy_policy, ::Katello::RootRepository::HTTP_PROXY_POLICIES, :desc => N_("policy for http proxy for content sync")
56
+ param :http_proxy_id, :number, :desc => N_("Http Proxy identifier to associated"), :required => false
57
+ def update_http_proxy
58
+ task = async_task(::Actions::Katello::Product::UpdateHttpProxy,
59
+ @products.editable,
60
+ params[:http_proxy_policy],
61
+ @http_proxy)
62
+
63
+ respond_for_async :resource => task
64
+ end
65
+
52
66
  api :PUT, "/products/bulk/sync_plan", N_("Sync one or more products")
53
67
  param :ids, Array, :desc => N_("List of product ids"), :required => true
54
68
  param :plan_id, :number, :desc => N_("Sync plan identifier to attach"), :required => true
@@ -72,6 +86,10 @@ module Katello
72
86
 
73
87
  private
74
88
 
89
+ def find_optional_proxy
90
+ @http_proxy = ::HttpProxy.find(params[:http_proxy_id]) if params[:http_proxy_id]
91
+ end
92
+
75
93
  def find_products
76
94
  params.require(:ids)
77
95
  @products = Product.where(:id => params[:ids])