katello 4.14.1 → 4.15.0.rc2

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

Potentially problematic release.


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

Files changed (459) 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/generic_content_units_controller.rb +2 -1
  73. data/app/controllers/katello/api/v2/host_collections_controller.rb +2 -2
  74. data/app/controllers/katello/api/v2/host_contents_controller.rb +1 -1
  75. data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -1
  76. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +1 -1
  77. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -4
  78. data/app/controllers/katello/api/v2/organizations_controller.rb +1 -1
  79. data/app/controllers/katello/api/v2/repositories_controller.rb +3 -2
  80. data/app/controllers/katello/api/v2/repository_sets_controller.rb +1 -1
  81. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +10 -16
  82. data/app/controllers/katello/concerns/api/v2/multi_cv_params_handling.rb +24 -0
  83. data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +2 -5
  84. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +1 -1
  85. data/app/controllers/katello/concerns/registration_commands_controller_extensions.rb +1 -1
  86. data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +5 -5
  87. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +2 -2
  88. data/app/helpers/katello/katello_url_helper.rb +1 -1
  89. data/app/lib/actions/candlepin/product/content_create.rb +12 -1
  90. data/app/lib/actions/candlepin/product/content_update.rb +21 -4
  91. data/app/lib/actions/katello/activation_key/reassign.rb +4 -3
  92. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +8 -3
  93. data/app/lib/actions/katello/capsule_content/update_content_counts.rb +21 -3
  94. data/app/lib/actions/katello/cdn_configuration/update.rb +1 -1
  95. data/app/lib/actions/katello/content_view/capsule_sync.rb +17 -1
  96. data/app/lib/actions/katello/content_view/incremental_updates.rb +1 -1
  97. data/app/lib/actions/katello/content_view/presenters/incremental_updates_presenter.rb +1 -1
  98. data/app/lib/actions/katello/content_view/remove.rb +8 -12
  99. data/app/lib/actions/katello/content_view_version/import.rb +1 -1
  100. data/app/lib/actions/katello/content_view_version/incremental_update.rb +2 -2
  101. data/app/lib/actions/katello/flatpak/scan_remote.rb +62 -0
  102. data/app/lib/actions/katello/host/hypervisors.rb +1 -1
  103. data/app/lib/actions/katello/product/content_create.rb +28 -19
  104. data/app/lib/actions/katello/product/content_destroy.rb +6 -5
  105. data/app/lib/actions/katello/product/destroy.rb +1 -1
  106. data/app/lib/actions/katello/repository/clone_contents.rb +14 -0
  107. data/app/lib/actions/katello/repository/create.rb +24 -17
  108. data/app/lib/actions/katello/repository/create_container_push_root.rb +44 -0
  109. data/app/lib/actions/katello/repository/create_root.rb +5 -15
  110. data/app/lib/actions/katello/repository/destroy.rb +3 -3
  111. data/app/lib/actions/katello/repository/discover.rb +1 -1
  112. data/app/lib/actions/katello/repository/finish_upload.rb +13 -0
  113. data/app/lib/actions/katello/repository/import_upload.rb +1 -1
  114. data/app/lib/actions/katello/repository/sync.rb +16 -0
  115. data/app/lib/actions/katello/repository/update.rb +11 -20
  116. data/app/lib/actions/katello/repository/upload_files.rb +1 -1
  117. data/app/lib/actions/katello/repository_set/enable_repository.rb +1 -1
  118. data/app/lib/actions/katello/repository_set/scan_cdn.rb +1 -1
  119. data/app/lib/actions/katello/upstream_subscriptions/bind_entitlement.rb +1 -1
  120. data/app/lib/actions/pulp3/capsule_content/sync.rb +1 -1
  121. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +1 -1
  122. data/app/lib/actions/pulp3/orchestration/repository/create.rb +6 -1
  123. data/app/lib/actions/pulp3/orchestration/repository/trigger_update_repo_cert_guard.rb +1 -1
  124. data/app/lib/actions/pulp3/repository/initialize.rb +17 -0
  125. data/app/lib/actions/pulp3/repository/refresh_distribution.rb +1 -1
  126. data/app/lib/katello/api/constraints/register_with_activation_key_constraint.rb +11 -0
  127. data/app/lib/katello/concerns/base_template_scope_extensions.rb +1 -1
  128. data/app/lib/katello/http_resource.rb +6 -6
  129. data/app/lib/katello/messaging/stomp_connection.rb +4 -4
  130. data/app/lib/katello/resources/candlepin/activation_key.rb +1 -1
  131. data/app/lib/katello/resources/candlepin/owner.rb +1 -1
  132. data/app/lib/katello/resources/candlepin/product.rb +1 -1
  133. data/app/lib/katello/resources/candlepin.rb +1 -1
  134. data/app/lib/katello/resources/cdn/katello_cdn.rb +3 -3
  135. data/app/lib/katello/resources/cdn.rb +1 -1
  136. data/app/lib/katello/resources/discovery/container.rb +5 -3
  137. data/app/lib/katello/resources/discovery/yum.rb +3 -1
  138. data/app/lib/katello/resources/registry.rb +0 -3
  139. data/app/lib/katello/util/candlepin_repository_checker.rb +2 -2
  140. data/app/lib/katello/util/cveak_migrator.rb +38 -0
  141. data/app/lib/katello/util/deb.rb +9 -0
  142. data/app/lib/katello/util/deduplication_migrator.rb +8 -8
  143. data/app/lib/katello/util/model.rb +2 -2
  144. data/app/lib/katello/util/search.rb +5 -5
  145. data/app/lib/katello/util/task_status.rb +19 -19
  146. data/app/lib/katello/util/url_matcher.rb +3 -3
  147. data/app/lib/katello/validators/content_view_environment_org_validator.rb +2 -1
  148. data/app/lib/katello/validators/katello_url_format_validator.rb +2 -2
  149. data/app/mailers/katello/errata_mailer.rb +1 -4
  150. data/app/models/katello/activation_key.rb +123 -27
  151. data/app/models/katello/alternate_content_source.rb +5 -5
  152. data/app/models/katello/authorization/activation_key.rb +1 -1
  153. data/app/models/katello/authorization/content_view_environment.rb +7 -0
  154. data/app/models/katello/cdn_configuration.rb +1 -1
  155. data/app/models/katello/concerns/content_facet_host_extensions.rb +36 -38
  156. data/app/models/katello/concerns/host_managed_extensions.rb +19 -8
  157. data/app/models/katello/concerns/organization_extensions.rb +4 -4
  158. data/app/models/katello/concerns/redhat_extensions.rb +1 -1
  159. data/app/models/katello/concerns/smart_proxy_extensions.rb +84 -39
  160. data/app/models/katello/content.rb +3 -3
  161. data/app/models/katello/content_view.rb +15 -18
  162. data/app/models/katello/content_view_environment.rb +56 -15
  163. data/app/models/katello/content_view_environment_activation_key.rb +20 -0
  164. data/app/models/katello/content_view_erratum_filter_rule.rb +1 -1
  165. data/app/models/katello/content_view_filter.rb +2 -2
  166. data/app/models/katello/content_view_history.rb +1 -1
  167. data/app/models/katello/content_view_repository.rb +1 -1
  168. data/app/models/katello/content_view_version.rb +3 -3
  169. data/app/models/katello/content_view_version_export_history.rb +2 -2
  170. data/app/models/katello/content_view_version_import_history.rb +1 -1
  171. data/app/models/katello/events/delete_latest_content_view_version.rb +1 -1
  172. data/app/models/katello/flatpak_remote.rb +11 -0
  173. data/app/models/katello/flatpak_remote_repository.rb +12 -0
  174. data/app/models/katello/flatpak_remote_repository_manifest.rb +10 -0
  175. data/app/models/katello/glue/candlepin/activation_key.rb +1 -1
  176. data/app/models/katello/glue/candlepin/candlepin_object.rb +1 -1
  177. data/app/models/katello/glue/candlepin/pool.rb +1 -1
  178. data/app/models/katello/glue/pulp/repos.rb +1 -1
  179. data/app/models/katello/host/content_facet.rb +33 -17
  180. data/app/models/katello/host/info_provider.rb +2 -4
  181. data/app/models/katello/host/subscription_facet.rb +2 -2
  182. data/app/models/katello/host_available_module_stream.rb +1 -1
  183. data/app/models/katello/installed_product.rb +2 -2
  184. data/app/models/katello/kt_environment.rb +11 -6
  185. data/app/models/katello/ping.rb +2 -3
  186. data/app/models/katello/repository.rb +40 -6
  187. data/app/models/katello/rhel_lifecycle_status.rb +10 -10
  188. data/app/models/katello/root_repository.rb +14 -18
  189. data/app/models/katello/task_status.rb +1 -1
  190. data/app/models/katello/upstream_pool.rb +2 -2
  191. data/app/presenters/katello/product_content_presenter.rb +2 -2
  192. data/app/presenters/katello/repository_presenter.rb +3 -3
  193. data/app/presenters/katello/sync_status_presenter.rb +3 -3
  194. data/app/services/cert/certs.rb +6 -2
  195. data/app/services/katello/candlepin_event_listener.rb +1 -1
  196. data/app/services/katello/event_monitor/poller_thread.rb +1 -1
  197. data/app/services/katello/event_queue.rb +1 -1
  198. data/app/services/katello/product_content_finder.rb +10 -10
  199. data/app/services/katello/product_content_importer.rb +1 -1
  200. data/app/services/katello/pulp3/alternate_content_source.rb +2 -2
  201. data/app/services/katello/pulp3/ansible_collection.rb +1 -1
  202. data/app/services/katello/pulp3/api/apt.rb +4 -0
  203. data/app/services/katello/pulp3/content.rb +1 -0
  204. data/app/services/katello/pulp3/content_view_version/export.rb +3 -10
  205. data/app/services/katello/pulp3/content_view_version/export_validator.rb +1 -1
  206. data/app/services/katello/pulp3/content_view_version/import.rb +2 -2
  207. data/app/services/katello/pulp3/content_view_version/import_gpg_keys.rb +1 -1
  208. data/app/services/katello/pulp3/content_view_version/importable_products.rb +2 -2
  209. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +4 -4
  210. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +2 -2
  211. data/app/services/katello/pulp3/deb.rb +35 -1
  212. data/app/services/katello/pulp3/docker_manifest.rb +1 -1
  213. data/app/services/katello/pulp3/docker_manifest_list.rb +6 -2
  214. data/app/services/katello/pulp3/docker_tag.rb +1 -1
  215. data/app/services/katello/pulp3/erratum.rb +2 -2
  216. data/app/services/katello/pulp3/file_unit.rb +1 -1
  217. data/app/services/katello/pulp3/generic_content_unit.rb +1 -1
  218. data/app/services/katello/pulp3/module_stream.rb +2 -2
  219. data/app/services/katello/pulp3/repository/ansible_collection.rb +1 -1
  220. data/app/services/katello/pulp3/repository/apt.rb +22 -16
  221. data/app/services/katello/pulp3/repository/docker.rb +2 -2
  222. data/app/services/katello/pulp3/repository/file.rb +1 -1
  223. data/app/services/katello/pulp3/repository/generic.rb +1 -1
  224. data/app/services/katello/pulp3/repository/yum.rb +7 -7
  225. data/app/services/katello/pulp3/repository.rb +15 -9
  226. data/app/services/katello/pulp3/repository_mirror.rb +3 -3
  227. data/app/services/katello/registration_manager.rb +23 -6
  228. data/app/services/katello/repository_type.rb +3 -3
  229. data/app/services/katello/smart_proxy_helper.rb +3 -3
  230. data/app/services/katello/ui_notifications/content_view/delete_latest_version_failure.rb +1 -1
  231. data/app/services/katello/ui_notifications/subscriptions/expire_soon.rb +3 -3
  232. data/app/services/katello/ui_notifications/subscriptions/manifest_expire_soon_warning.rb +3 -3
  233. data/app/services/katello/ui_notifications/task_notification.rb +2 -2
  234. data/app/services/katello/upstream_connection_checker.rb +1 -1
  235. data/app/views/foreman/job_templates/resolve_traces.erb +8 -1
  236. data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +4 -3
  237. data/app/views/foreman/job_templates/restart_services.erb +11 -3
  238. data/app/views/foreman/job_templates/restart_services_-_katello_ansible_default.erb +4 -3
  239. data/app/views/katello/api/v2/activation_keys/base.json.rabl +43 -8
  240. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +1 -1
  241. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +5 -5
  242. data/app/views/katello/api/v2/common/_metadata.json.rabl +1 -1
  243. data/app/views/katello/api/v2/content_credentials/show.json.rabl +1 -1
  244. data/app/views/katello/api/v2/content_facet/base.json.rabl +15 -6
  245. data/app/views/katello/api/v2/content_facet/show.json.rabl +1 -1
  246. data/app/views/katello/api/v2/content_view_environments/index.json.rabl +7 -0
  247. data/app/views/katello/api/v2/content_view_environments/show.json.rabl +33 -0
  248. data/app/views/katello/api/v2/content_view_filter_rules/show.json.rabl +1 -1
  249. data/app/views/katello/api/v2/content_view_filters/show.json.rabl +1 -1
  250. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +3 -3
  251. data/app/views/katello/api/v2/content_views/base.json.rabl +3 -3
  252. data/app/views/katello/api/v2/content_views/show.json.rabl +1 -1
  253. data/app/views/katello/api/v2/debs/backend.json.rabl +7 -0
  254. data/app/views/katello/api/v2/debs/base.json.rabl +4 -0
  255. data/app/views/katello/api/v2/debs/show.json.rabl +2 -0
  256. data/app/views/katello/api/v2/docker_manifest_lists/show.json.rabl +1 -0
  257. data/app/views/katello/api/v2/docker_tags/_base.json.rabl +2 -2
  258. data/app/views/katello/api/v2/environments/show.json.rabl +4 -4
  259. data/app/views/katello/api/v2/gpg_keys/show.json.rabl +1 -1
  260. data/app/views/katello/api/v2/host_collections/base.json.rabl +1 -1
  261. data/app/views/katello/api/v2/hosts/base.json.rabl +2 -2
  262. data/app/views/katello/api/v2/package_groups/base.json.rabl +2 -2
  263. data/app/views/katello/api/v2/products/show.json.rabl +2 -2
  264. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -1
  265. data/app/views/katello/api/v2/repository_sets/show.json.rabl +1 -1
  266. data/app/views/katello/api/v2/subscriptions/base.json.rabl +1 -1
  267. data/app/views/katello/api/v2/subscriptions/show.json.rabl +3 -3
  268. data/app/views/katello/api/v2/sync_plans/show.json.rabl +1 -1
  269. data/config/initializers/inflections.rb +11 -0
  270. data/config/katello.yaml.example +4 -10
  271. data/config/routes/api/registry.rb +0 -2
  272. data/config/routes/api/rhsm.rb +1 -4
  273. data/config/routes/api/v2.rb +2 -3
  274. data/db/migrate/20140716211853_repo_rename_feed_to_url.rb +1 -1
  275. data/db/migrate/20141003210742_add_docker_container_registry_url_to_providers.rb +1 -1
  276. data/db/migrate/20150224083608_remove_docker_registry_url.rb +1 -1
  277. data/db/migrate/20160808002834_add_files.rb +1 -1
  278. data/db/migrate/20161014133811_move_content_view_version_description_to_histories.rb +1 -1
  279. data/db/migrate/20200818192230_update_system_purpose_status.rb +1 -1
  280. data/db/migrate/20201012172713_remove_gpg_key_perms.rb +1 -1
  281. data/db/migrate/20210322142311_add_auth_url_token_to_root_repositories.rb +1 -1
  282. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +2 -2
  283. data/db/migrate/20230717150442_change_change_content_source_job_template_name.rb +1 -1
  284. data/db/migrate/20240207191223_remove_entitlement_mode_host_statuses.rb +1 -1
  285. data/db/migrate/20240508100434_add_content_id_to_katello_repository.rb +5 -0
  286. data/db/migrate/20240730163043_add_content_view_environment_activation_key.rb +87 -0
  287. data/db/migrate/20240806130902_add_more_deb_fields.rb +15 -0
  288. data/db/migrate/20240903194428_add_priority_to_content_view_environment_activation_key.rb +5 -0
  289. data/db/migrate/20241007200316_add_fields_to_katello_docker_manifest_list.rb +8 -0
  290. data/db/migrate/20241007212705_add_bootc_facts_to_content_facet.rb +27 -0
  291. data/db/migrate/20241025151105_remove_pulp3_migrated_hrefs_from_content_tables.rb +10 -0
  292. data/db/migrate/20241030181402_create_katello_flatpak_tables.rb +41 -0
  293. data/db/seeds.d/106-mail_notifications.rb +9 -9
  294. data/db/seeds.d/108-subcription-bookmarks.rb +1 -1
  295. data/db/seeds.d/109-katello-notification-blueprints.rb +21 -21
  296. data/db/seeds.d/110-content-view-autopublish.rb +5 -5
  297. data/db/seeds.d/111-container-image-bookmarks.rb +1 -1
  298. data/db/seeds.d/111-upgrade_tasks.rb +1 -1
  299. data/engines/bastion/lib/bastion/engine.rb +1 -1
  300. data/engines/bastion/lib/bastion.rb +1 -1
  301. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +16 -0
  302. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +29 -15
  303. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +13 -0
  304. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/views/activation-keys.html +2 -0
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-host-collections-modal.controller.js +2 -0
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-host-collections-modal.html +4 -4
  307. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.routes.js +9 -0
  308. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-dependencies.html +54 -0
  309. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +13 -1
  310. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb.html +8 -1
  311. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +1 -1
  312. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +4 -0
  313. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +2 -0
  314. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +11 -0
  315. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/activation_keys.scss +1 -1
  316. data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -1
  317. data/lib/katello/engine.rb +17 -15
  318. data/lib/katello/permission_creator.rb +51 -49
  319. data/lib/katello/permissions/host_permissions.rb +4 -4
  320. data/lib/katello/permissions/organization_permissions.rb +4 -4
  321. data/lib/katello/permissions/registry_permissions.rb +1 -1
  322. data/lib/katello/permissions/roles_permissions.rb +1 -1
  323. data/lib/katello/permissions/user_permissions.rb +1 -1
  324. data/lib/katello/plugin.rb +14 -8
  325. data/lib/katello/repository_types/docker.rb +4 -2
  326. data/lib/katello/repository_types/ostree.rb +5 -3
  327. data/lib/katello/repository_types/python.rb +1 -1
  328. data/lib/katello/repository_types/yum.rb +2 -1
  329. data/lib/katello/scheduled_jobs.rb +1 -1
  330. data/lib/katello/tasks/migrate_structure_content_for_deb.rake +105 -0
  331. data/lib/katello/tasks/receptor/extract_orgs.rake +1 -1
  332. data/lib/katello/tasks/reimport.rake +1 -1
  333. data/lib/katello/tasks/repository.rake +19 -9
  334. data/lib/katello/tasks/upgrades/4.1/reupdate_content_import_export_perms.rake +1 -1
  335. data/lib/katello/tasks/upgrades/4.3/fix_url_auth.rake +1 -1
  336. data/lib/katello/version.rb +1 -1
  337. data/locale/action_names.rb +92 -1
  338. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  339. data/locale/bn/katello.po +259 -28
  340. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  341. data/locale/bn_IN/katello.po +258 -27
  342. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  343. data/locale/ca/katello.po +258 -27
  344. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  345. data/locale/cs/katello.po +258 -30
  346. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  347. data/locale/cs_CZ/katello.po +258 -27
  348. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  349. data/locale/de/katello.po +259 -28
  350. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  351. data/locale/de_AT/katello.po +258 -27
  352. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  353. data/locale/de_DE/katello.po +258 -27
  354. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  355. data/locale/el/katello.po +258 -27
  356. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  357. data/locale/en/katello.po +258 -27
  358. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  359. data/locale/en_GB/katello.po +258 -27
  360. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  361. data/locale/en_US/katello.po +258 -27
  362. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  363. data/locale/es/katello.po +259 -28
  364. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  365. data/locale/et_EE/katello.po +258 -27
  366. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  367. data/locale/fr/katello.po +259 -28
  368. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  369. data/locale/gl/katello.po +258 -27
  370. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  371. data/locale/gu/katello.po +258 -27
  372. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  373. data/locale/he_IL/katello.po +258 -27
  374. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  375. data/locale/hi/katello.po +258 -27
  376. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  377. data/locale/id/katello.po +258 -27
  378. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  379. data/locale/it/katello.po +259 -28
  380. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  381. data/locale/ja/katello.po +259 -28
  382. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  383. data/locale/ka/katello.po +259 -28
  384. data/locale/katello.pot +1041 -696
  385. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  386. data/locale/kn/katello.po +258 -27
  387. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  388. data/locale/ko/katello.po +259 -28
  389. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  390. data/locale/ml_IN/katello.po +258 -27
  391. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  392. data/locale/mr/katello.po +258 -27
  393. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  394. data/locale/nl_NL/katello.po +258 -27
  395. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  396. data/locale/or/katello.po +258 -27
  397. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  398. data/locale/pa/katello.po +258 -27
  399. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  400. data/locale/pl/katello.po +258 -27
  401. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  402. data/locale/pl_PL/katello.po +258 -27
  403. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  404. data/locale/pt/katello.po +258 -27
  405. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  406. data/locale/pt_BR/katello.po +259 -28
  407. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  408. data/locale/ro/katello.po +258 -27
  409. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  410. data/locale/ro_RO/katello.po +258 -27
  411. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  412. data/locale/ru/katello.po +259 -28
  413. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  414. data/locale/sl/katello.po +258 -27
  415. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  416. data/locale/sv_SE/katello.po +258 -27
  417. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  418. data/locale/ta/katello.po +259 -28
  419. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  420. data/locale/ta_IN/katello.po +258 -27
  421. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  422. data/locale/te/katello.po +258 -27
  423. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  424. data/locale/tr/katello.po +258 -27
  425. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  426. data/locale/vi/katello.po +258 -27
  427. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  428. data/locale/vi_VN/katello.po +258 -27
  429. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  430. data/locale/zh/katello.po +258 -27
  431. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  432. data/locale/zh_CN/katello.po +259 -28
  433. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  434. data/locale/zh_TW/katello.po +259 -28
  435. data/vendor/assets/javascripts/katello/chosen.jquery.js +2 -2
  436. data/vendor/assets/javascripts/katello/jquery.ba-bbq.js +1 -1
  437. data/vendor/assets/javascripts/katello/jquery.hoverIntent.js +2 -2
  438. data/webpack/ForemanColumnExtensions/index.js +1 -1
  439. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +113 -86
  440. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +7 -2
  441. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.js +31 -4
  442. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +1 -1
  443. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -7
  444. data/webpack/components/extensions/RegistrationCommands/helpers.js +15 -0
  445. data/webpack/components/extensions/RegistrationCommands/index.js +3 -9
  446. data/webpack/global_index.js +11 -4
  447. data/webpack/redux/actions/RedHatRepositories/helpers.js +2 -0
  448. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.js +4 -0
  449. data/webpack/scenes/ActivationKeys/Details/components/CVEDetailsCard.js +37 -0
  450. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +1 -2
  451. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +2 -8
  452. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +22 -2
  453. data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +39 -20
  454. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +2 -1
  455. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +6 -4
  456. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +62 -0
  457. metadata +134 -76
  458. data/app/lib/katello/api/constraints/activation_key_constraint.rb +0 -7
  459. /data/app/lib/katello/{api → routing}/mapper_extensions.rb +0 -0
