katello 3.18.0.rc2.1 → 4.0.0.rc2

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

Potentially problematic release.


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

Files changed (380) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/katello/katello.scss +0 -72
  3. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +0 -19
  4. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -3
  5. data/app/controllers/katello/api/v2/api_controller.rb +1 -2
  6. data/app/controllers/katello/api/v2/capsule_content_controller.rb +2 -2
  7. data/app/controllers/katello/api/v2/content_credentials_controller.rb +24 -24
  8. data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +98 -0
  9. data/app/controllers/katello/api/v2/content_exports_controller.rb +88 -0
  10. data/app/controllers/katello/api/v2/content_imports_controller.rb +59 -0
  11. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  12. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +56 -94
  13. data/app/controllers/katello/api/v2/content_views_controller.rb +2 -2
  14. data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -1
  15. data/app/controllers/katello/api/v2/host_packages_controller.rb +6 -6
  16. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +2 -3
  17. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +3 -2
  18. data/app/controllers/katello/api/v2/repositories_controller.rb +5 -19
  19. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +34 -0
  20. data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
  21. data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +8 -4
  22. data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +1 -1
  23. data/app/helpers/katello/sync_management_helper.rb +0 -2
  24. data/app/lib/actions/candlepin/environment/create.rb +1 -1
  25. data/app/lib/actions/candlepin/environment/set_content.rb +1 -1
  26. data/app/lib/actions/katello/activation_key/create.rb +9 -11
  27. data/app/lib/actions/katello/agent/dispatch_history_presenter.rb +64 -0
  28. data/app/lib/actions/katello/agent_action.rb +107 -0
  29. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +6 -2
  30. data/app/lib/actions/katello/bulk_agent_action.rb +21 -0
  31. data/app/lib/actions/katello/capsule_content/sync.rb +8 -8
  32. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +16 -2
  33. data/app/lib/actions/katello/check_matching_content.rb +17 -0
  34. data/app/lib/actions/katello/content_view/environment_create.rb +6 -8
  35. data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -1
  36. data/app/lib/actions/katello/content_view/publish.rb +2 -2
  37. data/app/lib/actions/katello/content_view_version/import.rb +2 -1
  38. data/app/lib/actions/katello/content_view_version/import_library.rb +17 -0
  39. data/app/lib/actions/katello/content_view_version/incremental_update.rb +30 -10
  40. data/app/lib/actions/katello/host/erratum/applicable_errata_install.rb +1 -1
  41. data/app/lib/actions/katello/host/erratum/install.rb +8 -26
  42. data/app/lib/actions/katello/host/hypervisors_update.rb +4 -4
  43. data/app/lib/actions/katello/host/package/install.rb +8 -21
  44. data/app/lib/actions/katello/host/package/remove.rb +8 -20
  45. data/app/lib/actions/katello/host/package/update.rb +9 -22
  46. data/app/lib/actions/katello/host/package_group/install.rb +8 -21
  47. data/app/lib/actions/katello/host/package_group/remove.rb +8 -20
  48. data/app/lib/actions/katello/host/update_system_purpose.rb +1 -1
  49. data/app/lib/actions/katello/organization/create.rb +3 -5
  50. data/app/lib/actions/katello/organization/destroy.rb +1 -1
  51. data/app/lib/actions/katello/organization/manifest_delete.rb +3 -5
  52. data/app/lib/actions/katello/organization/manifest_import.rb +1 -1
  53. data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -1
  54. data/app/lib/actions/katello/repository/check_matching_content.rb +3 -1
  55. data/app/lib/actions/katello/repository/clone_contents.rb +8 -11
  56. data/app/lib/actions/katello/repository/create.rb +0 -8
  57. data/app/lib/actions/katello/repository/filtered_index_content.rb +3 -0
  58. data/app/lib/actions/katello/repository/index_content.rb +1 -0
  59. data/app/lib/actions/katello/repository/multi_clone_contents.rb +9 -12
  60. data/app/lib/actions/katello/repository/update.rb +0 -8
  61. data/app/lib/actions/middleware/execute_if_contents_changed.rb +4 -1
  62. data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +24 -4
  63. data/app/lib/actions/pulp/consumer.rb +0 -11
  64. data/app/lib/actions/pulp/orchestration/repository/refresh_repos.rb +0 -6
  65. data/app/lib/actions/pulp3/capsule_content/refresh_distribution.rb +3 -3
  66. data/app/lib/actions/pulp3/content_migration.rb +10 -0
  67. data/app/lib/actions/pulp3/content_migration_presenter.rb +59 -0
  68. data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +1 -1
  69. data/app/lib/actions/pulp3/content_view_version/export.rb +3 -2
  70. data/app/lib/actions/pulp3/import_migration.rb +6 -1
  71. data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +2 -1
  72. data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +17 -13
  73. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +60 -0
  74. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +0 -4
  75. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +16 -3
  76. data/app/lib/actions/pulp3/orchestration/repository/refresh_repos.rb +1 -6
  77. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
  78. data/app/lib/actions/pulp3/repository/delete.rb +1 -1
  79. data/app/lib/actions/pulp3/repository/save_version.rb +1 -1
  80. data/app/lib/actions/pulp3/repository/upload_tag.rb +18 -0
  81. data/app/lib/katello/agent/base_message.rb +38 -0
  82. data/app/lib/katello/agent/client_message_handler.rb +60 -0
  83. data/app/lib/katello/agent/connection.rb +24 -0
  84. data/app/lib/katello/agent/install_errata_message.rb +25 -0
  85. data/app/lib/katello/agent/install_package_group_message.rb +25 -0
  86. data/app/lib/katello/agent/install_package_message.rb +28 -0
  87. data/app/lib/katello/agent/remove_package_group_message.rb +25 -0
  88. data/app/lib/katello/agent/remove_package_message.rb +28 -0
  89. data/app/lib/katello/agent/update_package_message.rb +25 -0
  90. data/app/lib/katello/concerns/base_template_scope_extensions.rb +8 -0
  91. data/app/lib/katello/event_daemon/monitor.rb +53 -0
  92. data/app/lib/katello/event_daemon/runner.rb +99 -0
  93. data/app/lib/katello/event_daemon/services/agent_event_receiver.rb +62 -0
  94. data/app/lib/katello/logging.rb +32 -0
  95. data/app/lib/katello/messaging/connection.rb +1 -7
  96. data/app/lib/katello/messaging/received_message.rb +1 -1
  97. data/app/lib/katello/qpid/connection.rb +130 -0
  98. data/app/lib/katello/validators/content_view_puppet_module_validator.rb +1 -1
  99. data/app/models/katello/activation_key.rb +2 -2
  100. data/app/models/katello/agent/dispatch_history.rb +17 -0
  101. data/app/models/katello/authorization/content_view_version.rb +25 -2
  102. data/app/models/katello/authorization/content_view_version_export_history.rb +1 -1
  103. data/app/models/katello/authorization/organization.rb +8 -0
  104. data/app/models/katello/candlepin/repository_mapper.rb +1 -1
  105. data/app/models/katello/concerns/host_managed_extensions.rb +3 -0
  106. data/app/models/katello/concerns/operatingsystem_extensions.rb +2 -0
  107. data/app/models/katello/concerns/organization_extensions.rb +2 -2
  108. data/app/models/katello/concerns/pulp_database_unit.rb +7 -0
  109. data/app/models/katello/concerns/redhat_extensions.rb +2 -2
  110. data/app/models/katello/concerns/smart_proxy_extensions.rb +31 -5
  111. data/app/models/katello/content_migration_progress.rb +4 -0
  112. data/app/models/katello/content_view.rb +10 -1
  113. data/app/models/katello/content_view_environment.rb +2 -2
  114. data/app/models/katello/content_view_history.rb +2 -1
  115. data/app/models/katello/content_view_package_filter.rb +1 -1
  116. data/app/models/katello/content_view_puppet_environment.rb +2 -2
  117. data/app/models/katello/content_view_version.rb +2 -1
  118. data/app/models/katello/content_view_version_export_history.rb +26 -1
  119. data/app/models/katello/erratum.rb +3 -1
  120. data/app/models/katello/events/delete_host_agent_queue.rb +19 -0
  121. data/app/models/katello/glue/candlepin/pool.rb +2 -0
  122. data/app/models/katello/glue/pulp/repo.rb +0 -6
  123. data/app/models/katello/glue/pulp/repos.rb +1 -22
  124. data/app/models/katello/host/subscription_facet.rb +4 -0
  125. data/app/models/katello/ping.rb +12 -4
  126. data/app/models/katello/pool.rb +5 -0
  127. data/app/models/katello/product.rb +3 -3
  128. data/app/models/katello/repository.rb +10 -3
  129. data/app/models/katello/subscription_status.rb +3 -2
  130. data/app/models/setting/content.rb +0 -2
  131. data/app/presenters/katello/host_subscription_presenter.rb +3 -4
  132. data/app/presenters/katello/host_subscriptions_presenter.rb +24 -0
  133. data/app/services/katello/agent/dispatcher.rb +66 -0
  134. data/app/services/katello/applicability/applicable_content_helper.rb +44 -15
  135. data/app/services/katello/candlepin_event_listener.rb +12 -19
  136. data/app/services/katello/event_monitor/poller_thread.rb +3 -11
  137. data/app/services/katello/pulp/smart_proxy_repository.rb +0 -15
  138. data/app/services/katello/pulp3/api/docker.rb +4 -0
  139. data/app/services/katello/pulp3/content_view_version/export.rb +63 -5
  140. data/app/services/katello/pulp3/content_view_version/import.rb +40 -0
  141. data/app/services/katello/pulp3/content_view_version/import_export_common.rb +0 -16
  142. data/app/services/katello/pulp3/content_view_version/import_validator.rb +26 -49
  143. data/app/services/katello/pulp3/docker_manifest.rb +1 -0
  144. data/app/services/katello/pulp3/docker_tag.rb +1 -0
  145. data/app/services/katello/pulp3/migration.rb +44 -9
  146. data/app/services/katello/pulp3/repository.rb +13 -4
  147. data/app/services/katello/pulp3/repository/docker.rb +5 -0
  148. data/app/services/katello/pulp3/repository/yum.rb +15 -9
  149. data/app/services/katello/pulp3/task.rb +4 -0
  150. data/app/services/katello/pulp3/task_group.rb +4 -0
  151. data/app/services/katello/registration_manager.rb +10 -0
  152. data/app/services/katello/repository_type.rb +1 -1
  153. data/app/views/foreman/smart_proxies/_content_tab.html.erb +4 -47
  154. data/app/views/foreman/smart_proxies/show.html.erb +1 -1
  155. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +22 -25
  156. data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +1 -0
  157. data/app/views/katello/api/v2/content_views/show.json.rabl +6 -0
  158. data/app/views/katello/api/v2/organizations/show.json.rabl +7 -9
  159. data/app/views/katello/layouts/react.html.erb +3 -2
  160. data/app/views/katello/sync_management/_products.html.erb +1 -1
  161. data/app/views/overrides/activation_keys/_host_tab_pane.html.erb +1 -5
  162. data/app/views/overrides/organizations/_edit_override.html.erb +1 -4
  163. data/app/views/overrides/smart_proxies/_environment_tab.html.erb +1 -1
  164. data/app/views/overrides/smart_proxies/_environment_tab_pane.html.erb +1 -1
  165. data/config/katello.yaml.example +0 -3
  166. data/config/routes/api/v2.rb +31 -13
  167. data/db/migrate/20150930183738_migrate_content_hosts.rb +1 -1
  168. data/db/migrate/20191204214919_add_content_view_version_counts.rb +0 -1
  169. data/db/migrate/20200514092553_move_katello_fields_from_hostgroups.katello.rb +5 -2
  170. data/db/migrate/20201119211133_pulp3_migration_progress.rb +9 -0
  171. data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +56 -0
  172. data/db/migrate/20210122200618_create_katello_agent_dispatch_history.rb +11 -0
  173. data/db/migrate/20210125161911_delete_erratum_install_batch_size_setting.rb +5 -0
  174. data/db/migrate/20210128231228_add_type_and_from_cvv_to_cvv_export_history.rb +14 -0
  175. data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +7 -0
  176. data/db/migrate/20210208213920_add_available_module_stream_context.rb +8 -0
  177. data/db/seeds.d/104-proxy.rb +1 -1
  178. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  179. data/engines/bastion/app/assets/javascripts/bastion/auth/authorization.service.js +1 -1
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +1 -1
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +1 -1
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +35 -40
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-register-os-client.directive.js +17 -0
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -2
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-client.html +12 -5
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-deb-client.html +38 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-oracle-client.html +5 -0
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-sles-client.html +28 -0
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register.html +14 -11
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +8 -3
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +9 -3
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +2 -2
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +1 -1
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +4 -0
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +78 -7
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +17 -20
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +17 -24
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +1292 -1170
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +17 -20
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +858 -807
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +18 -19
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +17 -24
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +17 -18
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +986 -971
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +19 -20
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +9 -9
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +2 -2
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +1 -1
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/download-policy.service.js +0 -1
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +1 -1
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +2 -2
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/subscription-start-date.directive.js +21 -0
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/subscription-type.directive.js +16 -0
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscription-start-date.html +2 -0
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscription-type.html +18 -0
  217. data/lib/katello/engine.rb +12 -6
  218. data/lib/katello/middleware/event_daemon.rb +1 -1
  219. data/lib/katello/permission_creator.rb +26 -5
  220. data/lib/katello/plugin.rb +3 -2
  221. data/lib/katello/tasks/delete_orphaned_content.rake +1 -3
  222. data/lib/katello/tasks/jenkins.rake +1 -1
  223. data/lib/katello/tasks/pulp3_content_switchover.rake +1 -1
  224. data/lib/katello/tasks/pulp3_migration.rake +18 -6
  225. data/lib/katello/tasks/pulp3_migration_abort.rake +7 -2
  226. data/lib/katello/tasks/pulp3_migration_stats.rake +28 -8
  227. data/lib/katello/tasks/pulp3_post_migration_check.rake +1 -3
  228. data/lib/katello/tasks/receptor/extract_orgs.rake +1 -1
  229. data/lib/katello/tasks/reimport.rake +1 -1
  230. data/lib/katello/tasks/repository.rake +3 -5
  231. data/lib/katello/tasks/reset.rake +0 -15
  232. data/lib/katello/tasks/upgrades/4.0/remove_ostree_puppet_content.rake +16 -0
  233. data/lib/katello/version.rb +1 -1
  234. data/lib/proxy_api/container_gateway.rb +21 -0
  235. data/locale/action_names.rb +51 -51
  236. data/locale/bn/katello.edit.po +8538 -0
  237. data/locale/bn/katello.po +136 -51
  238. data/locale/bn/katello.po.time_stamp +0 -0
  239. data/locale/cs/katello.edit.po +8440 -0
  240. data/locale/cs/katello.po +136 -49
  241. data/locale/cs/katello.po.time_stamp +0 -0
  242. data/locale/de/katello.edit.po +8344 -0
  243. data/locale/de/katello.po +136 -48
  244. data/locale/de/katello.po.time_stamp +0 -0
  245. data/locale/en/katello.edit.po +8161 -0
  246. data/locale/en/katello.po +136 -48
  247. data/locale/en/katello.po.time_stamp +0 -0
  248. data/locale/es/katello.edit.po +8306 -0
  249. data/locale/es/katello.po +136 -48
  250. data/locale/es/katello.po.time_stamp +0 -0
  251. data/locale/fr/katello.edit.po +8356 -0
  252. data/locale/fr/katello.po +136 -48
  253. data/locale/fr/katello.po.time_stamp +0 -0
  254. data/locale/gu/katello.edit.po +8540 -0
  255. data/locale/gu/katello.po +136 -51
  256. data/locale/gu/katello.po.time_stamp +0 -0
  257. data/locale/hi/katello.edit.po +8537 -0
  258. data/locale/hi/katello.po +136 -51
  259. data/locale/hi/katello.po.time_stamp +0 -0
  260. data/locale/it/katello.edit.po +8293 -0
  261. data/locale/it/katello.po +136 -48
  262. data/locale/it/katello.po.time_stamp +0 -0
  263. data/locale/ja/katello.edit.po +8322 -0
  264. data/locale/ja/katello.po +136 -48
  265. data/locale/ja/katello.po.time_stamp +0 -0
  266. data/locale/katello.pot +941 -767
  267. data/locale/kn/katello.edit.po +8538 -0
  268. data/locale/kn/katello.po +136 -51
  269. data/locale/kn/katello.po.time_stamp +0 -0
  270. data/locale/ko/katello.edit.po +8289 -0
  271. data/locale/ko/katello.po +136 -48
  272. data/locale/ko/katello.po.time_stamp +0 -0
  273. data/locale/mr/katello.edit.po +8502 -0
  274. data/locale/mr/katello.po +136 -51
  275. data/locale/mr/katello.po.time_stamp +0 -0
  276. data/locale/or/katello.edit.po +8538 -0
  277. data/locale/or/katello.po +136 -51
  278. data/locale/or/katello.po.time_stamp +0 -0
  279. data/locale/pa/katello.edit.po +8524 -0
  280. data/locale/pa/katello.po +136 -51
  281. data/locale/pa/katello.po.time_stamp +0 -0
  282. data/locale/pt/katello.edit.po +8255 -0
  283. data/locale/pt/katello.po +136 -51
  284. data/locale/pt/katello.po.time_stamp +0 -0
  285. data/locale/pt_BR/katello.edit.po +8289 -0
  286. data/locale/pt_BR/katello.po +136 -48
  287. data/locale/pt_BR/katello.po.time_stamp +0 -0
  288. data/locale/ru/katello.edit.po +8309 -0
  289. data/locale/ru/katello.po +136 -48
  290. data/locale/ru/katello.po.time_stamp +0 -0
  291. data/locale/ta/katello.edit.po +8536 -0
  292. data/locale/ta/katello.po +136 -51
  293. data/locale/ta/katello.po.time_stamp +0 -0
  294. data/locale/te/katello.edit.po +8536 -0
  295. data/locale/te/katello.po +136 -51
  296. data/locale/te/katello.po.time_stamp +0 -0
  297. data/locale/zh_CN/katello.edit.po +8288 -0
  298. data/locale/zh_CN/katello.po +136 -48
  299. data/locale/zh_CN/katello.po.time_stamp +0 -0
  300. data/locale/zh_TW/katello.edit.po +8420 -0
  301. data/locale/zh_TW/katello.po +136 -48
  302. data/locale/zh_TW/katello.po.time_stamp +0 -0
  303. data/package.json +1 -1
  304. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +0 -1
  305. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +2 -0
  306. data/webpack/__mocks__/foremanReact/components/common/dates/LongDateTime.js +5 -0
  307. data/webpack/{scenes/ContentViews/Details/Repositories → components/SelectableDropdown}/SelectableDropdown.js +20 -3
  308. data/webpack/components/SelectableDropdown/__tests__/SelectableDropdown.test.js +45 -0
  309. data/webpack/components/SelectableDropdown/index.js +3 -0
  310. data/webpack/components/Table/TableWrapper.js +2 -1
  311. data/webpack/components/Table/helpers.js +14 -0
  312. data/webpack/components/TypeAhead/TypeAhead.js +2 -1
  313. data/webpack/components/TypeAhead/pf3Search/TypeAheadSearch.js +2 -1
  314. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +0 -1
  315. data/webpack/containers/Application/overrides.scss +6 -0
  316. data/webpack/index.js +6 -0
  317. data/webpack/redux/actions/RedHatRepositories/helpers.js +5 -5
  318. data/webpack/scenes/ContentViews/ContentViewsActions.js +31 -2
  319. data/webpack/scenes/ContentViews/ContentViewsConstants.js +5 -1
  320. data/webpack/scenes/ContentViews/Copy/ContentViewCopySelectors.js +16 -0
  321. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +77 -0
  322. data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +44 -0
  323. data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +42 -0
  324. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +39 -0
  325. data/webpack/scenes/ContentViews/Copy/index.js +4 -0
  326. data/webpack/scenes/ContentViews/Create/ContentViewCreateSelectors.js +16 -0
  327. data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +58 -0
  328. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +175 -0
  329. data/webpack/scenes/ContentViews/Create/CreateContentViewModal.js +27 -0
  330. data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +42 -0
  331. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +92 -0
  332. data/webpack/scenes/ContentViews/Create/index.js +4 -0
  333. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +16 -0
  334. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +20 -1
  335. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +17 -7
  336. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +19 -13
  337. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +40 -0
  338. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +124 -0
  339. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +134 -0
  340. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +92 -0
  341. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +44 -25
  342. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +17 -7
  343. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +24 -0
  344. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +53 -3
  345. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +4 -3
  346. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +41 -0
  347. data/webpack/scenes/ContentViews/helpers.js +13 -0
  348. data/webpack/scenes/SmartProxy/Content.js +17 -0
  349. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +11 -0
  350. data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +3 -0
  351. data/webpack/scenes/SmartProxy/SmartProxyContentSelectors.js +16 -0
  352. data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +152 -0
  353. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentResult.fixtures.json +140 -0
  354. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
  355. data/webpack/scenes/SmartProxy/index.js +4 -0
  356. data/webpack/scenes/Subscriptions/Manifest/ManifestActions.js +3 -3
  357. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManifestActions.test.js +2 -2
  358. data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +2 -2
  359. data/webpack/test-utils/react-testing-lib-wrapper.js +5 -2
  360. data/webpack/utils/helpers.js +3 -0
  361. metadata +160 -40
  362. data/app/controllers/katello/api/v2/gpg_keys_controller.rb +0 -114
  363. data/app/lib/actions/pulp/consumer/abstract_content_action.rb +0 -71
  364. data/app/lib/actions/pulp/consumer/content_install.rb +0 -43
  365. data/app/lib/actions/pulp/consumer/content_uninstall.rb +0 -26
  366. data/app/lib/actions/pulp/consumer/content_update.rb +0 -32
  367. data/app/overrides/disable_turbolinks_on_proxies_index.rb +0 -5
  368. data/app/services/katello/event_daemon.rb +0 -135
  369. data/app/services/katello/pulp/content_counts_calculator.rb +0 -60
  370. data/db/functions/empty_v01.sql +0 -7
  371. data/db/functions/evr_trigger_v01.sql +0 -9
  372. data/db/functions/isalpha_v01.sql +0 -11
  373. data/db/functions/isalphanum_v01.sql +0 -12
  374. data/db/functions/isdigit_v01.sql +0 -10
  375. data/db/functions/rpmver_array_v01.sql +0 -60
  376. data/lib/katello/tasks/common.rake +0 -7
  377. data/lib/katello/tasks/reports.rake +0 -4
  378. data/lib/katello/tasks/upgrades/3.10/update_gpg_key_urls.rake +0 -32
  379. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.scss +0 -5
  380. data/webpack/scenes/ContentViews/Table/actionResolver.js +0 -28
