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
@@ -0,0 +1,24 @@
1
+ module Actions
2
+ module Helpers
3
+ module SmartProxySyncHistoryHelper
4
+ def self.included(base)
5
+ base.middleware.use ::Actions::Middleware::RecordSmartProxySyncHistory
6
+ end
7
+
8
+ def done?
9
+ is_done = super
10
+ if is_done
11
+ ::Katello::SmartProxySyncHistory.where(:id => output[:smart_proxy_history_id], :finished_at => nil).update_all(finished_at: Time.now)
12
+ end
13
+ is_done
14
+ end
15
+
16
+ def rescue_external_task(error)
17
+ if output[:smart_proxy_history_id]
18
+ ::Katello::SmartProxySyncHistory.where(:id => output[:smart_proxy_history_id], :finished_at => nil).delete_all
19
+ end
20
+ super
21
+ end
22
+ end
23
+ end
24
+ end
@@ -4,17 +4,15 @@ module Actions
4
4
  class Create < Actions::EntryAction
5
5
  def plan(activation_key, params = {})
6
6
  activation_key.save!
7
- if ::SETTINGS[:katello][:use_cp]
8
- cp_create = plan_action(Candlepin::ActivationKey::Create,
9
- organization_label: activation_key.organization.label,
10
- auto_attach: activation_key.auto_attach,
11
- service_level: params[:service_level],
12
- release_version: activation_key.release_version,
13
- purpose_role: activation_key.purpose_role,
14
- purpose_usage: activation_key.purpose_usage,
15
- purpose_addons: activation_key.purpose_addons.pluck(:name))
16
- cp_id = cp_create.output[:response][:id]
17
- end
7
+ cp_create = plan_action(Candlepin::ActivationKey::Create,
8
+ organization_label: activation_key.organization.label,
9
+ auto_attach: activation_key.auto_attach,
10
+ service_level: params[:service_level],
11
+ release_version: activation_key.release_version,
12
+ purpose_role: activation_key.purpose_role,
13
+ purpose_usage: activation_key.purpose_usage,
14
+ purpose_addons: activation_key.purpose_addons.pluck(:name))
15
+ cp_id = cp_create.output[:response][:id]
18
16
  action_subject(activation_key, :cp_id => cp_id)
19
17
  plan_self
20
18
  end
@@ -9,8 +9,12 @@ module Actions
9
9
 
10
10
  def run
11
11
  input[:host_ids].each do |host_id|
12
- content_facet = ::Host.find(host_id).content_facet
13
- content_facet.calculate_and_import_applicability
12
+ content_facet = ::Katello::Host::ContentFacet.find_by_host_id(host_id)
13
+ if content_facet.present?
14
+ content_facet.calculate_and_import_applicability
15
+ else
16
+ Rails.logger.warn(_("Content Facet for host with id %s is non-existent. Skipping applicability calculation.") % host_id)
17
+ end
14
18
  end
15
19
  end
16
20
 
@@ -30,18 +30,18 @@ module Actions
30
30
 
31
31
  fail _("Action not allowed for the default smart proxy.") if smart_proxy.pulp_primary?
32
32
 
33
- smart_proxy_helper = ::Katello::SmartProxyHelper.new(smart_proxy)
34
- repositories = smart_proxy_helper.combined_repos_available_to_capsule(environment, content_view, repository)
35
-
36
- smart_proxy.ping_pulp if repositories.any? { |repo| !smart_proxy.pulp3_support?(repo) }
37
-
38
33
  refresh_options = options.merge(content_view: content_view,
39
34
  environment: environment,
40
35
  repository: repository)
41
36
  sequence do
42
- plan_action(Actions::Pulp::Orchestration::Repository::RefreshRepos, smart_proxy, refresh_options)
43
- plan_action(Actions::Pulp3::CapsuleContent::RefreshContentGuard, smart_proxy) if repositories.any? { |repo| smart_proxy.pulp3_support?(repo) }
44
- plan_action(Actions::Pulp3::Orchestration::Repository::RefreshRepos, smart_proxy, refresh_options) if smart_proxy.pulp3_enabled?
37
+ if smart_proxy.has_feature?(SmartProxy::PULP_NODE_FEATURE)
38
+ plan_action(Actions::Pulp::Orchestration::Repository::RefreshRepos, smart_proxy, refresh_options)
39
+ end
40
+
41
+ if smart_proxy.has_feature?(SmartProxy::PULP3_FEATURE)
42
+ plan_action(Actions::Pulp3::CapsuleContent::RefreshContentGuard, smart_proxy)
43
+ plan_action(Actions::Pulp3::Orchestration::Repository::RefreshRepos, smart_proxy, refresh_options)
44
+ end
45
45
  plan_action(SyncCapsule, smart_proxy, refresh_options)