@@ -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)
@@ -21,7 +21,7 @@ module Katello
21
21
  content_view: content_view.slice(:name, :label, :description, :generated_for),
22
22
  content_view_version: content_view_version.slice(:major, :minor, :description),
23
23
  incremental: from_content_view_version.present?,
24
- format: export_service.format
24
+ format: export_service.format,
25
25
  }
26
26
  unless from_content_view_version.blank?
27
27
  ret[:from_content_view_version] = from_content_view_version.slice(:major, :minor)
@@ -72,7 +72,7 @@ module Katello
72
72
  content_path: content.content_url)
73
73
  { id: content.cp_content_id,
74
74
  label: content.label,
75
- url: content_data[:path]
75
+ url: content_data[:path],
76
76
  }
77
77
  end
78
78
 
@@ -5,6 +5,8 @@ module Katello
5
5
  CONTENT_TYPE = "deb".freeze
6
6
  PULPCORE_CONTENT_TYPE = "deb.package".freeze
7
7
 
8
+ lazy_accessor :initializer => :backend_data
9
+
8
10
  def self.content_api
9
11
  PulpDebClient::ContentPackagesApi.new(Katello::Pulp3::Api::Apt.new(SmartProxy.pulp_primary!).api_client)
10
12
  end
@@ -34,9 +36,41 @@ module Katello
34
36
  name: unit[:package],
