katello 4.14.1 → 4.15.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 (453) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/chosen.jquery.js +3 -3
  3. data/app/assets/javascripts/katello/common/env_select_scroll.js +3 -3
  4. data/app/assets/javascripts/katello/common/katello.js +8 -7
  5. data/app/assets/javascripts/katello/common/katello_object.js +3 -3
  6. data/app/assets/javascripts/katello/common/menu.js +7 -7
  7. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +6 -6
  8. data/app/assets/javascripts/katello/locale/bn/katello.js +259 -28
  9. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +258 -27
  10. data/app/assets/javascripts/katello/locale/ca/katello.js +258 -27
  11. data/app/assets/javascripts/katello/locale/cs/katello.js +258 -27
  12. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +258 -27
  13. data/app/assets/javascripts/katello/locale/de/katello.js +259 -28
  14. data/app/assets/javascripts/katello/locale/de_AT/katello.js +258 -27
  15. data/app/assets/javascripts/katello/locale/de_DE/katello.js +258 -27
  16. data/app/assets/javascripts/katello/locale/el/katello.js +258 -27
  17. data/app/assets/javascripts/katello/locale/en/katello.js +258 -27
  18. data/app/assets/javascripts/katello/locale/en_GB/katello.js +258 -27
  19. data/app/assets/javascripts/katello/locale/en_US/katello.js +258 -27
  20. data/app/assets/javascripts/katello/locale/es/katello.js +259 -28
  21. data/app/assets/javascripts/katello/locale/et_EE/katello.js +258 -27
  22. data/app/assets/javascripts/katello/locale/fr/katello.js +259 -28
  23. data/app/assets/javascripts/katello/locale/gl/katello.js +258 -27
  24. data/app/assets/javascripts/katello/locale/gu/katello.js +258 -27
  25. data/app/assets/javascripts/katello/locale/he_IL/katello.js +258 -27
  26. data/app/assets/javascripts/katello/locale/hi/katello.js +258 -27
  27. data/app/assets/javascripts/katello/locale/id/katello.js +258 -27
  28. data/app/assets/javascripts/katello/locale/it/katello.js +259 -28
  29. data/app/assets/javascripts/katello/locale/ja/katello.js +259 -28
  30. data/app/assets/javascripts/katello/locale/ka/katello.js +259 -28
  31. data/app/assets/javascripts/katello/locale/kn/katello.js +258 -27
  32. data/app/assets/javascripts/katello/locale/ko/katello.js +259 -28
  33. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +258 -27
  34. data/app/assets/javascripts/katello/locale/mr/katello.js +258 -27
  35. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +258 -27
  36. data/app/assets/javascripts/katello/locale/or/katello.js +258 -27
  37. data/app/assets/javascripts/katello/locale/pa/katello.js +258 -27
  38. data/app/assets/javascripts/katello/locale/pl/katello.js +258 -27
  39. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +258 -27
  40. data/app/assets/javascripts/katello/locale/pt/katello.js +258 -27
  41. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +259 -28
  42. data/app/assets/javascripts/katello/locale/ro/katello.js +258 -27
  43. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +258 -27
  44. data/app/assets/javascripts/katello/locale/ru/katello.js +259 -28
  45. data/app/assets/javascripts/katello/locale/sl/katello.js +258 -27
  46. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +258 -27
  47. data/app/assets/javascripts/katello/locale/ta/katello.js +259 -28
  48. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +258 -27
  49. data/app/assets/javascripts/katello/locale/te/katello.js +258 -27
  50. data/app/assets/javascripts/katello/locale/tr/katello.js +258 -27
  51. data/app/assets/javascripts/katello/locale/vi/katello.js +258 -27
  52. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +258 -27
  53. data/app/assets/javascripts/katello/locale/zh/katello.js +258 -27
  54. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +259 -28
  55. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +259 -28
  56. data/app/assets/javascripts/katello/organizations/download_certificate.js +1 -1
  57. data/app/assets/javascripts/katello/sync_management/sync_management.js +9 -9
  58. data/app/assets/javascripts/katello/widgets/env_content_view_selector.js +5 -5
  59. data/app/assets/javascripts/katello/widgets/path_selector.js +6 -6
  60. data/app/assets/javascripts/katello/widgets/subpanel_new.js +1 -1
  61. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +7 -7
  62. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +6 -1
  63. data/app/controllers/katello/api/v2/activation_keys_controller.rb +131 -59
  64. data/app/controllers/katello/api/v2/api_controller.rb +1 -1
  65. data/app/controllers/katello/api/v2/capsule_content_controller.rb +21 -10
  66. data/app/controllers/katello/api/v2/content_view_components_controller.rb +1 -1
  67. data/app/controllers/katello/api/v2/content_view_environments_controller.rb +54 -0
  68. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +3 -3
  69. data/app/controllers/katello/api/v2/content_views_controller.rb +1 -1
  70. data/app/controllers/katello/api/v2/environments_controller.rb +1 -1
  71. data/app/controllers/katello/api/v2/exports_controller.rb +1 -1
  72. data/app/controllers/katello/api/v2/host_collections_controller.rb +2 -2
  73. data/app/controllers/katello/api/v2/host_contents_controller.rb +1 -1
  74. data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -1
  75. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +1 -1
  76. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -4
  77. data/app/controllers/katello/api/v2/organizations_controller.rb +1 -1
  78. data/app/controllers/katello/api/v2/repositories_controller.rb +3 -2
  79. data/app/controllers/katello/api/v2/repository_sets_controller.rb +1 -1
  80. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +10 -16
  81. data/app/controllers/katello/concerns/api/v2/multi_cv_params_handling.rb +24 -0
  82. data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +2 -5
  83. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +1 -1
  84. data/app/controllers/katello/concerns/registration_commands_controller_extensions.rb +1 -1
  85. data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +5 -5
  86. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +2 -2
  87. data/app/helpers/katello/katello_url_helper.rb +1 -1
  88. data/app/lib/actions/candlepin/product/content_create.rb +12 -1
  89. data/app/lib/actions/candlepin/product/content_update.rb +21 -4
  90. data/app/lib/actions/katello/activation_key/reassign.rb +4 -3
  91. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +8 -3
  92. data/app/lib/actions/katello/capsule_content/update_content_counts.rb +21 -3
  93. data/app/lib/actions/katello/cdn_configuration/update.rb +1 -1
  94. data/app/lib/actions/katello/content_view/capsule_sync.rb +17 -1
  95. data/app/lib/actions/katello/content_view/incremental_updates.rb +1 -1
  96. data/app/lib/actions/katello/content_view/presenters/incremental_updates_presenter.rb +1 -1
  97. data/app/lib/actions/katello/content_view/remove.rb +8 -12
  98. data/app/lib/actions/katello/content_view_version/import.rb +1 -1
  99. data/app/lib/actions/katello/content_view_version/incremental_update.rb +2 -2
  100. data/app/lib/actions/katello/flatpak/scan_remote.rb +62 -0
  101. data/app/lib/actions/katello/host/hypervisors.rb +1 -1
  102. data/app/lib/actions/katello/product/content_create.rb +28 -19
  103. data/app/lib/actions/katello/product/content_destroy.rb +6 -5
  104. data/app/lib/actions/katello/product/destroy.rb +1 -1
  105. data/app/lib/actions/katello/repository/clone_contents.rb +14 -0
  106. data/app/lib/actions/katello/repository/create.rb +24 -17
  107. data/app/lib/actions/katello/repository/create_container_push_root.rb +44 -0
  108. data/app/lib/actions/katello/repository/create_root.rb +5 -15
  109. data/app/lib/actions/katello/repository/destroy.rb +3 -3
  110. data/app/lib/actions/katello/repository/discover.rb +1 -1
  111. data/app/lib/actions/katello/repository/finish_upload.rb +13 -0
  112. data/app/lib/actions/katello/repository/import_upload.rb +1 -1
  113. data/app/lib/actions/katello/repository/sync.rb +16 -0
  114. data/app/lib/actions/katello/repository/update.rb +11 -20
  115. data/app/lib/actions/katello/repository/upload_files.rb +1 -1
  116. data/app/lib/actions/katello/repository_set/enable_repository.rb +1 -1
  117. data/app/lib/actions/katello/repository_set/scan_cdn.rb +1 -1
  118. data/app/lib/actions/katello/upstream_subscriptions/bind_entitlement.rb +1 -1
  119. data/app/lib/actions/pulp3/capsule_content/sync.rb +1 -1
  120. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +1 -1
  121. data/app/lib/actions/pulp3/orchestration/repository/create.rb +6 -1
  122. data/app/lib/actions/pulp3/orchestration/repository/trigger_update_repo_cert_guard.rb +1 -1
  123. data/app/lib/actions/pulp3/repository/initialize.rb +17 -0
  124. data/app/lib/actions/pulp3/repository/refresh_distribution.rb +1 -1
  125. data/app/lib/katello/api/constraints/register_with_activation_key_constraint.rb +11 -0
  126. data/app/lib/katello/concerns/base_template_scope_extensions.rb +1 -1
  127. data/app/lib/katello/http_resource.rb +6 -6
  128. data/app/lib/katello/messaging/stomp_connection.rb +4 -4
  129. data/app/lib/katello/resources/candlepin/activation_key.rb +1 -1
  130. data/app/lib/katello/resources/candlepin/owner.rb +1 -1
  131. data/app/lib/katello/resources/candlepin/product.rb +1 -1
  132. data/app/lib/katello/resources/candlepin.rb +1 -1
  133. data/app/lib/katello/resources/cdn/katello_cdn.rb +3 -3
  134. data/app/lib/katello/resources/cdn.rb +1 -1
  135. data/app/lib/katello/resources/discovery/container.rb +5 -3
  136. data/app/lib/katello/resources/discovery/yum.rb +3 -1
  137. data/app/lib/katello/resources/registry.rb +0 -3
  138. data/app/lib/katello/util/candlepin_repository_checker.rb +2 -2
  139. data/app/lib/katello/util/cveak_migrator.rb +38 -0
  140. data/app/lib/katello/util/deb.rb +9 -0
  141. data/app/lib/katello/util/deduplication_migrator.rb +8 -8
  142. data/app/lib/katello/util/model.rb +2 -2
  143. data/app/lib/katello/util/search.rb +5 -5
  144. data/app/lib/katello/util/task_status.rb +19 -19
  145. data/app/lib/katello/util/url_matcher.rb +3 -3
  146. data/app/lib/katello/validators/content_view_environment_org_validator.rb +2 -1
  147. data/app/lib/katello/validators/katello_url_format_validator.rb +2 -2
  148. data/app/mailers/katello/errata_mailer.rb +1 -4
  149. data/app/models/katello/activation_key.rb +123 -27
  150. data/app/models/katello/alternate_content_source.rb +5 -5
  151. data/app/models/katello/authorization/activation_key.rb +1 -1
  152. data/app/models/katello/authorization/content_view_environment.rb +7 -0
  153. data/app/models/katello/cdn_configuration.rb +1 -1
  154. data/app/models/katello/concerns/content_facet_host_extensions.rb +24 -2
  155. data/app/models/katello/concerns/host_managed_extensions.rb +11 -6
  156. data/app/models/katello/concerns/organization_extensions.rb +4 -4
  157. data/app/models/katello/concerns/redhat_extensions.rb +1 -1
  158. data/app/models/katello/concerns/smart_proxy_extensions.rb +84 -39
  159. data/app/models/katello/content.rb +3 -3
  160. data/app/models/katello/content_view.rb +15 -18
  161. data/app/models/katello/content_view_environment.rb +56 -15
  162. data/app/models/katello/content_view_environment_activation_key.rb +20 -0
  163. data/app/models/katello/content_view_erratum_filter_rule.rb +1 -1
  164. data/app/models/katello/content_view_filter.rb +2 -2
  165. data/app/models/katello/content_view_history.rb +1 -1
  166. data/app/models/katello/content_view_repository.rb +1 -1
  167. data/app/models/katello/content_view_version.rb +3 -3
  168. data/app/models/katello/content_view_version_export_history.rb +2 -2
  169. data/app/models/katello/content_view_version_import_history.rb +1 -1
  170. data/app/models/katello/events/delete_latest_content_view_version.rb +1 -1
  171. data/app/models/katello/flatpak_remote.rb +11 -0
  172. data/app/models/katello/flatpak_remote_repository.rb +12 -0
  173. data/app/models/katello/flatpak_remote_repository_manifest.rb +10 -0
  174. data/app/models/katello/glue/candlepin/activation_key.rb +1 -1
  175. data/app/models/katello/glue/candlepin/candlepin_object.rb +1 -1
  176. data/app/models/katello/glue/candlepin/pool.rb +1 -1
  177. data/app/models/katello/glue/pulp/repos.rb +1 -1
  178. data/app/models/katello/host/content_facet.rb +33 -17
  179. data/app/models/katello/host/info_provider.rb +2 -4
  180. data/app/models/katello/host/subscription_facet.rb +2 -2
  181. data/app/models/katello/host_available_module_stream.rb +1 -1
  182. data/app/models/katello/installed_product.rb +2 -2
  183. data/app/models/katello/kt_environment.rb +11 -6
  184. data/app/models/katello/ping.rb +2 -3
  185. data/app/models/katello/repository.rb +40 -6
  186. data/app/models/katello/rhel_lifecycle_status.rb +10 -10
  187. data/app/models/katello/root_repository.rb +14 -18
  188. data/app/models/katello/task_status.rb +1 -1
  189. data/app/models/katello/upstream_pool.rb +2 -2
  190. data/app/presenters/katello/product_content_presenter.rb +2 -2
  191. data/app/presenters/katello/repository_presenter.rb +3 -3
  192. data/app/presenters/katello/sync_status_presenter.rb +3 -3
  193. data/app/services/cert/certs.rb +6 -2
  194. data/app/services/katello/candlepin_event_listener.rb +1 -1
  195. data/app/services/katello/event_monitor/poller_thread.rb +1 -1
  196. data/app/services/katello/event_queue.rb +1 -1
  197. data/app/services/katello/product_content_finder.rb +10 -10
  198. data/app/services/katello/product_content_importer.rb +1 -1
  199. data/app/services/katello/pulp3/alternate_content_source.rb +2 -2
  200. data/app/services/katello/pulp3/ansible_collection.rb +1 -1
  201. data/app/services/katello/pulp3/api/apt.rb +4 -0
  202. data/app/services/katello/pulp3/content.rb +1 -0
  203. data/app/services/katello/pulp3/content_view_version/export.rb +3 -10
  204. data/app/services/katello/pulp3/content_view_version/export_validator.rb +1 -1
  205. data/app/services/katello/pulp3/content_view_version/import.rb +2 -2
  206. data/app/services/katello/pulp3/content_view_version/import_gpg_keys.rb +1 -1
  207. data/app/services/katello/pulp3/content_view_version/importable_products.rb +2 -2
  208. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +4 -4
  209. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +2 -2
  210. data/app/services/katello/pulp3/deb.rb +35 -1
  211. data/app/services/katello/pulp3/docker_manifest.rb +1 -1
  212. data/app/services/katello/pulp3/docker_manifest_list.rb +6 -2
  213. data/app/services/katello/pulp3/docker_tag.rb +1 -1
  214. data/app/services/katello/pulp3/erratum.rb +2 -2
  215. data/app/services/katello/pulp3/file_unit.rb +1 -1
  216. data/app/services/katello/pulp3/generic_content_unit.rb +1 -1
  217. data/app/services/katello/pulp3/module_stream.rb +2 -2
  218. data/app/services/katello/pulp3/repository/ansible_collection.rb +1 -1
  219. data/app/services/katello/pulp3/repository/apt.rb +22 -16
  220. data/app/services/katello/pulp3/repository/docker.rb +2 -2
  221. data/app/services/katello/pulp3/repository/file.rb +1 -1
  222. data/app/services/katello/pulp3/repository/generic.rb +1 -1
  223. data/app/services/katello/pulp3/repository/yum.rb +7 -7
  224. data/app/services/katello/pulp3/repository.rb +15 -9
  225. data/app/services/katello/pulp3/repository_mirror.rb +3 -3
  226. data/app/services/katello/registration_manager.rb +23 -6
  227. data/app/services/katello/repository_type.rb +3 -3
  228. data/app/services/katello/smart_proxy_helper.rb +3 -3
  229. data/app/services/katello/ui_notifications/content_view/delete_latest_version_failure.rb +1 -1
  230. data/app/services/katello/ui_notifications/subscriptions/expire_soon.rb +3 -3
  231. data/app/services/katello/ui_notifications/subscriptions/manifest_expire_soon_warning.rb +3 -3
  232. data/app/services/katello/ui_notifications/task_notification.rb +2 -2
  233. data/app/services/katello/upstream_connection_checker.rb +1 -1
  234. data/app/views/katello/api/v2/activation_keys/base.json.rabl +43 -8
  235. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +1 -1
  236. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +5 -5
  237. data/app/views/katello/api/v2/common/_metadata.json.rabl +1 -1
  238. data/app/views/katello/api/v2/content_credentials/show.json.rabl +1 -1
  239. data/app/views/katello/api/v2/content_facet/base.json.rabl +15 -6
  240. data/app/views/katello/api/v2/content_facet/show.json.rabl +1 -1
  241. data/app/views/katello/api/v2/content_view_environments/index.json.rabl +7 -0
  242. data/app/views/katello/api/v2/content_view_environments/show.json.rabl +33 -0
  243. data/app/views/katello/api/v2/content_view_filter_rules/show.json.rabl +1 -1
  244. data/app/views/katello/api/v2/content_view_filters/show.json.rabl +1 -1
  245. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +3 -3
  246. data/app/views/katello/api/v2/content_views/base.json.rabl +3 -3
  247. data/app/views/katello/api/v2/content_views/show.json.rabl +1 -1
  248. data/app/views/katello/api/v2/debs/backend.json.rabl +7 -0
  249. data/app/views/katello/api/v2/debs/base.json.rabl +4 -0
  250. data/app/views/katello/api/v2/debs/show.json.rabl +2 -0
  251. data/app/views/katello/api/v2/docker_manifest_lists/show.json.rabl +1 -0
  252. data/app/views/katello/api/v2/docker_tags/_base.json.rabl +2 -2
  253. data/app/views/katello/api/v2/environments/show.json.rabl +4 -4
  254. data/app/views/katello/api/v2/gpg_keys/show.json.rabl +1 -1
  255. data/app/views/katello/api/v2/host_collections/base.json.rabl +1 -1
  256. data/app/views/katello/api/v2/hosts/base.json.rabl +2 -2
  257. data/app/views/katello/api/v2/package_groups/base.json.rabl +2 -2
  258. data/app/views/katello/api/v2/products/show.json.rabl +2 -2
  259. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -1
  260. data/app/views/katello/api/v2/repository_sets/show.json.rabl +1 -1
  261. data/app/views/katello/api/v2/subscriptions/base.json.rabl +1 -1
  262. data/app/views/katello/api/v2/subscriptions/show.json.rabl +3 -3
  263. data/app/views/katello/api/v2/sync_plans/show.json.rabl +1 -1
  264. data/config/initializers/inflections.rb +11 -0
  265. data/config/katello.yaml.example +4 -10
  266. data/config/routes/api/registry.rb +0 -2
  267. data/config/routes/api/rhsm.rb +1 -4
  268. data/config/routes/api/v2.rb +2 -3
  269. data/db/migrate/20140716211853_repo_rename_feed_to_url.rb +1 -1
  270. data/db/migrate/20141003210742_add_docker_container_registry_url_to_providers.rb +1 -1
  271. data/db/migrate/20150224083608_remove_docker_registry_url.rb +1 -1
  272. data/db/migrate/20160808002834_add_files.rb +1 -1
  273. data/db/migrate/20161014133811_move_content_view_version_description_to_histories.rb +1 -1
  274. data/db/migrate/20200818192230_update_system_purpose_status.rb +1 -1
  275. data/db/migrate/20201012172713_remove_gpg_key_perms.rb +1 -1
  276. data/db/migrate/20210322142311_add_auth_url_token_to_root_repositories.rb +1 -1
  277. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +2 -2
  278. data/db/migrate/20230717150442_change_change_content_source_job_template_name.rb +1 -1
  279. data/db/migrate/20240207191223_remove_entitlement_mode_host_statuses.rb +1 -1
  280. data/db/migrate/20240508100434_add_content_id_to_katello_repository.rb +5 -0
  281. data/db/migrate/20240730163043_add_content_view_environment_activation_key.rb +87 -0
  282. data/db/migrate/20240806130902_add_more_deb_fields.rb +15 -0
  283. data/db/migrate/20240903194428_add_priority_to_content_view_environment_activation_key.rb +5 -0
  284. data/db/migrate/20241007200316_add_fields_to_katello_docker_manifest_list.rb +8 -0
  285. data/db/migrate/20241007212705_add_bootc_facts_to_content_facet.rb +27 -0
  286. data/db/migrate/20241025151105_remove_pulp3_migrated_hrefs_from_content_tables.rb +10 -0
  287. data/db/migrate/20241030181402_create_katello_flatpak_tables.rb +41 -0
  288. data/db/seeds.d/106-mail_notifications.rb +9 -9
  289. data/db/seeds.d/108-subcription-bookmarks.rb +1 -1
  290. data/db/seeds.d/109-katello-notification-blueprints.rb +21 -21
  291. data/db/seeds.d/110-content-view-autopublish.rb +5 -5
  292. data/db/seeds.d/111-container-image-bookmarks.rb +1 -1
  293. data/db/seeds.d/111-upgrade_tasks.rb +1 -1
  294. data/engines/bastion/lib/bastion/engine.rb +1 -1
  295. data/engines/bastion/lib/bastion.rb +1 -1
  296. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +16 -0
  297. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +29 -15
  298. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +13 -0
  299. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/views/activation-keys.html +2 -0
  300. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-host-collections-modal.controller.js +2 -0
  301. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-host-collections-modal.html +4 -4
  302. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.routes.js +9 -0
  303. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-dependencies.html +54 -0
  304. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +13 -1
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb.html +8 -1
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +1 -1
  307. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +4 -0
  308. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +11 -0
  309. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/activation_keys.scss +1 -1
  310. data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -1
  311. data/lib/katello/engine.rb +17 -15
  312. data/lib/katello/permission_creator.rb +51 -49
  313. data/lib/katello/permissions/host_permissions.rb +4 -4
  314. data/lib/katello/permissions/organization_permissions.rb +4 -4
  315. data/lib/katello/permissions/registry_permissions.rb +1 -1
  316. data/lib/katello/permissions/roles_permissions.rb +1 -1
  317. data/lib/katello/permissions/user_permissions.rb +1 -1
  318. data/lib/katello/plugin.rb +14 -8
  319. data/lib/katello/repository_types/docker.rb +4 -2
  320. data/lib/katello/repository_types/ostree.rb +5 -3
  321. data/lib/katello/repository_types/python.rb +1 -1
  322. data/lib/katello/repository_types/yum.rb +2 -1
  323. data/lib/katello/scheduled_jobs.rb +1 -1
  324. data/lib/katello/tasks/migrate_structure_content_for_deb.rake +105 -0
  325. data/lib/katello/tasks/receptor/extract_orgs.rake +1 -1
  326. data/lib/katello/tasks/reimport.rake +1 -1
  327. data/lib/katello/tasks/repository.rake +19 -9
  328. data/lib/katello/tasks/upgrades/4.1/reupdate_content_import_export_perms.rake +1 -1
  329. data/lib/katello/tasks/upgrades/4.3/fix_url_auth.rake +1 -1
  330. data/lib/katello/version.rb +1 -1
  331. data/locale/action_names.rb +92 -1
  332. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  333. data/locale/bn/katello.po +259 -28
  334. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  335. data/locale/bn_IN/katello.po +258 -27
  336. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  337. data/locale/ca/katello.po +258 -27
  338. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  339. data/locale/cs/katello.po +258 -30
  340. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  341. data/locale/cs_CZ/katello.po +258 -27
  342. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  343. data/locale/de/katello.po +259 -28
  344. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  345. data/locale/de_AT/katello.po +258 -27
  346. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  347. data/locale/de_DE/katello.po +258 -27
  348. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  349. data/locale/el/katello.po +258 -27
  350. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  351. data/locale/en/katello.po +258 -27
  352. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  353. data/locale/en_GB/katello.po +258 -27
  354. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  355. data/locale/en_US/katello.po +258 -27
  356. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  357. data/locale/es/katello.po +259 -28
  358. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  359. data/locale/et_EE/katello.po +258 -27
  360. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  361. data/locale/fr/katello.po +259 -28
  362. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  363. data/locale/gl/katello.po +258 -27
  364. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  365. data/locale/gu/katello.po +258 -27
  366. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  367. data/locale/he_IL/katello.po +258 -27
  368. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  369. data/locale/hi/katello.po +258 -27
  370. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  371. data/locale/id/katello.po +258 -27
  372. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  373. data/locale/it/katello.po +259 -28
  374. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  375. data/locale/ja/katello.po +259 -28
  376. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  377. data/locale/ka/katello.po +259 -28
  378. data/locale/katello.pot +1041 -696
  379. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  380. data/locale/kn/katello.po +258 -27
  381. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  382. data/locale/ko/katello.po +259 -28
  383. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  384. data/locale/ml_IN/katello.po +258 -27
  385. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  386. data/locale/mr/katello.po +258 -27
  387. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  388. data/locale/nl_NL/katello.po +258 -27
  389. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  390. data/locale/or/katello.po +258 -27
  391. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  392. data/locale/pa/katello.po +258 -27
  393. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  394. data/locale/pl/katello.po +258 -27
  395. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  396. data/locale/pl_PL/katello.po +258 -27
  397. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  398. data/locale/pt/katello.po +258 -27
  399. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  400. data/locale/pt_BR/katello.po +259 -28
  401. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  402. data/locale/ro/katello.po +258 -27
  403. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  404. data/locale/ro_RO/katello.po +258 -27
  405. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  406. data/locale/ru/katello.po +259 -28
  407. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  408. data/locale/sl/katello.po +258 -27
  409. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  410. data/locale/sv_SE/katello.po +258 -27
  411. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  412. data/locale/ta/katello.po +259 -28
  413. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  414. data/locale/ta_IN/katello.po +258 -27
  415. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  416. data/locale/te/katello.po +258 -27
  417. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  418. data/locale/tr/katello.po +258 -27
  419. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  420. data/locale/vi/katello.po +258 -27
  421. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  422. data/locale/vi_VN/katello.po +258 -27
  423. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  424. data/locale/zh/katello.po +258 -27
  425. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  426. data/locale/zh_CN/katello.po +259 -28
  427. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  428. data/locale/zh_TW/katello.po +259 -28
  429. data/vendor/assets/javascripts/katello/chosen.jquery.js +2 -2
  430. data/vendor/assets/javascripts/katello/jquery.ba-bbq.js +1 -1
  431. data/vendor/assets/javascripts/katello/jquery.hoverIntent.js +2 -2
  432. data/webpack/ForemanColumnExtensions/index.js +1 -1
  433. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +113 -86
  434. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +7 -2
  435. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.js +31 -4
  436. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +1 -1
  437. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -7
  438. data/webpack/components/extensions/RegistrationCommands/helpers.js +15 -0
  439. data/webpack/components/extensions/RegistrationCommands/index.js +3 -9
  440. data/webpack/global_index.js +11 -4
  441. data/webpack/redux/actions/RedHatRepositories/helpers.js +2 -0
  442. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.js +4 -0
  443. data/webpack/scenes/ActivationKeys/Details/components/CVEDetailsCard.js +37 -0
  444. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +1 -2
  445. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +2 -8
  446. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +22 -2
  447. data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +39 -20
  448. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +2 -1
  449. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +6 -4
  450. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +62 -0
  451. metadata +134 -76
  452. data/app/lib/katello/api/constraints/activation_key_constraint.rb +0 -7
  453. /data/app/lib/katello/{api → routing}/mapper_extensions.rb +0 -0
