katello 4.4.1 → 4.5.0

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 (488) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/activation_key_edit.js +9 -2
  3. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +3 -0
  4. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +5 -1
  5. data/app/controllers/katello/api/v2/alternate_content_sources_bulk_actions_controller.rb +44 -0
  6. data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +121 -0
  7. data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +39 -3
  8. data/app/controllers/katello/api/v2/content_exports_controller.rb +19 -0
  9. data/app/controllers/katello/api/v2/content_imports_controller.rb +13 -16
  10. data/app/controllers/katello/api/v2/content_view_components_controller.rb +1 -1
  11. data/app/controllers/katello/api/v2/content_view_repositories_controller.rb +1 -1
  12. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +0 -12
  13. data/app/controllers/katello/api/v2/content_views_controller.rb +13 -0
  14. data/app/controllers/katello/api/v2/environments_controller.rb +1 -1
  15. data/app/controllers/katello/api/v2/host_module_streams_controller.rb +8 -2
  16. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +25 -3
  17. data/app/controllers/katello/api/v2/organizations_controller.rb +4 -2
  18. data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +1 -1
  19. data/app/controllers/katello/api/v2/repositories_controller.rb +1 -1
  20. data/app/controllers/katello/api/v2/repository_sets_controller.rb +40 -7
  21. data/app/controllers/katello/api/v2/subscriptions_controller.rb +2 -2
  22. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +1 -1
  23. data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +4 -0
  24. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +21 -3
  25. data/app/lib/actions/katello/alternate_content_source/create.rb +24 -0
  26. data/app/lib/actions/katello/alternate_content_source/destroy.rb +27 -0
  27. data/app/lib/actions/katello/alternate_content_source/refresh.rb +27 -0
  28. data/app/lib/actions/katello/alternate_content_source/update.rb +41 -0
  29. data/app/lib/actions/katello/cdn_configuration/update.rb +3 -3
  30. data/app/lib/actions/katello/content_view/destroy.rb +2 -1
  31. data/app/lib/actions/katello/content_view/incremental_updates.rb +7 -3
  32. data/app/lib/actions/katello/content_view/publish.rb +8 -10
  33. data/app/lib/actions/katello/content_view_version/auto_create_products.rb +4 -4
  34. data/app/lib/actions/katello/content_view_version/auto_create_redhat_repositories.rb +6 -4
  35. data/app/lib/actions/katello/content_view_version/auto_create_repositories.rb +6 -4
  36. data/app/lib/actions/katello/content_view_version/import.rb +25 -22
  37. data/app/lib/actions/katello/content_view_version/import_library.rb +0 -1
  38. data/app/lib/actions/katello/content_view_version/import_repository.rb +21 -0
  39. data/app/lib/actions/katello/content_view_version/incremental_update.rb +85 -93
  40. data/app/lib/actions/katello/content_view_version/reset_content_view_repositories_from_metadata.rb +2 -2
  41. data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -1
  42. data/app/lib/actions/katello/product/content_create.rb +10 -8
  43. data/app/lib/actions/katello/repository/destroy.rb +36 -12
  44. data/app/lib/actions/katello/repository_set/disable_repository.rb +8 -3
  45. data/app/lib/actions/pulp3/alternate_content_source/create.rb +20 -0
  46. data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +20 -0
  47. data/app/lib/actions/pulp3/alternate_content_source/delete.rb +16 -0
  48. data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +16 -0
  49. data/app/lib/actions/pulp3/alternate_content_source/refresh.rb +23 -0
  50. data/app/lib/actions/pulp3/alternate_content_source/update.rb +16 -0
  51. data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +17 -0
  52. data/app/lib/actions/pulp3/content_view_version/{import.rb → create_import.rb} +5 -5
  53. data/app/lib/actions/pulp3/content_view_version/create_importer.rb +4 -3
  54. data/app/lib/actions/pulp3/content_view_version/destroy_importer.rb +12 -1
  55. data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +16 -0
  56. data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +23 -0
  57. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +15 -0
  58. data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +16 -0
  59. data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +1 -1
  60. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +51 -0
  61. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +5 -2
  62. data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -1
  63. data/app/lib/katello/api/v2/error_handling.rb +1 -0
  64. data/app/lib/katello/concerns/base_template_scope_extensions.rb +24 -11
  65. data/app/lib/katello/resources/cdn/katello_cdn.rb +3 -1
  66. data/app/lib/katello/util/errata.rb +2 -3
  67. data/app/lib/katello/validators/alternate_content_source_path_validator.rb +29 -0
  68. data/app/lib/katello/validators/content_default_http_proxy_setting_validator.rb +12 -0
  69. data/app/lib/katello/validators/content_view_environment_validator.rb +10 -5
  70. data/app/models/katello/alternate_content_source.rb +71 -0
  71. data/app/models/katello/authorization/alternate_content_source.rb +33 -0
  72. data/app/models/katello/authorization/repository.rb +5 -3
  73. data/app/models/katello/candlepin/repository_mapper.rb +13 -6
  74. data/app/models/katello/cdn_configuration.rb +15 -15
  75. data/app/models/katello/concerns/content_facet_host_extensions.rb +25 -0
  76. data/app/models/katello/concerns/host_managed_extensions.rb +7 -6
  77. data/app/models/katello/concerns/http_proxy_extensions.rb +14 -0
  78. data/app/models/katello/concerns/organization_extensions.rb +4 -2
  79. data/app/models/katello/concerns/setting_extensions.rb +14 -0
  80. data/app/models/katello/concerns/smart_proxy_extensions.rb +2 -1
  81. data/app/models/katello/content.rb +1 -0
  82. data/app/models/katello/content_credential.rb +6 -0
  83. data/app/models/katello/content_override.rb +7 -3
  84. data/app/models/katello/content_view.rb +33 -2
  85. data/app/models/katello/content_view_erratum_filter.rb +26 -12
  86. data/app/models/katello/content_view_filter.rb +4 -0
  87. data/app/models/katello/content_view_version.rb +12 -0
  88. data/app/models/katello/content_view_version_export_history.rb +3 -1
  89. data/app/models/katello/erratum.rb +9 -5
  90. data/app/models/katello/events/delete_latest_content_view_version.rb +40 -0
  91. data/app/models/katello/host/content_facet.rb +14 -0
  92. data/app/models/katello/host_available_module_stream.rb +12 -0
  93. data/app/models/katello/product_content.rb +1 -0
  94. data/app/models/katello/purpose_sla_status.rb +1 -1
  95. data/app/models/katello/purpose_status.rb +2 -2
  96. data/app/models/katello/repository.rb +7 -4
  97. data/app/models/katello/root_repository.rb +1 -1
  98. data/app/models/katello/smart_proxy_alternate_content_source.rb +8 -0
  99. data/app/models/katello/sync_plan.rb +1 -1
  100. data/app/presenters/katello/product_content_presenter.rb +15 -0
  101. data/app/services/katello/applicable_host_queue.rb +1 -1
  102. data/app/services/katello/product_content_finder.rb +12 -2
  103. data/app/services/katello/pulp3/alternate_content_source.rb +123 -0
  104. data/app/services/katello/pulp3/api/file.rb +8 -0
  105. data/app/services/katello/pulp3/api/yum.rb +8 -0
  106. data/app/services/katello/pulp3/content_view_version/export.rb +27 -5
  107. data/app/services/katello/pulp3/content_view_version/import.rb +104 -71
  108. data/app/services/katello/pulp3/content_view_version/import_export_common.rb +4 -4
  109. data/app/services/katello/pulp3/content_view_version/import_gpg_keys.rb +13 -11
  110. data/app/services/katello/pulp3/content_view_version/import_validator.rb +67 -72
  111. data/app/services/katello/pulp3/content_view_version/importable_products.rb +40 -24
  112. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +102 -38
  113. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +2 -2
  114. data/app/services/katello/pulp3/content_view_version/metadata_map.rb +117 -0
  115. data/app/services/katello/pulp3/pulp_content_unit.rb +6 -1
  116. data/app/services/katello/pulp3/repository/yum.rb +70 -12
  117. data/app/services/katello/pulp3/repository.rb +6 -62
  118. data/app/services/katello/pulp3/service_common.rb +66 -0
  119. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +4 -1
  120. data/app/services/katello/ui_notifications/content_view/delete_latest_version_failure.rb +22 -0
  121. data/app/views/foreman/job_templates/change_content_source.erb +1 -1
  122. data/app/views/foreman/job_templates/install_errata.erb +5 -5
  123. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +10 -8
  124. data/app/views/foreman/job_templates/install_group.erb +4 -4
  125. data/app/views/foreman/job_templates/install_package.erb +4 -4
  126. data/app/views/foreman/job_templates/install_packages_by_search_query.erb +3 -3
  127. data/app/views/foreman/job_templates/remove_group.erb +4 -4
  128. data/app/views/foreman/job_templates/remove_package.erb +4 -4
  129. data/app/views/foreman/job_templates/remove_packages_by_search_query.erb +3 -3
  130. data/app/views/foreman/job_templates/resolve_traces.erb +2 -2
  131. data/app/views/foreman/job_templates/restart_services.erb +3 -3
  132. data/app/views/foreman/job_templates/update_group.erb +4 -4
  133. data/app/views/foreman/job_templates/update_package.erb +4 -4
  134. data/app/views/foreman/job_templates/update_packages_by_search_query.erb +3 -3
  135. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +24 -0
  136. data/app/views/katello/api/v2/alternate_content_sources/index.json.rabl +7 -0
  137. data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +3 -0
  138. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
  139. data/app/views/katello/api/v2/content_facet/show.json.rabl +12 -0
  140. data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +2 -3
  141. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +1 -1
  142. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  143. data/app/views/katello/api/v2/environments/show.json.rabl +2 -0
  144. data/app/views/katello/api/v2/errata/_counts.json.rabl +2 -2
  145. data/app/views/katello/api/v2/host_module_streams/base.json.rabl +2 -2
  146. data/app/views/katello/api/v2/hosts/host_collections.json.rabl +1 -1
  147. data/app/views/katello/api/v2/organizations/show.json.rabl +7 -1
  148. data/app/views/katello/api/v2/repositories/show.json.rabl +2 -1
  149. data/app/views/katello/api/v2/repository_sets/show.json.rabl +4 -0
  150. data/app/views/katello/sync_management/_repo.html.erb +8 -29
  151. data/config/routes/api/v2.rb +19 -0
  152. data/db/migrate/20150930183738_migrate_content_hosts.rb +0 -399
  153. data/db/migrate/20171025163149_remove_use_pulp_oauth_setting.rb +1 -1
  154. data/db/migrate/20171114150937_cleanup_installed_packages.rb +1 -1
  155. data/db/migrate/20180402160223_clean_up_force_post_sync_action_setting.rb +1 -1
  156. data/db/migrate/20211129200124_remove_dependency_solving_algorithm_setting.rb +1 -1
  157. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +1 -1
  158. data/db/migrate/20220110223754_update_disconnected_settings.rb +5 -5
  159. data/db/migrate/20220117151612_add_alternate_content_sources.rb +48 -0
  160. data/db/migrate/20220124191056_add_type_to_cdn_configuration.rb +9 -4
  161. data/db/migrate/20220209203251_add_generated_for_to_content_views.rb +13 -0
  162. data/db/migrate/20220209205137_expand_sync_timeout_settings.rb +7 -7
  163. data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +12 -0
  164. data/db/migrate/20220303160220_remove_duplicate_errata.rb +1 -1
  165. data/db/migrate/20220404190836_delete_old_setting_data.rb +9 -0
  166. data/db/migrate/20220405220616_update_cdn_configuration_type.rb +11 -0
  167. data/db/migrate/20220419193414_content_settings_to_dsl_category.rb +5 -0
  168. data/db/migrate/20220428203334_add_last_refreshed_to_katello_alternate_content_sources.rb +5 -0
  169. data/db/seeds.d/110-content-view-autopublish.rb +13 -0
  170. data/db/seeds.d/150-module_job_templates.rb +1 -1
  171. data/engines/bastion/README.md +1 -0
  172. data/engines/bastion/app/assets/javascripts/bastion/components/bst-modal.directive.js +1 -0
  173. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -0
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.routes.js +1 -1
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +4 -2
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-details.html +1 -1
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +11 -6
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +1 -0
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +1 -0
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +11 -3
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +1 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -1
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -1
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +8 -0
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +4 -2
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/content.service.js +10 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-deb-repositories.html +26 -0
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-debs.html +27 -0
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +22 -0
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +13 -7
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +63 -17
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +7 -8
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +10 -1
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +21 -3
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +8 -12
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +7 -5
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +2 -1
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery-create.controller.js +1 -1
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +1 -1
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +1 -0
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html +6 -1
  204. data/lib/katello/engine.rb +1 -5
  205. data/lib/katello/permission_creator.rb +34 -4
  206. data/lib/katello/plugin.rb +377 -3
  207. data/lib/katello/tasks/refresh_alternate_content_sources.rake +15 -0
  208. data/lib/katello/tasks/reset.rake.bak +67 -0
  209. data/lib/katello/tasks/update_content_default_http_proxy.rake +2 -3
  210. data/lib/katello/version.rb +1 -1
  211. data/locale/action_names.rb +47 -41
  212. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  213. data/locale/bn/katello.po +820 -106
  214. data/locale/bn/katello.po.time_stamp +0 -0
  215. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  216. data/locale/cs/katello.po +818 -104
  217. data/locale/cs/katello.po.time_stamp +0 -0
  218. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  219. data/locale/de/katello.po +893 -179
  220. data/locale/de/katello.po.time_stamp +0 -0
  221. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  222. data/locale/en/katello.po +817 -103
  223. data/locale/en/katello.po.time_stamp +0 -0
  224. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  225. data/locale/es/katello.po +882 -168
  226. data/locale/es/katello.po.time_stamp +0 -0
  227. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  228. data/locale/fr/katello.po +1219 -505
  229. data/locale/fr/katello.po.time_stamp +0 -0
  230. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  231. data/locale/gu/katello.po +826 -112
  232. data/locale/gu/katello.po.time_stamp +0 -0
  233. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  234. data/locale/hi/katello.po +826 -112
  235. data/locale/hi/katello.po.time_stamp +0 -0
  236. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  237. data/locale/it/katello.po +863 -148
  238. data/locale/it/katello.po.time_stamp +0 -0
  239. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  240. data/locale/ja/katello.po +1216 -499
  241. data/locale/ja/katello.po.time_stamp +0 -0
  242. data/locale/katello.pot +3847 -2507
  243. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  244. data/locale/kn/katello.po +826 -112
  245. data/locale/kn/katello.po.time_stamp +0 -0
  246. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  247. data/locale/ko/katello.po +912 -198
  248. data/locale/ko/katello.po.time_stamp +0 -0
  249. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  250. data/locale/mr/katello.po +826 -112
  251. data/locale/mr/katello.po.time_stamp +0 -0
  252. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  253. data/locale/or/katello.po +826 -112
  254. data/locale/or/katello.po.time_stamp +0 -0
  255. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  256. data/locale/pa/katello.po +826 -112
  257. data/locale/pa/katello.po.time_stamp +0 -0
  258. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  259. data/locale/pt/katello.po +817 -103
  260. data/locale/pt/katello.po.time_stamp +0 -0
  261. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  262. data/locale/pt_BR/katello.po +879 -165
  263. data/locale/pt_BR/katello.po.time_stamp +0 -0
  264. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  265. data/locale/ru/katello.po +927 -213
  266. data/locale/ru/katello.po.time_stamp +0 -0
  267. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  268. data/locale/ta/katello.po +820 -106
  269. data/locale/ta/katello.po.time_stamp +0 -0
  270. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  271. data/locale/te/katello.po +826 -112
  272. data/locale/te/katello.po.time_stamp +0 -0
  273. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  274. data/locale/zh_CN/katello.po +1202 -486
  275. data/locale/zh_CN/katello.po.time_stamp +0 -0
  276. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  277. data/locale/zh_TW/katello.po +856 -142
  278. data/locale/zh_TW/katello.po.time_stamp +0 -0
  279. data/webpack/components/Bookmark/index.js +22 -14
  280. data/webpack/components/EditableTextInput/EditableTextInput.js +20 -5
  281. data/webpack/components/Errata/index.js +38 -8
  282. data/webpack/components/Packages/index.js +1 -4
  283. data/webpack/components/Search/Search.js +22 -3
  284. data/webpack/components/SelectAllCheckbox/index.js +1 -0
  285. data/webpack/components/SelectableDropdown/SelectableDropdown.js +4 -2
  286. data/webpack/components/Table/EmptyStateMessage.js +21 -7
  287. data/webpack/components/Table/MainTable.js +29 -4
  288. data/webpack/components/Table/MainTable.scss +5 -1
  289. data/webpack/components/Table/TableHooks.js +65 -20
  290. data/webpack/components/Table/TableWrapper.js +9 -3
  291. data/webpack/components/Table/components/SortableColumnHeaders.js +19 -0
  292. data/webpack/components/Table/components/TranslatedPlural.js +57 -0
  293. data/webpack/components/TypeAhead/TypeAhead.js +12 -0
  294. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +13 -11
  295. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +7 -2
  296. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +27 -0
  297. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +250 -0
  298. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +232 -0
  299. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +19 -0
  300. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewConstants.js +2 -0
  301. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +131 -0
  302. data/webpack/components/extensions/HostDetails/Cards/{__tests__ → ContentViewDetailsCard/__tests__}/contentViewDetailsCard.test.js +22 -0
  303. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +443 -0
  304. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/envPaths.fixtures.json +320 -0
  305. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +57 -33
  306. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +3 -0
  307. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsActions.js +30 -0
  308. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +206 -0
  309. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsConstants.js +7 -0
  310. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +227 -0
  311. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsSelectors.js +18 -0
  312. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/availableHostCollections.fixtures.json +106 -0
  313. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsCard.test.js +118 -0
  314. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +235 -0
  315. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/removableHostCollections.fixtures.json +45 -0
  316. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +33 -8
  317. data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +44 -0
  318. data/webpack/components/extensions/HostDetails/DetailsTabCards/RecentCommunicationCardExtensions.js +37 -0
  319. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +107 -0
  320. data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +38 -0
  321. data/webpack/components/extensions/HostDetails/HostDetailsActions.js +11 -0
  322. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +4 -0
  323. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +2 -0
  324. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +6 -1
  325. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +176 -72
  326. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataActions.js +1 -7
  327. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsActions.js +1 -3
  328. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsConstants.js +28 -0
  329. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +522 -118
  330. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesActions.js +1 -7
  331. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +6 -4
  332. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +164 -58
  333. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +59 -49
  334. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
  335. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionHooks.js +85 -0
  336. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsActions.js +33 -54
  337. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +20 -0
  338. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +298 -107
  339. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +14 -7
  340. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/HostTracesActions.js +2 -1
  341. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +104 -0
  342. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +134 -57
  343. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +37 -32
  344. data/webpack/components/extensions/HostDetails/Tabs/{ModuleStreamsTab/__tests__/modules.fixtures.json → __tests__/moduleStreams.fixtures.json} +6 -3
  345. data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +261 -0
  346. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +21 -15
  347. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +44 -1
  348. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +4 -1
  349. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +105 -6
  350. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +25 -6
  351. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +6 -0
  352. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +18 -0
  353. data/webpack/containers/Application/config.js +5 -0
  354. data/webpack/global_index.js +32 -9
  355. data/webpack/global_test_setup.js +13 -0
  356. data/webpack/redux/actions/RedHatRepositories/enabled.js +2 -1
  357. data/webpack/redux/actions/RedHatRepositories/helpers.js +13 -8
  358. data/webpack/scenes/AlternateContentSources/ACSActions.js +65 -0
  359. data/webpack/scenes/AlternateContentSources/ACSConstants.js +18 -0
  360. data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +23 -0
  361. data/webpack/scenes/AlternateContentSources/ACSSelectors.js +24 -0
  362. data/webpack/scenes/AlternateContentSources/Create/ACSCreateContext.js +4 -0
  363. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +160 -0
  364. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +79 -0
  365. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +199 -0
  366. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +104 -0
  367. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +41 -0
  368. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +71 -0
  369. data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +57 -0
  370. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +77 -0
  371. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +149 -0
  372. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreateData.fixtures.json +3 -0
  373. data/webpack/scenes/AlternateContentSources/Create/__tests__/contentCredentials.fixtures.json +69 -0
  374. data/webpack/scenes/AlternateContentSources/Create/__tests__/smartProxy.fixtures.json +65 -0
  375. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +162 -0
  376. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsIndex.fixtures.json +91 -0
  377. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +67 -0
  378. data/webpack/scenes/AlternateContentSources/index.js +4 -0
  379. data/webpack/scenes/Content/Details/ContentRepositories.js +1 -0
  380. data/webpack/scenes/Content/Table/ContentTable.js +1 -0
  381. data/webpack/scenes/ContentCredentials/ContentCredentialSelectors.js +4 -1
  382. data/webpack/scenes/ContentViews/ContentViewsActions.js +6 -2
  383. data/webpack/scenes/ContentViews/ContentViewsConstants.js +11 -3
  384. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +2 -1
  385. data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +10 -1
  386. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +2 -1
  387. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +7 -5
  388. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +29 -21
  389. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +15 -8
  390. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +2 -2
  391. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +2 -2
  392. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +3 -1
  393. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +34 -8
  394. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +33 -29
  395. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +130 -79
  396. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +16 -2
  397. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -1
  398. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +2 -1
  399. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +6 -1
  400. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +41 -21
  401. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +38 -20
  402. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +2 -0
  403. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +8 -1
  404. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +9 -1
  405. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +2 -1
  406. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +1 -0
  407. data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +27 -12
  408. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +39 -17
  409. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +27 -10
  410. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +46 -23
  411. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +3 -2
  412. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +5 -2
  413. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +161 -108
  414. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +7 -7
  415. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
  416. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +58 -0
  417. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteContextWrapper.js +45 -0
  418. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteHelpers.js +30 -0
  419. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +56 -0
  420. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +126 -0
  421. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/FinishBulkDelete.js +61 -0
  422. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +196 -0
  423. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +220 -0
  424. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +104 -0
  425. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +122 -0
  426. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteVersions.fixtures.json +600 -0
  427. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentView.fixtures.json +1504 -0
  428. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentViewVersion.fixtures.json +936 -0
  429. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/environmentPaths.fixtures.json +261 -0
  430. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +163 -0
  431. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/bulkDeleteSteps.js +79 -0
  432. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +192 -167
  433. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +2 -5
  434. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +38 -53
  435. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +1 -1
  436. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -12
  437. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -0
  438. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -0
  439. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +1 -0
  440. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +8 -20
  441. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +23 -13
  442. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +3 -0
  443. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +4 -4
  444. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +0 -3
  445. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +4 -4
  446. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +12 -14
  447. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  448. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +96 -117
  449. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +13 -19
  450. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +9 -20
  451. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +165 -148
  452. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +2 -0
  453. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +14 -3
  454. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +4 -3
  455. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +10 -6
  456. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +6 -1
  457. data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +40 -35
  458. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +1 -1
  459. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +2 -2
  460. data/webpack/scenes/ContentViews/helpers.js +3 -0
  461. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +5 -0
  462. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +3 -3
  463. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +2 -1
  464. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/EnabledRepository.test.js +2 -0
  465. data/webpack/scenes/RedHatRepositories/components/Search.js +4 -4
  466. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +9 -2
  467. data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +1 -1
  468. data/webpack/scenes/SmartProxy/SmartProxyContentSelectors.js +10 -1
  469. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +3 -3
  470. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +2 -0
  471. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/{AirGappedTypeForm.js → ExportSyncForm.js} +7 -6
  472. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/{UpstreamServerTypeForm.js → NetworkSyncForm.js} +15 -7
  473. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/{AirGappedTypeForm.test.js → ExportSyncForm.test.js} +4 -4
  474. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/{UpstreamServerTypeForm.test.js → NetworkSyncForm.test.js} +8 -8
  475. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +11 -11
  476. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +1 -0
  477. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +8 -7
  478. data/webpack/scenes/Tasks/TaskActions.js +6 -0
  479. data/webpack/scenes/Tasks/TaskSelectors.js +11 -0
  480. data/webpack/scenes/Tasks/helpers.js +60 -5
  481. data/webpack/utils/helpers.js +2 -0
  482. metadata +183 -38
  483. data/app/models/setting/content.rb +0 -201
  484. data/db/seeds.d/107-enable_dynflow.rb +0 -8
  485. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +0 -96
  486. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/moduleStreamsTab.test.js +0 -108
  487. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerEmptyState.js +0 -42
  488. data/webpack/scenes/ContentViews/Details/DetailsContainer.js +0 -36
