katello 3.18.0.rc1 → 4.0.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 (345) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +0 -19
  3. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -3
  4. data/app/controllers/katello/api/v2/api_controller.rb +1 -2
  5. data/app/controllers/katello/api/v2/capsule_content_controller.rb +2 -2
  6. data/app/controllers/katello/api/v2/content_credentials_controller.rb +24 -24
  7. data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +98 -0
  8. data/app/controllers/katello/api/v2/content_exports_controller.rb +88 -0
  9. data/app/controllers/katello/api/v2/content_imports_controller.rb +59 -0
  10. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +16 -7
  11. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +57 -92
  12. data/app/controllers/katello/api/v2/content_views_controller.rb +12 -3
  13. data/app/controllers/katello/api/v2/host_debs_controller.rb +1 -0
  14. data/app/controllers/katello/api/v2/host_errata_controller.rb +2 -2
  15. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +2 -3
  16. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +20 -7
  17. data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
  18. data/app/controllers/katello/api/v2/products_controller.rb +9 -9
  19. data/app/controllers/katello/api/v2/repositories_controller.rb +5 -19
  20. data/app/controllers/katello/api/v2/repository_sets_controller.rb +24 -14
  21. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +34 -0
  22. data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
  23. data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +8 -4
  24. data/app/controllers/katello/concerns/api/v2/authorization.rb +10 -0
  25. data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +22 -18
  26. data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +1 -1
  27. data/app/controllers/katello/concerns/registration_controller_extensions.rb +16 -0
  28. data/app/helpers/katello/sync_management_helper.rb +0 -2
  29. data/app/lib/actions/candlepin/environment/create.rb +1 -1
  30. data/app/lib/actions/candlepin/environment/set_content.rb +1 -1
  31. data/app/lib/actions/helpers/smart_proxy_sync_history_helper.rb +24 -0
  32. data/app/lib/actions/katello/activation_key/create.rb +9 -11
  33. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +6 -2
  34. data/app/lib/actions/katello/capsule_content/sync.rb +8 -8
  35. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +31 -8
  36. data/app/lib/actions/katello/check_matching_content.rb +17 -0
  37. data/app/lib/actions/katello/content_view/environment_create.rb +6 -8
  38. data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -1
  39. data/app/lib/actions/katello/content_view/publish.rb +6 -5
  40. data/app/lib/actions/katello/content_view_version/import.rb +5 -11
  41. data/app/lib/actions/katello/content_view_version/import_library.rb +17 -0
  42. data/app/lib/actions/katello/content_view_version/incremental_update.rb +30 -10
  43. data/app/lib/actions/katello/host/hypervisors_update.rb +4 -4
  44. data/app/lib/actions/katello/host/update_system_purpose.rb +1 -1
  45. data/app/lib/actions/katello/host/upload_package_profile.rb +3 -1
  46. data/app/lib/actions/katello/host/upload_profiles.rb +8 -6
  47. data/app/lib/actions/katello/organization/create.rb +3 -5
  48. data/app/lib/actions/katello/organization/destroy.rb +1 -1
  49. data/app/lib/actions/katello/organization/manifest_delete.rb +3 -5
  50. data/app/lib/actions/katello/organization/manifest_import.rb +1 -1
  51. data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -1
  52. data/app/lib/actions/katello/repository/check_matching_content.rb +3 -1
  53. data/app/lib/actions/katello/repository/clone_contents.rb +8 -11
  54. data/app/lib/actions/katello/repository/create.rb +0 -8
  55. data/app/lib/actions/katello/repository/filtered_index_content.rb +3 -0
  56. data/app/lib/actions/katello/repository/import_upload.rb +2 -0
  57. data/app/lib/actions/katello/repository/index_content.rb +1 -0
  58. data/app/lib/actions/katello/repository/multi_clone_contents.rb +9 -12
  59. data/app/lib/actions/katello/repository/remove_content.rb +1 -1
  60. data/app/lib/actions/katello/repository/sync.rb +3 -1
  61. data/app/lib/actions/katello/repository/update.rb +1 -8
  62. data/app/lib/actions/katello/repository/upload_files.rb +1 -0
  63. data/app/lib/actions/middleware/execute_if_contents_changed.rb +4 -1
  64. data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +35 -0
  65. data/app/lib/actions/pulp/consumer/sync_capsule.rb +4 -2
  66. data/app/lib/actions/pulp/orchestration/repository/refresh_repos.rb +0 -6
  67. data/app/lib/actions/pulp/repository/distributor_publish.rb +1 -1
  68. data/app/lib/actions/pulp3/abstract_async_task.rb +1 -0
  69. data/app/lib/actions/pulp3/capsule_content/refresh_distribution.rb +3 -3
  70. data/app/lib/actions/pulp3/capsule_content/sync.rb +1 -0
  71. data/app/lib/actions/pulp3/content_migration.rb +10 -0
  72. data/app/lib/actions/pulp3/content_migration_presenter.rb +59 -0
  73. data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +1 -1
  74. data/app/lib/actions/pulp3/content_view_version/export.rb +6 -1
  75. data/app/lib/actions/pulp3/import_migration.rb +6 -1
  76. data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +2 -1
  77. data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +30 -9
  78. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +60 -0
  79. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +0 -4
  80. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +4 -1
  81. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +16 -3
  82. data/app/lib/actions/pulp3/orchestration/repository/refresh_repos.rb +1 -6
  83. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
  84. data/app/lib/actions/pulp3/repository/delete.rb +1 -1
  85. data/app/lib/actions/pulp3/repository/save_version.rb +1 -1
  86. data/app/lib/actions/pulp3/repository/upload_tag.rb +18 -0
  87. data/app/lib/katello/concerns/base_template_scope_extensions.rb +8 -0
  88. data/app/lib/katello/event_daemon/monitor.rb +53 -0
  89. data/app/lib/katello/event_daemon/runner.rb +99 -0
  90. data/app/lib/katello/logging.rb +32 -0
  91. data/app/lib/katello/messaging/connection.rb +1 -7
  92. data/app/lib/katello/validators/content_view_puppet_module_validator.rb +1 -1
  93. data/app/models/katello/activation_key.rb +2 -2
  94. data/app/models/katello/authorization/content_view_filter.rb +15 -0
  95. data/app/models/katello/authorization/content_view_version.rb +25 -2
  96. data/app/models/katello/authorization/content_view_version_export_history.rb +1 -1
  97. data/app/models/katello/authorization/organization.rb +8 -0
  98. data/app/models/katello/candlepin/repository_mapper.rb +1 -1
  99. data/app/models/katello/concerns/operatingsystem_extensions.rb +2 -0
  100. data/app/models/katello/concerns/organization_extensions.rb +2 -2
  101. data/app/models/katello/concerns/pulp_database_unit.rb +7 -0
  102. data/app/models/katello/concerns/redhat_extensions.rb +2 -2
  103. data/app/models/katello/concerns/smart_proxy_extensions.rb +33 -5
  104. data/app/models/katello/content_migration_progress.rb +4 -0
  105. data/app/models/katello/content_view.rb +35 -5
  106. data/app/models/katello/content_view_environment.rb +2 -2
  107. data/app/models/katello/content_view_filter.rb +5 -0
  108. data/app/models/katello/content_view_history.rb +2 -1
  109. data/app/models/katello/content_view_package_filter.rb +1 -1
  110. data/app/models/katello/content_view_puppet_environment.rb +2 -2
  111. data/app/models/katello/content_view_puppet_module.rb +8 -0
  112. data/app/models/katello/content_view_repository.rb +13 -1
  113. data/app/models/katello/content_view_version.rb +2 -1
  114. data/app/models/katello/content_view_version_export_history.rb +26 -1
  115. data/app/models/katello/erratum.rb +3 -1
  116. data/app/models/katello/glue/candlepin/pool.rb +2 -0
  117. data/app/models/katello/glue/pulp/repo.rb +0 -6
  118. data/app/models/katello/glue/pulp/repos.rb +1 -22
  119. data/app/models/katello/host/subscription_facet.rb +4 -0
  120. data/app/models/katello/ping.rb +11 -6
  121. data/app/models/katello/pool.rb +5 -0
  122. data/app/models/katello/product.rb +3 -3
  123. data/app/models/katello/repository.rb +36 -3
  124. data/app/models/katello/smart_proxy_sync_history.rb +8 -0
  125. data/app/models/katello/subscription_status.rb +3 -2
  126. data/app/presenters/katello/host_subscription_presenter.rb +3 -4
  127. data/app/presenters/katello/host_subscriptions_presenter.rb +24 -0
  128. data/app/services/katello/applicability/applicable_content_helper.rb +44 -15
  129. data/app/services/katello/candlepin_event_listener.rb +11 -19
  130. data/app/services/katello/event_monitor/poller_thread.rb +2 -11
  131. data/app/services/katello/pulp/smart_proxy_repository.rb +0 -15
  132. data/app/services/katello/pulp3/api/docker.rb +4 -0
  133. data/app/services/katello/pulp3/content_view_version/export.rb +122 -6
  134. data/app/services/katello/pulp3/content_view_version/import.rb +37 -22
  135. data/app/services/katello/pulp3/content_view_version/import_export_common.rb +6 -16
  136. data/app/services/katello/pulp3/content_view_version/import_validator.rb +84 -0
  137. data/app/services/katello/pulp3/docker_manifest.rb +1 -0
  138. data/app/services/katello/pulp3/docker_tag.rb +1 -0
  139. data/app/services/katello/pulp3/migration.rb +51 -10
  140. data/app/services/katello/pulp3/repository.rb +13 -4
  141. data/app/services/katello/pulp3/repository/docker.rb +5 -0
  142. data/app/services/katello/pulp3/repository/yum.rb +15 -10
  143. data/app/services/katello/pulp3/task.rb +7 -3
  144. data/app/services/katello/pulp3/task_group.rb +10 -0
  145. data/app/services/katello/repository_type.rb +3 -2
  146. data/app/services/katello/smart_proxy_helper.rb +9 -0
  147. data/app/views/foreman/hosts/_registration.html.erb +12 -0
  148. data/app/views/foreman/smart_proxies/_content_tab.html.erb +4 -47
  149. data/app/views/foreman/smart_proxies/show.html.erb +1 -1
  150. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +22 -25
  151. data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +1 -0
  152. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  153. data/app/views/katello/api/v2/content_views/show.json.rabl +6 -0
  154. data/app/views/katello/api/v2/organizations/show.json.rabl +7 -9
  155. data/app/views/katello/layouts/react.html.erb +3 -2
  156. data/app/views/overrides/activation_keys/_host_tab_pane.html.erb +1 -5
  157. data/app/views/overrides/organizations/_edit_override.html.erb +1 -4
  158. data/app/views/overrides/smart_proxies/_environment_tab.html.erb +1 -1
  159. data/app/views/overrides/smart_proxies/_environment_tab_pane.html.erb +1 -1
  160. data/config/katello.yaml.example +0 -3
  161. data/config/routes/api/v2.rb +31 -13
  162. data/db/migrate/20150930183738_migrate_content_hosts.rb +1 -1
  163. data/db/migrate/20191204214919_add_content_view_version_counts.rb +0 -1
  164. data/db/migrate/20200514092553_move_katello_fields_from_hostgroups.katello.rb +5 -2
  165. data/db/migrate/20200929200357_create_katello_smart_proxy_sync_history.rb +13 -0
  166. data/db/migrate/20201021150008_add_import_only_to_katello_content_view.rb +5 -0
  167. data/db/migrate/20201119211133_pulp3_migration_progress.rb +9 -0
  168. data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +56 -0
  169. data/db/migrate/20210128231228_add_type_and_from_cvv_to_cvv_export_history.rb +14 -0
  170. data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +7 -0
  171. data/db/seeds.d/104-proxy.rb +1 -1
  172. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  173. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +1 -1
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +1 -1
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +35 -40
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-register-os-client.directive.js +17 -0
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -2
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-client.html +12 -5
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-deb-client.html +38 -0
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-oracle-client.html +5 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-sles-client.html +28 -0
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register.html +14 -11
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +6 -2
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +8 -3
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +9 -3
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +12 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +2 -2
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +7 -7
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +7 -1
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +4 -0
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +17 -3
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +16 -2
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +5 -0
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +78 -7
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +17 -20
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +17 -24
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +1292 -1170
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +17 -20
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +858 -807
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +18 -19
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +17 -24
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +17 -18
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +986 -971
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +19 -20
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +9 -9
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +2 -2
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +1 -1
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/download-policy.service.js +0 -1
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +1 -1
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +8 -1
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +2 -2
  213. data/lib/katello/engine.rb +6 -6
  214. data/lib/katello/middleware/event_daemon.rb +1 -1
  215. data/lib/katello/permission_creator.rb +35 -14
  216. data/lib/katello/plugin.rb +8 -3
  217. data/lib/katello/tasks/delete_orphaned_content.rake +1 -3
  218. data/lib/katello/tasks/jenkins.rake +1 -1
  219. data/lib/katello/tasks/pulp3_content_switchover.rake +1 -1
  220. data/lib/katello/tasks/pulp3_migration.rake +18 -6
  221. data/lib/katello/tasks/pulp3_migration_abort.rake +22 -0
  222. data/lib/katello/tasks/pulp3_migration_stats.rake +28 -8
  223. data/lib/katello/tasks/pulp3_post_migration_check.rake +1 -3
  224. data/lib/katello/tasks/receptor/extract_orgs.rake +1 -1
  225. data/lib/katello/tasks/reimport.rake +1 -1
  226. data/lib/katello/tasks/repository.rake +3 -5
  227. data/lib/katello/tasks/upgrades/4.0/remove_ostree_puppet_content.rake +16 -0
  228. data/lib/katello/version.rb +1 -1
  229. data/lib/proxy_api/container_gateway.rb +21 -0
  230. data/locale/action_names.rb +51 -51
  231. data/locale/bn/katello.edit.po +0 -0
  232. data/locale/bn/katello.po +136 -51
  233. data/locale/cs/katello.edit.po +0 -0
  234. data/locale/cs/katello.po +136 -49
  235. data/locale/de/katello.edit.po +0 -0
  236. data/locale/de/katello.po +136 -48
  237. data/locale/en/katello.edit.po +0 -0
  238. data/locale/en/katello.po +136 -48
  239. data/locale/es/katello.edit.po +0 -0
  240. data/locale/es/katello.po +136 -48
  241. data/locale/fr/katello.edit.po +0 -0
  242. data/locale/fr/katello.po +136 -48
  243. data/locale/gu/katello.edit.po +0 -0
  244. data/locale/gu/katello.po +136 -51
  245. data/locale/hi/katello.edit.po +0 -0
  246. data/locale/hi/katello.po +136 -51
  247. data/locale/it/katello.edit.po +0 -0
  248. data/locale/it/katello.po +136 -48
  249. data/locale/ja/katello.edit.po +0 -0
  250. data/locale/ja/katello.po +136 -48
  251. data/locale/katello.pot +941 -767
  252. data/locale/kn/katello.edit.po +0 -0
  253. data/locale/kn/katello.po +136 -51
  254. data/locale/ko/katello.edit.po +0 -0
  255. data/locale/ko/katello.po +136 -48
  256. data/locale/mr/katello.edit.po +0 -0
  257. data/locale/mr/katello.po +136 -51
  258. data/locale/or/katello.edit.po +0 -0
  259. data/locale/or/katello.po +136 -51
  260. data/locale/pa/katello.edit.po +0 -0
  261. data/locale/pa/katello.po +136 -51
  262. data/locale/pt/katello.edit.po +0 -0
  263. data/locale/pt/katello.po +136 -51
  264. data/locale/pt_BR/katello.edit.po +0 -0
  265. data/locale/pt_BR/katello.po +136 -48
  266. data/locale/ru/katello.edit.po +0 -0
  267. data/locale/ru/katello.po +136 -48
  268. data/locale/ta/katello.edit.po +0 -0
  269. data/locale/ta/katello.po +136 -51
  270. data/locale/te/katello.edit.po +0 -0
  271. data/locale/te/katello.po +136 -51
  272. data/locale/zh_CN/katello.edit.po +0 -0
  273. data/locale/zh_CN/katello.po +136 -48
  274. data/locale/zh_TW/katello.edit.po +0 -0
  275. data/locale/zh_TW/katello.po +136 -48
  276. data/package.json +1 -1
  277. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +0 -1
  278. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +2 -0
  279. data/webpack/__mocks__/foremanReact/components/common/dates/LongDateTime.js +5 -0
  280. data/webpack/{scenes/ContentViews/Details/Repositories → components/SelectableDropdown}/SelectableDropdown.js +20 -3
  281. data/webpack/components/SelectableDropdown/__tests__/SelectableDropdown.test.js +45 -0
  282. data/webpack/components/SelectableDropdown/index.js +3 -0
  283. data/webpack/components/Table/TableWrapper.js +2 -1
  284. data/webpack/components/Table/helpers.js +14 -0
  285. data/webpack/components/TypeAhead/TypeAhead.js +2 -1
  286. data/webpack/components/TypeAhead/pf3Search/TypeAheadSearch.js +2 -1
  287. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +0 -1
  288. data/webpack/containers/Application/overrides.scss +6 -0
  289. data/webpack/index.js +6 -0
  290. data/webpack/redux/actions/RedHatRepositories/helpers.js +5 -5
  291. data/webpack/scenes/ContentViews/ContentViewsActions.js +31 -2
  292. data/webpack/scenes/ContentViews/ContentViewsConstants.js +5 -1
  293. data/webpack/scenes/ContentViews/Copy/ContentViewCopySelectors.js +16 -0
  294. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +77 -0
  295. data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +44 -0
  296. data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +42 -0
  297. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +39 -0
  298. data/webpack/scenes/ContentViews/Copy/index.js +4 -0
  299. data/webpack/scenes/ContentViews/Create/ContentViewCreateSelectors.js +16 -0
  300. data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +58 -0
  301. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +175 -0
  302. data/webpack/scenes/ContentViews/Create/CreateContentViewModal.js +27 -0
  303. data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +42 -0
  304. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +92 -0
  305. data/webpack/scenes/ContentViews/Create/index.js +4 -0
  306. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +16 -0
  307. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +20 -1
  308. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +17 -7
  309. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +19 -13
  310. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +40 -0
  311. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +124 -0
  312. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +134 -0
  313. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +92 -0
  314. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +44 -25
  315. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +17 -7
  316. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +24 -0
  317. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +53 -3
  318. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +4 -3
  319. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +41 -0
  320. data/webpack/scenes/ContentViews/helpers.js +13 -0
  321. data/webpack/scenes/SmartProxy/Content.js +17 -0
  322. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +11 -0
  323. data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +3 -0
  324. data/webpack/scenes/SmartProxy/SmartProxyContentSelectors.js +16 -0
  325. data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +152 -0
  326. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentResult.fixtures.json +140 -0
  327. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
  328. data/webpack/scenes/SmartProxy/index.js +4 -0
  329. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +13 -11
  330. data/webpack/scenes/Subscriptions/Manifest/ManifestActions.js +3 -3
  331. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManifestActions.test.js +2 -2
  332. data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +2 -2
  333. data/webpack/test-utils/react-testing-lib-wrapper.js +8 -2
  334. data/webpack/utils/helpers.js +3 -0
  335. metadata +110 -31
  336. data/app/controllers/katello/api/v2/gpg_keys_controller.rb +0 -114
  337. data/app/overrides/disable_turbolinks_on_proxies_index.rb +0 -5
  338. data/app/services/katello/event_daemon.rb +0 -135
  339. data/app/services/katello/pulp/content_counts_calculator.rb +0 -60
  340. data/lib/katello/tasks/common.rake +0 -7
  341. data/lib/katello/tasks/reports.rake +0 -4
  342. data/lib/katello/tasks/upgrades/3.10/update_gpg_key_urls.rake +0 -32
  343. data/webpack/__mocks__/foremanReact/components/common/Fill/GlobalFill.js +0 -3
  344. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.scss +0 -5
  345. 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,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