@@ -34,7 +34,7 @@ module Katello
34
34
  def status
35
35
  {
36
36
  version: Katello::VERSION,
37
- timeUTC: Time.now.getutc
37
+ timeUTC: Time.now.getutc,
38
38
  }
39
39
  end
40
40
 
@@ -252,12 +252,11 @@ module Katello
252
252
  end
253
253
 
254
254
  def backend_status(url, backend)
255
- ca_file = SETTINGS[:katello][backend][:ca_cert_file]
255
+ ca_file = ::Cert::Certs.backend_ca_cert_file(backend)
256
256
  request_id = ::Logging.mdc['request']
257
257
 
258
258
  options = {}
259
259
  options[:ssl_ca_file] = ca_file unless ca_file.nil?
260
- options[:verify_ssl] = SETTINGS[:katello][backend][:verify_ssl] if SETTINGS[:katello][backend].key?(:verify_ssl)
261
260
  options[:headers] = { 'Correlation-ID' => request_id } if request_id
262
261
  client = RestClient::Resource.new("#{url}/status/", options)
263
262
 
@@ -172,7 +172,7 @@ module Katello
172
172
  scoped_search :on => :label, :relation => :root, :complete_value => true, :only_explicit => true
173
173
  scoped_search :on => :content_label, :ext_method => :search_by_content_label, :default_operator => :like