46
46
  end
47
47
  end
@@ -9,9 +9,8 @@ module Actions
9
9
  content_view = options[:content_view]
10
10
  repository = options[:repository]
11
11
  skip_metadata_check = options.fetch(:skip_metadata_check, false)
12
-
13
12
  sequence do
14
- repos = repos_to_sync(smart_proxy, environment, content_view, repository)
13
+ repos = repos_to_sync(smart_proxy, environment, content_view, repository, skip_metadata_check)
15
14
 
16
15
  repos.in_groups_of(Setting[:foreman_proxy_content_batch_size], false) do |repo_batch|
17
16
  concurrence do
@@ -20,10 +19,14 @@ module Actions
20
19
  Actions::Pulp3::CapsuleContent::Sync],
21
20
  repo, smart_proxy,
22
21
  skip_metadata_check: skip_metadata_check)
22
+ end
23
+ end
23
24
 
25
+ concurrence do
26
+ repo_batch.each do |repo|
24
27
  if repo.is_a?(::Katello::Repository) &&
25
- repo.distribution_bootable? &&
26
- repo.download_policy == ::Runcible::Models::YumImporter::DOWNLOAD_ON_DEMAND
28
+ repo.distribution_bootable? &&
29
+ repo.download_policy == ::Runcible::Models::YumImporter::DOWNLOAD_ON_DEMAND
27
30
  plan_action(Katello::Repository::FetchPxeFiles,
28
31
  id: repo.id,
29
32
  capsule_id: smart_proxy.id)
@@ -32,24 +35,44 @@ module Actions
32
35
  end
33
36
  end
34
37
  end
38
+ update_unauthenticated_repo_list(smart_proxy) if smart_proxy.has_feature?("Container_Gateway")
35
39
  end
36
40
 
37
- def repos_to_sync(smart_proxy, environment, content_view, repository)
41
+ def update_unauthenticated_repo_list(smart_proxy)
42
+ unauthenticated_repo_list =
43
+ ::Katello::SmartProxyHelper.new(smart_proxy).combined_repos_available_to_capsule.select do |repo|
44
+ repo.docker? && repo.environment.registry_unauthenticated_pull
45
+ end
46
+ smart_proxy.update_unauthenticated_repo_list(unauthenticated_repo_list.map(&:container_repository_name))
47
+ end
48
+
49
+ def repos_to_sync(smart_proxy, environment, content_view, repository, skip_metatadata_check = false)
38
50
  smart_proxy_helper = ::Katello::SmartProxyHelper.new(smart_proxy)
39
51
  smart_proxy_helper.lifecycle_environment_check(environment, repository)
40
-
41
52
  if repository
42
- [repository]
53
+ if skip_metatadata_check || !repository.smart_proxy_sync_histories.where(:smart_proxy_id => smart_proxy).any? { |sph| !sph.finished_at.nil? }
54
+ [repository]
55
+ end
43
56
  else
44
57
  repositories = smart_proxy_helper.repositories_available_to_capsule(environment, content_view).by_rpm_count
45
58
  puppet_envs = smart_proxy_helper.puppet_environments_available_to_capsule(environment, content_view)
46
- repositories + puppet_envs
59
+ repositories_to_skip = []
60
+ if skip_metatadata_check
61
+ smart_proxy_helper.clear_smart_proxy_sync_histories repositories
62
+ else
63
+ repositories_to_skip = ::Katello::Repository.synced_on_capsule smart_proxy
64
+ end
65
+ repositories - repositories_to_skip + puppet_envs
47
66
  end
48
67
  end
49
68
 
50
69
  def resource_locks
51
70
  :link
52
71
  end
72
+
73
+ def rescue_strategy
74
+ Dynflow::Action::Rescue::Skip
75
+ end
53
76
  end
54
77
  end
55
78
  end
@@ -0,0 +1,17 @@
1
+ module Actions
2
+ module Katello
3
+ module CheckMatchingContent
4
+ def check_matching_content(new_repository, source_repositories)
5
+ check_matching_content = ::Katello::RepositoryTypeManager.find(new_repository.content_type).metadata_publish_matching_check
6
+ if new_repository.environment && source_repositories.count == 1 && check_matching_content
7
+ match_check_output = plan_action(Katello::Repository::CheckMatchingContent,
8
+ :source_repo_id => source_repositories.first.id,
9
+ :target_repo_id => new_repository.id).output
10
+
11
+ return match_check_output[:matching_content]
12
+ end
13
+ false
14
+ end
15
+ end
16
+ end
17
+ end
@@ -4,14 +4,12 @@ module Actions
4
4
  class EnvironmentCreate < Actions::Base
