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
@@ -0,0 +1,73 @@
1
+ class AddPulpPrnFields < ActiveRecord::Migration[7.0]
2
+ # rubocop:disable Metrics/MethodLength
3
+ def up
4
+ # Tables with pulp_href fields - add pulp_prn field
5
+ add_column :katello_content_guards, :pulp_prn, :string
6
+
7
+ # Tables with pulp_id fields - add pulp_prn field
8
+ add_column :katello_ansible_collections, :pulp_prn, :string
9
+ add_column :katello_generic_content_units, :pulp_prn, :string
10
+ add_column :katello_module_streams, :pulp_prn, :string
11
+ add_column :katello_docker_manifest_lists, :pulp_prn, :string
12
+ add_column :katello_docker_manifests, :pulp_prn, :string
13
+ add_column :katello_docker_tags, :pulp_prn, :string
14
+ add_column :katello_rpms, :pulp_prn, :string
15
+ add_column :katello_srpms, :pulp_prn, :string
16
+ add_column :katello_files, :pulp_prn, :string # FileUnit uses table_name 'katello_files'
17
+ add_column :katello_package_groups, :pulp_prn, :string
18
+ add_column :katello_debs, :pulp_prn, :string
19
+
20
+ # Tables with other href fields - add corresponding _prn fields
21
+ add_column :katello_repositories, :remote_prn, :string
22
+ add_column :katello_repositories, :publication_prn, :string
23
+ add_column :katello_repositories, :version_prn, :string
24
+ add_column :katello_distribution_references, :prn, :string
25
+ add_column :katello_distribution_references, :content_guard_prn, :string
26
+ add_column :katello_repository_references, :repository_prn, :string
27
+ add_column :katello_repository_errata, :erratum_prn, :string
28
+ add_column :katello_smart_proxy_alternate_content_sources, :remote_prn, :string
29
+ add_column :katello_smart_proxy_alternate_content_sources, :alternate_content_source_prn, :string
30
+
31
+ # Add indexes for performance on commonly queried fields
32
+ add_index :katello_content_guards, :pulp_prn
33
+ add_index :katello_repositories, :remote_prn
34
+ add_index :katello_repositories, :publication_prn
35
+ add_index :katello_repositories, :version_prn
36
+ add_index :katello_repository_errata, :erratum_prn
37
+ end
38
+
39
+ def down
40
+ # Remove indexes
41
+ remove_index :katello_content_guards, :pulp_prn
42
+ remove_index :katello_repositories, :remote_prn
43
+ remove_index :katello_repositories, :publication_prn
44
+ remove_index :katello_repositories, :version_prn
45
+ remove_index :katello_repository_errata, :erratum_prn
46
+
47
+ # Remove columns - pulp_prn fields
48
+ remove_column :katello_content_guards, :pulp_prn
49
+ remove_column :katello_ansible_collections, :pulp_prn
50
+ remove_column :katello_generic_content_units, :pulp_prn
51
+ remove_column :katello_module_streams, :pulp_prn
52
+ remove_column :katello_docker_manifest_lists, :pulp_prn
53
+ remove_column :katello_docker_manifests, :pulp_prn
54
+ remove_column :katello_docker_tags, :pulp_prn
55
+ remove_column :katello_rpms, :pulp_prn
56
+ remove_column :katello_srpms, :pulp_prn
57
+ remove_column :katello_files, :pulp_prn
58
+ remove_column :katello_package_groups, :pulp_prn
59
+ remove_column :katello_debs, :pulp_prn
60
+
61
+ # Remove columns - other _prn fields
62
+ remove_column :katello_repositories, :remote_prn
63
+ remove_column :katello_repositories, :publication_prn
64
+ remove_column :katello_repositories, :version_prn
65
+ remove_column :katello_distribution_references, :prn
66
+ remove_column :katello_distribution_references, :content_guard_prn
67
+ remove_column :katello_repository_references, :repository_prn
68
+ remove_column :katello_repository_errata, :erratum_prn
69
+ remove_column :katello_smart_proxy_alternate_content_sources, :remote_prn
70
+ remove_column :katello_smart_proxy_alternate_content_sources, :alternate_content_source_prn
71
+ end
72
+ # rubocop:enable Metrics/MethodLength
73
+ end
@@ -0,0 +1,403 @@
1
+ # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/ClassLength
2
+ class PopulatePulpPrnFields < ActiveRecord::Migration[7.0]
3
+ def up
4
+ # Content Guards - RHSM cert guards
5
+ Katello::Pulp3::ContentGuard.where.not(pulp_href: nil).update_all(
6
+ "pulp_prn = CASE
7
+ WHEN pulp_href ~ '/contentguards/certguard/rhsm/' THEN
8
+ 'prn:certguard.rhsmcertguard:' ||
9
+ regexp_replace(pulp_href, '^.*/([^/]+)/?$', '\\1')
10
+ ELSE NULL
11
+ END"
12
+ )
13
+
14
+ # Repositories - remote_prn
15
+ Katello::Repository.where.not(remote_href: nil).update_all(
16
+ "remote_prn = CASE
17
+ WHEN remote_href ~ '/remotes/rpm/rpm/' THEN
18
+ 'prn:rpm.rpmremote:' ||
19
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
20
+ WHEN remote_href ~ '/remotes/rpm/uln/' THEN
21
+ 'prn:rpm.ulnremote:' ||
22
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
23
+ WHEN remote_href ~ '/remotes/deb/apt/' THEN
24
+ 'prn:deb.aptremote:' ||
25
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
26
+ WHEN remote_href ~ '/remotes/container/container/' THEN
27
+ 'prn:container.containerremote:' ||
28
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
29
+ WHEN remote_href ~ '/remotes/ansible/collection/' THEN
30
+ 'prn:ansible.collectionremote:' ||
31
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
32
+ WHEN remote_href ~ '/remotes/python/python/' THEN
33
+ 'prn:python.pythonremote:' ||
34
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
35
+ WHEN remote_href ~ '/remotes/file/file/' THEN
36
+ 'prn:file.fileremote:' ||
37
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
38
+ WHEN remote_href ~ '/remotes/ostree/ostree/' THEN
39
+ 'prn:ostree.ostreeremote:' ||
40
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
41
+ ELSE NULL
42
+ END"
43
+ )
44
+
45
+ # Repositories - publication_prn
46
+ Katello::Repository.where.not(publication_href: nil).update_all(
47
+ "publication_prn = CASE
48
+ WHEN publication_href ~ '/publications/rpm/rpm/' THEN
49
+ 'prn:rpm.rpmpublication:' ||
50
+ regexp_replace(publication_href, '^.*/([^/]+)/?$', '\\1')
51
+ WHEN publication_href ~ '/publications/deb/apt/' THEN
52
+ 'prn:deb.aptpublication:' ||
53
+ regexp_replace(publication_href, '^.*/([^/]+)/?$', '\\1')
54
+ WHEN publication_href ~ '/publications/container/container/' THEN
55
+ 'prn:container.containerpublication:' ||
56
+ regexp_replace(publication_href, '^.*/([^/]+)/?$', '\\1')
57
+ WHEN publication_href ~ '/publications/ansible/ansible/' THEN
58
+ 'prn:ansible.ansiblepublication:' ||
59
+ regexp_replace(publication_href, '^.*/([^/]+)/?$', '\\1')
60
+ WHEN publication_href ~ '/publications/python/pypi/' THEN
61
+ 'prn:python.pythonpublication:' ||
62
+ regexp_replace(publication_href, '^.*/([^/]+)/?$', '\\1')
63
+ WHEN publication_href ~ '/publications/file/file/' THEN
64
+ 'prn:file.filepublication:' ||
65
+ regexp_replace(publication_href, '^.*/([^/]+)/?$', '\\1')
66
+ ELSE NULL
67
+ END"
68
+ )
69
+
70
+ # Ansible Collections - Process in batches due to potentially large number of records
71
+ Katello::AnsibleCollection.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
72
+ batch.update_all(
73
+ "pulp_prn = CASE
74
+ WHEN pulp_id ~ '/content/ansible/collection_versions/' THEN
75
+ 'prn:ansible.collectionversion:' ||
76
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
77
+ ELSE NULL
78
+ END"
79
+ )
80
+ end
81
+
82
+ # Generic Content Units - Process in batches due to potentially large number of records
83
+ Katello::GenericContentUnit.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
84
+ batch.update_all(
85
+ "pulp_prn = CASE
86
+ WHEN pulp_id ~ '/content/python/packages/' THEN
87
+ 'prn:python.pythonpackagecontent:' ||
88
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
89
+ WHEN pulp_id ~ '/content/ostree/refs/' THEN
90
+ 'prn:ostree.ostreeref:' ||
91
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
92
+ ELSE NULL
93
+ END"
94
+ )
95
+ end
96
+
97
+ # Module Streams - Process in batches due to potentially large number of records
98
+ Katello::ModuleStream.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
99
+ batch.update_all(
100
+ "pulp_prn = CASE
101
+ WHEN pulp_id ~ '/content/rpm/modulemds/' THEN
102
+ 'prn:rpm.modulemd:' ||
103
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
104
+ ELSE NULL
105
+ END"
106
+ )
107
+ end
108
+
109
+ # Docker Manifest Lists - Process in batches due to potentially large number of records
110
+ Katello::DockerManifestList.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
111
+ batch.update_all(
112
+ "pulp_prn = CASE
113
+ WHEN pulp_id ~ '/content/container/manifests/' THEN
114
+ 'prn:container.manifest:' ||
115
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
116
+ ELSE NULL
117
+ END"
118
+ )
119
+ end
120
+
121
+ # Docker Manifests - Process in batches due to potentially large number of records
122
+ Katello::DockerManifest.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
123
+ batch.update_all(
124
+ "pulp_prn = CASE
125
+ WHEN pulp_id ~ '/content/container/manifests/' THEN
126
+ 'prn:container.manifest:' ||
127
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
128
+ ELSE NULL
129
+ END"
130
+ )
131
+ end
132
+
133
+ # Docker Tags - Process in batches due to potentially large number of records
134
+ Katello::DockerTag.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
135
+ batch.update_all(
136
+ "pulp_prn = CASE
137
+ WHEN pulp_id ~ '/content/container/tags/' THEN
138
+ 'prn:container.tag:' ||
139
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
140
+ ELSE NULL
141
+ END"
142
+ )
143
+ end
144
+
145
+ # RPMs - Process in batches due to potentially millions of records
146
+ Katello::Rpm.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
147
+ batch.update_all(
148
+ "pulp_prn = CASE
149
+ WHEN pulp_id ~ '/content/rpm/packages/' THEN
150
+ 'prn:rpm.package:' ||
151
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
152
+ ELSE NULL
153
+ END"
154
+ )
155
+ end
156
+
157
+ # SRPMs - Process in batches due to potentially large number of records
158
+ Katello::Srpm.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
159
+ batch.update_all(
160
+ "pulp_prn = CASE
161
+ WHEN pulp_id ~ '/content/rpm/packages/' THEN
162
+ 'prn:rpm.package:' ||
163
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
164
+ ELSE NULL
165
+ END"
166
+ )
167
+ end
168
+
169
+ # Files (FileUnit uses table_name 'katello_files') - Process in batches due to potentially large number of records
170
+ Katello::FileUnit.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
171
+ batch.update_all(
172
+ "pulp_prn = CASE
173
+ WHEN pulp_id ~ '/content/file/files/' THEN
174
+ 'prn:file.filecontent:' ||
175
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
176
+ ELSE NULL
177
+ END"
178
+ )
179
+ end
180
+
181
+ # Package Groups - Process in batches due to potentially large number of records
182
+ Katello::PackageGroup.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
183
+ batch.update_all(
184
+ "pulp_prn = CASE
185
+ WHEN pulp_id ~ '/content/rpm/packagegroups/' THEN
186
+ 'prn:rpm.packagegroup:' ||
187
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
188
+ ELSE NULL
189
+ END"
190
+ )
191
+ end
192
+
193
+ # Debs - Process in batches due to potentially large number of records
194
+ Katello::Deb.where.not(pulp_id: nil).in_batches(of: 10_000) do |batch|
195
+ batch.update_all(
196
+ "pulp_prn = CASE
197
+ WHEN pulp_id ~ '/content/deb/packages/' THEN
198
+ 'prn:deb.package:' ||
199
+ regexp_replace(pulp_id, '^.*/([^/]+)/?$', '\\1')
200
+ ELSE NULL
201
+ END"
202
+ )
203
+ end
204
+
205
+ # Distribution References - prn
206
+ Katello::Pulp3::DistributionReference.where.not(href: nil).update_all(
207
+ "prn = CASE
208
+ WHEN href ~ '/distributions/rpm/rpm/' THEN
209
+ 'prn:rpm.rpmdistribution:' ||
210
+ regexp_replace(href, '^.*/([^/]+)/?$', '\\1')
211
+ WHEN href ~ '/distributions/deb/apt/' THEN
212
+ 'prn:deb.aptdistribution:' ||
213
+ regexp_replace(href, '^.*/([^/]+)/?$', '\\1')
214
+ WHEN href ~ '/distributions/container/container/' THEN
215
+ 'prn:container.containerdistribution:' ||
216
+ regexp_replace(href, '^.*/([^/]+)/?$', '\\1')
217
+ WHEN href ~ '/distributions/ansible/ansible/' THEN
218
+ 'prn:ansible.ansibledistribution:' ||
219
+ regexp_replace(href, '^.*/([^/]+)/?$', '\\1')
220
+ WHEN href ~ '/distributions/python/pypi/' THEN
221
+ 'prn:python.pythondistribution:' ||
222
+ regexp_replace(href, '^.*/([^/]+)/?$', '\\1')
223
+ WHEN href ~ '/distributions/file/file/' THEN
224
+ 'prn:file.filedistribution:' ||
225
+ regexp_replace(href, '^.*/([^/]+)/?$', '\\1')
226
+ WHEN href ~ '/distributions/ostree/ostree/' THEN
227
+ 'prn:ostree.ostreedistribution:' ||
228
+ regexp_replace(href, '^.*/([^/]+)/?$', '\\1')
229
+ ELSE NULL
230
+ END"
231
+ )
232
+
233
+ # Distribution References - content_guard_prn
234
+ Katello::Pulp3::DistributionReference.where.not(content_guard_href: nil).update_all(
235
+ "content_guard_prn = CASE
236
+ WHEN content_guard_href ~ '/contentguards/certguard/rhsm/' THEN
237
+ 'prn:certguard.rhsmcertguard:' ||
238
+ regexp_replace(content_guard_href, '^.*/([^/]+)/?$', '\\1')
239
+ ELSE NULL
240
+ END"
241
+ )
242
+
243
+ # Repository References - repository_prn
244
+ Katello::Pulp3::RepositoryReference.where.not(repository_href: nil).update_all(
245
+ "repository_prn = CASE
246
+ WHEN repository_href ~ '/repositories/rpm/rpm/' THEN
247
+ 'prn:rpm.rpmrepository:' ||
248
+ regexp_replace(repository_href, '^.*/([^/]+)/?$', '\\1')
249
+ WHEN repository_href ~ '/repositories/deb/apt/' THEN
250
+ 'prn:deb.aptrepository:' ||
251
+ regexp_replace(repository_href, '^.*/([^/]+)/?$', '\\1')
252
+ WHEN repository_href ~ '/repositories/container/container/' THEN
253
+ 'prn:container.containerrepository:' ||
254
+ regexp_replace(repository_href, '^.*/([^/]+)/?$', '\\1')
255
+ WHEN repository_href ~ '/repositories/ansible/ansible/' THEN
256
+ 'prn:ansible.ansiblerepository:' ||
257
+ regexp_replace(repository_href, '^.*/([^/]+)/?$', '\\1')
258
+ WHEN repository_href ~ '/repositories/python/python/' THEN
259
+ 'prn:python.pythonrepository:' ||
260
+ regexp_replace(repository_href, '^.*/([^/]+)/?$', '\\1')
261
+ WHEN repository_href ~ '/repositories/file/file/' THEN
262
+ 'prn:file.filerepository:' ||
263
+ regexp_replace(repository_href, '^.*/([^/]+)/?$', '\\1')
264
+ WHEN repository_href ~ '/repositories/ostree/ostree/' THEN
265
+ 'prn:ostree.ostreerepository:' ||
266
+ regexp_replace(repository_href, '^.*/([^/]+)/?$', '\\1')
267
+ ELSE NULL
268
+ END"
269
+ )
270
+
271
+ # Repository Errata - erratum_prn
272
+ Katello::RepositoryErratum.where.not(erratum_pulp3_href: nil).update_all(
273
+ "erratum_prn = CASE
274
+ WHEN erratum_pulp3_href ~ '/content/rpm/advisories/' THEN
275
+ 'prn:rpm.updaterecord:' ||
276
+ regexp_replace(erratum_pulp3_href, '^.*/([^/]+)/?$', '\\1')
277
+ ELSE NULL
278
+ END"
279
+ )
280
+
281
+ # Smart Proxy Alternate Content Sources - remote_prn
282
+ Katello::SmartProxyAlternateContentSource.where.not(remote_href: nil).update_all(
283
+ "remote_prn = CASE
284
+ WHEN remote_href ~ '/remotes/rpm/rpm/' THEN
285
+ 'prn:rpm.rpmremote:' ||
286
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
287
+ WHEN remote_href ~ '/remotes/rpm/uln/' THEN
288
+ 'prn:rpm.ulnremote:' ||
289
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
290
+ WHEN remote_href ~ '/remotes/deb/apt/' THEN
291
+ 'prn:deb.aptremote:' ||
292
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
293
+ WHEN remote_href ~ '/remotes/container/container/' THEN
294
+ 'prn:container.containerremote:' ||
295
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
296
+ WHEN remote_href ~ '/remotes/ansible/collection/' THEN
297
+ 'prn:ansible.collectionremote:' ||
298
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
299
+ WHEN remote_href ~ '/remotes/python/python/' THEN
300
+ 'prn:python.pythonremote:' ||
301
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
302
+ WHEN remote_href ~ '/remotes/file/file/' THEN
303
+ 'prn:file.fileremote:' ||
304
+ regexp_replace(remote_href, '^.*/([^/]+)/?$', '\\1')
305
+ ELSE NULL
306
+ END"
307
+ )
308
+
309
+ # Smart Proxy Alternate Content Sources - alternate_content_source_prn
310
+ Katello::SmartProxyAlternateContentSource.where.not(alternate_content_source_href: nil).update_all(
311
+ "alternate_content_source_prn = CASE
312
+ WHEN alternate_content_source_href ~ '/acs/rpm/rpm/' THEN
313
+ 'prn:rpm.rpmalternatecontentsource:' ||
314
+ regexp_replace(alternate_content_source_href, '^.*/([^/]+)/?$', '\\1')
315
+ WHEN alternate_content_source_href ~ '/acs/file/file/' THEN
316
+ 'prn:file.filealternatecontentsource:' ||
317
+ regexp_replace(alternate_content_source_href, '^.*/([^/]+)/?$', '\\1')
318
+ ELSE NULL
319
+ END"
320
+ )
321
+
322
+ # # Add NOT NULL constraints to PRN fields that correspond to required href fields
323
+ # # These constraints match the NOT NULL constraints on their corresponding href fields
324
+ # change_column_null :katello_content_guards, :pulp_prn, false
325
+ # change_column_null :katello_repository_references, :repository_prn, false
326
+ #
327
+ # # Add NOT NULL constraints to all pulp_prn fields for content tables
328
+ # change_column_null :katello_ansible_collections, :pulp_prn, false
329
+ # change_column_null :katello_generic_content_units, :pulp_prn, false
330
+ # change_column_null :katello_module_streams, :pulp_prn, false
331
+ # change_column_null :katello_docker_manifest_lists, :pulp_prn, false
332
+ # change_column_null :katello_docker_manifests, :pulp_prn, false
333
+ # change_column_null :katello_docker_tags, :pulp_prn, false
334
+ # change_column_null :katello_rpms, :pulp_prn, false
335
+ # change_column_null :katello_srpms, :pulp_prn, false
336
+ # change_column_null :katello_files, :pulp_prn, false
337
+ # change_column_null :katello_package_groups, :pulp_prn, false
338
+ # change_column_null :katello_debs, :pulp_prn, false
339
+ #
340
+ # # Add unique indexes for all pulp_prn fields for content tables
341
+ # add_index :katello_ansible_collections, :pulp_prn, unique: true
342
+ # add_index :katello_generic_content_units, :pulp_prn, unique: true
343
+ # add_index :katello_module_streams, :pulp_prn, unique: true
344
+ # add_index :katello_docker_manifest_lists, :pulp_prn, unique: true
345
+ # add_index :katello_docker_manifests, :pulp_prn, unique: true
346
+ # add_index :katello_docker_tags, :pulp_prn, unique: true
347
+ # add_index :katello_rpms, :pulp_prn, unique: true
348
+ # add_index :katello_srpms, :pulp_prn, unique: true
349
+ # add_index :katello_files, :pulp_prn, unique: true
350
+ # add_index :katello_package_groups, :pulp_prn, unique: true
351
+ # add_index :katello_debs, :pulp_prn, unique: true
352
+ end
353
+
354
+ def down
355
+ # # Remove unique indexes before clearing data
356
+ # remove_index :katello_ansible_collections, :pulp_prn
357
+ # remove_index :katello_generic_content_units, :pulp_prn
358
+ # remove_index :katello_module_streams, :pulp_prn
359
+ # remove_index :katello_docker_manifest_lists, :pulp_prn
360
+ # remove_index :katello_docker_manifests, :pulp_prn
361
+ # remove_index :katello_docker_tags, :pulp_prn
362
+ # remove_index :katello_rpms, :pulp_prn
363
+ # remove_index :katello_srpms, :pulp_prn
364
+ # remove_index :katello_files, :pulp_prn
365
+ # remove_index :katello_package_groups, :pulp_prn
366
+ # remove_index :katello_debs, :pulp_prn
367
+ #
368
+ # # Remove NOT NULL constraints before clearing data
369
+ # change_column_null :katello_content_guards, :pulp_prn, true
370
+ # change_column_null :katello_repository_references, :repository_prn, true
371
+ # change_column_null :katello_ansible_collections, :pulp_prn, true
372
+ # change_column_null :katello_generic_content_units, :pulp_prn, true
373
+ # change_column_null :katello_module_streams, :pulp_prn, true
374
+ # change_column_null :katello_docker_manifest_lists, :pulp_prn, true
375
+ # change_column_null :katello_docker_manifests, :pulp_prn, true
376
+ # change_column_null :katello_docker_tags, :pulp_prn, true
377
+ # change_column_null :katello_rpms, :pulp_prn, true
378
+ # change_column_null :katello_srpms, :pulp_prn, true
379
+ # change_column_null :katello_files, :pulp_prn, true
380
+ # change_column_null :katello_package_groups, :pulp_prn, true
381
+ # change_column_null :katello_debs, :pulp_prn, true
382
+
383
+ # Clear all PRN fields
384
+ execute "UPDATE katello_content_guards SET pulp_prn = NULL"
385
+ execute "UPDATE katello_repositories SET remote_prn = NULL, publication_prn = NULL, version_prn = NULL"
386
+ execute "UPDATE katello_ansible_collections SET pulp_prn = NULL"
387
+ execute "UPDATE katello_generic_content_units SET pulp_prn = NULL"
388
+ execute "UPDATE katello_module_streams SET pulp_prn = NULL"
389
+ execute "UPDATE katello_docker_manifest_lists SET pulp_prn = NULL"
390
+ execute "UPDATE katello_docker_manifests SET pulp_prn = NULL"
391
+ execute "UPDATE katello_docker_tags SET pulp_prn = NULL"
392
+ execute "UPDATE katello_rpms SET pulp_prn = NULL"
393
+ execute "UPDATE katello_srpms SET pulp_prn = NULL"
394
+ execute "UPDATE katello_files SET pulp_prn = NULL"
395
+ execute "UPDATE katello_package_groups SET pulp_prn = NULL"
396
+ execute "UPDATE katello_debs SET pulp_prn = NULL"
397
+ execute "UPDATE katello_distribution_references SET prn = NULL, content_guard_prn = NULL"
398
+ execute "UPDATE katello_repository_references SET repository_prn = NULL"
399
+ execute "UPDATE katello_repository_errata SET erratum_prn = NULL"
400
+ execute "UPDATE katello_smart_proxy_alternate_content_sources SET remote_prn = NULL, alternate_content_source_prn = NULL"
401
+ end
402
+ end
403
+ # rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/ClassLength
@@ -0,0 +1,5 @@
1
+ class RemoveAutoAttachFromActivationKeys < ActiveRecord::Migration[6.1]
2
+ def change
3
+ remove_column :katello_activation_keys, :auto_attach, :boolean
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class RemoveAutohealFromSubscriptionFacets < ActiveRecord::Migration[6.1]
2
+ def change
3
+ remove_column :katello_subscription_facets, :autoheal, :boolean
4
+ end
5
+ end
@@ -11,5 +11,7 @@ UpgradeTask.define_tasks(:katello) do
11
11
  {:name => 'katello:upgrades:4.8:fix_incorrect_providers'},