174
174
 
175
- delegate :product, :redhat?, :custom?, :to => :root
175
+ delegate :product, :redhat?, :custom?, :deb_using_structured_apt?, :to => :root
176
176
  delegate :yum?, :docker?, :deb?, :file?, :ostree?, :ansible_collection?, :generic?, :to => :root
177
177
  delegate :name, :label, :docker_upstream_name, :url, :download_concurrency, :to => :root
178
178
 
@@ -185,7 +185,6 @@ module Katello
185
185
  :ansible_collection_requirements, :ansible_collection_auth_url, :ansible_collection_auth_token,
186
186
  :http_proxy_policy, :http_proxy_id, :prevent_updates, :to => :root
187
187
 
188
- delegate :content_id, to: :root, allow_nil: true
189
188
  delegate :repository_type, to: :root
190
189
 
191
190
  def self.exportable_types(format: ::Katello::Pulp3::ContentViewVersion::Export::IMPORTABLE)
@@ -211,6 +210,16 @@ module Katello
211
210
  "#{path_prefix}/#{path}"
212
211
  end
213
212
 
213
+ def content_id
214
+ # Currently deb content will store a content_id on each Repository, while all other content
215
+ # types will store one on the RootRepository.
216
+ self[:content_id] || root.content_id
217
+ end
218
+
219
+ def content
220
+ Katello::Content.find_by(:cp_content_id => self.content_id, :organization_id => self.product.organization_id)
221
+ end
222
+
214
223
  def to_label
