katello 4.18.1 → 4.19.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (336) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/locale/bn/katello.js +56 -107
  3. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +56 -107
  4. data/app/assets/javascripts/katello/locale/ca/katello.js +56 -107
  5. data/app/assets/javascripts/katello/locale/cs/katello.js +56 -107
  6. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +57 -108
  7. data/app/assets/javascripts/katello/locale/de/katello.js +58 -109
  8. data/app/assets/javascripts/katello/locale/de_AT/katello.js +56 -107
  9. data/app/assets/javascripts/katello/locale/de_DE/katello.js +56 -107
  10. data/app/assets/javascripts/katello/locale/el/katello.js +57 -108
  11. data/app/assets/javascripts/katello/locale/en/katello.js +56 -107
  12. data/app/assets/javascripts/katello/locale/en_GB/katello.js +56 -107
  13. data/app/assets/javascripts/katello/locale/en_US/katello.js +56 -107
  14. data/app/assets/javascripts/katello/locale/es/katello.js +58 -109
  15. data/app/assets/javascripts/katello/locale/et_EE/katello.js +56 -107
  16. data/app/assets/javascripts/katello/locale/fr/katello.js +59 -110
  17. data/app/assets/javascripts/katello/locale/gl/katello.js +56 -107
  18. data/app/assets/javascripts/katello/locale/gu/katello.js +56 -107
  19. data/app/assets/javascripts/katello/locale/he_IL/katello.js +56 -107
  20. data/app/assets/javascripts/katello/locale/hi/katello.js +56 -107
  21. data/app/assets/javascripts/katello/locale/id/katello.js +56 -107
  22. data/app/assets/javascripts/katello/locale/it/katello.js +56 -107
  23. data/app/assets/javascripts/katello/locale/ja/katello.js +59 -110
  24. data/app/assets/javascripts/katello/locale/ka/katello.js +58 -109
  25. data/app/assets/javascripts/katello/locale/kn/katello.js +56 -107
  26. data/app/assets/javascripts/katello/locale/ko/katello.js +59 -110
  27. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +56 -107
  28. data/app/assets/javascripts/katello/locale/mr/katello.js +56 -107
  29. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +56 -107
  30. data/app/assets/javascripts/katello/locale/or/katello.js +56 -107
  31. data/app/assets/javascripts/katello/locale/pa/katello.js +56 -107
  32. data/app/assets/javascripts/katello/locale/pl/katello.js +56 -107
  33. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +56 -107
  34. data/app/assets/javascripts/katello/locale/pt/katello.js +56 -107
  35. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +58 -109
  36. data/app/assets/javascripts/katello/locale/ro/katello.js +56 -107
  37. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +56 -107
  38. data/app/assets/javascripts/katello/locale/ru/katello.js +57 -108
  39. data/app/assets/javascripts/katello/locale/sl/katello.js +56 -107
  40. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +56 -107
  41. data/app/assets/javascripts/katello/locale/ta/katello.js +56 -107
  42. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +56 -107
  43. data/app/assets/javascripts/katello/locale/te/katello.js +56 -107
  44. data/app/assets/javascripts/katello/locale/tr/katello.js +56 -107
  45. data/app/assets/javascripts/katello/locale/vi/katello.js +56 -107
  46. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +56 -107
  47. data/app/assets/javascripts/katello/locale/zh/katello.js +56 -107
  48. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +59 -110
  49. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +57 -108
  50. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +41 -12
  51. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
  52. data/app/controllers/katello/api/v2/activation_keys_controller.rb +3 -65
  53. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  54. data/app/controllers/katello/api/v2/content_views_controller.rb +18 -3
  55. data/app/controllers/katello/api/v2/debs_controller.rb +21 -11
  56. data/app/controllers/katello/api/v2/docker_tags_controller.rb +7 -0
  57. data/app/controllers/katello/api/v2/flatpak_remote_repositories_controller.rb +21 -19
  58. data/app/controllers/katello/api/v2/host_debs_controller.rb +16 -1
  59. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +3 -60
  60. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +10 -53
  61. data/app/controllers/katello/api/v2/repositories_controller.rb +0 -1
  62. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +3 -0
  63. data/app/lib/actions/candlepin/activation_key/create.rb +0 -2
  64. data/app/lib/actions/candlepin/activation_key/update.rb +0 -2
  65. data/app/lib/actions/candlepin/product/content_create.rb +3 -5
  66. data/app/lib/actions/candlepin/product/content_update.rb +2 -3
  67. data/app/lib/actions/helpers/rolling_cv_repos.rb +1 -1
  68. data/app/lib/actions/katello/activation_key/create.rb +0 -1
  69. data/app/lib/actions/katello/activation_key/update.rb +0 -2
  70. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +1 -6
  71. data/app/lib/actions/katello/content_credential/update.rb +1 -1
  72. data/app/lib/actions/katello/content_view/add_rolling_repo_clone.rb +18 -24
  73. data/app/lib/actions/katello/content_view/create.rb +9 -4
  74. data/app/lib/actions/katello/content_view/refresh_rolling_repo.rb +6 -1
  75. data/app/lib/actions/katello/content_view/remove_rolling_repo_clone.rb +16 -11
  76. data/app/lib/actions/katello/content_view/update.rb +34 -7
  77. data/app/lib/actions/katello/product/content_create.rb +2 -2
  78. data/app/lib/actions/katello/product/content_destroy.rb +1 -1
  79. data/app/lib/actions/katello/repository/check_matching_content.rb +1 -1
  80. data/app/lib/actions/katello/repository/clone_contents.rb +1 -1
  81. data/app/lib/actions/katello/repository/create.rb +1 -1
  82. data/app/lib/actions/katello/repository/destroy.rb +4 -4
  83. data/app/lib/actions/katello/repository/finish_upload.rb +1 -1
  84. data/app/lib/actions/katello/repository/sync.rb +1 -1
  85. data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +2 -2
  86. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
  87. data/app/lib/actions/pulp3/orchestration/repository/multi_copy_all_units.rb +1 -1
  88. data/app/lib/actions/pulp3/repository/save_publication.rb +3 -1
  89. data/app/lib/actions/pulp3/repository/save_version.rb +45 -24
  90. data/app/lib/actions/pulp3/repository/save_versions.rb +2 -1
  91. data/app/lib/katello/resources/candlepin/activation_key.rb +3 -4
  92. data/app/lib/katello/resources/candlepin/upstream_job.rb +9 -1
  93. data/app/lib/katello/resources/candlepin.rb +4 -0
  94. data/app/models/katello/authorization/repository.rb +17 -4
  95. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +0 -7
  96. data/app/models/katello/content_view_deb_filter.rb +10 -0
  97. data/app/models/katello/content_view_deb_filter_rule.rb +7 -0
  98. data/app/models/katello/deb.rb +10 -10
  99. data/app/models/katello/erratum.rb +1 -1
  100. data/app/models/katello/glue/provider.rb +14 -3
  101. data/app/models/katello/host/content_facet.rb +1 -1
  102. data/app/models/katello/host/subscription_facet.rb +1 -7
  103. data/app/models/katello/product_content.rb +2 -2
  104. data/app/models/katello/repository.rb +4 -23
  105. data/app/models/katello/root_repository.rb +2 -5
  106. data/app/services/katello/candlepin/event_handler.rb +0 -33
  107. data/app/services/katello/candlepin/message_handler.rb +0 -41
  108. data/app/services/katello/content_unit_indexer.rb +59 -13
  109. data/app/services/katello/product_content_finder.rb +5 -4
  110. data/app/services/katello/pulp3/alternate_content_source.rb +2 -2
  111. data/app/services/katello/pulp3/ansible_collection.rb +1 -0
  112. data/app/services/katello/pulp3/api/content_guard.rb +5 -5
  113. data/app/services/katello/pulp3/api/core.rb +10 -0
  114. data/app/services/katello/pulp3/deb.rb +1 -0
  115. data/app/services/katello/pulp3/docker_manifest.rb +1 -0
  116. data/app/services/katello/pulp3/docker_manifest_list.rb +1 -0
  117. data/app/services/katello/pulp3/docker_tag.rb +1 -0
  118. data/app/services/katello/pulp3/file_unit.rb +1 -0
  119. data/app/services/katello/pulp3/generic_content_unit.rb +1 -0
  120. data/app/services/katello/pulp3/module_stream.rb +1 -0
  121. data/app/services/katello/pulp3/package_group.rb +1 -0
  122. data/app/services/katello/pulp3/repository/apt.rb +30 -13
  123. data/app/services/katello/pulp3/repository.rb +59 -10
  124. data/app/services/katello/pulp3/rpm.rb +3 -2
  125. data/app/services/katello/pulp3/srpm.rb +3 -2
  126. data/app/services/katello/pulp3/task_group.rb +1 -1
  127. data/app/services/katello/registration_manager.rb +19 -17
  128. data/app/services/katello/repository_type_manager.rb +7 -5
  129. data/app/services/katello/smart_proxy_helper.rb +1 -6
  130. data/app/views/foreman/job_templates/upload_profile.erb +5 -0
  131. data/app/views/katello/api/v2/activation_keys/base.json.rabl +1 -1
  132. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  133. data/app/views/katello/api/v2/debs/thindex.json.rabl +6 -0
  134. data/app/views/katello/api/v2/docker_tags/_base.json.rabl +32 -0
  135. data/app/views/katello/api/v2/docker_tags/show.json.rabl +0 -5
  136. data/app/views/katello/api/v2/flatpak_remotes/index.json.rabl +6 -0
  137. data/app/views/katello/api/v2/host_debs/installed_debs.json.rabl +6 -0
  138. data/app/views/katello/api/v2/hosts_bulk_actions/applicable_errata.json.rabl +1 -1
  139. data/app/views/katello/api/v2/hosts_bulk_actions/applicable_erratum.json.rabl +9 -0
  140. data/app/views/katello/api/v2/hosts_bulk_actions/installable_errata.json.rabl +1 -1
  141. data/app/views/katello/api/v2/hosts_bulk_actions/{erratum.json.rabl → installable_erratum.json.rabl} +3 -3
  142. data/app/views/katello/api/v2/subscription_facet/base.json.rabl +1 -1
  143. data/config/initializers/monkeys.rb +1 -0
  144. data/config/routes/api/v2.rb +2 -2
  145. data/config/routes/overrides.rb +2 -7
  146. data/config/routes.rb +2 -0
  147. data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +1 -1
  148. data/db/migrate/20250912000000_add_pulp_prn_fields.rb +73 -0
  149. data/db/migrate/20250912000001_populate_pulp_prn_fields.rb +403 -0
  150. data/db/migrate/20251009142516_remove_auto_attach_from_activation_keys.rb +5 -0
  151. data/db/migrate/20251009142517_remove_autoheal_from_subscription_facets.rb +5 -0
  152. data/db/seeds.d/111-upgrade_tasks.rb +2 -0
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +2 -2
  154. data/lib/katello/permission_creator.rb +2 -2
  155. data/lib/katello/permissions/host_permissions.rb +0 -6
  156. data/lib/katello/plugin.rb +16 -8
  157. data/lib/katello/tasks/jenkins.rake +1 -1
  158. data/lib/katello/tasks/upgrades/4.19/enable_structured_apt_for_deb.rake +87 -0
  159. data/lib/katello/tasks/upgrades/4.19/populate_repository_version_prns.rake +32 -0
  160. data/lib/katello/version.rb +1 -1
  161. data/lib/monkeys/fix_rpm_repository_gpgcheck.rb +38 -0
  162. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  163. data/locale/bn/katello.po +56 -107
  164. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  165. data/locale/bn_IN/katello.po +56 -107
  166. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  167. data/locale/ca/katello.po +56 -107
  168. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  169. data/locale/cs/katello.po +56 -107
  170. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  171. data/locale/cs_CZ/katello.po +57 -108
  172. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  173. data/locale/de/katello.po +58 -109
  174. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  175. data/locale/de_AT/katello.po +56 -107
  176. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  177. data/locale/de_DE/katello.po +56 -107
  178. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  179. data/locale/el/katello.po +58 -109
  180. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  181. data/locale/en/katello.po +56 -107
  182. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  183. data/locale/en_GB/katello.po +56 -107
  184. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  185. data/locale/en_US/katello.po +56 -107
  186. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  187. data/locale/es/katello.po +58 -109
  188. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  189. data/locale/et_EE/katello.po +56 -107
  190. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  191. data/locale/fr/katello.po +59 -110
  192. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  193. data/locale/gl/katello.po +56 -107
  194. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  195. data/locale/gu/katello.po +56 -107
  196. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  197. data/locale/he_IL/katello.po +56 -107
  198. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  199. data/locale/hi/katello.po +56 -107
  200. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  201. data/locale/id/katello.po +56 -107
  202. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  203. data/locale/it/katello.po +56 -107
  204. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  205. data/locale/ja/katello.po +59 -110
  206. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  207. data/locale/ka/katello.po +58 -109
  208. data/locale/katello.pot +676 -749
  209. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  210. data/locale/kn/katello.po +56 -107
  211. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  212. data/locale/ko/katello.po +59 -110
  213. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  214. data/locale/ml_IN/katello.po +56 -107
  215. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  216. data/locale/mr/katello.po +56 -107
  217. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  218. data/locale/nl_NL/katello.po +56 -107
  219. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  220. data/locale/or/katello.po +56 -107
  221. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  222. data/locale/pa/katello.po +56 -107
  223. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  224. data/locale/pl/katello.po +56 -107
  225. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  226. data/locale/pl_PL/katello.po +56 -107
  227. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  228. data/locale/pt/katello.po +56 -107
  229. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  230. data/locale/pt_BR/katello.po +58 -109
  231. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  232. data/locale/ro/katello.po +56 -107
  233. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  234. data/locale/ro_RO/katello.po +56 -107
  235. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  236. data/locale/ru/katello.po +57 -108
  237. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  238. data/locale/sl/katello.po +56 -107
  239. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  240. data/locale/sv_SE/katello.po +56 -107
  241. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  242. data/locale/ta/katello.po +56 -107
  243. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  244. data/locale/ta_IN/katello.po +56 -107
  245. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  246. data/locale/te/katello.po +56 -107
  247. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  248. data/locale/tr/katello.po +56 -107
  249. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  250. data/locale/vi/katello.po +56 -107
  251. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  252. data/locale/vi_VN/katello.po +56 -107
  253. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  254. data/locale/zh/katello.po +56 -107
  255. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  256. data/locale/zh_CN/katello.po +59 -110
  257. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  258. data/locale/zh_TW/katello.po +57 -108
  259. data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +2 -2
  260. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +0 -2
  261. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +0 -2
  262. data/webpack/components/extensions/Hosts/ActionsBar/index.js +1 -0
  263. data/webpack/components/extensions/Hosts/BulkActions/BulkActionsConstants.js +7 -0
  264. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/BulkChangeHostCollectionsModal.js +388 -0
  265. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/__tests__/BulkChangeHostCollectionsModal.test.js +640 -0
  266. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/actions.js +28 -0
  267. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/index.js +71 -0
  268. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +1 -1
  269. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/02_BulkPackagesTable.js +10 -3
  270. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +51 -24
  271. data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +7 -0
  272. data/webpack/containers/Application/config.js +11 -1
  273. data/webpack/global_index.js +3 -0
  274. data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/BootedContainerImagesConstants.js +1 -1
  275. data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/BootedContainerImagesPage.js +7 -43
  276. data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/__tests__/bootedContainerImagesPage.test.js +1 -1
  277. data/webpack/scenes/ContainerImages/ContainerImagesPage.js +86 -0
  278. data/webpack/scenes/ContainerImages/LabelsAnnotationsModal.js +105 -0
  279. data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetails.js +218 -0
  280. data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetailsActions.js +15 -0
  281. data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetailsSelectors.js +16 -0
  282. data/webpack/scenes/ContainerImages/Synced/Details/__tests__/ManifestDetails.test.js +395 -0
  283. data/webpack/scenes/ContainerImages/Synced/Details/__tests__/manifestDetails.fixtures.json +43 -0
  284. data/webpack/scenes/ContainerImages/Synced/Details/__tests__/manifestList.fixtures.json +58 -0
  285. data/webpack/scenes/ContainerImages/Synced/Details/index.js +4 -0
  286. data/webpack/scenes/ContainerImages/Synced/SyncedContainerImagesPage.js +359 -0
  287. data/webpack/scenes/ContainerImages/Synced/SyncedContainerImagesPage.scss +21 -0
  288. data/webpack/scenes/ContainerImages/Synced/__tests__/LabelsAnnotationsModal.test.js +69 -0
  289. data/webpack/scenes/ContainerImages/Synced/__tests__/SyncedContainerImagesPage.test.js +335 -0
  290. data/webpack/scenes/ContainerImages/Synced/__tests__/syncedContainerImages.fixtures.json +105 -0
  291. data/webpack/scenes/ContainerImages/TableEmptyState.js +67 -0
  292. data/webpack/scenes/ContainerImages/containerImagesHelpers.js +48 -0
  293. data/webpack/scenes/ContainerImages/index.js +4 -0
  294. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +29 -3
  295. data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -0
  296. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +45 -1
  297. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +0 -1
  298. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +59 -1
  299. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +1 -0
  300. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +164 -24
  301. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVDebFilterContent.test.js +268 -0
  302. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvDebFilterDetail.fixtures.json +95 -0
  303. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvDebFilterRules.fixtures.json +31 -0
  304. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVDebFilterRules.fixtures.json +10 -0
  305. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +0 -1
  306. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +0 -1
  307. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetail.test.js +15 -0
  308. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetails.fixtures.json +1 -0
  309. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +9 -0
  310. data/webpack/scenes/FlatpakRemotes/CreateEdit/CreateFlatpakRemoteModal.js +5 -3
  311. data/webpack/scenes/FlatpakRemotes/CreateEdit/EditFlatpakRemotesModal.js +1 -1
  312. data/webpack/scenes/FlatpakRemotes/CreateEdit/FlatpakRemoteform.js +35 -3
  313. data/webpack/scenes/FlatpakRemotes/Details/FlatpakRemoteDetails.js +1 -1
  314. data/webpack/scenes/FlatpakRemotes/Details/RemoteRepositories/RemoteRepositoriesTable.css +3 -0
  315. data/webpack/scenes/FlatpakRemotes/Details/RemoteRepositories/RemoteRepositoriesTable.js +63 -132
  316. data/webpack/scenes/FlatpakRemotes/FlatpakRemotesPage.js +67 -143
  317. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +10 -2
  318. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +13 -2
  319. data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +1 -0
  320. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +8 -2
  321. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +67 -1
  322. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +2 -2
  323. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +0 -2
  324. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +2 -2
  325. metadata +83 -55
  326. data/app/lib/actions/katello/host/attach_subscriptions.rb +0 -59
  327. data/app/lib/actions/katello/host/auto_attach_subscriptions.rb +0 -22
  328. data/app/lib/actions/katello/host/remove_subscriptions.rb +0 -50
  329. data/app/lib/actions/katello/organization/simple_content_access/disable.rb +0 -25
  330. data/app/lib/actions/katello/organization/simple_content_access/enable.rb +0 -25
  331. data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +0 -42
  332. data/lib/katello/tasks/migrate_structure_content_for_deb.rake +0 -105
  333. data/lib/katello/tasks/upgrades/4.2/remove_checksum_values.rake +0 -17
  334. data/locale/action_names.rb +0 -186
  335. /data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/__tests__/bootedContainerImages.fixtures.js +0 -0
  336. /data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/index.js +0 -0