35
37
  version: unit[:version],
36
38
  description: unit[:description]&.truncate(255),
37
- architecture: unit[:architecture]
39
+ architecture: unit[:architecture],
40
+ section: unit[:section],
41
+ maintainer: unit[:maintainer],
42
+ homepage: unit[:homepage],
43
+ installed_size: unit[:installed_size],
38
44
  }
39
45
  end
46
+
47
+ def depends
48
+ Util::Deb.parse_dependencies(backend_data['depends'])
49
+ end
50
+
51
+ def pre_depends
52
+ Util::Deb.parse_dependencies(backend_data['pre_depends'])
53
+ end
54
+
55
+ def recommends
56
+ Util::Deb.parse_dependencies(backend_data['recommends'])
57
+ end
58
+
59
+ def suggests
60
+ Util::Deb.parse_dependencies(backend_data['suggests'])
61
+ end
62
+
63
+ def enhances
64
+ Util::Deb.parse_dependencies(backend_data['enhances'])
65
+ end
66
+
67
+ def breaks
68
+ Util::Deb.parse_dependencies(backend_data['breaks'])
69
+ end
70
+
71
+ def conflicts
72
+ Util::Deb.parse_dependencies(backend_data['conflicts'])
73
+ end
40
74
  end
41
75
  end