12
12
  {:name => 'katello:upgrades:4.8:regenerate_imported_repository_metadata'},
13
13
  {:name => 'katello:upgrades:4.12:update_content_access_modes'},
14
+ {:name => 'katello:upgrades:4.19:populate_repository_version_prns'},
15
+ {:name => 'katello:upgrades:4.19:enable_structured_apt_for_deb', :long_running => true, :skip_failure => true},
14
16
  ]
15
17
  end
@@ -1,11 +1,11 @@
1
1
  #
2
2
  # Translators:
3
- # Efstathios Iosifidis <iefstathios@gmail.com>, 2023
3
+ # Efstathios Iosifidis <eiosifidis@gmail.com>, 2023
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: \n"
8
- "Last-Translator: Efstathios Iosifidis <iefstathios@gmail.com>, 2023\n"
8
+ "Last-Translator: Efstathios Iosifidis <eiosifidis@gmail.com>, 2023\n"
9
9
  "Language-Team: Greek (https://app.transifex.com/foreman/teams/114/el/)\n"
10
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
11
  "Content-Transfer-Encoding: 8bit\n"
@@ -38,7 +38,6 @@ module Katello
38
38
  @plugin.permission :edit_activation_keys,
39
39
  {
40
40
  'katello/api/v2/activation_keys' => [:update, :content_override,
41
- :add_subscriptions, :remove_subscriptions,
42
41
  :add_host_collections, :remove_host_collections],
43
42
  },