215
224
  name
216
225
  end
@@ -272,6 +281,10 @@ module Katello
272
281
  self.content_view_version.content_view
273
282
  end
274
283
 
284
+ def content_view_environment
285
+ self.content_view.content_view_environment(self.environment)
286
+ end
287
+
275
288
  # Skip setting container name if the repository is not container type or
276
289
  # if it's a library instance of a container-push repo, indicating that the container name is set by the user.
277
290
  def skip_container_name?
@@ -634,7 +647,7 @@ module Katello
634
647
  sp_history_args = {
635
648
  :smart_proxy_id => smart_proxy.id,
636
649
  :repository_id => self.id,
637
- :started_at => Time.now
650
+ :started_at => Time.now,
638
651
  }
639
652
  sp_history = ::Katello::SmartProxySyncHistory.create sp_history_args
640
653
  sp_history.save!
@@ -667,7 +680,7 @@ module Katello
667
680
  ::Actions::Katello::Repository::Sync.name,
668
681
  ::Actions::Katello::Repository::UploadFiles.name,
669
682
  ::Actions::Katello::Repository::RemoveContent.name,
670
- ::Actions::Katello::Repository::MetadataGenerate.name
683
+ ::Actions::Katello::Repository::MetadataGenerate.name,
671
684
  ]