42
76
  end
@@ -30,7 +30,7 @@ module Katello
30
30
  annotations: unit['annotations'],
31
31
  labels: unit['labels'],
32
32
  is_bootable: unit['is_bootable'],
33
- is_flatpak: unit['is_flatpak']
33
+ is_flatpak: unit['is_flatpak'],
34
34
  }
35
35
  end
36
36
  end
@@ -28,7 +28,11 @@ module Katello
28
28
  {
29
29
  schema_version: unit['schema_version'],
30
30
  digest: unit['digest'],
31
- pulp_id: unit[unit_identifier]
31
+ pulp_id: unit[unit_identifier],
32
+ annotations: unit['annotations'],
33
+ labels: unit['labels'],
34
+ is_bootable: unit['is_bootable'],
35
+ is_flatpak: unit['is_flatpak'],
32
36
  }
33
37
  end
34
38
 
@@ -40,7 +44,7 @@ module Katello
40
44
  manifest_list_manifests += manifest_ids.map do |manifest_id|
41
45
  {
42
46
  docker_manifest_list_id: katello_id,
43
- docker_manifest_id: manifest_id
47
+ docker_manifest_id: manifest_id,
44
48
  }
45
49
  end
46
50
  end
@@ -18,7 +18,7 @@ module Katello
18
18
  def self.generate_model_row(unit)
