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
@@ -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)
@@ -92,7 +92,7 @@ module Katello
92
92
  def distribution_options(path, options = {})
93
93
  ret = {
94
94
  base_path: path,
95
- name: "#{backend_object_name}"
95
+ name: "#{backend_object_name}",
96
96
  }
97
97
  ret[:content_guard] = repo.unprotected ? nil : content_guard_href
98
98
  ret[:publication] = options[:publication] if options.key? :publication
@@ -145,7 +145,7 @@ module Katello
145
145
  connect_timeout: Setting[:sync_connect_timeout_v2],
146
146
  sock_connect_timeout: Setting[:sync_sock_connect_timeout],
147
147
  sock_read_timeout: Setting[:sync_sock_read_timeout],
148
- rate_limit: Setting[:download_rate_limit]
148
+ rate_limit: Setting[:download_rate_limit],
149
149
  }
150
150
  remote_options.merge!({download_concurrency: repo.download_concurrency}) if repo.download_concurrency
151
151
  remote_options.merge!(ssl_remote_options)
@@ -157,7 +157,7 @@ module Katello
157
157
  client_cert: ueber_cert[:cert],
158
158
  client_key: ueber_cert[:key],
159
159
  ca_cert: ::Cert::Certs.ca_cert,
160
- tls_validation: true
160
+ tls_validation: true,
161
161
  }
162
162
  end
163
163
 
@@ -154,19 +154,24 @@ module Katello
154
154
  end
155
155
  end
156
156
 
157
+ # rubocop:disable Metrics/MethodLength
157
158
  def register_host(host, consumer_params, content_view_environments, activation_keys = [])
158
159
  new_host = host.new_record?
159
160
  unless new_host
160
161
  host.save!
161
162
  # Keep the kickstart repository ID so the host's Medium isn't unset
162
163
  # Important for registering a host during provisioning
163
- unregister_host(host, :unregistering => true, :keep_kickstart_repository => true)
164
+ begin
165
+ unregister_host(host, :unregistering => true, :keep_kickstart_repository => true)
166
+ rescue RestClient::Gone
167
+ Rails.logger.debug("Host %s has been removed in preparation for reregistration" % host&.name)
168
+ end
164
169
  host.reload
165
170
  end
166
171
 
167
172
  if activation_keys.present?
168
173
  if content_view_environments.blank?
169
- content_view_environments = [lookup_content_view_environment(activation_keys)]
174
+ content_view_environments = lookup_content_view_environments(activation_keys)
170
175
  end
171
176
  set_host_collections(host, activation_keys)
172
177
  end
@@ -194,6 +199,7 @@ module Katello
194
199
  finalize_registration(host)
195
200
  end
196
201
  end
202
+ # rubocop:enable Metrics/MethodLength
197
203
 
198
204
  def check_registration_services
199
205
  ping_results = {}
@@ -246,7 +252,7 @@ module Katello
246
252
  host.subscription_facet.save!
247
253
  host.refresh_statuses([
248
254
  ::Katello::ErrataStatus,
249
- ::Katello::RhelLifecycleStatus
255
+ ::Katello::RhelLifecycleStatus,
250
256
  ])
251
257
  end
252
258
 
@@ -264,12 +270,23 @@ module Katello
264
270
  host.host_collection_ids = host_collection_ids
265
271
  end
266
272
 
267
- def lookup_content_view_environment(activation_keys)
273
+ def lookup_content_view_environments(activation_keys)
274
+ # If the setting is on, we combine all CVEs from all AKs
275
+ if Setting['allow_multiple_content_views']
276
+ cves = activation_keys.map do |act_key|
277
+ act_key.content_view_environments
278
+ end
279
+ cves = cves.flatten.uniq
280
+ fail _('At least one activation key must have a lifecycle environment and content view assigned to it') if cves.blank?
281
+ return cves
282
+ end
283
+
284
+ # If the setting is off, we stick with the previous behavior (the last AK with a valid cv/lce wins).
268
285
  activation_key = activation_keys.reverse.detect do |act_key|