672
685
  ForemanTasks::Task::DynflowTask.where(:label => blocking_task_labels)
673
686
  .where.not(state: 'stopped')
@@ -785,7 +798,7 @@ module Katello
785
798
  distribution_arch: self.distribution_arch,
786
799
  distribution_family: self.distribution_family,
787
800
  distribution_variant: self.distribution_variant,
788
- distribution_bootable: self.distribution_bootable
801
+ distribution_bootable: self.distribution_bootable,
789
802
  }
790
803
  end
791
804
 
@@ -941,7 +954,7 @@ module Katello
941
954
  product: repository.product,
942
955
  lifecycle_environment: repository.environment,
943
956
  content_view: repository.content_view_version.content_view,
944
- content_view_version: repository.content_view_version
957
+ content_view_version: repository.content_view_version,
945
958
  }
946
959
  box = Safemode::Box.new(repository, allowed_methods)
947
960
  erb = ERB.new(pattern)
@@ -1024,6 +1037,27 @@ module Katello
1024
1037
  content_view.repositories.include? self
1025
1038
  end
1026
1039
 
1040
+ def deb_content_url_options
1041
+ return '' unless version_href
1042
+
1043
+ components = deb_pulp_components.join(',')
1044
+ distributions = deb_pulp_distributions.join(',')
1045
+ "/?comp=#{components}&rel=#{distributions}"
1046
+ end
1047
+
1048
+ def deb_pulp_components(version_href = self.version_href)
1049
+ return [] if version_href.blank?
1050
+
1051
+ pulp_api = Katello::Pulp3::Repository.instance_for_type(self, SmartProxy.pulp_primary).api.content_release_components_api
1052
+ pulp_api.list({:repository_version => version_href}).results.map { |x| x.component }.uniq
1053
+ end
1054
+
1055
+ def deb_pulp_distributions(version_href = self.version_href)
1056
+ return [] if version_href.blank?
1057
+ pulp_api = Katello::Pulp3::Repository.instance_for_type(self, SmartProxy.pulp_primary).api.content_release_components_api
1058
+ pulp_api.list({:repository_version => version_href}).results.map { |x| x.distribution }.uniq
1059
+ end
1060
+
1027
1061
  def sync_status
1028
1062
  return latest_dynflow_sync
1029
1063
  end
@@ -16,40 +16,40 @@ module Katello
16
16
  'RHEL9' => {
17
17
  'full_support' => end_of_day('2027-05-31'),
18
18
  'maintenance_support' => end_of_day('2032-05-31'),
19
- 'extended_support' => end_of_day('2035-05-31')
19
+ 'extended_support' => end_of_day('2035-05-31'),
20
20
  },
21
21
  'RHEL8' => {
22
22
  'full_support' => end_of_day('2024-05-31'),
23
23
  'maintenance_support' => end_of_day('2029-05-31'),
24
- 'extended_support' => end_of_day('2032-05-31')
24
+ 'extended_support' => end_of_day('2032-05-31'),
25
25
  },
26
26
  'RHEL7' => {
27
27
  'full_support' => end_of_day('2019-08-06'),
28
28
  'maintenance_support' => end_of_day('2024-06-30'),
29
- 'extended_support' => end_of_day('2028-06-30')
29
+ 'extended_support' => end_of_day('2028-06-30'),
30
30
  },
31
31
  'RHEL7 (System z (Structure A))' => {
32
32
  'full_support' => end_of_day('2019-08-06'),
33
- 'maintenance_support' => end_of_day('2021-05-31')
33
+ 'maintenance_support' => end_of_day('2021-05-31'),
34
34
  },