19
19
  row = {
20
20
  pulp_id: unit[unit_identifier],
21
- name: unit['name']
21
+ name: unit['name'],
22
22
  }
23
23
 
24
24
  taggable = ::Katello::DockerManifest.find_by(:pulp_id => unit['tagged_manifest'])
@@ -75,7 +75,7 @@ module Katello
75
75
  {
76
76
  bug_id: bugzilla[:id],
77
77
  href: bugzilla[:href],
78
- erratum_id: katello_id
78
+ erratum_id: katello_id,
79
79
  }
80
80
  end
81
81
  end
@@ -85,7 +85,7 @@ module Katello
85
85
  {
86
86
  cve_id: cve[:id],
87
87
  href: cve[:href],
88
- erratum_id: katello_id
88
+ erratum_id: katello_id,
89
89
  }
90
90
  end
91
91
  end
@@ -27,7 +27,7 @@ module Katello
27
27
  pulp_id: unit[unit_identifier],
28
28
  name: filename,
29
29
  path: unit['relative_path'],
30
- checksum: unit['sha256']
30
+ checksum: unit['sha256'],
31
31
  }
32
32
  end
33
33
  end
@@ -24,7 +24,7 @@ module Katello
24
24
  version: content_type&.model_version&.call(unit),
25
25
  filename: content_type&.model_filename&.call(unit),