269
- act_key.environment && act_key.content_view
286
+ act_key.content_view_environments.any?
270
287
  end
271
288
  if activation_key
272
- ::Katello::ContentViewEnvironment.where(:content_view_id => activation_key.content_view, :environment_id => activation_key.environment).first
289
+ ::Katello::ContentViewEnvironment.where(:content_view_id => activation_key.content_view, :environment_id => activation_key.environment)
273
290
  else
274
291
  fail _('At least one activation key must have a lifecycle environment and content view assigned to it')
275
292
  end
@@ -123,7 +123,7 @@ module Katello
123
123
  :generic_remote_options => translated_generic_remote_options,
124
124
  :import_attributes => translated_import_attributes,
125
125
  :url_description => _(@url_description),
126
- :content_types => content_types.as_json
126
+ :content_types => content_types.as_json,
127
127
  }
128
128
  end
129
129
 
@@ -170,7 +170,7 @@ module Katello
170
170
  generic: false,
171
171
  removable: removable,
172
172
  uploadable: uploadable,
173
- indexed: index
173
+ indexed: index,
174
174
  }
175
175
  end
176
176
 
@@ -220,7 +220,7 @@ module Katello
220
220
  :generic => true,
221
221
  :pluralized_label => content_type.pluralize,
222
222
  :pluralized_name => pluralized_name,
223
- :details_columns => details_columns
223
+ :details_columns => details_columns,
224
224
  }
225
225
  )
226
226
  end
@@ -47,9 +47,9 @@ module Katello
47
47
 
48
48
  def repositories_available_to_capsule(environments = nil, content_view = nil)
49
49
  environments = @smart_proxy.lifecycle_environments if environments.nil?
50
- yum_repos = Katello::Repository.in_environment(environments)
51
- yum_repos = yum_repos.in_content_views([content_view]) if content_view
52
- yum_repos.smart_proxy_syncable
50
+ repos = Katello::Repository.in_environment(environments)
51
+ repos = repos.in_content_views([content_view]) if content_view
52
+ repos.smart_proxy_syncable
53
53
  end
54
54
 
55
55
  def unsyncable_content_types
@@ -1,7 +1,7 @@
1
1
  module Katello
2
2
  module UINotifications
3
3
  module ContentView
4
- class DelelteLatestVersionFailure < ::UINotifications::Base
4
+ class DeleteLatestVersionFailure < ::UINotifications::Base
5
5
  private
6
6
 
7
7
  def create
@@ -48,9 +48,9 @@ module Katello
48
48
  {
49
49
  :href => "/subscriptions?search=expires<\"#{Setting[:expire_soon_days]} days from now\"",
50
50
  :title => _('Subscriptions'),
51
- :external => true
52
- }
53
- ]
51
+ :external => true,
52
+ },
53
+ ],
54
54
  }
55
55
  end
56
56
 
@@ -58,9 +58,9 @@ module Katello
58
58
  {
59
59
  :href => "/subscriptions",
60
60
  :title => _('Subscriptions'),
61
- :external => false
62
- }
63
- ]
61
+ :external => false,
62
+ },
63
+ ],
64
64
  }
65
65
  end
66
66
 
@@ -16,8 +16,8 @@ module Katello
16
16
  :links => [
17
17
  {
18
18
  :path_method => :foreman_tasks_task_path,
19
- :title => _('Task detail')
20
- }
19
+ :title => _('Task detail'),
20
+ },
21
21
  ]
22
22
  ).actions
23
23
  end
@@ -5,7 +5,7 @@ module Katello
5
5
  Katello::Errors::ManifestExpired,
6
6
  Katello::Errors::UpstreamConsumerGone,
7
7
  Katello::Errors::UpstreamConsumerNotFound,
8
- Katello::Errors::NoManifestImported
8
+ Katello::Errors::NoManifestImported,
9
9
  ].freeze
10
10
 
11
11
  def initialize(organization)