35
35
  'RHEL7 (ARM)' => {
36
36
  'full_support' => end_of_day('2019-08-06'),
37
- 'maintenance_support' => end_of_day('2020-11-30')
37
+ 'maintenance_support' => end_of_day('2020-11-30'),
38
38
  },
39
39
  'RHEL7 (POWER9)' => {
40
40
  'full_support' => end_of_day('2019-08-06'),
41
- 'maintenance_support' => end_of_day('2021-05-31')
41
+ 'maintenance_support' => end_of_day('2021-05-31'),
42
42
  },
43
43
  'RHEL6' => {
44
44
  'full_support' => end_of_day('2016-05-10'),
45
45
  'maintenance_support' => end_of_day('2020-11-30'),
46
- 'extended_support' => end_of_day('2024-06-30')
46
+ 'extended_support' => end_of_day('2024-06-30'),
47
47
  },
48
48
  'RHEL5' => {
49
49
  'full_support' => end_of_day('2013-01-08'),
50
50
  'maintenance_support' => end_of_day('2017-03-31'),
51
- 'extended_support' => end_of_day('2020-11-30')
52
- }
51
+ 'extended_support' => end_of_day('2020-11-30'),
52
+ },
53
53
  }.freeze
54
54
 
55
55
  EOS_WARNING_THRESHOLD = 1.year
@@ -61,7 +61,7 @@ module Katello
61
61
  approaching_end_of_maintenance: APPROACHING_END_OF_MAINTENANCE,
62
62
  extended_support: EXTENDED_SUPPORT,
63
63
  approaching_end_of_support: APPROACHING_END_OF_SUPPORT,
64
- support_ended: SUPPORT_ENDED
64
+ support_ended: SUPPORT_ENDED,
65
65
  }
66
66
 
67
67
  map.default = UNKNOWN
@@ -23,7 +23,7 @@ module Katello
23
23
  SKIPABLE_METADATA_TYPES = [Repository::YUM_TYPE, Repository::DEB_TYPE].freeze
24
24
 
25
25
  CONTENT_ATTRIBUTE_RESTRICTIONS = {
26
- :download_policy => [Repository::YUM_TYPE, Repository::DEB_TYPE, Repository::DOCKER_TYPE]
26
+ :download_policy => [Repository::YUM_TYPE, Repository::DEB_TYPE, Repository::DOCKER_TYPE],
27
27
  }.freeze
28
28
 
29
29
  MAX_EXPIRE_TIME = 7 * 24 * 60 * 60
@@ -67,7 +67,7 @@ module Katello
67
67
  validates_lengths_from_database :except => [:label]
68
68
  validates_with Validators::KatelloLabelFormatValidator, :attributes => :label
69
69
  validates_with Validators::KatelloNameFormatValidator, :attributes => :name
70
- validates_with Validators::KatelloUrlFormatValidator, :attributes => :url,
70
+ validates_with Validators::KatelloURLFormatValidator, :attributes => :url,
71
71
  :nil_allowed => proc { |repo| repo.custom? || repo.organization.cdn_configuration.export_sync? },
72
72
  :field_name => :url
73
73
  validates_with Validators::RootRepositoryUniqueAttributeValidator, :attributes => :name
@@ -96,15 +96,15 @@ module Katello
96
96
  validates :content_type, :inclusion => {
97
97
  :in => ->(_) { Katello::RepositoryTypeManager.enabled_repository_types.keys },
98
98
  :allow_blank => false,
99
- :message => ->(_, _) { _("is not enabled. must be one of the following: %s") % Katello::RepositoryTypeManager.enabled_repository_types.keys.join(', ') }
99
+ :message => ->(_, _) { _("is not enabled. must be one of the following: %s") % Katello::RepositoryTypeManager.enabled_repository_types.keys.join(', ') },
100
100
  }
101
101
  validates :download_policy, inclusion: {
102
102
  :in => DOWNLOAD_POLICIES,
103
- :message => _("must be one of the following: %s") % DOWNLOAD_POLICIES.join(', ')
103
+ :message => _("must be one of the following: %s") % DOWNLOAD_POLICIES.join(', '),
104
104
  }, if: :yum?
105
105
  validates :http_proxy_policy, inclusion: {
106
106
  :in => HTTP_PROXY_POLICIES,
107
- :message => _("must be one of the following: %s") % HTTP_PROXY_POLICIES.join(', ')
107
+ :message => _("must be one of the following: %s") % HTTP_PROXY_POLICIES.join(', '),
108
108
  }
109
109
 
110
110
  validates :metadata_expire,
@@ -113,7 +113,7 @@ module Katello
113
113
  less_than_or_equal_to: MAX_EXPIRE_TIME,
114
114
  greater_than: 0,
115
115
  allow_nil: true,
116
- only_integer: true
116
+ only_integer: true,
117
117
  }
118
118
 
119
119
  validates :container_push_name_format, inclusion: { in: ['label', 'id'].freeze, allow_nil: true}
@@ -296,7 +296,7 @@ module Katello
296
296
  if self.upstream_username.blank? && self.upstream_password.blank?
297
297
  self.upstream_username = nil
298
298
  self.upstream_password = nil
299
- if !self.url.blank? && self.url.start_with?('uln') && !self.content
299
+ if !self.url.blank? && self.url.start_with?('uln')
300
300
  errors.add(:base, N_("Upstream username and upstream password cannot be blank for ULN repositories"))
301
301
  end
302
302
  return
@@ -333,7 +333,7 @@ module Katello
333
333
  return if self.deb_releases.blank? && self.url.blank?
334
334
  if self.deb_releases.blank?
335
335
  errors.add(:base, N_("When \"Upstream URL\" is set, \"Releases/Distributions\" must also be set!"))
336
- elsif self.url.blank? && !self.content
336
+ elsif self.url.blank?
337
337
  errors.add(:base, N_("When \"Releases/Distributions\" is set, \"Upstream URL\" must also be set!"))
338
338
  end
339
339
  end
@@ -370,10 +370,6 @@ module Katello
370
370
  "#{organization.label} #{product.label} #{label}".gsub(/\s/, "_")
371
371
  end
372
372
 
373
- def content
374
- Katello::Content.find_by(:cp_content_id => self.content_id, :organization_id => self.product.organization_id)
375
- end
376
-
377
373
  def docker?
378
374
  self.content_type == Repository::DOCKER_TYPE
379
375
  end
@@ -394,6 +390,10 @@ module Katello
394
390
  self.content_type == Repository::DEB_TYPE
395
391
  end
396
392
 
393
+ def deb_using_structured_apt?
394
+ self.deb? && !self.content_id
395
+ end
396
+
397
397
  def ansible_collection?
398
398
  self.content_type == Repository::ANSIBLE_COLLECTION_TYPE
399
399
  end
@@ -420,12 +420,8 @@ module Katello
420
420
  changeable_attributes.any? { |key| previous_changes.key?(key) }
421
421
  end
422
422
 
423
- def raw_content_path
424
- self.content.content_url
425
- end
426
-
427
423
  def repo_mapper
428
- @repo_mapper ||= Katello::Candlepin::RepositoryMapper.new(self.product, self.content, self.substitutions)
424
+ @repo_mapper ||= Katello::Candlepin::RepositoryMapper.new(self.product, self.library_instance.content, self.substitutions)
429
425
  end