26
26
  additional_metadata: content_type&.model_additional_metadata&.call(unit),
27
- content_type: content_type&.label
27
+ content_type: content_type&.label,
28
28
  }
29
29
  end
30
30
  end
@@ -19,7 +19,7 @@ module Katello
19
19
  rpms = package_ids.map do |package_id|
20
20
  {
21
21
  module_stream_id: katello_id,
22
- rpm_id: package_id
22
+ rpm_id: package_id,
23
23
  }
24
24
  end
25
25
  add_timestamps(rpms)
@@ -38,7 +38,7 @@ module Katello
38
38
  profiles = profiles_json.map do |profile, _rpms|
39
39
  {
40
40
  module_stream_id: katello_id,
41
- name: profile
41
+ name: profile,
42
42
  }
43
43
  end
44
44
  add_timestamps(profiles)
@@ -20,7 +20,7 @@ module Katello
20
20
  {
21
21
  base_path: path,
22
22
  repository_version: repo.version_href,
23
- name: "#{generate_backend_object_name}"
23
+ name: "#{generate_backend_object_name}",
24
24
  }
25
25
  end
26
26
 
@@ -7,10 +7,18 @@ module Katello
7
7
  UNIT_LIMIT = 10_000
8
8
  SIGNING_SERVICE_NAME = 'katello_deb_sign'.freeze
9
9
 
10
+ def initialize_empty
11
+ # For every empty APT library instance repository we must add at least a release component to
12
+ # ensure we have a publishable repo with consumable metadata. Otherwise smart proxy syncs will
13
+ # fail, and consuming hosts will choke on empty repos.
14
+ opts = {:repository => repository_reference.repository_href, :component => "empty", :distribution => "katello"}
15
+ api.content_release_components_api.create(opts)
16
+ end
17
+
10
18
  def remote_options