@@ -3,7 +3,7 @@ module Actions
3
3
  module ContentViewVersion
4
4
  class IncrementalUpdate < Actions::EntryAction
5
5
  include ::Katello::ContentViewHelper
6
- attr_accessor :new_content_view_version
6
+ attr_accessor :new_content_view_version, :new_content_view_version_id
7
7
 
8
8
  HUMANIZED_TYPES = {
9
9
  ::Katello::Erratum::CONTENT_TYPE => "Errata",
@@ -18,6 +18,7 @@ module Actions
18
18
  # rubocop:disable Metrics/MethodLength
19
19
  # rubocop:disable Metrics/AbcSize
20
20
  # rubocop:disable Metrics/CyclomaticComplexity
21
+ # rubocop:disable Metrics/PerceivedComplexity
21
22
  def plan(old_version, environments, options = {})
22
23
  dep_solve = options.fetch(:resolve_dependencies, true)
23
24
  description = options.fetch(:description, '')
@@ -31,85 +32,93 @@ module Actions
31
32
  validate_environments(environments, old_version)
32
33
 
33
34
  new_minor = old_version.content_view.versions.where(:major => old_version.major).maximum(:minor) + 1
34
- if SmartProxy.pulp_primary.pulp3_repository_type_support?("yum") && is_composite
35
+
36
+ if is_composite
35
37
  sequence do
36
38
  publish_action = plan_action(::Actions::Katello::ContentView::Publish, old_version.content_view, description,
37
39
  :major => old_version.major, :minor => new_minor,
38
40
  :override_components => new_components, :skip_promotion => true)
41
+
42
+ self.new_content_view_version_id = publish_action.content_view_version_id
43
+ plan_self(:is_composite => true, :content_view_id => old_version.content_view.id,
44
+ :new_content_view_version_id => publish_action.content_view_version_id,
45
+ :environment_ids => environments.map(&:id), :user_id => ::User.current.id,
46
+ :history_id => publish_action.history_id,
47
+ :old_version => old_version.id)
48
+
39
49
  if old_version.environments.present?
40
50
  plan_action(::Actions::Katello::ContentView::Promote, publish_action.version,
41
51
  old_version.environments, true, description)
42
52
  end
43
53
  end
44
- return
45
- end
46
-
47
- self.new_content_view_version = old_version.content_view.create_new_version(old_version.major, new_minor, all_components)
48
- history = ::Katello::ContentViewHistory.create!(:content_view_version => new_content_view_version, :user => ::User.current.login,
49
- :action => ::Katello::ContentViewHistory.actions[:publish],
50
- :status => ::Katello::ContentViewHistory::IN_PROGRESS, :task => self.task,
51
- :notes => description)
54
+ else
55
+ self.new_content_view_version = old_version.content_view.create_new_version(old_version.major, new_minor, all_components)
56
+ history = ::Katello::ContentViewHistory.create!(:content_view_version => new_content_view_version, :user => ::User.current.login,
57
+ :action => ::Katello::ContentViewHistory.actions[:publish],
58
+ :status => ::Katello::ContentViewHistory::IN_PROGRESS, :task => self.task,
59
+ :notes => description)
52
60
 
53
- copy_action_outputs = []
54
- repos_to_clone = repos_to_copy(old_version, new_components)
61
+ copy_action_outputs = []
62
+ repos_to_clone = repos_to_copy(old_version, new_components)
55
63
 
56
- sequence do
57
- repository_mapping = plan_action(ContentViewVersion::CreateRepos, new_content_view_version, repos_to_clone).repository_mapping
58
- separated_repo_map = separated_repo_mapping(repository_mapping, true)
59
-
60
- repos_to_clone.each do |source_repos|
61
- plan_action(Repository::CloneToVersion,
62
- source_repos,
63
- new_content_view_version,
64
- repository_mapping[source_repos],
65
- incremental: true)
66
- end
64
+ sequence do
65
+ repository_mapping = plan_action(ContentViewVersion::CreateRepos, new_content_view_version, repos_to_clone).repository_mapping
66
+ separated_repo_map = separated_repo_mapping(repository_mapping, true)
67
+
68
+ repos_to_clone.each do |source_repos|
69
+ plan_action(Repository::CloneToVersion,
70
+ source_repos,
71
+ new_content_view_version,
72
+ repository_mapping[source_repos],
73
+ incremental: true)
74
+ end
67
75
 
68
- concurrence do
69
- if separated_repo_map[:pulp3_yum_multicopy].keys.flatten.present?
70
- extended_repo_mapping = pulp3_repo_mapping(separated_repo_map[:pulp3_yum_multicopy], old_version)
71
- unit_map = pulp3_content_mapping(content)
72
-
73
- unless extended_repo_mapping.empty? || unit_map.values.flatten.empty?
74
- sequence do
75
- # Pre-copy content if dest_repo is a soft copy of its library instance.
76
- # Don't use extended_repo_mapping because the source repositories are library instances.
77
- # We want the old CV snapshot repositories here so as to not pull in excess new content.
78
- separated_repo_map[:pulp3_yum_multicopy].each do |source_repos, dest_repo|
79
- if dest_repo.soft_copy_of_library?
80
- source_repos.each do |source_repo|
81
- # remove_all flag is set to cover the case of incrementally updating more than once with different content.
82
- # Without it, content from the previous incremental update will be copied as well due to how Pulp repo versions work.
83
- plan_action(Pulp3::Repository::CopyContent, source_repo, SmartProxy.pulp_primary, dest_repo, copy_all: true, remove_all: true)
76
+ concurrence do
77
+ if separated_repo_map[:pulp3_yum_multicopy].keys.flatten.present?
78
+ extended_repo_mapping = pulp3_repo_mapping(separated_repo_map[:pulp3_yum_multicopy], old_version)
79
+ unit_map = pulp3_content_mapping(content)
80
+
81
+ unless extended_repo_mapping.empty? || unit_map.values.flatten.empty?
82
+ sequence do
83
+ # Pre-copy content if dest_repo is a soft copy of its library instance.
84
+ # Don't use extended_repo_mapping because the source repositories are library instances.
85
+ # We want the old CV snapshot repositories here so as to not pull in excess new content.
86
+ separated_repo_map[:pulp3_yum_multicopy].each do |source_repos, dest_repo|
87
+ if dest_repo.soft_copy_of_library?
88
+ source_repos.each do |source_repo|
89
+ # remove_all flag is set to cover the case of incrementally updating more than once with different content.
90
+ # Without it, content from the previous incremental update will be copied as well due to how Pulp repo versions work.
91
+ plan_action(Pulp3::Repository::CopyContent, source_repo, SmartProxy.pulp_primary, dest_repo, copy_all: true, remove_all: true)
92
+ end
84
93
  end
85
94
  end
86
- end
87
- copy_action_outputs << plan_action(Pulp3::Repository::MultiCopyUnits, extended_repo_mapping, unit_map,
88
- dependency_solving: dep_solve).output
89
- repos_to_clone.each do |source_repos|
90
- if separated_repo_map[:pulp3_yum_multicopy].keys.include?(source_repos)
91
- copy_repos(repository_mapping[source_repos])
95
+ copy_action_outputs << plan_action(Pulp3::Repository::MultiCopyUnits, extended_repo_mapping, unit_map,
96
+ dependency_solving: dep_solve).output
97
+ repos_to_clone.each do |source_repos|
98
+ if separated_repo_map[:pulp3_yum_multicopy].keys.include?(source_repos)
99
+ copy_repos(repository_mapping[source_repos])
100
+ end
92
101
  end
93
102
  end
94
103
  end
95
104
  end
96
- end
97
105
 
98
- if separated_repo_map[:other].keys.flatten.present?
99
- repos_to_clone.each do |source_repos|
100
- if separated_repo_map[:other].keys.include?(source_repos)
101
- copy_repos(repository_mapping[source_repos])
106
+ if separated_repo_map[:other].keys.flatten.present?
107
+ repos_to_clone.each do |source_repos|
108
+ if separated_repo_map[:other].keys.include?(source_repos)
109
+ copy_repos(repository_mapping[source_repos])
110
+ end
102
111
  end
103
112
  end
104
113
  end
105
- end
106
114
 
107
- plan_self(:content_view_id => old_version.content_view.id,
108
- :new_content_view_version_id => self.new_content_view_version.id,
109
- :environment_ids => environments.map(&:id), :user_id => ::User.current.id,
110
- :history_id => history.id, :copy_action_outputs => copy_action_outputs,
111
- :old_version => old_version.id)
112
- promote(new_content_view_version, environments)
115
+ plan_self(:content_view_id => old_version.content_view.id,
116
+ :new_content_view_version_id => self.new_content_view_version.id,
117
+ :environment_ids => environments.map(&:id), :user_id => ::User.current.id,
118
+ :history_id => history.id, :copy_action_outputs => copy_action_outputs,
119
+ :old_version => old_version.id)
120
+ promote(new_content_view_version, environments)
121
+ end
113
122
  end
114
123
  end
115
124
 
@@ -203,7 +212,7 @@ module Actions
203
212
  end
204
213
  end
205
214
 
206
- def run # rubocop:disable Metrics/CyclomaticComplexity
215
+ def run
207
216
  content = { ::Katello::Erratum::CONTENT_TYPE => [],
208
217
  ::Katello::Rpm::CONTENT_TYPE => [],
209
218
  ::Katello::ModuleStream::CONTENT_TYPE => [],
@@ -213,44 +222,23 @@ module Actions
213
222
  base_repos = ::Katello::ContentViewVersion.find(input[:old_version]).repositories
214
223
  new_repos = ::Katello::ContentViewVersion.find(input[:new_content_view_version_id]).repositories
215
224
 
216
- if input[:copy_action_outputs].present? && input[:copy_action_outputs].last[:pulp_tasks].present?
217
- if input[:copy_action_outputs].last[:pulp_tasks].last[:pulp_href]&.include?("/pulp/api/v3/")
218
- new_repos.each do |new_repo|
219
- matched_old_repo = base_repos.where(root_id: new_repo.root_id).first
225
+ if input[:is_composite] || input[:copy_action_outputs].present? && input[:copy_action_outputs].last[:pulp_tasks].present?
226
+ new_repos.each do |new_repo|
227
+ matched_old_repo = base_repos.where(root_id: new_repo.root_id).first
220
228
 
221
- new_errata = new_repo.errata - matched_old_repo.errata
222
- new_module_streams = new_repo.module_streams - matched_old_repo.module_streams
223
- new_rpms = new_repo.rpms - matched_old_repo.rpms
229
+ new_errata = new_repo.errata - (matched_old_repo&.errata || [])
230
+ new_module_streams = new_repo.module_streams - (matched_old_repo&.module_streams || [])
231
+ new_rpms = new_repo.rpms - (matched_old_repo&.rpms || [])
224
232
 
225
- new_errata.each do |erratum|
226
- content[::Katello::Erratum::CONTENT_TYPE] << erratum.errata_id
227
- end
228
- new_module_streams.each do |module_stream|
229
- content[::Katello::ModuleStream::CONTENT_TYPE] <<
230
- "#{module_stream.name}:#{module_stream.stream}:#{module_stream.version}"
231
- end
232
- new_rpms.each do |rpm|
233
- content[::Katello::Rpm::CONTENT_TYPE] << rpm.nvra
234
- end
233
+ new_errata.each do |erratum|
234
+ content[::Katello::Erratum::CONTENT_TYPE] << erratum.errata_id
235
235
  end
236
- else
237
- input[:copy_action_outputs].each do |copy_output|
238
- copy_output[:pulp_tasks].each do |pulp_task|
239
- pulp_task[:result][:units_successful].each do |unit|
240
- type = unit['type_id']
241
- unit = unit['unit_key']
242
- case type
243
- when ::Katello::Erratum::CONTENT_TYPE
244
- content[::Katello::Erratum::CONTENT_TYPE] << unit['id']
245
- when ::Katello::ModuleStream::CONTENT_TYPE
246
- content[::Katello::ModuleStream::CONTENT_TYPE] << "#{unit['name']}:#{unit['stream']}:#{unit['version']}"
247
- when ::Katello::Rpm::CONTENT_TYPE
248
- content[::Katello::Rpm::CONTENT_TYPE] << ::Katello::Util::Package.build_nvra(unit)
249
- when ::Katello::Deb::CONTENT_TYPE
250
- content[::Katello::Deb::CONTENT_TYPE] << "#{unit['name']}_#{unit['version']}_#{unit['architecture']}"
251
- end
252
- end
253
- end
236
+ new_module_streams.each do |module_stream|
237
+ content[::Katello::ModuleStream::CONTENT_TYPE] <<
238
+ "#{module_stream.name}:#{module_stream.stream}:#{module_stream.version}"
239
+ end
240
+ new_rpms.each do |rpm|
241
+ content[::Katello::Rpm::CONTENT_TYPE] << rpm.nvra
254
242
  end
255
243
  end
256
244
  end
@@ -274,6 +262,10 @@ module Actions
274
262
  repo.pulp_id)
275
263
  end
276
264
  end
265
+
266
+ if version.latest? && !version.content_view.composite?
267
+ version.auto_publish_composites!
268
+ end
277
269
  end
278
270
 
279
271
  # given a composite version, and a list of new components, calculate the list of all components for the new version
@@ -2,8 +2,8 @@ module Actions
2
2
  module Katello
3
3
  module ContentViewVersion
4
4
  class ResetContentViewRepositoriesFromMetadata < Actions::Base
5
- def plan(content_view:, metadata:)
6
- ::Katello::Pulp3::ContentViewVersion::Import.reset_content_view_repositories_from_metadata!(content_view: content_view, metadata: metadata)
5
+ def plan(import:)
6
+ import.reset_content_view_repositories!
7
7
  end
8
8
  end
9
9
  end
@@ -9,7 +9,7 @@ module Actions
9
9
  def plan(organization)
10
10
  action_subject organization
11
11
  manifest_update = organization.products.redhat.any?
12
- path = "/tmp/#{rand}.zip"
12
+ path = File.join(::Rails.root, "tmp", "#{rand}.zip")
13
13
  details = organization.owner_details
14
14
  upstream = details['upstreamConsumer'].blank? ? {} : details['upstreamConsumer']
15
15
 
@@ -44,16 +44,18 @@ module Actions
44
44
  root = ::Katello::RootRepository.find(input[:root_repository_id])
45
45
  root.update(:content_id => input[:content_id])
46
46
 
47
- content = ::Katello::Content.create!(name: root.name,
48
- organization_id: root.product.organization_id,
49
- cp_content_id: root.content_id,
50
- content_type: root.content_type,
51
- label: root.custom_content_label,
52
- content_url: root.custom_content_path,
53
- vendor: ::Katello::Provider::CUSTOM)
47
+ content = ::Katello::Content.where(organization_id: root.product.organization_id, cp_content_id: root.content_id).first_or_create do |new_content|
48
+ new_content.name = root.name
49
+ new_content.content_type = root.content_type
50
+ new_content.label = root.custom_content_label
51
+ new_content.content_url = root.custom_content_path
52
+ new_content.vendor = ::Katello::Provider::CUSTOM
53
+ end
54
54
 
55
55
  #custom product content is always enabled by default
56
- ::Katello::ProductContent.create!(product: root.product, content: content, enabled: true)
56
+ ::Katello::ProductContent.where(product: root.product, content: content).first_or_create do |pc|
57
+ pc.enabled = true
58
+ end
57
59
  end
58
60
  end
59
61
  end
@@ -14,22 +14,16 @@ module Actions
14
14
  destroy_content = options.fetch(:destroy_content, true)
15
15
  remove_from_content_view_versions = options.fetch(:remove_from_content_view_versions, false)
16
16
  action_subject(repository)
17
+ check_destroyable!(repository, remove_from_content_view_versions)
18
+ remove_generated_content_views(repository)
17
19
 
18
- unless repository.destroyable?(remove_from_content_view_versions)
19
- # The repository is going to be deleted in finalize, but it cannot be deleted.
20
- # Stop now and inform the user.
21
- fail repository.errors.messages.values.join("\n")
22
- end
20
+ remove_versions(repository, repository.content_views.generated_for_library, affected_cvv_ids)
23
21
 
24
22
  plan_action(Actions::Pulp3::Orchestration::Repository::Delete,
25
23
  repository,
26
24
  SmartProxy.pulp_primary)
27
25
 
28
- if remove_from_content_view_versions
29
- library_instances_inverse = repository.library_instances_inverse
30
- affected_cvv_ids = library_instances_inverse.pluck(:content_view_version_id).uniq
31
- plan_action(::Actions::BulkAction, ::Actions::Katello::Repository::Destroy, library_instances_inverse)
32
- end
26
+ remove_versions(repository, repository.content_views.generated_for_none, affected_cvv_ids) if remove_from_content_view_versions
33
27
 
34
28
  plan_self(:user_id => ::User.current.id, :affected_cvv_ids => affected_cvv_ids)
35
29
  sequence do
@@ -50,8 +44,9 @@ module Actions
50
44
  delete_record(repository, {docker_cleanup: docker_cleanup})
51
45
 
52
46
  if (affected_cvv_ids = input[:affected_cvv_ids]).any?
53
- affected_cvv_ids.each do |cvv_id|
54
- ::Katello::ContentViewVersion.find(cvv_id).update_content_counts!
47
+ cvvs = ::Katello::ContentViewVersion.where(id: affected_cvv_ids)
48
+ cvvs.each do |cvv|
49
+ cvv.update_content_counts!
55
50
  end
56
51
  end
57
52
  end
@@ -77,6 +72,35 @@ module Actions
77
72
  ::Katello::DockerMetaTag.cleanup_tags if options[:docker_cleanup]
78
73
  end
79
74
 
75
+ def remove_generated_content_views(repository)
76
+ # remove the content views generated for this repository (since we are deleting the repo)
77
+ content_views = repository.content_views.generated_for_repository
78
+ return if content_views.blank?
79
+ plan_action(::Actions::BulkAction, ::Actions::Katello::ContentView::Remove,
80
+ content_views,
81
+ skip_repo_destroy: true,
82
+ destroy_content_view: true)
83
+ end
84
+
85
+ def remove_versions(repository, content_views, affected_cvv_ids)
86
+ return if content_views.blank?
87
+
88
+ interested_inverses = repository.
89
+ library_instances_inverse.
90
+ joins(:content_view_version => :content_view).
91
+ merge(content_views)
92
+ affected_cvv_ids.concat(interested_inverses.pluck(:content_view_version_id).uniq)
93
+ plan_action(::Actions::BulkAction, ::Actions::Katello::Repository::Destroy, interested_inverses)
94
+ end
95
+
96
+ def check_destroyable!(repository, remove_from_content_view_versions)
97
+ unless repository.destroyable?(remove_from_content_view_versions)
98
+ # The repository is going to be deleted in finalize, but it cannot be deleted.
99
+ # Stop now and inform the user.
100
+ fail repository.errors.messages.values.join("\n")
101
+ end
102
+ end
103
+
80
104
  def humanized_name
81
105
  _("Delete")
82
106
  end
@@ -7,9 +7,14 @@ module Actions
7
7
  end
8
8
 
9
9
  def plan(product, content, options)
10
- repository = repository_mapper(product,
11
- content,
12
- options).find_repository
10
+ if options[:repository_id]
11
+ repository = ::Katello::Repository.find(options[:repository_id])
12
+ else
13
+ repository = repository_mapper(product,
14
+ content,
15
+ options).find_repository
16
+ end
17
+
13
18
  if repository
14
19
  action_subject(repository)
15
20
  plan_action(Repository::Destroy, repository)
@@ -0,0 +1,20 @@
1
+ module Actions
2
+ module Pulp3
3
+ module AlternateContentSource
4
+ class Create < Pulp3::Abstract
5
+ def plan(acs, smart_proxy)
6
+ plan_self(:acs_id => acs.id, :smart_proxy_id => smart_proxy.id)
7
+ end
8
+
9
+ def run
10
+ acs = ::Katello::AlternateContentSource.find(input[:acs_id])
11
+ output[:response] = acs.backend_service(smart_proxy).create
12
+ end
13
+
14
+ def rescue_strategy
15
+ Dynflow::Action::Rescue::Skip
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ module Actions
2
+ module Pulp3
3
+ module AlternateContentSource
4
+ class CreateRemote < Pulp3::Abstract
5
+ def plan(acs, smart_proxy)
6
+ plan_self(:acs_id => acs.id, :smart_proxy_id => smart_proxy.id)
7
+ end
8
+
9
+ def run
10
+ acs = ::Katello::AlternateContentSource.find(input[:acs_id])
11
+ output[:response] = acs.backend_service(smart_proxy).create_remote
12
+ end
13
+
14
+ def rescue_strategy
15
+ Dynflow::Action::Rescue::Skip
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,16 @@
1
+ module Actions
2
+ module Pulp3
3
+ module AlternateContentSource
4
+ class Delete < Pulp3::AbstractAsyncTask
5
+ def plan(acs, smart_proxy)
6
+ plan_self(:acs_id => acs.id, :smart_proxy_id => smart_proxy.id)
7
+ end
8
+
9
+ def invoke_external_task
10
+ acs = ::Katello::AlternateContentSource.find(input[:acs_id])
11
+ output[:response] = acs.backend_service(smart_proxy).delete_alternate_content_source
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Actions
2
+ module Pulp3
3
+ module AlternateContentSource
4
+ class DeleteRemote < Pulp3::AbstractAsyncTask
5
+ def plan(acs, smart_proxy)
6
+ plan_self(:acs_id => acs.id, :smart_proxy_id => smart_proxy.id)
7
+ end
8
+
9
+ def invoke_external_task
10
+ acs = ::Katello::AlternateContentSource.find(input[:acs_id])
11
+ output[:response] = acs.backend_service(smart_proxy).delete_remote
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ module Actions
2
+ module Pulp3
3
+ module AlternateContentSource
4
+ class Refresh < Pulp3::AbstractAsyncTask
5
+ def plan(acs, smart_proxy)
6
+ plan_self(acs_id: acs.id, smart_proxy_id: smart_proxy.id)
7
+ end
8
+
9
+ def invoke_external_task
10
+ acs = ::Katello::AlternateContentSource.find(input[:acs_id])
11
+ output[:response] = acs.backend_service(smart_proxy).refresh
12
+ end
13
+
14
+ def rescue_strategy_for_self
15
+ # There are various reasons why refreshing fails, but not all of them are
16
+ # fatal. When failing to refresh, we continue with the task ending up
17
+ # in the warning state, but don't lock further refreshing
18
+ Dynflow::Action::Rescue::Skip
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ module Actions
2
+ module Pulp3
3
+ module AlternateContentSource
4
+ class Update < Pulp3::AbstractAsyncTask
5
+ def plan(acs, smart_proxy)
6
+ plan_self(:acs_id => acs.id, :smart_proxy_id => smart_proxy.id)
7
+ end
8
+
9
+ def invoke_external_task
10
+ acs = ::Katello::AlternateContentSource.find(input[:acs_id])
11
+ output[:response] = acs.backend_service(smart_proxy).update
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ module Actions
2
+ module Pulp3
3
+ module AlternateContentSource
4
+ class UpdateRemote < Pulp3::AbstractAsyncTask
5
+ def plan(acs, smart_proxy)
6
+ acs.backend_service(smart_proxy).create_test_remote
7
+ plan_self(:acs_id => acs.id, :smart_proxy_id => smart_proxy.id)
8
+ end
9
+
10
+ def invoke_external_task
11
+ acs = ::Katello::AlternateContentSource.find(input[:acs_id])
12
+ output[:response] = acs.backend_service(smart_proxy).update_remote
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,9 +1,9 @@
1
1
  module Actions
2
2
  module Pulp3
3
3
  module ContentViewVersion
4
- class Import < Pulp3::AbstractAsyncTask
4
+ class CreateImport < Pulp3::AbstractAsyncTask
5
5
  input_format do
6
- param :content_view_version_id, Integer
6
+ param :organization_id, Integer
7
7
  param :smart_proxy_id, Integer
8
8
  param :importer_data, Hash
9
9
  param :path, String
@@ -11,12 +11,12 @@ module Actions
11
11
  end
12
12
 
13
13
  def invoke_external_task
14
- cvv = ::Katello::ContentViewVersion.find(input[:content_view_version_id])
14
+ metadata_map = ::Katello::Pulp3::ContentViewVersion::MetadataMap.new(metadata: input[:metadata])
15
15
  output[:pulp_tasks] = ::Katello::Pulp3::ContentViewVersion::Import.new(
16
+ organization: ::Organization.find(input[:organization_id]),
16
17
  smart_proxy: smart_proxy,
17
- content_view_version: cvv,
18
18
  path: input[:path],
19
- metadata: input[:metadata]
19
+ metadata_map: metadata_map
20
20
  ).create_import(input[:importer_data][:pulp_href])
21
21
  end
22
22
 
@@ -11,12 +11,13 @@ module Actions
11
11
 
12
12
  def run
13
13
  cvv = ::Katello::ContentViewVersion.find(input[:content_view_version_id])
14
+ metadata_map = ::Katello::Pulp3::ContentViewVersion::MetadataMap.new(metadata: input[:metadata])
14
15
  output[:importer_data] = ::Katello::Pulp3::ContentViewVersion::Import.new(
16
+ organization: cvv.content_view.organization,
15
17
  smart_proxy: smart_proxy,
16
- content_view_version: cvv,
17
18
  path: input[:path],
18
- metadata: input[:metadata]
19
- ).create_importer
19
+ metadata_map: metadata_map
20
+ ).create_importer(cvv)
20
21
  end