5
5
  def plan(content_view_environment)
6
6
  content_view_environment.save!
7
- if ::SETTINGS[:katello][:use_cp]
8
- content_view = content_view_environment.content_view
9
- plan_action(Candlepin::Environment::Create,
10
- organization_label: content_view.organization.label,
11
- cp_id: content_view_environment.cp_id,
12
- name: content_view_environment.label,
13
- description: content_view.description)
14
- end
7
+ content_view = content_view_environment.content_view
8
+ plan_action(Candlepin::Environment::Create,
9
+ organization_label: content_view.organization.label,
10
+ cp_id: content_view_environment.cp_id,
11
+ name: content_view_environment.label,
12
+ description: content_view.description)
15
13
  end
16
14
 
17
15
  def humanized_name
@@ -71,7 +71,7 @@ module Actions
71
71
  private
72
72
 
73
73
  def sync_proxies?(environment)
74
- Setting[:foreman_proxy_content_auto_sync] && ::SmartProxy.sync_needed?(environment)
74
+ ::SmartProxy.sync_needed?(environment)
75
75
  end
76
76
 
77
77
  def repos_to_delete(version, environment)
@@ -6,10 +6,10 @@ module Actions
6
6
  include ::Katello::ContentViewHelper
7
7
  attr_accessor :version
8
8
  # rubocop:disable Metrics/MethodLength,Metrics/AbcSize,Metrics/CyclomaticComplexity
9
- def plan(content_view, description = "", options = {})
9
+ def plan(content_view, description = "", options = {importing: false}) # rubocop:disable Metrics/PerceivedComplexity
10
10
  action_subject(content_view)
11
- import_only = options.fetch(:import_only, false)
12
- content_view.check_ready_to_publish! unless import_only
11
+
12
+ content_view.check_ready_to_publish!(importing: options[:importing])
13
13
 
14
14
  if options[:repos_units].present?
15
15
  valid_labels_from_cv = content_view.repositories.map(&:label)
@@ -52,7 +52,8 @@ module Actions
52
52
 
53
53
  if separated_repo_map[:pulp3_yum].keys.flatten.present? &&
54
54
  SmartProxy.pulp_primary.pulp3_support?(separated_repo_map[:pulp3_yum].keys.flatten.first)
55
- if import_only
55
+
56
+ if options[:importing]
56
57
  handle_import(version, options.slice(:path, :metadata))
57
58
  else
58
59
  plan_action(Repository::MultiCloneToVersion, separated_repo_map[:pulp3_yum], version)
@@ -136,7 +137,7 @@ module Actions
136
137
  history.save!
137
138
  environment = ::Katello::KTEnvironment.find(input[:environment_id])
138
139
  view = ::Katello::ContentView.find(input[:content_view_id])
139
- if SmartProxy.sync_needed?(environment) && Setting[:foreman_proxy_content_auto_sync] && !input[:skip_promotion]
140
+ if SmartProxy.sync_needed?(environment) && !input[:skip_promotion]
140
141
  ForemanTasks.async_task(ContentView::CapsuleSync,
141
142
  view,
142
143
  environment)
@@ -2,28 +2,22 @@ module Actions
2
2
  module Katello
3
3
  module ContentViewVersion
4
4
  class Import < Actions::EntryAction
5
- PULP_USER = 'pulp'.freeze
6
-
7
5
  def plan(content_view, path:, metadata:)
8
6
  content_view.check_ready_to_import!
9
7
  unless SmartProxy.pulp_primary.pulp3_repository_type_support?(::Katello::Repository::YUM_TYPE)
10
- fail ::Katello::HttpErrors::BadRequest, _("This API endpoint is only valid for Pulp 3 repositories.")
8
+ fail _("This action will become available after the Pulp 3 content migration")
11
9
  end
12
- ::Katello::Pulp3::ContentViewVersion::Import.check_permissions!(path)
10
+
11
+ ::Katello::Pulp3::ContentViewVersion::Import.check!(content_view: content_view, metadata: metadata, path: path)
12
+ ::Katello::Pulp3::ContentViewVersion::Import.reset_content_view_repositories_from_metadata!(content_view: content_view, metadata: metadata)
13
13
 