11
19
  deb_remote_options = {
12
20
  policy: root.download_policy,
13
- distributions: root.deb_releases
21
+ distributions: root.deb_releases,
14
22
  }
15
23
  deb_remote_options[:components] = root.deb_components.present? ? root.deb_components : nil
16
24
  deb_remote_options[:architectures] = root.deb_architectures.present? ? root.deb_architectures : nil
@@ -31,22 +39,20 @@ module Katello
31
39
  end
32
40
 
33
41
  def mirror_remote_options
34
- super.merge(
35
- {
36
- distributions: repo.deb_releases + "#{' default' unless repo.deb_releases.include? 'default'}"
37
- }
38
- )
42
+ distributions = if repo.deb_using_structured_apt?
43
+ repo.deb_pulp_distributions.join(' ')
44
+ else
45
+ 'default'
46
+ end
47
+
48
+ super.merge({distributions: distributions})
39
49
  end
40
50
 
41
- def publication_options(repository_version)
51
+ def publication_options(repository)
42
52
  ss = api.signing_services_api.list(name: SIGNING_SERVICE_NAME).results
43
- popts = super(repository_version)
44
- popts.merge!(
45
- {
46
- structured: true, # publish real suites (e.g. 'stable')
47
- simple: true # publish all into 'default'-suite
48
- }
49
- )
53
+ popts = super(repository)
54
+ popts.merge!({ structured: true })
55
+ popts.merge!({ simple: true }) unless repository.deb_using_structured_apt?
50
56
  popts[:signing_service] = ss[0].pulp_href if ss && ss.length == 1
51
57
  popts
52
58
  end
@@ -55,7 +61,7 @@ module Katello
55
61
  {
56
62
  base_path: path,
57
63
  publication: repo.publication_href,
58
- name: "#{generate_backend_object_name}"
64
+ name: "#{generate_backend_object_name}",
59
65
  }
60
66
  end
61
67
 
@@ -104,7 +110,7 @@ module Katello
104
110
  config_hash = {
105
111
  source_repo_version: repo_config[:source_repo_version],
106
112
  dest_repo: repo_config[:dest_repo],
107
- content: []
113
+ content: [],
108
114
  }
109
115
  config_hash[:dest_base_version] = repo_config[:dest_base_version] if repo_config[:dest_base_version]
110
116
  data_dup.config << config_hash
@@ -39,7 +39,7 @@ module Katello
39
39
  super.merge(
40
40
  {
41
41
  url: "https://#{SmartProxy.pulp_primary.pulp3_host!.downcase}",
42
- upstream_name: repo.container_repository_name
42
+ upstream_name: repo.container_repository_name,
43
43
  }
44
44
  )
45
45
  end
@@ -48,7 +48,7 @@ module Katello
48
48
  {
49
49
  base_path: path,
50
50
  repository_version: repo.version_href,
51
- name: "#{generate_backend_object_name}"
51
+ name: "#{generate_backend_object_name}",
52
52
  }
53
53
  end
54
54
 
@@ -12,7 +12,7 @@ module Katello
12
12
  {
13
13
  base_path: path,
14
14
  publication: repo.publication_href,
15
- name: "#{generate_backend_object_name}"
15
+ name: "#{generate_backend_object_name}",
16
16
  }
17
17
  end
18
18
 
@@ -9,7 +9,7 @@ module Katello
9
9
  def distribution_options(path)
10
10
  options = {
11
11
  base_path: path,
12
- name: "#{generate_backend_object_name}"
12
+ name: "#{generate_backend_object_name}",
13
13
  }
14
14
 
15
15
  if ::Katello::RepositoryTypeManager.find(repo.content_type).pulp3_skip_publication
@@ -20,8 +20,8 @@ module Katello
20
20
  options.merge!(policy: root.download_policy)
21
21
  end
22
22
 
23
- def publication_options(repository_version)
24
- options = super(repository_version)
23
+ def publication_options(repository)
24
+ options = super(repository)
25
25
  # To work around https://projects.theforeman.org/issues/37715
26
26
  checksum_type = if root.checksum_type.nil?
27
27
  'sha256'
@@ -50,7 +50,7 @@ module Katello
50
50
  {
51
51
  base_path: path,
52
52
  publication: repo.publication_href,
53
- name: "#{generate_backend_object_name}"
53
+ name: "#{generate_backend_object_name}",
54
54
  }
55
55
  end
56
56
 
@@ -141,7 +141,7 @@ module Katello
141
141
  config_hash = {
142
142
  source_repo_version: repo_config[:source_repo_version],
143
143
  dest_repo: repo_config[:dest_repo],
144
- content: []
144
+ content: [],
145
145
  }
146
146
  config_hash[:dest_base_version] = repo_config[:dest_base_version] if repo_config[:dest_base_version]
147
147
  data_dup.config << config_hash
@@ -253,7 +253,7 @@ module Katello
253
253
  source_repo_ids.each do |repo_id|
254
254
  filter_list_map[:whitelist_ids] += filter.content_unit_pulp_ids(::Katello::Repository.find(repo_id))
255
255
  end