44
43
  :resource_type => 'Katello::ActivationKey',
@@ -254,7 +253,7 @@ module Katello
254
253
  'katello/api/v2/repositories' => [:index, :show, :repository_types, :content_types, :auto_complete_search, :cancel],
255
254
  'katello/api/v2/packages' => [:index, :thindex, :show, :auto_complete_search, :auto_complete_name, :auto_complete_arch, :compare],
256
255
  'katello/api/v2/srpms' => [:index, :show, :auto_complete_search, :compare],
257
- 'katello/api/v2/debs' => [:index, :show, :auto_complete_search, :auto_complete_name, :auto_complete_arch, :compare],
256
+ 'katello/api/v2/debs' => [:index, :thindex, :show, :auto_complete_search, :auto_complete_name, :auto_complete_arch, :compare],
258
257
  'katello/api/v2/package_groups' => [:index, :show, :auto_complete_search, :compare],
259
258
  'katello/api/v2/docker_manifests' => [:index, :show, :auto_complete_search, :compare],
260
259
  'katello/api/v2/docker_manifest_lists' => [:index, :show, :auto_complete_search, :compare],
@@ -289,6 +288,7 @@ module Katello
289
288
  :repo_compare_packages],
290
289
  'katello/api/v2/repository_sets' => [:index, :show, :available_repositories, :auto_complete_search],