14
14
  major = metadata[:content_view_version][:major]
15
15
  minor = metadata[:content_view_version][:minor]
16
16
 
17
- if ::Katello::ContentViewVersion.where(major: major, minor: minor, content_view: content_view).exists?
18
- cvv_name = "#{content_view.name} #{major}.#{minor}"
19
- fail _("Content View Version specified in the metadata - '%{name}' already exists. "\
20
- "If you wish to replace the existing version, delete %{name} and try again. " % { name: cvv_name })
21
- end
22
-
23
17
  plan_action(::Actions::Katello::ContentView::Publish, content_view, '',
24
18
  path: path,
25
19
  metadata: metadata,
26
- import_only: true,
20
+ importing: true,
27
21
  major: major,
28
22
  minor: minor)
29
23
  end
@@ -0,0 +1,17 @@
1
+ module Actions
2
+ module Katello
3
+ module ContentViewVersion
4
+ class ImportLibrary < Actions::EntryAction
5
+ def plan(organization, path:, metadata:)
6
+ action_subject(organization)
7
+ library_view = ::Katello::Pulp3::ContentViewVersion::Import.find_or_create_library_import_view(organization)
8
+ plan_action(::Actions::Katello::ContentViewVersion::Import, library_view, path: path, metadata: metadata)
9
+ end
10
+
11
+ def humanized_name
12
+ _("Import Default Content View")
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -19,7 +19,7 @@ module Actions
19
19
 
20
20
  # rubocop:disable Metrics/MethodLength
21
21
  # rubocop:disable Metrics/AbcSize
22
- def plan(old_version, environments, options = {})
22
+ def plan(old_version, environments, options = {}) # rubocop:disable Metrics/CyclomaticComplexity
23
23
  dep_solve = options.fetch(:resolve_dependencies, true)
24
24
  description = options.fetch(:description, '')
25
25
  content = options.fetch(:content, {})
@@ -88,11 +88,15 @@ module Actions
88
88
  end
89
89
  end
90
90
 
91
- sequence do
92
- new_puppet_environment = plan_action(Katello::ContentViewPuppetEnvironment::Clone, old_version,
93
- :new_version => new_content_view_version).new_puppet_environment
94
- check_puppet_module_duplicates(content[:puppet_module_ids])
95
- copy_action_outputs += copy_puppet_content(new_puppet_environment, content[:puppet_module_ids], old_version) unless content[:puppet_module_ids].blank?
91
+ if SmartProxy.pulp_primary.has_feature?(SmartProxy::PULP_FEATURE) && SETTINGS[:katello][:content_types][:puppet]
92
+ sequence do
93
+ new_puppet_environment = plan_action(Katello::ContentViewPuppetEnvironment::Clone, old_version,
94
+ :new_version => new_content_view_version).new_puppet_environment
95
+ check_puppet_module_duplicates(content[:puppet_module_ids])
96
+ unless content[:puppet_module_ids].blank?
97
+ copy_action_outputs += copy_puppet_content(new_puppet_environment, content[:puppet_module_ids], old_version)
98
+ end
99
+ end
96
100
  end
97
101
  end
98
102
 
@@ -201,7 +205,7 @@ module Actions
201
205
  end
202
206
  end
203
207
 