256
- elsif filter.class == ContentViewErratumFilter
256
+ elsif filter.instance_of?(ContentViewErratumFilter)
257
257
  source_repo_ids.each do |repo_id|
258
258
  filter_list_map[:blacklist_ids] += filter.content_unit_pulp_ids(::Katello::Repository.find(repo_id), additional_included_errata)
259
259
  end
@@ -280,7 +280,7 @@ module Katello
280
280
  inclusion_modular_filters = modular_filters.select { |filter| filter.inclusion }
281
281
  exclusion_modular_filters = modular_filters - inclusion_modular_filters
282
282
  if inclusion_modular_filters.empty? &&
283
- !(filters.any? { |filter| filter.class == ContentViewErratumFilter && filter.inclusion })
283
+ !(filters.any? { |filter| filter.instance_of?(ContentViewErratumFilter) && filter.inclusion })
284
284
  source_repo_ids.each do |source_repo_id|
285
285
  source_repo = ::Katello::Repository.find(source_repo_id)
286
286
  filter_list_map[:whitelist_ids] += source_repo.rpms.where(:modular => true).pluck(:pulp_id).sort
@@ -401,7 +401,7 @@ module Katello
401
401
  (errata_filters + package_filters).each do |filter|
402
402
  if filter.inclusion
403
403
  whitelist_ids += filter.content_unit_pulp_ids(source_repository)
404
- elsif filter.class == ContentViewErratumFilter
404
+ elsif filter.instance_of?(ContentViewErratumFilter)
405
405
  blacklist_ids += filter.content_unit_pulp_ids(source_repository, additional_included_errata)
406
406
  else
407
407
  blacklist_ids += filter.content_unit_pulp_ids(source_repository)
@@ -181,6 +181,12 @@ module Katello
181
181
  end
182
182
  end
183
183
 
184
+ def initialize_empty
185
+ # Can be used to initialize a newly created library instance repository with some initial content.
186
+ # Currently only used for deb type repositories!
187
+ fail NotImplementedError
188
+ end
189
+
184
190
  def update
185
191
  api.repositories_api.update(repository_reference.try(:repository_href), create_options)
186
192
  end
@@ -211,7 +217,7 @@ module Katello
211
217
  end
212
218
 
213
219
  def create_publication
214
- publication_data = api.publication_class.new(publication_options(repo.version_href))
220
+ publication_data = api.publication_class.new(publication_options(repo))
215
221
  api.publications_api.create(publication_data)
216
222
  end
217
223
 
@@ -219,9 +225,9 @@ module Katello
219
225
  ignore_404_exception { api.publications_api.delete(repo.publication_href) } if repo.publication_href
220
226
  end
221
227
 
222
- def publication_options(repository_version)
228
+ def publication_options(repository)
223
229
  {
224
- repository_version: repository_version
230
+ repository_version: repository.version_href,
225
231
  }
226
232
  end
227
233
 
@@ -319,7 +325,7 @@ module Katello
319
325
  data = api.class.copy_class.new
320
326
  data.config = [{
321
327
  source_repo_version: source_repository.version_href,
322
- dest_repo: repository_reference.repository_href
328
+ dest_repo: repository_reference.repository_href,
323
329
  }]
324
330
  tasks << api.copy_api.copy_content(data)
325
331
  tasks
@@ -400,7 +406,7 @@ module Katello
400
406
  connect_timeout: Setting[:sync_connect_timeout_v2],
401
407
  sock_connect_timeout: Setting[:sync_sock_connect_timeout],
402
408
  sock_read_timeout: Setting[:sync_sock_read_timeout],
403
- rate_limit: Setting[:download_rate_limit]
409
+ rate_limit: Setting[:download_rate_limit],
404
410
  }
405
411
  remote_options[:url] = root.url unless root.url.blank?
406
412
  remote_options[:download_concurrency] = root.download_concurrency unless root.download_concurrency.blank?
@@ -446,23 +452,23 @@ module Katello
446
452
  options = {
447
453
  client_cert: root.product.certificate,
448
454
  client_key: root.product.key,
449
- ca_cert: Katello::Repository.feed_ca_cert(root.url)
455
+ ca_cert: Katello::Repository.feed_ca_cert(root.url),
450
456
  }
451
457
  elsif root.redhat? && root.cdn_configuration.custom_cdn?
452
458
  options = {
453
- ca_cert: root.cdn_configuration.ssl_ca
459
+ ca_cert: root.cdn_configuration.ssl_ca,
454
460
  }
455
461
  elsif root.redhat? && root.cdn_configuration.network_sync?
456
462
  options = {
457
463
  client_cert: root.cdn_configuration.ssl_cert,
458
464
  client_key: root.cdn_configuration.ssl_key,
459
- ca_cert: root.cdn_configuration.ssl_ca
465
+ ca_cert: root.cdn_configuration.ssl_ca,
460
466
  }
461
467
  elsif root.custom?
462
468
  options = {
463
469
  client_cert: root.ssl_client_cert&.content,
464
470
  client_key: root.ssl_client_key&.content,
465
- ca_cert: root.ssl_ca_cert&.content
471
+ ca_cert: root.ssl_ca_cert&.content,
466
472
  }
467
473
  end
468
474
  append_proxy_cacert(options) if options.key?(:cacert)