430
426
 
431
427
  def calculate_updated_name
@@ -436,7 +432,7 @@ module Katello
436
432
  def substitutions
437
433
  {
438
434
  :releasever => self.minor,
439
- :basearch => self.arch
435
+ :basearch => self.arch,
440
436
  }.compact
441
437
  end
442
438
 
@@ -247,7 +247,7 @@ module Katello
247
247
  # Handle not very friendly Pulp message
248
248
  case errors
249
249
  when /^\(.*\)$/
250
- if stacktrace.class == Array
250
+ if stacktrace.instance_of?(Array)
251
251
  stacktrace.last.split(":").first
252
252
  else
253
253
  stacktrace.split("(").first
@@ -24,7 +24,7 @@ module Katello
24
24
  {
25
25
  pools: pools,
26
26
  total: total,
27
- subtotal: pools.count
27
+ subtotal: pools.count,
28
28
  }
29
29
  end
30
30
 
@@ -59,7 +59,7 @@ module Katello
59
59
  consumed: 'consumed',
60
60
  product_name: 'productName',
61
61
  product_id: 'productId',
62
- subscription_id: 'subscriptionId'
62
+ subscription_id: 'subscriptionId',
63
63
  }
64
64
  end
65
65
 
@@ -29,12 +29,12 @@ module Katello
29
29
  if overidden_value.nil?
30
30
  {
31
31
  status: enabled ? "enabled" : "disabled",
32
- overridden: false
32
+ overridden: false,
33
33
  }
34
34
  else
35
35
  {
36
36
  status: overidden_value ? "enabled" : "disabled",
37
- overridden: true
37
+ overridden: true,
38
38
  }
39
39
  end
40
40
  end
@@ -14,12 +14,12 @@ module Katello
14
14
  {
15
15
  :content_view_version => {
16
16
  :id => repository.content_view_version.id,
17
- :name => repository.content_view_version.name
17
+ :name => repository.content_view_version.name,
18
18
  },
19
19
  :environment => {
20
20
  :id => repository.environment.id,
21
- :name => repository.environment.name
22
- }
21
+ :name => repository.environment.name,
22
+ },
23
23
  }
24
24
  end
25
25
  end
@@ -8,7 +8,7 @@ module Katello
8
8
  :never_synced => _("Never Synced"),
9
9
  :running => _("Running"),
10
10
  :canceled => _("Canceled"),
11
- :paused => _("Paused")
11
+ :paused => _("Paused"),
12
12
  }.with_indifferent_access
13
13
 
14
14
  def initialize(repo, task)
@@ -34,7 +34,7 @@ module Katello
34
34
  :display_size => display_output,
35
35
  :size => display_output,
36
36
  :is_running => @task.pending && @task.state != 'paused',
37
- :error_details => @task.errors
37
+ :error_details => @task.errors,
38
38
  }
39
39
  end
40
40
 
@@ -47,7 +47,7 @@ module Katello
47
47
  :product_id => repo.product.id,
48
48
  :progress => {},
49
49
  :state => format_state(OpenStruct.new(:state => state)),
50
- :raw_state => state
50
+ :raw_state => state,
51
51
  }
52
52
  end
53
53
 
@@ -9,7 +9,7 @@ module Cert
9
9
  end
10
10
 
11
11
  def self.candlepin_client_ca_cert
12
- File.read(SETTINGS[:katello][:candlepin][:ca_cert_file])
12
+ File.read(backend_ca_cert_file(:candlepin))
13
13
  end
14
14
 
15
15
  def self.ssl_client_cert
@@ -28,10 +28,14 @@ module Cert
28
28
  Setting[:ssl_priv_key]
29
29
  end
30
30
 
31
+ def self.backend_ca_cert_file(backend)
32
+ SETTINGS.dig(:katello, backend, :ca_cert_file) || Setting[:ssl_ca_file]
33
+ end
34
+
31
35
  def self.verify_ueber_cert(organization)
32
36
  ueber_cert = OpenSSL::X509::Certificate.new(self.ueber_cert(organization)[:cert])
33
37
  cert_store = OpenSSL::X509::Store.new
34
- cert_store.add_file SETTINGS[:katello][:candlepin][:ca_cert_file]
38
+ cert_store.add_file backend_ca_cert_file(:candlepin)
35
39
  organization.regenerate_ueber_cert unless cert_store.verify ueber_cert
36
40
  end
37
41
  end
@@ -40,7 +40,7 @@ module Katello
40
40
  {
41
41
  processed_count: @processed_count,
42
42
  failed_count: @failed_count,
43
- running: running?
43
+ running: running?,
44
44
  }
45
45
  end
46
46
 
@@ -46,7 +46,7 @@ module Katello
46
46
  {
47
47
  processed_count: @processed_count,
48
48
  failed_count: @failed_count,
49
- running: running?
49
+ running: running?,
50
50
  }
51
51
  end
52
52
 
@@ -53,7 +53,7 @@ module Katello
53
53
  def self.push_event(event_type, id)
54
54
  attrs = {
55
55
  event_type: event_type,
56
- object_id: id
56
+ object_id: id,
57
57
  }
58
58
 
59
59
  yield(attrs) if block_given?
@@ -15,22 +15,22 @@ module Katello
15
15
 
16
16
  def product_content
17
17
  if match_environment
18
- if consumable.is_a?(::Katello::ActivationKey) # TODO: remove this when AKs are refactored for multi CV
19
- environment = consumable.lifecycle_environment
20
- view = consumable.content_view
21
- return ProductContent.none unless environment && view
22
- versions = ContentViewVersion.in_environment(environment).where(:content_view_id => view).first
23
- else # consumable is a SubscriptionFacet
24
- versions = consumable.content_view_environments.select(:content_view_version_id).map(&:content_view_version_id)
25
- end
18
+ versions = consumable.content_view_environments.select(:content_view_version_id).map(&:content_view_version_id)
26
19
  end
27
20
 
28
21
  considered_products = match_subscription ? consumable.products : consumable.organization.products.enabled.uniq
29
22
 
30
23
  roots = Katello::RootRepository.where(:product_id => considered_products).subscribable
31
- roots = roots.in_content_view_version(versions) if versions.present?
24
+ roots = roots.in_content_view_version(versions).distinct if versions.present?
25
+ content_ids = roots.where.not(:content_id => nil).pluck(:content_id)
26
+ structured_apt_roots = roots.where(:content_id => nil)
27
+ if structured_apt_roots.any?
28
+ deb_repos_query = Katello::Repository.where(root: structured_apt_roots)
29
+ deb_repos = match_environment ? deb_repos_query.where(content_view_version: versions, environment: consumable.environment) : deb_repos_query.where(:library_instance_id => nil)
30
+ content_ids += deb_repos.pluck(:content_id)
31
+ end
32
32
 
33
- consumable.organization.enabled_product_content_for(roots)
33
+ consumable.organization.enabled_product_content_for(content_ids)
34
34
  end
35
35
 
36
36
  def custom_content_labels
@@ -152,7 +152,7 @@ module Katello
152
152
  vendor: content[:vendor],