21
22
  end
22
23
  end
@@ -5,10 +5,21 @@ module Actions
5
5
  input_format do
6
6
  param :smart_proxy_id, Integer
7
7
  param :importer_data, Hash
8
+ param :organization_id, Integer
9
+ param :importer_data, Hash
10
+ param :path, String
11
+ param :metadata, Hash
8
12
  end
9
13
 
10
14
  def run
11
- ::Katello::Pulp3::ContentViewVersion::Import.new(smart_proxy: smart_proxy).destroy_importer(input[:importer_data][:pulp_href])
15
+ metadata_map = ::Katello::Pulp3::ContentViewVersion::MetadataMap.new(metadata: input[:metadata])
16
+ import = ::Katello::Pulp3::ContentViewVersion::Import.new(
17
+ organization: ::Organization.find(input[:organization_id]),
18
+ smart_proxy: smart_proxy,
19
+ path: input[:path],
20
+ metadata_map: metadata_map
21
+ )
22
+ import.destroy_importer(input[:importer_data][:pulp_href])
12
23
  end
13
24
  end
14
25
  end
@@ -0,0 +1,16 @@
1
+ module Actions
2
+ module Pulp3
3
+ module Orchestration
4
+ module AlternateContentSource
5
+ class Create < Pulp3::Abstract
6
+ def plan(acs, smart_proxy)
7
+ sequence do
8
+ plan_action(Actions::Pulp3::AlternateContentSource::CreateRemote, acs, smart_proxy)
9
+ plan_action(Actions::Pulp3::AlternateContentSource::Create, acs, smart_proxy)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ module Actions
2
+ module Pulp3
3
+ module Orchestration
4
+ module AlternateContentSource
5
+ class Delete < Pulp3::Abstract
6
+ def plan(acs, smart_proxy)
7
+ sequence do
8
+ plan_action(Actions::Pulp3::AlternateContentSource::Delete, acs, smart_proxy)
9
+ plan_action(Actions::Pulp3::AlternateContentSource::DeleteRemote, acs, smart_proxy)
10
+ plan_self(acs_id: acs.id, smart_proxy_id: smart_proxy.id)
11
+ end
12
+ end
13
+
14
+ def finalize
15
+ acs_id = input[:acs_id]
16
+ smart_proxy_id = input[:smart_proxy_id]
17
+ ::Katello::SmartProxyAlternateContentSource.find_by(alternate_content_source_id: acs_id, smart_proxy_id: smart_proxy_id).destroy
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end