@@ -1,114 +0,0 @@
1
- module Katello
2
- class Api::V2::GpgKeysController < Api::V2::ApiController
3
- include Katello::Concerns::FilteredAutoCompleteSearch
4
- before_action :deprecated
5
- before_action :authorize
6
- before_action :find_organization, :only => [:create, :index, :auto_complete_search]
7
- before_action :find_gpg_key, :only => [:show, :update, :destroy, :content, :set_content]
8
- skip_before_action :check_media_type, :only => [:create, :content, :set_content]
9
-
10
- def_param_group :gpg_key do
11
- param :name, :identifier, :action_aware => true, :required => true, :desc => N_("identifier of the gpg key")
12
- param :content, String, :action_aware => true, :required => true, :desc => N_("public key block in DER encoding")
13
- end
14
-
15
- resource_description do
16
- description <<-DESC
17
- # Description
18
- Documents the calls for the list, read, create, update and delete operations for GPG keys
19
- DESC
20
- api_version "v2"
21
- end
22
-
23
- api :GET, "/gpg_keys", N_("List gpg keys")
24
- param :organization_id, :number, :desc => N_("organization identifier"), :required => true
25
- param :name, String, :desc => N_("name of the GPG key"), :required => false
26
- param_group :search, Api::V2::ApiController
27
- add_scoped_search_description_for(GpgKey)
28
- def index
29
- respond(:collection => scoped_search(index_relation.distinct, :name, :asc))
30
- end
31
-
32
- def index_relation
33
- query = GpgKey.readable.where(:organization_id => @organization.id)
34
- query = query.where(:name => params[:name]) if params[:name]
35
- query
36
- end
37
-
38
- api :POST, "/gpg_keys", N_("Create a gpg key")
39
- param :organization_id, :number, :desc => N_("organization identifier"), :required => true
40
- param_group :gpg_key, :as => :create
41
- def create
42
- filepath = params.try(:[], :file_path).try(:path)
43
-
44
- content = nil
45
- if filepath
46
- content = File.open(filepath, "rb") { |file| file.read }
47
- else
48
- content = params[:content]
49
- end
50
-
51
- gpg_key = @organization.gpg_keys.create!(gpg_key_params.merge(:content => content))
52
- respond_for_create(:resource => gpg_key)
53
- end
54
-
55
- api :GET, "/gpg_keys/:id", N_("Show a gpg key"), :deprecated => true
56
- param :id, :number, :desc => N_("gpg key numeric identifier"), :required => true
57
- def show
58
- respond_for_show(:resource => @gpg_key)
59
- end
60
-
61
- api :PUT, "/gpg_keys/:id", N_("Update a repository"), :deprecated => true
62
- param :id, :number, :desc => N_("gpg key numeric identifier"), :required => true
63
- param_group :gpg_key
64
- def update
65
- sync_task(::Actions::Katello::GpgKey::Update, @gpg_key, gpg_key_params.to_h)
66
-
67
- respond_for_show(:resource => @gpg_key)
68
- end
69
-
70
- api :DELETE, "/gpg_keys/:id", N_("Destroy a gpg key"), :deprecated => true
71
- param :id, :number, :desc => N_("gpg key numeric identifier"), :required => true
72
- def destroy
73
- @gpg_key.destroy
74
- respond_for_destroy
75
- end
76
-
77
- api :GET, "/gpg_keys/:id/content", N_("Return the content of a gpg key, used directly by yum"), :deprecated => true
78
- param :id, :number, :required => true
79
- def content
80
- render(:plain => @gpg_key.content, :layout => false)
81
- end
82
-
83
- api :POST, "/gpg_keys/:id/content", N_("Upload gpg key contents"), :deprecated => true
84
- param :id, :number, :desc => N_("gpg key numeric identifier"), :required => true
85
- param :content, File, :desc => N_("file contents"), :required => true
86
- def set_content
87
- filepath = params.try(:[], :content).try(:path)
88
-
89
- if filepath
90
- content = File.open(filepath, "rb") { |file| file.read }
91
- @gpg_key.update!(:content => content)
92
- render :json => {:status => "success"}
93
- else
94
- fail HttpErrors::BadRequest, _("No file uploaded")
95
- end
96
- end
97
-
98
- protected
99
-
100
- def find_gpg_key
101
- @gpg_key = GpgKey.find(params[:id])
102
- rescue ActiveRecord::RecordNotFound
103
- raise HttpErrors::NotFound, _("Couldn't find GPG key '%s'") % params[:id]
104
- end
105
-
106
- def gpg_key_params
107
- params.permit(:name, :content)
108
- end
109
-
110
- def deprecated
111
- ::Foreman::Deprecation.api_deprecation_warning("it will be removed in Katello 4.0, Please see /api/v2/content_credentials")
112
- end
113
- end
114
- end
@@ -1,71 +0,0 @@
1
- module Actions
2
- module Pulp
3
- module Consumer
4
- class AbstractContentAction < Pulp::AbstractAsyncTask
5
- include Helpers::Presenter
6
- include Actions::Pulp::ExpectOneTask
7
-
8
- def external_task=(external_task_data)
9
- super(external_task_data)
10
- task_errors = find_errors(output[:pulp_tasks])
11
- if task_errors.any?
12
- fail ::Katello::Errors::PulpError, task_errors.join("\n")
13
- end
14
- end
15
-
16
- def process_timeout
17
- accept_timeout = Setting['content_action_accept_timeout']
18
- finish_timeout = Setting['content_action_finish_timeout']
19
- pulp_state = output[:pulp_tasks][0][:state]
20
-
21
- if pulp_state == 'waiting'
22
- cancel
23
- fail _("Host did not respond within %s seconds. The task has been cancelled. Is katello-agent installed and goferd running on the Host?") % accept_timeout
24
- elsif output[:client_accepted].nil?
25
- output[:client_accepted] = Time.now.to_s
26
- schedule_timeout(finish_timeout)
27
- elsif pulp_state == 'running'
28
- cancel
29
- fail _("Host did not finish content action in %s seconds. The task has been cancelled.") % finish_timeout
30
- end
31
- end
32
-
33
- def find_errors(tasks)
34
- messages = []
35
- tasks.each do |pulp_task|
36
- if pulp_task[:result] && pulp_task[:result][:details]
37
- pulp_task[:result][:details].each_value do |result|
38
- unless result[:succeeded]
39
- messages << result[:details][:message]
40
- end
41
- end
42
- end
43
- end
44
- messages
45
- end
46
-
47
- # by default runcible puts whatever we pass into a hash under the 'name' key
48
- # here we can make the unit hash more precise
49
- def parse_units_for_type
50
- return unless input[:args]
51
-
52
- if input[:type] == 'rpm'
53
- input[:args].collect do |unit|
54
- ::Katello::Util::Package.parse_nvrea_nvre(unit) || unit
55
- end
56
- else
57
- input[:args]
58
- end
59
- end
60
-
61
- def presenter
62
- Consumer::ContentPresenter.new(self)
63
- end
64
-
65
- def rescue_strategy
66
- Dynflow::Action::Rescue::Skip
67
- end
68
- end
69
- end
70
- end
71
- end
@@ -1,43 +0,0 @@
1
- module Actions
2
- module Pulp
3
- module Consumer
4
- class ContentInstall < AbstractContentAction
5
- include Helpers::Presenter
6
- include Actions::Pulp::ExpectOneTask
7
-
8
- input_format do
9
- param :consumer_uuid, String
10
- param :type, %w(rpm package_group erratum)
11
- param :args, array_of(String)
12
- end
13
-
14
- def invoke_external_task
15
- task = pulp_extensions.consumer.install_content(input[:consumer_uuid],
16
- input[:type],
17
- parse_units_for_type,
18
- "importkeys" => true)
19
- schedule_timeout(Setting['content_action_accept_timeout'])
20
- task
21
- end
22
-
23
- def finalize
24
- check_error_details
25
- end
26
-
27
- def check_error_details
28
- output[:pulp_tasks].each do |pulp_task|
29
- error_details = pulp_task.try(:[], "result").try(:[], "details").try(:[], "rpm").try(:[], "details").try(:[], "trace")
30
- error_message = pulp_task.try(:[], "result").try(:[], "details").try(:[], "rpm").try(:[], "details").try(:[], "message")
31
- if error_details&.include?("YumDownloadError") && error_message
32
- fail _("An error occurred during the sync \n%{error_message}") % {:error_message => error_details}
33
- end
34
- end
35
- end
36
-
37
- def presenter
38
- Consumer::ContentPresenter.new(self)
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,26 +0,0 @@
1
- module Actions
2
- module Pulp
3
- module Consumer
4
- class ContentUninstall < AbstractContentAction
5
- include Helpers::Presenter
6
- include Actions::Pulp::ExpectOneTask
7
-
8
- input_format do
9
- param :consumer_uuid, String
10
- param :type, %w(rpm package_group)
11
- param :args, array_of(String)
12
- end
13
-
14
- def invoke_external_task
15
- pulp_extensions.consumer.uninstall_content(input[:consumer_uuid],
16
- input[:type],
17
- parse_units_for_type)
18
- end
19
-
20
- def presenter
21
- Consumer::ContentPresenter.new(self)
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,32 +0,0 @@
1
- module Actions
2
- module Pulp
3
- module Consumer
4
- class ContentUpdate < AbstractContentAction
5
- include Helpers::Presenter
6
- include Actions::Pulp::ExpectOneTask
7
-
8
- input_format do
9
- param :consumer_uuid, String
10
- param :type, %w(rpm)
11
- param :args, array_of(String)
12
- end
13
-
14
- def invoke_external_task
15
- options = { "importkeys" => true }
16
- options[:all] = true if input[:args].blank?
17
-
18
- task = pulp_extensions.consumer.update_content(input[:consumer_uuid],
19
- input[:type],
20
- parse_units_for_type,
21
- options)
22
- schedule_timeout(Setting['content_action_accept_timeout'])
23
- task
24
- end
25
-
26
- def presenter
27
- Consumer::ContentPresenter.new(self)
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,5 +0,0 @@
1
- Deface::Override.new(
2
- :virtual_path => 'smart_proxies/index',
3
- :name => 'disable_turbolinks_on_proxies_index',
4
- :set_attributes => '.proxy-show',
5
- :attributes => {'data-no-turbolink' => 'true'})
@@ -1,135 +0,0 @@
1
- module Katello
2
- class EventDaemon
3
- @services = {}
4
- @cache = ActiveSupport::Cache::MemoryStore.new
5
-
6
- class Monitor
7
- def initialize(service_classes)
8
- @service_classes = service_classes
9
- end
10
-
11
- def start
12
- error = nil
13
- status = nil
14
- loop do
15
- Rails.application.executor.wrap do
16
- check_services(error, status)
17
- end
18
- sleep 15
19
- end
20
- end
21
-
22
- def check_services(error, status)
23
- @service_classes.each do |service_class|
24
- status = service_class.status
25
- rescue => error
26
- Rails.logger.error("Error occurred while pinging #{service_class}")
27
- Rails.logger.error(error.message)
28
- Rails.logger.error(error.backtrace.join("\n"))
29
- ensure
30
- if error || !status&.dig(:running)
31
- begin
32
- service_class.close
33
- service_class.run
34
- service_class.status
35
- rescue => error
36
- Rails.logger.error("Error occurred while starting #{service_class}")
37
- Rails.logger.error(error.message)
38
- Rails.logger.error(error.backtrace.join("\n"))
39
- ensure
40
- error = nil
41
- end
42
- end
43
- end
44
- end
45
- end
46
-
47
- class << self
48
- def initialize
49
- FileUtils.touch(lock_file)
50
- end
51
-
52
- def settings
53
- SETTINGS[:katello][:event_daemon]
54
- end
55
-
56
- def pid
57
- return unless pid_file && File.exist?(pid_file)
58
-
59
- File.open(pid_file) { |f| f.read.to_i }
60
- end
61
-
62
- def pid_file
63
- pid_dir.join('katello_event_daemon.pid')
64
- end
65
-
66
- def pid_dir
67
- Rails.root.join('tmp', 'pids')
68
- end
69
-
70
- def lock_file
71
- Rails.root.join('tmp', 'katello_event_daemon.lock')
72
- end
73
-
74
- def write_pid_file
75
- return unless pid_file
76
-
77
- FileUtils.mkdir_p(pid_dir)
78
- File.open(pid_file, 'w') { |f| f.puts Process.pid }
79
- end
80
-
81
- def stop
82
- return unless pid == Process.pid
83
- @monitor_thread.kill
84
- @cache.clear
85
- @services.values.each(&:close)
86
- File.unlink(pid_file) if pid_file && File.exist?(pid_file)
87
- end
88
-
89
- def start
90
- return unless runnable?
91
-
92
- lockfile = File.open(lock_file, 'r')
93
- begin
94
- lockfile.flock(File::LOCK_EX)
95
- return if started? # ensure it wasn't started while we waited for the lock
96
-
97
- start_monitor_thread
98
- write_pid_file
99
-
100
- at_exit do
101
- stop
102
- end
103
-
104
- Rails.logger.info("Katello event daemon started process=#{Process.pid}")
105
- ensure
106
- lockfile.flock(File::LOCK_UN)
107
- end
108
- end
109
-
110
- def started?
111
- Process.kill(0, pid)
112
- true
113
- rescue Errno::ESRCH, TypeError # process no longer exists or we had no PID cached
114
- false
115
- end
116
-
117
- def start_monitor_thread
118
- @monitor_thread = Thread.new do
119
- Monitor.new(@services.values).start
120
- end
121
- end
122
-
123
- def runnable?
124
- # avoid accessing the disk on each request
125
- @cache.fetch('katello_event_daemon_runnable', expires_in: 1.minute) do
126
- !started? && settings[:enabled] && !::Foreman.in_rake? && !Rails.env.test?
127
- end
128
- end
129
-
130
- def register_service(name, klass)
131
- @services[name] = klass
132
- end
133
- end
134
- end
135
- end
@@ -1,60 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class ContentCountsCalculator
4
- def initialize(repos)
5
- @repos = repos
6
- end
7
-
8
- # rubocop:disable Metrics/MethodLength
9
- def calculate
10
- counts = {
11
- :apt_repositories => 0,
12
- :deb_packages => 0,
13
- :yum_repositories => 0,
14
- :packages => 0,
15
- :package_groups => 0,
16
- :errata => 0,
17
- :puppet_repositories => 0,
18
- :puppet_modules => 0,
19
- :docker_repositories => 0,
20
- :docker_images => 0
21
- }
22
-
23
- @repos.each do |repo|
24
- case
25
- when repo_type?(repo, 'deb')
26
- counts[:apt_repositories] += 1
27
- counts[:deb_packages] += get_unit_count(repo, 'deb')
28
- when repo_type?(repo, 'rpm')
29
- counts[:yum_repositories] += 1
30
- counts[:packages] += get_unit_count(repo, 'rpm')
31
- counts[:package_groups] += get_unit_count(repo, 'package_group')
32
- counts[:errata] += get_unit_count(repo, 'erratum')
33
- when repo_type?(repo, 'docker')
34
- counts[:docker_repositories] += 1
35
- counts[:docker_images] += get_unit_count(repo, 'docker_image')
36
- when repo_type?(repo, 'puppet')
37
- counts[:puppet_repositories] += 1
38
- counts[:puppet_modules] += get_unit_count(repo, 'puppet_module')
39
- end
40
- end
41
-
42
- counts
43
- end
44
-
45
- protected
46
-
47
- def repo_type?(repo, repo_type)
48
- repo['notes'] && (repo['notes']['_repo-type'] == "#{repo_type}-repo")
49
- end
50
-
51
- def get_unit_count(repo, unit_type)
52
- if repo['content_unit_counts']
53
- repo['content_unit_counts'][unit_type] || 0
54
- else
55
- 0
56
- end
57
- end
58
- end
59
- end
60
- end