@@ -3,7 +3,7 @@
3
3
  "locale_data": {
4
4
  "katello": {
5
5
  "": {
6
- "Project-Id-Version": "katello 4.18.0",
6
+ "Project-Id-Version": "katello 4.19.0.pre.master",
7
7
  "Report-Msgid-Bugs-To": "",
8
8
  "PO-Revision-Date": "2017-12-19 20:14+0000",
9
9
  "Last-Translator": "Bryan Kearney <bryan.kearney@gmail.com>, 2025",
@@ -447,9 +447,6 @@
447
447
  "A remote execution job is in progress.": [
448
448
  ""
449
449
  ],
450
- "A service level for auto-healing process, e.g. SELF-SUPPORT": [
451
- "auto-healing 程序的服務等級,例如 SELF-SUPPORT"
452
- ],
453
450
  "A smart proxy seems to have been refreshed without pulpcore being running. Please refresh the smart proxy after ensuring that pulpcore services are running.": [
454
451
  ""
455
452
  ],
@@ -552,11 +549,14 @@
552
549
  "Add RPM rule": [
553
550
  ""
554
551
  ],
555
- "Add Subscriptions": [
552
+ "Add Red Hat Flatpak remote": [
553
+ ""
554
+ ],
555
+ "Add Red Hat flatpak remote": [
556
556
  ""
557
557
  ],
558
- "Add a subscription to a host": [
559
- "新增訂閱至一部主機"
558
+ "Add Subscriptions": [
559
+ ""
560
560
  ],
561
561
  "Add an alternate content source": [
562
562
  ""
@@ -621,9 +621,6 @@
621
621
  "Add subscriptions consumed by a manifest from Red Hat Subscription Management": [
622
622
  ""
623
623
  ],
624
- "Add subscriptions to one or more hosts": [
625
- ""
626
- ],
627
624
  "Add subscriptions using the Add Subscriptions button.": [
628
625
  ""
629
626
  ],
@@ -891,12 +888,6 @@
891
888
  "Array of pools to add": [
892
889
  ""
893
890
  ],
894
- "Array of subscriptions to add": [
895
- "欲新增的訂閱集"
896
- ],
897
- "Array of subscriptions to remove": [
898
- "欲移除的訂閱集"
899
- ],
900
891
  "Array of uploads to import": [
901
892
  ""
902
893
  ],
@@ -951,15 +942,6 @@
951
942
  "At least one organization must exist.": [
952
943
  "至少必須存在一個組織。"
953
944
  ],
954
- "Attach a subscription": [
955
- "連接一組訂閱服務"
956
- ],
957
- "Attach subscriptions": [
958
- "連接訂閱服務"
959
- ],
960
- "Attach subscriptions to %s": [
961
- "連接訂閱服務至 %s"
962
- ],
963
945
  "Attempted to destroy consumer %s from candlepin, but consumer does not exist in candlepin": [
964
946
  ""
965
947
  ],
@@ -1071,6 +1053,9 @@
1071
1053
  "Bootc upgrade via Bootc interface": [
1072
1054
  ""
1073
1055
  ],
1056
+ "Booted": [
1057
+ ""
1058
+ ],
1074
1059
  "Booted Container Images": [
1075
1060
  ""
1076
1061
  ],
@@ -1539,6 +1524,9 @@
1539
1524
  "Container image tags": [
1540
1525
  ""
1541
1526
  ],
1527
+ "Container images": [
1528
+ ""
1529
+ ],
1542
1530
  "Container manifest lists": [
1543
1531
  ""
1544
1532
  ],
@@ -2052,12 +2040,6 @@
2052
2040
  "Create organization": [
2053
2041
  "建立組織"
2054
2042
  ],
2055
- "Create package filter rule": [
2056
- ""
2057
- ],
2058
- "Create rule": [
2059
- ""
2060
- ],
2061
2043
  "Credentials": [
2062
2044
  ""
2063
2045
  ],
@@ -2457,9 +2439,6 @@
2457
2439
  "Disable Red Hat Insights.": [
2458
2440
  ""
2459
2441
  ],
2460
- "Disable Simple Content Access": [
2461
- ""
2462
- ],
2463
2442
  "Disable a repository from the set": [
2464
2443
  ""
2465
2444
  ],
@@ -2523,6 +2502,9 @@
2523
2502
  "Edit": [
2524
2503
  "編輯"
2525
2504
  ],
2505
+ "Edit DEB rule": [
2506
+ ""
2507
+ ],
2526
2508
  "Edit Flatpak Remote": [
2527
2509
  ""
2528
2510
  ],
@@ -2550,9 +2532,6 @@
2550
2532
  "Edit filter rule": [
2551
2533
  ""
2552
2534
  ],
2553
- "Edit package filter rule": [
2554
- ""
2555
- ],
2556
2535
  "Edit products": [
2557
2536
  ""
2558
2537
  ],
@@ -2595,9 +2574,6 @@
2595
2574
  "Enable Red Hat repositories": [
2596
2575
  ""
2597
2576
  ],
2598
- "Enable Simple Content Access": [
2599
- ""
2600
- ],
2601
2577
  "Enable Tracer": [
2602
2578
  ""
2603
2579
  ],
@@ -3084,6 +3060,9 @@
3084
3060
  "Generate repository applicability": [
3085
3061
  ""
3086
3062
  ],
3063
+ "Generate username and password": [
3064
+ ""
3065
+ ],
3087
3066
  "Generated": [
3088
3067
  ""
3089
3068
  ],
@@ -3507,9 +3486,6 @@
3507
3486
  "If set, newly created APT repos in Katello will use the same repo structure as the remote repos they are synchronized from. You may migrate existing APT repos to match the setting, by running 'foreman-rake katello:migrate_structure_content_for_deb'.": [
3508
3487
  ""
3509
3488
  ],
3510
- "If specified, remove the first instance of a subscription with matching id and quantity": [
3511
- "指定後,使用相符的 ID 與數量,移除訂閱服務的第一個項目"
3512
- ],
3513
3489
  "If the smart proxies' assigned HTTP proxies should be used": [
3514
3490
  ""
3515
3491
  ],
@@ -3933,6 +3909,9 @@
3933
3909
  "It's not possible to promote a rolling content view.": [
3934
3910
  ""
3935
3911
  ],
3912
+ "It's not possible to provide environment_ids for anything other than a rolling content view.": [
3913
+ ""
3914
+ ],
3936
3915
  "It's not possible to publish a rolling content view.": [
3937
3916
  ""
3938
3917
  ],
@@ -4332,6 +4311,9 @@
4332
4311
  "List of hypervisor guest uuids": [
4333
4312
  ""
4334
4313
  ],
4314
+ "List of lifecycle environments for rolling content views": [
4315
+ ""
4316
+ ],
4335
4317
  "List of package group names (Deprecated)": [
4336
4318
  ""
4337
4319
  ],
@@ -5232,9 +5214,6 @@
5232
5214
  "Organization ID": [
5233
5215
  "組織 ID"
5234
5216
  ],
5235
- "Organization ID is required": [
5236
- ""
5237
- ],
5238
5217
  "Organization ID or title": [
5239
5218
  ""
5240
5219
  ],
@@ -5718,6 +5697,9 @@
5718
5697
  "Promotion to Environment": [
5719
5698
  ""
5720
5699
  ],
5700
+ "Provide credentials if the registry requires authentication": [
5701
+ ""
5702
+ ],
5721
5703
  "Provide the required information and click {update} below to save changes.": [
5722
5704
  ""
5723
5705
  ],
@@ -5844,15 +5826,6 @@
5844
5826
  "Quantity of entitlements to bind": [
5845
5827
  ""
5846
5828
  ],
5847
- "Quantity of specified subscription to remove": [
5848
- ""
5849
- ],
5850
- "Quantity of this subscription to add": [
5851
- "要新增此訂閱的數量"
5852
- ],
5853
- "Quantity of this subscriptions to add": [
5854
- "要新增此訂閱的數量"
5855
- ],
5856
5829
  "Quantity to Allocate": [
5857
5830
  ""
5858
5831
  ],
@@ -6021,9 +5994,6 @@
6021
5994
  "Register a host with subscription and information": [
6022
5995
  ""
6023
5996
  ],
6024
- "Register host '%s' before attaching subscriptions": [
6025
- ""
6026
- ],
6027
5997
  "Registered": [
6028
5998
  "已註冊"
6029
5999
  ],
@@ -6168,18 +6138,6 @@
6168
6138
  "Remove products from sync plan": [
6169
6139
  "從同步計畫中移除產品"
6170
6140
  ],
6171
- "Remove subscriptions": [
6172
- "移除訂閱服務"
6173
- ],
6174
- "Remove subscriptions from %s": [
6175
- "從 %s 移除訂閱服務"
6176
- ],
6177
- "Remove subscriptions from a host": [
6178
- ""
6179
- ],
6180
- "Remove subscriptions from one or more hosts": [
6181
- ""
6182
- ],
6183
6141
  "Remove versions and/or environments from a content view and reassign systems and keys": [
6184
6142
  "從內容視域中移除版本且(或)環境,並重新指定系統與金鑰"
6185
6143
  ],
@@ -6399,6 +6357,9 @@
6399
6357
  "Return Red Hat (non-custom) products only": [
6400
6358
  ""
6401
6359
  ],
6360
+ "Return a list of installed debs distinct by name": [
6361
+ ""
6362
+ ],
6402
6363
  "Return a list of installed packages distinct by name": [
6403
6364
  ""
6404
6365
  ],
@@ -6579,6 +6540,9 @@
6579
6540
  "Save": [
6580
6541
  "儲存"
6581
6542
  ],
6543
+ "Save Environments": [
6544
+ ""
6545
+ ],
6582
6546
  "Saving alternate content source...": [
6583
6547
  ""
6584
6548
  ],
@@ -6825,10 +6789,13 @@
6825
6789
  "Service Level (SLA)": [
6826
6790
  ""
6827
6791
  ],
6792
+ "Service level": [
6793
+ ""
6794
+ ],
6828
6795
  "Service level of host": [
6829
6796
  ""
6830
6797
  ],
6831
- "Service level to be used for autoheal": [
6798
+ "Service level, e.g. SELF-SUPPORT": [
6832
6799
  ""
6833
6800
  ],
6834
6801
  "Set content overrides": [
@@ -6855,9 +6822,6 @@
6855
6822
  "Sets the system purpose usage": [
6856
6823
  ""
6857
6824
  ],
6858
- "Sets whether the Host will autoheal subscriptions upon checkin": [
6859
- ""
6860
- ],
6861
6825
  "Setting 'default_location_subscribed_hosts' is not set to a valid location.": [
6862
6826
  ""
6863
6827
  ],
@@ -7008,6 +6972,9 @@
7008
6972
  "Smart proxy name": [
7009
6973
  ""
7010
6974
  ],
6975
+ "Smart proxy verify content checksum has started in the background": [
6976
+ ""
6977
+ ],
7011
6978
  "Sockets": [
7012
6979
  "插槽"
7013
6980
  ],
@@ -7122,7 +7089,7 @@
7122
7089
  "Something went wrong while refreshing alternate content sources: ": [
7123
7090
  ""
7124
7091
  ],
7125
- "Something went wrong while refreshing content counts: ${getResponseErrorMsgs(error.response)}": [
7092
+ "Something went wrong while refreshing content counts: ${getResponseErrorMsgs(error?.response)}": [
7126
7093
  ""
7127
7094
  ],
7128
7095
  "Something went wrong while removing a filter rule! ${getResponseErrorMsgs(error.response)}": [
@@ -7191,6 +7158,9 @@
7191
7158
  "Something went wrong while updating the content source. See the logs for more information": [
7192
7159
  ""
7193
7160
  ],
7161
+ "Something went wrong while verifying content checksums: ${getResponseErrorMsgs(error?.response)}": [
7162
+ ""
7163
+ ],
7194
7164
  "Something went wrong! Please check server logs!": [
7195
7165
  ""
7196
7166
  ],
@@ -7278,9 +7248,6 @@
7278
7248
  "Subscription Details": [
7279
7249
  "訂閱詳細資訊"
7280
7250
  ],
7281
- "Subscription ID": [
7282
- "訂閱 ID"
7283
- ],
7284
7251
  "Subscription Info": [
7285
7252
  "訂閱服務資訊"
7286
7253
  ],
@@ -7296,12 +7263,6 @@
7296
7263
  "Subscription Name": [
7297
7264
  ""
7298
7265
  ],
7299
- "Subscription Pool id": [
7300
- "訂閱集區 ID"
7301
- ],
7302
- "Subscription Pool uuid": [
7303
- "訂閱集區的 UUID"
7304
- ],
7305
7266
  "Subscription UUID": [
7306
7267
  ""
7307
7268
  ],
@@ -7470,6 +7431,9 @@
7470
7431
  "Synced Content": [
7471
7432
  "已同步內容"
7472
7433
  ],
7434
+ "Synced container images content": [
7435
+ ""
7436
+ ],
7473
7437
  "Synchronize": [
7474
7438
  "同步"
7475
7439
  ],
@@ -7719,9 +7683,6 @@
7719
7683
  "The selected/Inherited Content View is not available for this Lifecycle Environment": [
7720
7684
  ""
7721
7685
  ],
7722
- "The specified organization is in Simple Content Access mode. Attaching subscriptions is disabled": [
7723
- ""
7724
- ],
7725
7686
  "The subscription cannot be found upstream": [
7726
7687
  ""
7727
7688
  ],
@@ -7863,12 +7824,6 @@
7863
7824
  "This host is associated with multiple content view environments. If you assign a lifecycle environment and content view here, the host will be removed from the other environments.": [
7864
7825
  ""
7865
7826
  ],
7866
- "This host's organization is in Simple Content Access mode. Attaching subscriptions is disabled.": [
7867
- ""
7868
- ],
7869
- "This host's organization is in Simple Content Access mode. Auto-attach is disabled": [
7870
- ""
7871
- ],
7872
7827
  "This is disabled because a manifest task is in progress": [
7873
7828
  ""
7874
7829
  ],
@@ -7947,6 +7902,9 @@
7947
7902
  "To change content view environments, a specific organization must be selected from the organization context.": [
7948
7903
  ""
7949
7904
  ],
7905
+ "To continue with Red Hat Flatpak remote, you need to generate your username and password in": [
7906
+ ""
7907
+ ],
7950
7908
  "To enable the synced content option, this host must use a content source, content view, and lifecycle environment which contain synced kickstart repositories for the selected architecture and operating system.": [
7951
7909
  ""
7952
7910
  ],
@@ -8022,12 +7980,6 @@
8022
7980
  "Traffic for all alternate content sources associated with this smart proxy will go through the chosen HTTP proxy.": [
8023
7981
  ""
8024
7982
  ],
8025
- "Trigger an auto-attach of subscriptions": [
8026
- "觸發自動連接訂閱服務"
8027
- ],
8028
- "Trigger an auto-attach of subscriptions on one or more hosts": [
8029
- ""
8030
- ],
8031
7983
  "Try changing your search criteria.": [
8032
7984
  ""
8033
7985
  ],
@@ -8181,9 +8133,6 @@
8181
8133
  "Unapplied Errata": [
8182
8134
  "未套用的勘誤"
8183
8135
  ],
8184
- "Unattach a subscription": [
8185
- "取消訂閱的連結"
8186
- ],
8187
8136
  "Unfiltered params array: %s.": [
8188
8137
  ""
8189
8138
  ],
@@ -8538,6 +8487,9 @@
8538
8487
  "Value must either be a boolean or 'default' for 'enabled'": [
8539
8488
  ""
8540
8489
  ],
8490
+ "Verify Content Checksum": [
8491
+ ""
8492
+ ],
8541
8493
  "Verify SSL": [
8542
8494
  "驗證 SSL"
8543
8495
  ],
@@ -8622,6 +8574,9 @@
8622
8574
  "View by": [
8623
8575
  ""
8624
8576
  ],
8577
+ "View container images in the local registry using the Synced tab. View container images booted by image mode hosts using the Booted tab. The Booted tab also shows images outside of the local container registry.": [
8578
+ ""
8579
+ ],
8625
8580
  "View content views": [
8626
8581
  ""
8627
8582
  ],
@@ -8910,9 +8865,6 @@
8910
8865
  "attempted to sync without a feed URL": [
8911
8866
  "試圖在沒有 feed URL 的情況下同步"
8912
8867
  ],
8913
- "auto attach subscriptions upon registration": [
8914
- "註冊後自動連接訂閱"
8915
- ],
8916
8868
  "base url to perform repo discovery on": [
8917
8869
  "進行軟體庫復原的基礎網址"
8918
8870
  ],
@@ -9549,9 +9501,6 @@
9549
9501
  "start datetime of synchronization": [
9550
9502
  "開始同步的日期與時間"
9551
9503
  ],
9552
- "subscriptions not specified": [
9553
- "未指定訂閱服務"
9554
- ],
9555
9504
  "sync plan description": [
9556
9505
  "同步計畫的描述"
9557
9506
  ],
@@ -7,6 +7,7 @@ module Katello
7
7
  skip_before_action :authorize
8
8
  before_action :optional_authorize, only: [:token, :catalog]
9
9
  before_action :registry_authorize, except: [:token, :v1_search, :catalog, :static_index]
10
+ before_action :static_index_authorize, only: [:static_index]
10
11
  before_action :authorize_repository_read, only: [:pull_manifest, :tags_list, :check_blob, :pull_blob]
11
12
  before_action :container_push_prop_validation, only: [:start_upload_blob, :upload_blob, :finish_upload_blob, :push_manifest]
12
13
  before_action :create_container_repo_if_needed, only: [:start_upload_blob, :upload_blob, :finish_upload_blob, :push_manifest]
@@ -63,7 +64,7 @@ module Katello
63
64
  "scope=\"repository:registry:pull,push\""
64
65
  end
65
66
 
66
- def set_user_by_token(token, redirect_on_failure = true)
67
+ def authenticate_from_request(token, redirect_on_failure = true)
67
68
  if token
68
69
  token_type, token = token.split
69
70
  if token_type == 'Bearer' && token
@@ -94,7 +95,7 @@ module Katello
94
95
  if @repository && (@repository.environment.registry_unauthenticated_pull || ssl_client_authorized?(@repository.organization.label))
95
96
  true
96
97
  elsif params['action'] == 'catalog'
97
- set_user_by_token(request.headers['Authorization'], false)
98
+ authenticate_from_request(request.headers['Authorization'], false)
98
99
  elsif (params['action'] == 'token' && params['scope'].blank? && params['account'].blank?)
99
100
  true
100
101
  else
@@ -106,13 +107,26 @@ module Katello
106
107
  @repository = find_readable_repository
107
108
  return true if ['GET', 'HEAD'].include?(request.method) && @repository && !require_user_authorization?
108
109
 
109
- is_user_set = set_user_by_token(request.headers['Authorization'])
110
+ return true if authenticate_from_request(request.headers['Authorization'])
110
111
 
111
- return true if is_user_set
112
+ unauthorized
113
+ end
112
114
 
115
+ def static_index_authorize
116
+ authenticate_from_request(request.headers['Authorization'])
117
+ find_host_by_ip unless @host
118
+ true
119
+ end
120
+
121
+ def find_host_by_ip
122
+ host_ip = request.remote_ip
123
+ @host = ::Host.joins(:primary_interface).where("nics.ip = :host_ip OR nics.ip6 = :host_ip", host_ip: host_ip)&.first
124
+ end
125
+
126
+ def unauthorized
113
127
  redirect_authorization_headers
114
128
  render_error('unauthorized', :status => :unauthorized)
115
- return false
129
+ false
116
130
  end
117
131
 
118
132
  def container_push_prop_validation(props = nil)
@@ -416,7 +430,12 @@ module Katello
416
430
  )
417
431
  end
418
432
 
419
- instance_repo.update!(version_href: latest_version_href)
433
+ # Fetch version PRN from Pulp API
434
+ # FIXME: Remove this workaround when https://github.com/pulp/pulpcore/issues/7008 is resolved
435
+ version_response = pulp_api.repository_versions_api.read(latest_version_href, {fields: 'prn'})
436
+ latest_version_prn = version_response&.prn
437
+
438
+ instance_repo.update!(version_href: latest_version_href, version_prn: latest_version_prn)
420
439
  # The Pulp repository should not change after first creation
421
440
  if root_repository.repository_references.empty?
422
441
  ::Katello::Pulp3::RepositoryReference.where(root_repository_id: instance_repo.root_id,
@@ -432,6 +451,7 @@ module Katello
432
451
  instance_repo = root_repository&.library_instance
433
452
  distribution_api_response = pulp_api.container_push_distribution_for_repository(pulp_repo_href)
434
453
  pulp_distribution_href = distribution_api_response&.pulp_href
454
+ pulp_distribution_prn = distribution_api_response&.prn
435
455
 
436
456
  if pulp_distribution_href.empty?
437
457
  return render_podman_error(
@@ -445,11 +465,12 @@ module Katello
445
465
  repository_id: instance_repo.id).first
446
466
  if dist
447
467
  if dist.href != pulp_distribution_href
448
- dist.update(href: pulp_distribution_href)
468
+ dist.update(href: pulp_distribution_href, prn: pulp_distribution_prn)
449
469
  end
450
470
  else
451
471
  ::Katello::Pulp3::DistributionReference.create!(path: @container_path_input,
452
472
  href: pulp_distribution_href,
473
+ prn: pulp_distribution_prn,
453
474
  repository_id: instance_repo.id)
454
475
  end
455
476
  end
@@ -851,12 +872,20 @@ module Katello
851
872
  end
852
873
 
853
874
  def static_index
854
- host_ip = request.remote_ip
855
- @host ||= ::Host.joins(:primary_interface).where("nics.ip = :host_ip OR nics.ip6 = :host_ip", host_ip: host_ip)&.first
856
- flatpak_index = (redirect_client { Resources::Registry::Proxy.get(@_request.fullpath, headers) })
857
- flatpak_index_json = JSON.parse(flatpak_index)
858
875
  repos = Repository.readable_docker_catalog(@host)
859
- available_container_repo_names = repos.map(&:container_repository_name)
876
+ return render json: { 'Registry' => request_url, 'Results' => [] } if repos.empty?
877
+
878
+ available_container_repo_names = repos.map(&:container_repository_name).compact
879
+
880
+ flatpak_index = (redirect_client { Resources::Registry::Proxy.get(@_request.fullpath, headers) })
881
+
882
+ begin
883
+ flatpak_index_json = JSON.parse(flatpak_index)
884
+ rescue JSON::ParserError => e
885
+ Rails.logger.error("Failed to parse flatpak index JSON: #{e.message}")
886
+ return render json: { 'Registry' => request_url, 'Results' => [] }
887
+ end
888
+
860
889
  flatpak_index_json['Results'] = flatpak_index_json['Results'].select do |result|
861
890
  available_container_repo_names.include?(result['Name'])
862
891
  end
@@ -447,7 +447,7 @@ module Katello
447
447
  end
448
448
 
449
449
  def rhsm_params
450
- params.slice(:name, :type, :facts, :installedProducts, :autoheal, :releaseVer, :usage, :role, :serviceLevel, :uuid, :capabilities, :guestIds, :lastCheckin).to_h
450
+ params.slice(:name, :type, :facts, :installedProducts, :releaseVer, :usage, :role, :serviceLevel, :uuid, :capabilities, :guestIds, :lastCheckin).to_h
451
451
  end
452
452
 
453
453
  def logger
@@ -7,13 +7,11 @@ module Katello
7
7
  before_action :find_optional_organization, :only => [:index, :create, :show]
8
8
  before_action :find_authorized_katello_resource, :only => [:show, :update, :destroy, :available_releases,
9
9
  :available_host_collections, :add_host_collections, :remove_host_collections,
10
- :content_override, :add_subscriptions, :remove_subscriptions,
11
- :subscriptions]
10
+ :content_override, :subscriptions]
12
11
  before_action :find_content_view_environments, :only => [:create, :update]
13
- before_action :verify_simple_content_access_disabled, :only => [:add_subscriptions]
14
12
  before_action :validate_release_version, :only => [:create, :update]
15
13
 
16
- wrap_parameters :include => (ActivationKey.attribute_names + %w(host_collection_ids service_level auto_attach purpose_role purpose_usage content_view_environments))
14
+ wrap_parameters :include => (ActivationKey.attribute_names + %w(host_collection_ids service_level purpose_role purpose_usage content_view_environments))
17
15
 
18
16
  def_param_group :activation_key do
19
17
  param :organization_id, :number, :desc => N_("organization identifier"), :required => true
@@ -22,7 +20,6 @@ module Katello
22
20
  param :unlimited_hosts, :bool, :desc => N_("can the activation key have unlimited hosts")
23
21
  param :release_version, String, :desc => N_("content release version")
24
22
  param :service_level, String, :desc => N_("service level")
25
- param :auto_attach, :bool, :desc => N_("auto attach subscriptions upon registration"), deprecated: true
26
23
  param :purpose_usage, String, :desc => N_("Sets the system purpose usage")
27
24
  param :purpose_role, String, :desc => N_("Sets the system purpose usage")
28
25
 
@@ -125,8 +122,7 @@ module Katello
125
122
  @new_activation_key.reload
126
123
  sync_task(::Actions::Katello::ActivationKey::Update, @new_activation_key,
127
124
  :service_level => @activation_key.service_level,
128
- :release_version => @activation_key.release_version,
129
- :auto_attach => @activation_key.auto_attach
125
+ :release_version => @activation_key.release_version
130
126
  )
131
127
  @activation_key.pools.each do |pool|
132
128
  @new_activation_key.subscribe(pool[:id])
@@ -181,46 +177,6 @@ module Katello
181
177
  respond_for_show(:resource => @activation_key)
182
178
  end
183
179
 
184
- def deprecate_entitlement_mode_endpoint
185
- ::Foreman::Deprecation.api_deprecation_warning(N_("This endpoint is deprecated and will be removed in an upcoming release. Simple Content Access is the only supported content access mode."))
186
- end
187
-
188
- api :PUT, "/activation_keys/:id/add_subscriptions", N_("Attach a subscription"), deprecated: true
189
- param :id, :number, :desc => N_("ID of the activation key"), :required => true
190
- param :subscription_id, :number, :desc => N_("Subscription identifier"), :required => false
191
- param :quantity, :number, :desc => N_("Quantity of this subscription to add"), :required => false
192
- param :subscriptions, Array, :desc => N_("Array of subscriptions to add"), :required => false do
193
- param :id, String, :desc => N_("Subscription Pool uuid"), :required => false
194
- param :quantity, :number, :desc => N_("Quantity of this subscriptions to add"), :required => false
195
- end
196
- def add_subscriptions
197
- deprecate_entitlement_mode_endpoint
198
- if params[:subscriptions]
199
- params[:subscriptions].each { |subscription| @activation_key.subscribe(subscription[:id], subscription[:quantity]) }
200
- elsif params[:subscription_id]
201
- @activation_key.subscribe(params[:subscription_id], params[:quantity])
202
- end
203
-
204
- respond_for_index(:collection => subscription_index, :template => 'subscriptions')
205
- end
206
-
207
- api :PUT, "/activation_keys/:id/remove_subscriptions", N_("Unattach a subscription"), deprecated: true
208
- param :id, :number, :desc => N_("ID of the activation key"), :required => true
209
- param :subscription_id, String, :desc => N_("Subscription ID"), :required => false
210
- param :subscriptions, Array, :desc => N_("Array of subscriptions to add"), :required => false do
211
- param :id, String, :desc => N_("Subscription Pool uuid"), :required => false
212
- end
213
- def remove_subscriptions
214
- deprecate_entitlement_mode_endpoint
215
- if params[:subscriptions]
216
- params[:subscriptions].each { |subscription| @activation_key.unsubscribe(subscription[:id]) }
217
- elsif params[:subscription_id]
218
- @activation_key.unsubscribe(params[:subscription_id])
219
- end
220
-
221
- respond_for_index(:collection => subscription_index, :template => 'subscriptions')
222
- end
223
-
224
180
  api :PUT, "/activation_keys/:id/content_override", N_("Override content for activation_key")
225
181
  param :id, :number, :desc => N_("ID of the activation key"), :required => true
226
182
  param :content_overrides, Array, :desc => N_("Array of Content override parameters to be added in bulk") do
@@ -273,17 +229,6 @@ module Katello
273
229
 
274
230
  private
275
231
 
276
- def subscription_index
277
- subs = @activation_key.subscriptions
278
- {
279
- :results => subs,
280
- :subtotal => subs.count,
281
- :total => subs.count,
282
- :page => 1,
283
- :per_page => subs.count,
284
- }
285
- end
286
-
287
232
  def find_cve_for_single
288
233
  environment_id = params.dig(:environment, :id) || params[:environment_id]
289
234
  content_view_id = params.dig(:content_view, :id) || params[:content_view_id]
@@ -379,7 +324,6 @@ module Katello
379
324
  :content_view_id,
380
325
  :release_version,
381
326
  :service_level,
382
- :auto_attach,
383
327
  :max_hosts,
384
328
  :unlimited_hosts,
385
329
  :purpose_role,
@@ -408,12 +352,6 @@ module Katello
408
352
  key_params
409
353
  end
410
354
 
411
- def verify_simple_content_access_disabled
412
- if @activation_key.organization.simple_content_access?
413
- fail HttpErrors::BadRequest, _("The specified organization is in Simple Content Access mode. Attaching subscriptions is disabled")
414
- end
415
- end
416
-
417
355
  def validate_release_version
418
356
  @organization ||= find_organization
419
357
  if params[:release_version].present? && !@organization.library.available_releases.include?(params[:release_version])