291
290
  'katello/api/v2/host_packages' => [:installed_packages],
291
+ 'katello/api/v2/host_debs' => [:installed_debs],
292
292
  },
293
293
  :resource_type => 'Katello::Product',
294
294
  :finder_scope => :readable
@@ -10,9 +10,6 @@ Foreman::AccessControl.permission(:edit_hosts).actions.concat [
10
10
  'katello/api/v2/host_packages/upgrade_all',
11
11
  'katello/api/v2/host_packages/remove',
12
12
  'katello/api/v2/host_packages/auto_complete_search',
13
- 'katello/api/v2/host_subscriptions/auto_attach',
14
- 'katello/api/v2/host_subscriptions/add_subscriptions',
15
- 'katello/api/v2/host_subscriptions/remove_subscriptions',
16
13
  'katello/api/v2/host_subscriptions/available_release_versions',
17
14
  'katello/api/v2/host_subscriptions/content_override',
18
15
  'katello/api/v2/hosts_bulk_actions/bulk_add_host_collections',
@@ -20,9 +17,6 @@ Foreman::AccessControl.permission(:edit_hosts).actions.concat [
20
17
  'katello/api/v2/hosts_bulk_actions/install_content',
21
18
  'katello/api/v2/hosts_bulk_actions/update_content',
22
19
  'katello/api/v2/hosts_bulk_actions/remove_content',
23
- 'katello/api/v2/hosts_bulk_actions/add_subscriptions',
24
- 'katello/api/v2/hosts_bulk_actions/remove_subscriptions',
25
- 'katello/api/v2/hosts_bulk_actions/auto_attach',
26
20
  'katello/api/v2/hosts_bulk_actions/content_overrides',
27
21
  'katello/api/v2/hosts_bulk_actions/environment_content_view',
28
22
  'katello/api/v2/hosts_bulk_actions/release_version',
@@ -221,6 +221,15 @@ Foreman::Plugin.register :katello do
221
221
  :after => :content_hosts,
222
222
  :turbolinks => false
223
223
 
224
+ menu :labs_menu,
225
+ :container_images,
226
+ :url => '/labs/container_images',
227
+ :url_hash => {:controller => 'katello/api/v2/container_images_controller',
228
+ :action => 'index'},
229
+ :caption => N_('Container Images'),
230
+ :parent => :lab_features_menu,
231
+ :turbolinks => false
232
+
224
233
  extend_template_helpers Katello::KatelloUrlsHelper
225
234
  extend_template_helpers Katello::Concerns::BaseTemplateScopeExtensions
226
235
 
@@ -242,7 +251,7 @@ Foreman::Plugin.register :katello do
242
251
  parameter_filter ::Host::Managed, :host_collection_ids => [],
243
252
  :content_facet_attributes => [:content_view_id, :lifecycle_environment_id, :content_source_id,
244
253
  :host, :kickstart_repository_id],
245
- :subscription_facet_attributes => [:release_version, :autoheal, :purpose_usage, :purpose_role, :service_level, :host,
254
+ :subscription_facet_attributes => [:release_version, :purpose_usage, :purpose_role, :service_level, :host,
246
255
  {:installed_products => [:product_id, :product_name, :arch, :version]}, :facts, {:hypervisor_guest_uuids => []}]
247
256
  parameter_filter ::Hostgroup, :content_view_id, :lifecycle_environment_id, :content_source_id,
248
257
  :kickstart_repository_id
@@ -596,6 +605,12 @@ Foreman::Plugin.register :katello do
596
605
  full_name: N_('Delete Host upon unregister'),
597
606
  description: N_("When unregistering a host via subscription-manager, also delete the host record. Managed resources linked to host such as virtual machines and DNS records may also be deleted.")
598
607
 
608
+ setting 'retain_build_profile_upon_unregistration',
609
+ type: :boolean,
610
+ default: false,
611
+ full_name: N_('Retain build profile upon unregistration'),
612
+ description: N_("When enabled, provisioning information like content view environments, kickstart repository, and content source will be retained when a host is unregistered. When disabled, this information will be cleared during unregistration.")
613
+
599
614
  setting 'register_hostname_fact',
600
615
  type: :string,
601
616
  default: '',
@@ -705,13 +720,6 @@ Foreman::Plugin.register :katello do
705
720
  full_name: N_('Hide Reclaim Space Warning'),
706
721
  description: N_('If this is enabled, the Smart Proxy page will suppress the warning message about reclaiming space.')
707
722
 
708
- setting 'deb_enable_structured_apt',
709
- type: :boolean,
710
- default: false,
711
- full_name: N_('Enable structured APT for deb content'),
712
- description: N_("If set, newly created APT repos in Katello will use the same repo structure as the remote repos they are synchronized from. " \
713
- "You may migrate existing APT repos to match the setting, by running 'foreman-rake katello:migrate_structure_content_for_deb'.")
714
-
715
723
  setting 'registry_token_expiration_minutes',
716
724
  type: :integer,
717
725
  default: 60,
@@ -17,7 +17,7 @@ begin
17
17
  Rake::Task['rake:test:katello:test'].invoke
18
18
  end
19
19
 
20
- desc "Runs puplcore integration tests"
20
+ desc "Runs pulpcore integration tests"
21
21
  task 'katello:pulpcore' do
22
22
  Rake::Task['jenkins:setup:minitest'].invoke
23
23
  Rake::Task['rake:test:katello:test:pulpcore'].invoke