@@ -1,7 +0,0 @@
1
- namespace :katello do
2
- task :disable_dynflow do
3
- #Ensures that we run as a dynflow 'client'
4
- ::Rails.application.dynflow.initialize!
5
- ForemanTasks.dynflow.config.remote = true
6
- end
7
- end
@@ -1,4 +0,0 @@
1
- load "#{Rails.root}/lib/tasks/reports.rake"
2
-
3
- #Katello reports can generate a foreman task, so mark the task as a dynflow client
4
- ["reports:daily", "reports:weekly", "reports:monthly"].each { |task| Rake::Task[task].enhance ["dynflow:client"] }
@@ -1,32 +0,0 @@
1
- namespace :katello do
2
- namespace :upgrades do
3
- namespace '3.10' do
4
- desc "Update repositories with API V1 GPG URLs"
5
- task :update_gpg_key_urls => ["environment", "katello:check_ping"] do
6
- User.current = User.anonymous_admin
7
-
8
- ::Organization.all.each do |org|
9
- org_contents = Katello::Resources::Candlepin::Content.all(org.label, include_only: [:id, :gpgUrl])
10
-
11
- org_contents.each do |cp_content|
12
- gpg_url = cp_content['gpgUrl']
13
- if gpg_url&.match(/katello\/api\/repositories/)
14
- content = Katello::Content.where(cp_content_id: cp_content['id'], organization: org).first
15
-
16
- if content.nil?
17
- Rails.logger.warn("Candlepin Content id=#{cp_content['id']} isn't in our DB. Try running 'rake katello:reimport' first.")
18
- else
19
- root_repo = Katello::RootRepository.in_organization(org).where(content_id: content.cp_content_id).first
20
- new_gpg_url = root_repo.library_instance.yum_gpg_key_url
21
- cp_content['gpgUrl'] = new_gpg_url
22
- Katello::Resources::Candlepin::Content.update(org.label, cp_content)
23
- content.gpg_url = new_gpg_url
24
- content.save!
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,3 +0,0 @@
1
-
2
- const addGlobalFill = () => jest.fn();
3
- export default addGlobalFill;
@@ -1,5 +0,0 @@
1
- // accounting for excess padding on search bar and aligning vertically
2
- .foreman-pf4-search-clear {
3
- padding: 8px 5px 4px 5px;
4
- margin-left: 10px;
5
- }
@@ -1,28 +0,0 @@
1
- const actionResolver = (rowData, { _rowIndex }) => {
2
- // don't show actions for the expanded parts
3
- if (rowData.parent || rowData.compoundParent || rowData.noactions) return null;
4
-
5
- // printing to the console for now until these are hooked up
6
- /* eslint-disable no-console */
7
- return [
8
- {
9
- title: 'Publish and Promote',
10
- onClick: (_event, rowId, _rowInfo) => console.log(`clicked on row ${rowId}`),
11
- },
12
- {
13
- title: 'Promote',
14
- onClick: (_event, rowId, _rowInfo) => console.log(`clicked on row ${rowId}`),
15
- },
16
- {
17
- title: 'Copy',
18
- onClick: (_event, rowId, _rowInfo) => console.log(`clicked on row ${rowId}`),
19
- },
20
- {
21
- title: 'Delete',
22
- onClick: (_event, rowId, _rowInfo) => console.log(`clicked on row ${rowId}`),
23
- },
24
- ];
25
- /* eslint-enable no-console */
26
- };
27
-
28
- export default actionResolver;