153
153
  gpg_url: content[:gpgUrl],
154
154
  content_url: content[:contentUrl],
155
- organization_id: product.organization_id
155
+ organization_id: product.organization_id,
156
156
  }
157
157
  end
158
158
 
@@ -54,7 +54,7 @@ module Katello
54
54
  proxy_url: smart_proxy.http_proxy&.url,
55
55
  proxy_username: smart_proxy.http_proxy&.username,
56
56
  proxy_password: smart_proxy.http_proxy&.password,
57
- total_timeout: Setting[:sync_connect_timeout]
57
+ total_timeout: Setting[:sync_connect_timeout],
58
58
  }
59
59
  if acs.content_type == ::Katello::Repository::FILE_TYPE && acs.subpaths.empty? && !remote_options[:url].end_with?('/PULP_MANIFEST')
60
60
  remote_options[:url] = acs.base_url + '/PULP_MANIFEST'
@@ -73,7 +73,7 @@ module Katello
73
73
  {
74
74
  client_cert: acs.ssl_client_cert&.content,
75
75
  client_key: acs.ssl_client_key&.content,
76
- ca_cert: acs.ssl_ca_cert&.content
76
+ ca_cert: acs.ssl_ca_cert&.content,
77
77
  }
78
78
  end
79
79
  end
@@ -26,7 +26,7 @@ module Katello
26
26
  namespace: unit['namespace'],
27
27
  version: unit['version'],
28
28
  name: unit['name'],
29
- description: unit['description']
29
+ description: unit['description'],
30
30
  }
31
31
  end
32
32
 
@@ -23,6 +23,10 @@ module Katello
23
23
  def copy_api
24
24
  PulpDebClient::DebCopyApi.new(api_client)
25
25
  end
26
+
27
+ def content_release_components_api
28
+ PulpDebClient::ContentReleaseComponentsApi.new(api_client)
29
+ end
26
30
  end
27
31
  end
28
32
  end
@@ -4,6 +4,7 @@ module Katello
4
4
  class Content
5
5
  extend Katello::Abstract::Pulp::Content
6
6
  class << self
7
+ # rubocop:disable Metrics/ParameterLists
7
8
  def create_upload(size = 0, checksum = nil, content_type = nil, repository = nil)
8
9
  content_unit_href = nil
9
10
  content_type = ::Katello::RepositoryTypeManager.find_content_type(content_type)
@@ -130,11 +130,7 @@ module Katello
130
130
  MetadataGenerator.new(export_service: self).generate!
131
131
  end
132
132
 
133
- def self.find_generated_export_view(create_by_default: false,
134
- destination_server:,
135
- organization:,
136
- name:,
137
- generated_for:)
133
+ def self.find_generated_export_view(destination_server:, organization:, name:, generated_for:, create_by_default: false)
138
134
  name += "-#{destination_server}" unless destination_server.blank?
139
135
  select_method = create_by_default ? :first_or_create : :first
140
136
  ::Katello::ContentView.where(name: name,
@@ -146,9 +142,7 @@ module Katello
146
142
  is_a?(SyncableFormatExport) ? SYNCABLE : IMPORTABLE
147
143
  end
148
144
 
149
- def self.find_library_export_view(create_by_default: false,
150
- destination_server:,
151
- organization:,
145
+ def self.find_library_export_view(destination_server:, organization:, create_by_default: false,
152
146
  format: IMPORTABLE)
153
147
  if format == IMPORTABLE
154
148
  generated_for = :library_export
@@ -165,8 +159,7 @@ module Katello
165
159
  generated_for: generated_for)
166
160
  end
167
161
 
168
- def self.find_repository_export_view(create_by_default: false,
169
- repository:,
162
+ def self.find_repository_export_view(repository:, create_by_default: false,
170
163
  format: IMPORTABLE)
171
164
  if format == IMPORTABLE
172
165
  generated_for = :repository_export
@@ -30,7 +30,7 @@ module Katello
30
30
  " is required to be able to export: '%{exportable_types}'." %
31
31
  { content_view: content_view_version.content_view.name,
32
32
  current: content_view_version.version,
33
- exportable_types: ::Katello::Repository.exportable_types(format: format).join("', '")
33
+ exportable_types: ::Katello::Repository.exportable_types(format: format).join("', '"),
34
34
  })
35
35
  end
36
36
  end
@@ -135,7 +135,7 @@ module Katello
135
135
  name: metadata_map.content_view.name,
136
136
  label: metadata_map.content_view.label,
137
137
  description: metadata_map.content_view.description,
138
- generated_for: generated_for
138
+ generated_for: generated_for,
139
139
  }
140
140
  end
141
141
 
@@ -150,7 +150,7 @@ module Katello
150
150
  name: import_cv_name_from_export(name: metadata_map.content_view.name, generated_for: generated_for),
151
151
  label: import_cv_name_from_export(name: metadata_map.content_view.label, generated_for: generated_for),
152
152
  description: "Content View used for importing into library",
153
- generated_for: generated_for
153
+ generated_for: generated_for,
154
154
  }
155
155
  end
156
156
 
@@ -22,7 +22,7 @@ module Katello
22
22
  params = {
23
23
  name: gpg.name,
24
24
  content_type: ::Katello::ContentCredential::GPG_KEY_TYPE,
25
- content: gpg.content
25
+ content: gpg.content,
26
26
  }
27
27
 
28
28
  create_or_update_gpg!(params)
@@ -39,7 +39,7 @@ module Katello
39
39
  gpg_key_id: gpg_key_id(metadata_product),
40
40
  name: find_unique_name(metadata_product),
41
41
  label: metadata_product.label,
42
- description: metadata_product.description
42
+ description: metadata_product.description,
43
43
  }
44
44
  end
45
45
 
@@ -56,7 +56,7 @@ module Katello
56
56
  def update_params(metadata_product)
57
57
  {
58
58
  gpg_key_id: gpg_key_id(metadata_product),
59
- description: metadata_product.description
59
+ description: metadata_product.description,
60
60
  }
61
61
  end
62
62
 
@@ -46,14 +46,14 @@ module Katello
46
46
  product_content = fetch_product_content(repo.content, product)
47
47
  substitutions = {
48
48
  basearch: repo.arch,
49
- releasever: repo.minor
49
+ releasever: repo.minor,
50
50
  }
51
51
  creatable << {
52
52
  product: product,
53
53
  content: product_content,
54
54
  substitutions: substitutions,
55
55
  override_url: fetch_feed_url(repo),
56
- override_arch: repo.arch
56
+ override_arch: repo.arch,
57
57
  }
58
58
  else
59
59
  creatable << { repository: product.add_repo(create_repo_params(repo, product)) }
@@ -109,7 +109,7 @@ module Katello
109
109
  :major,
110
110
  :minor,
111
111
  :download_policy,
112
- :mirroring_policy
112
+ :mirroring_policy,
113
113
  ]
114
114
 
115
115
  params = { name: find_unique_name(metadata_repo, product) }
@@ -142,7 +142,7 @@ module Katello
142
142
  :major,
143
143
  :minor,
144
144
  :download_policy,
145
- :mirroring_policy
145
+ :mirroring_policy,
146
146
  ]
147
147
  params = {}
148
148
  url = fetch_feed_url(metadata_repo)