204
- def run
208
+ def run # rubocop:disable Metrics/CyclomaticComplexity
205
209
  content = { ::Katello::Erratum::CONTENT_TYPE => [],
206
210
  ::Katello::Rpm::CONTENT_TYPE => [],
207
211
  ::Katello::ModuleStream::CONTENT_TYPE => [],
@@ -352,20 +356,36 @@ module Actions
352
356
  end
353
357
 
354
358
  def copy_yum_content(new_repo, dep_solve, package_ids, errata_ids)
359
+ return [] unless new_repo.content_type == ::Katello::Repository::YUM_TYPE
360
+
355
361
  copy_outputs = []
356
- if new_repo.content_type == ::Katello::Repository::YUM_TYPE
357
- unless errata_ids.blank?
362
+
363
+ unless errata_ids.blank?
364
+ content_present_in_this_repo = new_repo
365
+ .library_instance
366
+ .errata
367
+ .with_identifiers(errata_ids)
368
+ .exists?
369
+ if content_present_in_this_repo
358
370
  copy_outputs << plan_action(Pulp::Repository::CopyUnits, new_repo.library_instance, new_repo,
359
371
  ::Katello::Erratum.with_identifiers(errata_ids),
360
372
  incremental_update: dep_solve).output
361
373
  end
374
+ end
362
375
 
363
- unless package_ids.blank?
376
+ unless package_ids.blank?
377
+ content_present_in_this_repo = new_repo
378
+ .library_instance
379
+ .rpms
380
+ .with_identifiers(package_ids)
381
+ .exists?
382
+ if content_present_in_this_repo
364
383
  copy_outputs << plan_action(Pulp::Repository::CopyUnits, new_repo.library_instance, new_repo,
365
384
  ::Katello::Rpm.with_identifiers(package_ids),
366
385
  incremental_update: dep_solve).output
367
386
  end
368
387
  end
388
+
369
389
  copy_outputs
370
390
  end
371
391
 
@@ -54,10 +54,10 @@ module Actions
54
54
 
55
55
  # Loads all resources needed for refreshing subscription facet
56
56
  def load_resources
57
- @organizations = ::Organization.where(label: hypervisors_field(:organization_label)).map { |org| [org.label, org] }.to_h
57
+ @organizations = ::Organization.where(label: hypervisors_field(:organization_label)).index_by { |org| org.label }
58
58
 
59
59
  candlepin_data = ::Katello::Resources::Candlepin::Consumer.get_all_with_facts(hypervisors_field(:uuid))
60
- @candlepin_attributes = candlepin_data.map { |consumer| [consumer[:uuid], consumer] }.to_h
60
+ @candlepin_attributes = candlepin_data.index_by { |consumer| consumer[:uuid] }
61
61
 
62
62
  @hosts = {}
63
63
  @hosts.merge!(load_hosts_by_uuid)
@@ -70,7 +70,7 @@ module Actions
70
70
  hosts_by_uuid.each do |host|
71
71
  validate_host_organization(host, host.organization.try(:id))
72
72
  end
73
- hosts_by_uuid.map { |host| [host.subscription_facet.uuid, host] }.to_h
73
+ hosts_by_uuid.index_by { |host| host.subscription_facet.uuid }
74
74
  end
75
75
 
76
76
  def load_hosts_by_duplicate_name
@@ -82,7 +82,7 @@ module Actions
82
82
  validate_host_organization(host, duplicate_name_orgs[host.name].try(:id))
83
83
  end
84
84
 
85
- hosts_by_dup_name.map { |host| [duplicate_names[host.name], host] }.to_h
85
+ hosts_by_dup_name.index_by { |host| duplicate_names[host.name] }
86
86
  end
87
87
 
88
88
  def create_missing_hosts
@@ -14,7 +14,7 @@ module Actions
14
14
  host.subscription_facet.purpose_addons = purpose_addon_objects
15
15
  end
16
16
 
17
- host.subscription_facet.save!
17
+ host.save!
18
18
  plan_self(:hostname => host.name)
19
19
  end
20
20
 
@@ -39,7 +39,9 @@ module Actions
39
39
  Rails.logger.warn("Host with ID %s has no content facet, continuing" % host_id)
40
40
  else
41
41
  begin
42
- ::Katello::Pulp::Consumer.new(host.content_facet.uuid).upload_package_profile(profile)
42
+ if SmartProxy.pulp_primary&.has_feature?(SmartProxy::PULP_FEATURE)
43
+ ::Katello::Pulp::Consumer.new(host.content_facet.uuid).upload_package_profile(profile)
44
+ end
43
45
  simple_packages = profile.map { |item| ::Katello::Pulp::SimplePackage.new(item) }
44
46
  host.import_package_profile(simple_packages)
45
47
  rescue RestClient::ResourceNotFound
@@ -60,12 +60,14 @@ module Actions
60
60
 
61
61
  module_stream_profile = updated_profiles + unassociated_profiles
62
62
 
63
- unless module_stream_profile.empty?
64
- begin
65
- ::Katello::Pulp::Consumer.new(host.content_facet.uuid).
66
- upload_module_stream_profile(module_stream_profile)
67
- rescue RestClient::ResourceNotFound
68
- Rails.logger.warn("Host with ID %s was not known to Pulp, continuing" % host.id)
63
+ if SmartProxy.pulp_primary&.has_feature?(SmartProxy::PULP_FEATURE)
64
+ unless module_stream_profile.empty?
65
+ begin
66
+ ::Katello::Pulp::Consumer.new(host.content_facet.uuid).
67
+ upload_module_stream_profile(module_stream_profile)
68
+ rescue RestClient::ResourceNotFound
69
+ Rails.logger.warn("Host with ID %s was not known to Pulp, continuing" % host.id)
70
+ end
69
71
  end
70
72
  end
71
73
  end