katello 4.15.0 → 4.16.0.rc2

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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/katello_object.js +2 -2
  3. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +9 -8
  4. data/app/assets/javascripts/katello/locale/bn/katello.js +248 -263
  5. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +247 -262
  6. data/app/assets/javascripts/katello/locale/ca/katello.js +247 -262
  7. data/app/assets/javascripts/katello/locale/cs/katello.js +521 -536
  8. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +253 -268
  9. data/app/assets/javascripts/katello/locale/de/katello.js +248 -263
  10. data/app/assets/javascripts/katello/locale/de_AT/katello.js +247 -262
  11. data/app/assets/javascripts/katello/locale/de_DE/katello.js +249 -264
  12. data/app/assets/javascripts/katello/locale/el/katello.js +251 -266
  13. data/app/assets/javascripts/katello/locale/en/katello.js +253 -268
  14. data/app/assets/javascripts/katello/locale/en_GB/katello.js +263 -278
  15. data/app/assets/javascripts/katello/locale/en_US/katello.js +247 -262
  16. data/app/assets/javascripts/katello/locale/es/katello.js +248 -263
  17. data/app/assets/javascripts/katello/locale/et_EE/katello.js +247 -262
  18. data/app/assets/javascripts/katello/locale/fr/katello.js +250 -265
  19. data/app/assets/javascripts/katello/locale/gl/katello.js +247 -262
  20. data/app/assets/javascripts/katello/locale/gu/katello.js +249 -264
  21. data/app/assets/javascripts/katello/locale/he_IL/katello.js +249 -264
  22. data/app/assets/javascripts/katello/locale/hi/katello.js +248 -263
  23. data/app/assets/javascripts/katello/locale/id/katello.js +261 -275
  24. data/app/assets/javascripts/katello/locale/it/katello.js +252 -267
  25. data/app/assets/javascripts/katello/locale/ja/katello.js +250 -265
  26. data/app/assets/javascripts/katello/locale/ka/katello.js +247 -262
  27. data/app/assets/javascripts/katello/locale/kn/katello.js +248 -263
  28. data/app/assets/javascripts/katello/locale/ko/katello.js +248 -263
  29. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +247 -262
  30. data/app/assets/javascripts/katello/locale/mr/katello.js +248 -263
  31. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +252 -267
  32. data/app/assets/javascripts/katello/locale/or/katello.js +248 -263
  33. data/app/assets/javascripts/katello/locale/pa/katello.js +248 -263
  34. data/app/assets/javascripts/katello/locale/pl/katello.js +248 -263
  35. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +247 -262
  36. data/app/assets/javascripts/katello/locale/pt/katello.js +248 -263
  37. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +248 -263
  38. data/app/assets/javascripts/katello/locale/ro/katello.js +247 -262
  39. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +247 -262
  40. data/app/assets/javascripts/katello/locale/ru/katello.js +253 -268
  41. data/app/assets/javascripts/katello/locale/sl/katello.js +247 -262
  42. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +248 -263
  43. data/app/assets/javascripts/katello/locale/ta/katello.js +248 -263
  44. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +247 -262
  45. data/app/assets/javascripts/katello/locale/te/katello.js +248 -263
  46. data/app/assets/javascripts/katello/locale/tr/katello.js +247 -262
  47. data/app/assets/javascripts/katello/locale/vi/katello.js +247 -262
  48. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +247 -262
  49. data/app/assets/javascripts/katello/locale/zh/katello.js +247 -262
  50. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +250 -265
  51. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +255 -270
  52. data/app/assets/javascripts/katello/sync_management/sync_management.js +16 -2
  53. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +46 -10
  54. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
  55. data/app/controllers/katello/api/v2/activation_keys_controller.rb +4 -9
  56. data/app/controllers/katello/api/v2/content_uploads_controller.rb +2 -1
  57. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +3 -1
  58. data/app/controllers/katello/api/v2/content_views_controller.rb +4 -1
  59. data/app/controllers/katello/api/v2/environments_controller.rb +4 -0
  60. data/app/controllers/katello/api/v2/errata_controller.rb +12 -1
  61. data/app/controllers/katello/api/v2/flatpak_remote_repositories_controller.rb +81 -0
  62. data/app/controllers/katello/api/v2/flatpak_remotes_controller.rb +86 -0
  63. data/app/controllers/katello/api/v2/host_bootc_images_controller.rb +71 -0
  64. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +4 -6
  65. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +3 -5
  66. data/app/controllers/katello/api/v2/repositories_controller.rb +18 -3
  67. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +0 -8
  68. data/app/controllers/katello/concerns/api/v2/http_proxies_controller_extensions.rb +17 -0
  69. data/app/controllers/katello/concerns/http_proxies_controller_extensions.rb +20 -0
  70. data/app/controllers/katello/sync_management_controller.rb +6 -2
  71. data/app/helpers/katello/content_source_helper.rb +8 -1
  72. data/app/helpers/katello/content_view_helper.rb +3 -1
  73. data/app/lib/actions/candlepin/activation_key/create.rb +1 -3
  74. data/app/lib/actions/candlepin/activation_key/update.rb +1 -3
  75. data/app/lib/actions/candlepin/environment/set_content.rb +17 -4
  76. data/app/lib/actions/katello/activation_key/create.rb +1 -2
  77. data/app/lib/actions/katello/activation_key/update.rb +2 -4
  78. data/app/lib/actions/katello/capsule_content/refresh_repos.rb +7 -1
  79. data/app/lib/actions/katello/content_view/presenters/incremental_updates_presenter.rb +3 -2
  80. data/app/lib/actions/katello/content_view/publish.rb +7 -2
  81. data/app/lib/actions/katello/content_view_environment/reassign_objects.rb +11 -2
  82. data/app/lib/actions/katello/content_view_version/incremental_update.rb +31 -22
  83. data/app/lib/actions/katello/flatpak/mirror_remote_repository.rb +30 -0
  84. data/app/lib/actions/katello/flatpak/scan_remote.rb +17 -12
  85. data/app/lib/actions/katello/host/update_system_purpose.rb +1 -6
  86. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +18 -2
  87. data/app/lib/actions/pulp3/orchestration/repository/multi_copy_all_units.rb +5 -0
  88. data/app/lib/actions/pulp3/repository/multi_copy_units.rb +4 -0
  89. data/app/lib/katello/api/v2/rendering.rb +2 -1
  90. data/app/lib/katello/concerns/base_template_scope_extensions.rb +3 -4
  91. data/app/lib/katello/concerns/bookmark_controller_validator_extensions.rb +13 -0
  92. data/app/lib/katello/resources/candlepin/activation_key.rb +3 -5
  93. data/app/lib/katello/resources/candlepin/product.rb +2 -1
  94. data/app/lib/katello/util/cveak_migrator.rb +3 -2
  95. data/app/lib/katello/validators/alternate_content_source_path_validator.rb +2 -2
  96. data/app/lib/katello/validators/container_image_name_validator.rb +1 -1
  97. data/app/lib/katello/validators/content_validator.rb +1 -1
  98. data/app/lib/katello/validators/content_view_environment_coherent_default_validator.rb +2 -2
  99. data/app/lib/katello/validators/content_view_environment_org_validator.rb +2 -2
  100. data/app/lib/katello/validators/content_view_environment_validator.rb +3 -3
  101. data/app/lib/katello/validators/content_view_erratum_filter_rule_validator.rb +12 -12
  102. data/app/lib/katello/validators/content_view_filter_version_validator.rb +1 -1
  103. data/app/lib/katello/validators/generated_content_view_validator.rb +1 -1
  104. data/app/lib/katello/validators/gpg_key_content_type_validator.rb +2 -2
  105. data/app/lib/katello/validators/gpg_key_content_validator.rb +5 -5
  106. data/app/lib/katello/validators/katello_label_format_validator.rb +4 -4
  107. data/app/lib/katello/validators/katello_name_format_validator.rb +2 -2
  108. data/app/lib/katello/validators/katello_url_format_validator.rb +1 -1
  109. data/app/lib/katello/validators/library_presence_validator.rb +1 -1
  110. data/app/lib/katello/validators/no_trailing_space_validator.rb +1 -1
  111. data/app/lib/katello/validators/non_library_environment_validator.rb +1 -1
  112. data/app/lib/katello/validators/not_in_library_validator.rb +1 -1
  113. data/app/lib/katello/validators/path_descendents_validator.rb +1 -1
  114. data/app/lib/katello/validators/prior_validator.rb +1 -1
  115. data/app/lib/katello/validators/product_unique_attribute_validator.rb +1 -1
  116. data/app/lib/katello/validators/repo_disablement_validator.rb +2 -2
  117. data/app/lib/katello/validators/root_repository_unique_attribute_validator.rb +1 -1
  118. data/app/lib/katello/validators/self_reference_environment_validator.rb +1 -1
  119. data/app/lib/katello/validators/unique_field_in_org.rb +1 -1
  120. data/app/models/katello/activation_key.rb +6 -17
  121. data/app/models/katello/authorization/flatpak_remote.rb +33 -0
  122. data/app/models/katello/concerns/content_facet_host_extensions.rb +2 -1
  123. data/app/models/katello/concerns/host_managed_extensions.rb +8 -5
  124. data/app/models/katello/concerns/http_proxy_extensions.rb +4 -0
  125. data/app/models/katello/concerns/smart_proxy_extensions.rb +30 -6
  126. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +0 -8
  127. data/app/models/katello/content_view.rb +6 -4
  128. data/app/models/katello/content_view_erratum_filter.rb +18 -2
  129. data/app/models/katello/content_view_version.rb +6 -0
  130. data/app/models/katello/docker_manifest.rb +8 -0
  131. data/app/models/katello/docker_manifest_list.rb +8 -0
  132. data/app/models/katello/erratum.rb +8 -2
  133. data/app/models/katello/flatpak_remote.rb +16 -0
  134. data/app/models/katello/flatpak_remote_repository.rb +18 -0
  135. data/app/models/katello/flatpak_remote_repository_manifest.rb +4 -0
  136. data/app/models/katello/glue/candlepin/pool.rb +1 -1
  137. data/app/models/katello/glue/pulp/repos.rb +12 -1
  138. data/app/models/katello/host/content_facet.rb +42 -3
  139. data/app/models/katello/host/subscription_facet.rb +4 -12
  140. data/app/models/katello/repository.rb +22 -8
  141. data/app/models/katello/rhel_lifecycle_status.rb +6 -0
  142. data/app/models/katello/root_repository.rb +6 -8
  143. data/app/models/katello/upstream_pool.rb +1 -0
  144. data/app/overrides/add_organization_attributes.rb +6 -0
  145. data/app/services/katello/product_content_finder.rb +2 -1
  146. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +1 -1
  147. data/app/services/katello/pulp3/docker_manifest.rb +3 -2
  148. data/app/services/katello/pulp3/docker_manifest_list.rb +3 -2
  149. data/app/services/katello/pulp3/repository/ansible_collection.rb +8 -1
  150. data/app/services/katello/pulp3/repository/apt.rb +37 -21
  151. data/app/services/katello/pulp3/repository/file.rb +4 -2
  152. data/app/services/katello/pulp3/repository.rb +4 -0
  153. data/app/services/katello/pulp3/task.rb +2 -2
  154. data/app/views/foreman/job_templates/bootc_action.erb +26 -0
  155. data/app/views/foreman/job_templates/bootc_rollback.erb +13 -0
  156. data/app/views/foreman/job_templates/bootc_status.erb +13 -0
  157. data/app/views/foreman/job_templates/bootc_switch.erb +13 -0
  158. data/app/views/foreman/job_templates/bootc_upgrade.erb +13 -0
  159. data/app/views/foreman/job_templates/flatpak_install.erb +23 -0
  160. data/app/views/foreman/job_templates/flatpak_login_action.erb +30 -0
  161. data/app/views/foreman/job_templates/flatpak_setup.erb +27 -0
  162. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +1 -1
  163. data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +1 -1
  164. data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +1 -1
  165. data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +1 -1
  166. data/app/views/katello/api/v2/activation_keys/base.json.rabl +0 -4
  167. data/app/views/katello/api/v2/content_facet/base.json.rabl +2 -1
  168. data/app/views/katello/api/v2/content_facet/show.json.rabl +2 -0
  169. data/app/views/katello/api/v2/content_view_filter_rules/show.json.rabl +1 -0
  170. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +5 -1
  171. data/app/views/katello/api/v2/docker_manifest_lists/show.json.rabl +1 -1
  172. data/app/views/katello/api/v2/docker_manifests/show.json.rabl +1 -1
  173. data/app/views/katello/api/v2/flatpak_remote_repositories/base.json.rabl +4 -0
  174. data/app/views/katello/api/v2/flatpak_remote_repositories/index.json.rabl +7 -0
  175. data/app/views/katello/api/v2/flatpak_remote_repositories/show.json.rabl +13 -0
  176. data/app/views/katello/api/v2/flatpak_remotes/base.json.rabl +5 -0
  177. data/app/views/katello/api/v2/flatpak_remotes/index.json.rabl +8 -0
  178. data/app/views/katello/api/v2/flatpak_remotes/permissions.json.rabl +11 -0
  179. data/app/views/katello/api/v2/flatpak_remotes/show.json.rabl +3 -0
  180. data/app/views/katello/api/v2/hosts/base.json.rabl +0 -8
  181. data/app/views/katello/api/v2/hosts/os_attributes.json.rabl +13 -0
  182. data/app/views/katello/api/v2/http_proxies/show.json.rabl +1 -0
  183. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
  184. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
  185. data/app/views/katello/api/v2/subscription_facet/base.json.rabl +0 -4
  186. data/app/views/katello/api/v2/subscriptions/show.json.rabl +1 -1
  187. data/app/views/overrides/activation_keys/_host_environment_select.html.erb +2 -1
  188. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +10 -4
  189. data/app/views/overrides/http_proxies/_update_setting_input.html.erb +18 -0
  190. data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
  191. data/config/initializers/monkeys.rb +0 -1
  192. data/config/initializers/pagelets.rb +6 -0
  193. data/config/routes/api/registry.rb +1 -0
  194. data/config/routes/api/v2.rb +21 -0
  195. data/config/routes/overrides.rb +1 -0
  196. data/config/routes.rb +2 -0
  197. data/db/migrate/20190605014649_add_purpose_addons.rb +0 -12
  198. data/db/migrate/20200213184848_create_evr_type.rb +126 -1
  199. data/db/migrate/20200818192230_update_system_purpose_status.rb +0 -1
  200. data/db/migrate/20240207191223_remove_entitlement_mode_host_statuses.rb +0 -1
  201. data/db/migrate/20240924161240_katello_recreate_evr_constructs.rb +160 -0
  202. data/db/migrate/20241022121706_add_sync_dependencies_option.rb +5 -0
  203. data/db/migrate/20241101144625_remove_system_purpose_addons.rb +9 -0
  204. data/db/migrate/20241107002541_add_registry_url_to_katello_flatpak_remotes.rb +5 -0
  205. data/db/migrate/20241112145802_add_manifest_entity_to_content_facets.rb +7 -0
  206. data/db/migrate/20241120213713_add_allow_other_types_to_content_view_erratum_filter_rules.rb +6 -0
  207. data/db/migrate/20241206183052_add_content_type_to_container_manifests_and_lists.rb +9 -0
  208. data/db/seeds.d/75-job_templates.rb +5 -1
  209. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +2 -2
  210. data/engines/bastion/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap-tpls.js +3 -3
  211. data/engines/bastion/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap.js +3 -3
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details-info.controller.js +0 -5
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +1 -41
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +0 -12
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/new/views/activation-key-new.html +2 -1
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/subscription-add-or-remove.html +1 -1
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-release-version-modal.controller.js +3 -1
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-system-purpose-modal.controller.js +1 -41
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-traces-modal.controller.js +1 -1
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +2 -2
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-release-version-modal.html +1 -1
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +2 -2
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +0 -13
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -1
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +0 -5
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +1 -35
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -14
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-provisioning-info.html +1 -1
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +46 -22
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-content-views.controller.js +2 -1
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/views/debs.html +4 -0
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-details.html +1 -1
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-errata.html +1 -1
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-tasks-list.html +2 -1
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +85 -29
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +338 -93
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +340 -95
  240. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +340 -95
  241. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +341 -96
  242. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +31 -54
  243. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +338 -93
  244. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +338 -93
  245. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +341 -96
  246. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +349 -104
  247. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +338 -93
  248. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +33 -56
  249. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +338 -93
  250. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +80 -68
  251. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +340 -95
  252. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +340 -95
  253. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +339 -111
  254. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +340 -95
  255. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +379 -130
  256. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +342 -103
  257. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +70 -83
  258. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +84 -90
  259. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +340 -95
  260. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +130 -138
  261. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +338 -93
  262. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +340 -95
  263. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +343 -97
  264. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +340 -95
  265. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +340 -95
  266. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +340 -95
  267. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +338 -93
  268. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +338 -93
  269. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +40 -63
  270. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +338 -93
  271. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +338 -93
  272. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +343 -102
  273. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +338 -93
  274. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +340 -95
  275. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +338 -93
  276. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +340 -95
  277. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +340 -95
  278. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +338 -93
  279. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +338 -93
  280. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +338 -93
  281. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +338 -93
  282. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +70 -83
  283. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +362 -105
  284. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +29 -29
  285. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +1 -1
  286. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js +1 -1
  287. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +2 -2
  288. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +24 -8
  289. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-tasks.html +2 -1
  290. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +2 -2
  291. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +21 -8
  292. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/os-versions.service.js +1 -0
  293. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-info.html +3 -3
  294. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-tasks.html +2 -1
  295. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +4 -2
  296. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery.html +2 -1
  297. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +3 -3
  298. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/partials/product-table-sync-status.html +1 -1
  299. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscription-start-date.html +1 -1
  300. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
  301. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/views/sync-plans.html +2 -2
  302. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/tasks-table.directive.js +2 -1
  303. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/task-details.html +2 -2
  304. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-index.html +1 -1
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-table.html +1 -1
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/user-tasks-table.html +1 -1
  307. data/lib/katello/engine.rb +6 -0
  308. data/lib/katello/permission_creator.rb +37 -0
  309. data/lib/katello/permissions/host_permissions.rb +2 -0
  310. data/lib/katello/permissions/registry_permissions.rb +1 -0
  311. data/lib/katello/plugin.rb +18 -1
  312. data/lib/katello/repository_types/docker.rb +0 -1
  313. data/lib/katello/repository_types/python.rb +1 -1
  314. data/lib/katello/version.rb +1 -1
  315. data/lib/katello.rb +2 -0
  316. data/locale/Makefile +20 -24
  317. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  318. data/locale/bn/katello.po +248 -263
  319. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  320. data/locale/bn_IN/katello.po +247 -262
  321. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  322. data/locale/ca/katello.po +247 -262
  323. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  324. data/locale/cs/katello.po +524 -799
  325. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  326. data/locale/cs_CZ/katello.po +254 -269
  327. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  328. data/locale/de/katello.po +248 -263
  329. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  330. data/locale/de_AT/katello.po +247 -262
  331. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  332. data/locale/de_DE/katello.po +250 -265
  333. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  334. data/locale/el/katello.po +252 -267
  335. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  336. data/locale/en/katello.po +257 -271
  337. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  338. data/locale/en_GB/katello.po +264 -279
  339. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  340. data/locale/en_US/katello.po +247 -262
  341. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  342. data/locale/es/katello.po +248 -263
  343. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  344. data/locale/et_EE/katello.po +247 -262
  345. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  346. data/locale/fr/katello.po +250 -265
  347. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  348. data/locale/gl/katello.po +247 -262
  349. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  350. data/locale/gu/katello.po +250 -265
  351. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  352. data/locale/he_IL/katello.po +249 -264
  353. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  354. data/locale/hi/katello.po +248 -263
  355. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  356. data/locale/id/katello.po +264 -275
  357. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  358. data/locale/it/katello.po +254 -270
  359. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  360. data/locale/ja/katello.po +250 -265
  361. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  362. data/locale/ka/katello.po +247 -262
  363. data/locale/katello.pot +1216 -1215
  364. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  365. data/locale/kn/katello.po +248 -263
  366. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  367. data/locale/ko/katello.po +248 -263
  368. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  369. data/locale/ml_IN/katello.po +247 -262
  370. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  371. data/locale/mr/katello.po +248 -263
  372. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  373. data/locale/nl_NL/katello.po +254 -268
  374. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  375. data/locale/or/katello.po +248 -263
  376. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  377. data/locale/pa/katello.po +248 -263
  378. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  379. data/locale/pl/katello.po +249 -264
  380. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  381. data/locale/pl_PL/katello.po +247 -262
  382. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  383. data/locale/pt/katello.po +248 -263
  384. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  385. data/locale/pt_BR/katello.po +248 -263
  386. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  387. data/locale/ro/katello.po +247 -262
  388. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  389. data/locale/ro_RO/katello.po +247 -262
  390. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  391. data/locale/ru/katello.po +255 -270
  392. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  393. data/locale/sl/katello.po +247 -262
  394. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  395. data/locale/sv_SE/katello.po +249 -264
  396. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  397. data/locale/ta/katello.po +248 -263
  398. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  399. data/locale/ta_IN/katello.po +247 -262
  400. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  401. data/locale/te/katello.po +248 -263
  402. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  403. data/locale/tr/katello.po +247 -262
  404. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  405. data/locale/vi/katello.po +247 -262
  406. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  407. data/locale/vi_VN/katello.po +247 -262
  408. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  409. data/locale/zh/katello.po +247 -262
  410. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  411. data/locale/zh_CN/katello.po +250 -265
  412. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  413. data/locale/zh_TW/katello.po +257 -272
  414. data/webpack/ForemanColumnExtensions/index.js +71 -3
  415. data/webpack/ForemanColumnExtensions/index.scss +9 -0
  416. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
  417. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +14 -8
  418. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +1 -1
  419. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +1 -20
  420. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +3 -61
  421. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +0 -5
  422. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +0 -5
  423. data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +87 -0
  424. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +28 -2
  425. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +1 -1
  426. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +2 -2
  427. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +1 -1
  428. data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +55 -0
  429. data/webpack/containers/Application/config.js +5 -0
  430. data/webpack/global_index.js +3 -1
  431. data/webpack/redux/actions/RedHatRepositories/helpers.js +12 -6
  432. data/webpack/scenes/BootedContainerImages/BootedContainerImagesConstants.js +5 -0
  433. data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +244 -0
  434. data/webpack/scenes/BootedContainerImages/__tests__/bootedContainerImages.fixtures.js +42 -0
  435. data/webpack/scenes/BootedContainerImages/__tests__/bootedContainerImagesPage.test.js +233 -0
  436. data/webpack/scenes/BootedContainerImages/index.js +4 -0
  437. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +1 -2
  438. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +39 -7
  439. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +13 -2
  440. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +1 -1
  441. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +1 -0
  442. data/webpack/scenes/ContentViews/Details/Repositories/RepoIcon.js +4 -2
  443. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +1 -2
  444. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +20 -1
  445. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +20 -1
  446. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +128 -18
  447. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedActivationKeys.fixture.json +0 -1
  448. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +1 -2
  449. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -4
  450. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +5 -1
  451. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +6 -1
  452. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -1
  453. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +5 -1
  454. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +4 -2
  455. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
  456. data/webpack/scenes/Subscriptions/Details/SubscriptionPurposeAttributes.js +0 -1
  457. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +0 -10
  458. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +0 -3
  459. data/webpack/scenes/Subscriptions/Details/__tests__/subscriptionDetails.fixtures.js +0 -1
  460. metadata +61 -58
  461. data/app/models/katello/activation_key_purpose_addon.rb +0 -6
  462. data/app/models/katello/purpose_addon.rb +0 -11
  463. data/app/models/katello/subscription_facet_purpose_addon.rb +0 -6
  464. data/lib/monkeys/fx_sqlite_skip.rb +0 -13
  465. data/locale/action_names.rb +0 -181
  466. data/locale/bn/katello.po.time_stamp +0 -0
  467. data/locale/bn_IN/katello.po.time_stamp +0 -0
  468. data/locale/ca/katello.po.time_stamp +0 -0
  469. data/locale/cs/katello.po.time_stamp +0 -0
  470. data/locale/cs_CZ/katello.po.time_stamp +0 -0
  471. data/locale/de/katello.po.time_stamp +0 -0
  472. data/locale/de_AT/katello.po.time_stamp +0 -0
  473. data/locale/de_DE/katello.po.time_stamp +0 -0
  474. data/locale/el/katello.po.time_stamp +0 -0
  475. data/locale/en/katello.po.time_stamp +0 -0
  476. data/locale/en_GB/katello.po.time_stamp +0 -0
  477. data/locale/en_US/katello.po.time_stamp +0 -0
  478. data/locale/es/katello.po.time_stamp +0 -0
  479. data/locale/et_EE/katello.po.time_stamp +0 -0
  480. data/locale/fr/katello.po.time_stamp +0 -0
  481. data/locale/gl/katello.po.time_stamp +0 -0
  482. data/locale/gu/katello.po.time_stamp +0 -0
  483. data/locale/he_IL/katello.po.time_stamp +0 -0
  484. data/locale/hi/katello.po.time_stamp +0 -0
  485. data/locale/id/katello.po.time_stamp +0 -0
  486. data/locale/it/katello.po.time_stamp +0 -0
  487. data/locale/ja/katello.po.time_stamp +0 -0
  488. data/locale/ka/katello.po.time_stamp +0 -0
  489. data/locale/kn/katello.po.time_stamp +0 -0
  490. data/locale/ko/katello.po.time_stamp +0 -0
  491. data/locale/ml_IN/katello.po.time_stamp +0 -0
  492. data/locale/mr/katello.po.time_stamp +0 -0
  493. data/locale/nl_NL/katello.po.time_stamp +0 -0
  494. data/locale/or/katello.po.time_stamp +0 -0
  495. data/locale/pa/katello.po.time_stamp +0 -0
  496. data/locale/pl/katello.po.time_stamp +0 -0
  497. data/locale/pl_PL/katello.po.time_stamp +0 -0
  498. data/locale/pt/katello.po.time_stamp +0 -0
  499. data/locale/pt_BR/katello.po.time_stamp +0 -0
  500. data/locale/ro/katello.po.time_stamp +0 -0
  501. data/locale/ro_RO/katello.po.time_stamp +0 -0
  502. data/locale/ru/katello.po.time_stamp +0 -0
  503. data/locale/sl/katello.po.time_stamp +0 -0
  504. data/locale/sv_SE/katello.po.time_stamp +0 -0
  505. data/locale/ta/katello.po.time_stamp +0 -0
  506. data/locale/ta_IN/katello.po.time_stamp +0 -0
  507. data/locale/te/katello.po.time_stamp +0 -0
  508. data/locale/tr/katello.po.time_stamp +0 -0
  509. data/locale/vi/katello.po.time_stamp +0 -0
  510. data/locale/vi_VN/katello.po.time_stamp +0 -0
  511. data/locale/zh/katello.po.time_stamp +0 -0
  512. data/locale/zh_CN/katello.po.time_stamp +0 -0
  513. data/locale/zh_TW/katello.po.time_stamp +0 -0
@@ -23,7 +23,7 @@ module Katello
23
23
  SKIPABLE_METADATA_TYPES = [Repository::YUM_TYPE, Repository::DEB_TYPE].freeze
24
24
 
25
25
  CONTENT_ATTRIBUTE_RESTRICTIONS = {
26
- :download_policy => [Repository::YUM_TYPE, Repository::DEB_TYPE, Repository::DOCKER_TYPE],
26
+ :download_policy => [Repository::YUM_TYPE, Repository::DEB_TYPE, Repository::DOCKER_TYPE, Repository::FILE_TYPE],
27
27
  }.freeze
28
28
 
29
29
  MAX_EXPIRE_TIME = 7 * 24 * 60 * 60
@@ -39,7 +39,8 @@ module Katello
39
39
  RHEL7 = 'rhel-7'.freeze
40
40
  RHEL8 = 'rhel-8'.freeze
41
41
  RHEL9 = 'rhel-9'.freeze
42
- ALLOWED_OS_VERSIONS = [RHEL6, RHEL7, RHEL8, RHEL9].freeze
42
+ RHEL10 = 'rhel-10'.freeze
43
+ ALLOWED_OS_VERSIONS = [RHEL6, RHEL7, RHEL8, RHEL9, RHEL10].freeze
43
44
 
44
45
  MIRRORING_POLICY_ADDITIVE = 'additive'.freeze
45
46
  MIRRORING_POLICY_CONTENT = 'mirror_content_only'.freeze
@@ -218,12 +219,6 @@ module Katello
218
219
  ::Host.joins(:content_facet => :bound_repositories).where("#{Katello::Repository.table_name}.root_id" => self.select(:id))
219
220
  end
220
221
 
221
- def ensure_no_download_policy
222
- if !yum? && download_policy.present?
223
- errors.add(:download_policy, _("cannot be set for non-yum repositories."))
224
- end
225
- end
226
-
227
222
  def ensure_no_checksum_on_demand
228
223
  if checksum_type.present? && download_policy == DOWNLOAD_ON_DEMAND
229
224
  errors.add(:checksum_type, _("Checksum type cannot be set for yum repositories with on demand download policy."))
@@ -343,6 +338,9 @@ module Katello
343
338
  unless yum?
344
339
  errors.add(:retain_package_versions_count, N_("is only allowed for Yum repositories."))
345
340
  end
341
+ if yum? && self.mirroring_policy != MIRRORING_POLICY_ADDITIVE
342
+ errors.add(:retain_package_versions_count, N_("cannot be set for repositories without 'Additive' mirroring policy."))
343
+ end
346
344
  if self.retain_package_versions_count.to_i < 0
347
345
  errors.add(:retain_package_versions_count, N_("must not be a negative value."))
348
346
  end
@@ -33,6 +33,7 @@ module Katello
33
33
  params[:consumer] = upstream_consumer_id if attachable
34
34
  params[:sort_by] = 'Product.name'
35
35
  params[:order] = 'asc'
36
+ params[:add_future] = true
36
37
  params
37
38
  end
38
39
 
@@ -11,6 +11,12 @@ Deface::Override.new(:virtual_path => "taxonomies/_form",
11
11
  :text => '<% if taxonomy.is_a?(Location) %><%= render_original %><% end %>'
12
12
  )
13
13
 
14
+ Deface::Override.new(:virtual_path => "taxonomies/_step1",
15
+ :name => "add_organization_attributes_on_create",
16
+ :insert_after => 'erb[loud]:contains("text_f"):contains(":name")',
17
+ :partial => 'overrides/organizations/step_1_override'
18
+ )
19
+
14
20
  # Add organization attributes to org edit
15
21
  Deface::Override.new(:virtual_path => "taxonomies/_form",
16
22
  :name => "add_organization_attributes_on_edit",
@@ -26,7 +26,8 @@ module Katello
26
26
  structured_apt_roots = roots.where(:content_id => nil)
27
27
  if structured_apt_roots.any?
28
28
  deb_repos_query = Katello::Repository.where(root: structured_apt_roots)
29
- deb_repos = match_environment ? deb_repos_query.where(content_view_version: versions, environment: consumable.environment) : deb_repos_query.where(:library_instance_id => nil)
29
+ environment = consumable.respond_to?(:environment) ? consumable.environment : consumable.content_view_environments.select(:environment_id).map(&:environment_id)
30
+ deb_repos = match_environment ? deb_repos_query.where(content_view_version: versions, environment: environment) : deb_repos_query.where(:library_instance_id => nil)
30
31
  content_ids += deb_repos.pluck(:content_id)
31
32
  end
32
33
 
@@ -29,7 +29,7 @@ module Katello
29
29
 
30
30
  root = product.root_repositories.find do |r|
31
31
  if repo.content&.id && repo.redhat
32
- repo_exists = r.content.cp_content_id == repo.content.id &&
32
+ repo_exists = r.library_instance.content.cp_content_id == repo.content.id &&
33
33
  r.arch == repo.arch &&
34
34
  r.major == repo.major &&
35
35
  r.minor == repo.minor
@@ -29,8 +29,9 @@ module Katello
29
29
  pulp_id: unit[unit_identifier],
30
30
  annotations: unit['annotations'],
31
31
  labels: unit['labels'],
32
- is_bootable: unit['is_bootable'],
33
- is_flatpak: unit['is_flatpak'],
32
+ is_bootable: unit['is_bootable'] || unit['type'] == 'bootable',
33
+ is_flatpak: unit['is_flatpak'] || unit['type'] == 'flatpak',
34
+ content_type: unit['type'],
34
35
  }
35
36
  end
36
37
  end
@@ -31,8 +31,9 @@ module Katello
31
31
  pulp_id: unit[unit_identifier],
32
32
  annotations: unit['annotations'],
33
33
  labels: unit['labels'],
34
- is_bootable: unit['is_bootable'],
35
- is_flatpak: unit['is_flatpak'],
34
+ is_bootable: unit['is_bootable'] || unit['type'] == 'bootable',
35
+ is_flatpak: unit['is_flatpak'] || unit['type'] == 'flatpak',
36
+ content_type: unit['type'],
36
37
  }
37
38
  end
38
39
 
@@ -13,7 +13,8 @@ module Katello
13
13
  requirements_file: root.ansible_collection_requirements.blank? ? nil : root.ansible_collection_requirements,
14
14
  auth_url: root.ansible_collection_auth_url,
15
15
  token: root.ansible_collection_auth_token,
16
- tls_validation: root.verify_ssl_on_sync)
16
+ tls_validation: root.verify_ssl_on_sync,
17
+ sync_dependencies: root.sync_dependencies)
17
18
  end
18
19
 
19
20
  def distribution_options(path)
@@ -28,6 +29,12 @@ module Katello
28
29
  "/pulp_ansible/galaxy/#{repo.relative_path}/api/"
29
30
  end
30
31
 
32
+ def sync_url_params(sync_options)
33
+ params = super
34
+ params[:optimize] = sync_options[:optimize] if sync_options.key?(:optimize)
35
+ params
36
+ end
37
+
31
38
  def mirror_remote_options
32
39
  {
33
40
  }
@@ -39,7 +39,7 @@ module Katello
39
39
  end
40
40
 
41
41
  def mirror_remote_options
42
- distributions = if repo.deb_using_structured_apt?
42
+ distributions = if repo.deb_using_structured_apt? && !version_missing_structure_content?
43
43
  repo.deb_pulp_distributions.join(' ')
44
44
  else
45
45
  'default'
@@ -48,11 +48,29 @@ module Katello
48
48
  super.merge({distributions: distributions})
49
49
  end
50
50
 
51
+ def version_missing_structure_content?
52
+ # There may be old pulp_deb repo versions that have no package_release_components to go with the packages.
53
+ # This could be because packages were uploaded with Katello < 4.12
54
+ # It may also affect filtered CV versions created with very old Katello versions.
55
+ # This method can identify such cases, so that we may fall back to simple publishing.
56
+ return false if repo.version_href.blank?
57
+ # We cannot just use api here, because this is sometimes the proxy api, and we always want to talk to the primary!
58
+ api_primary = self.class.instance_for_type(repo, ::SmartProxy.pulp_primary).api
59
+ version = api_primary.repository_versions_api.read(repo.version_href)
60
+ apt_content_types = version&.content_summary&.present&.keys
61
+ return apt_content_types.include?('deb.package') && !apt_content_types.include?('deb.package_release_component')
62
+ end
63
+
51
64
  def publication_options(repository)
52
65
  ss = api.signing_services_api.list(name: SIGNING_SERVICE_NAME).results
53
66
  popts = super(repository)
54
- popts.merge!({ structured: true })
55
- popts.merge!({ simple: true }) unless repository.deb_using_structured_apt?
67
+ if version_missing_structure_content?
68
+ popts.merge!({ structured: false })
69
+ popts.merge!({ simple: true })
70
+ else
71
+ popts.merge!({ structured: true })
72
+ popts.merge!({ simple: true }) unless repository.deb_using_structured_apt?
73
+ end
56
74
  popts[:signing_service] = ss[0].pulp_href if ss && ss.length == 1
57
75
  popts
58
76
  end
@@ -226,23 +244,6 @@ module Katello
226
244
  multi_copy_units(repo_id_map, dependency_solving)
227
245
  end
228
246
 
229
- def copy_units(content_unit_hrefs, remove_all)
230
- remove_all = true if remove_all.nil?
231
- tasks = []
232
-
233
- if content_unit_hrefs.sort!.any?
234
- first_slice = remove_all
235
- content_unit_hrefs.each_slice(UNIT_LIMIT) do |slice|
236
- tasks << add_content(slice, first_slice)
237
- first_slice = false
238
- end
239
- # If we're merging composite cv repositories, don't clear out the Pulp repository.
240
- elsif remove_all
241
- tasks << remove_all_content
242
- end
243
- tasks
244
- end
245
-
246
247
  def copy_content_for_source(source_repository, options = {})
247
248
  # copy_units_by_href(source_repository.debs.pluck(:pulp_id))
248
249
  filters = ContentViewDebFilter.where(:id => options[:filter_ids])
@@ -261,7 +262,22 @@ module Katello
261
262
 
262
263
  content_unit_hrefs = whitelist_ids - blacklist_ids
263
264
 
264
- copy_units(content_unit_hrefs.uniq, options[:remove_all])
265
+ pulp_deb_copy_serializer = PulpDebClient::Copy.new
266
+ pulp_deb_copy_serializer.dependency_solving = false
267
+ pulp_deb_copy_serializer.config = [{
268
+ source_repo_version: source_repository.version_href,
269
+ dest_repo: repository_reference.repository_href,
270
+ content: content_unit_hrefs,
271
+ }]
272
+
273
+ remove_all = options[:remove_all]
274
+ remove_all = true if remove_all.nil?
275
+
276
+ if remove_all
277
+ remove_all_content_from_repo(repository_reference.repository_href)
278
+ end
279
+
280
+ copy_content_chunked(pulp_deb_copy_serializer)
265
281
  end
266
282
 
267
283
  def regenerate_applicability
@@ -17,12 +17,14 @@ module Katello
17
17
  end
18
18
 
19
19
  def remote_options
20
+ options = common_remote_options
20
21
  #TODO: move to user specifying PULP_MANIFEST
21
22
  if root.url.blank?
22
- common_remote_options.merge(url: nil)
23
+ options[:url] = nil
23
24
  else
24
- common_remote_options.merge(url: root.url + '/PULP_MANIFEST')
25
+ options[:url] = root.url + '/PULP_MANIFEST'
25
26
  end
27
+ options.merge!(policy: root.download_policy)
26
28
  end
27
29
 
28
30
  def partial_repo_path
@@ -136,6 +136,10 @@ module Katello
136
136
  RepositoryMirror.new(self).refresh_entities
137
137
  end
138
138
 
139
+ def refresh_entities
140
+ [update_remote].flatten.compact
141
+ end
142
+
139
143
  def refresh_if_needed
140
144
  tasks = []
141
145
  tasks << update_remote #always update remote
@@ -57,7 +57,7 @@ module Katello
57
57
  tasks = [tasks] unless tasks.is_a?(Array)
58
58
  version_hrefs = tasks.map { |task| task[:created_resources] }.flatten
59
59
  version_hrefs = version_hrefs.select { |href| ::Katello::Pulp3::Repository.version_href?(href) }
60
- Rails.logger.error("Got multiple version_hrefs for pulp task: #{tasks}") if version_hrefs.length > 2
60
+ Rails.logger.debug("Got multiple version_hrefs for pulp task: #{tasks}") if version_hrefs.length > 2
61
61
  version_hrefs.last
62
62
  end
63
63
 
@@ -65,7 +65,7 @@ module Katello
65
65
  tasks = [tasks] unless tasks.is_a?(Array)
66
66
  publication_hrefs = tasks.map { |task| task[:created_resources] }.flatten
67
67
  publication_hrefs = publication_hrefs.select { |href| ::Katello::Pulp3::Repository.publication_href?(href) }
68
- Rails.logger.error("Got multiple publication hrefs for pulp task: #{tasks}") if publication_hrefs.length > 2
68
+ Rails.logger.debug("Got multiple publication hrefs for pulp task: #{tasks}") if publication_hrefs.length > 2
69
69
  publication_hrefs.last #return the last href to workaround https://pulp.plan.io/issues/9098
70
70
  end
71
71
 
@@ -0,0 +1,26 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Bootc Action - Script Default
4
+ model: JobTemplate
5
+ job_category: Bootc
6
+ description_format: 'bootc %{action} %{options} %{target}'
7
+ provider_type: script
8
+ feature: katello_bootc_action
9
+ template_inputs:
10
+ - name: action
11
+ description: 'The bootc action: upgrade, switch, rollback or status'
12
+ input_type: user
13
+ options: "upgrade\nswitch\nrollback\nstatus"
14
+ required: true
15
+ - name: options
16
+ description: Additional options for bootc action
17
+ input_type: user
18
+ required: false
19
+ - name: target
20
+ description: Target for bootc switch action
21
+ input_type: user
22
+ required: false
23
+ %>
24
+
25
+ bootc <%= input('action') %> <%= input('options') %> <%= input('target') %>
26
+ subscription-manager facts --update
@@ -0,0 +1,13 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Bootc Rollback - Script Default
4
+ job_category: Bootc
5
+ description_format: 'bootc rollback'
6
+ feature: katello_bootc_rollback
7
+ provider_type: script
8
+ foreign_input_sets:
9
+ - template: Bootc Action - Script Default
10
+ exclude: action, options, target
11
+ %>
12
+
13
+ <%= render_template('Bootc Action - Script Default', :action => 'rollback') %>
@@ -0,0 +1,13 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Bootc Status - Script Default
4
+ job_category: Bootc
5
+ description_format: 'bootc status %{options}'
6
+ feature: katello_bootc_status
7
+ provider_type: script
8
+ foreign_input_sets:
9
+ - template: Bootc Action - Script Default
10
+ exclude: action, target
11
+ %>
12
+
13
+ <%= render_template('Bootc Action - Script Default', :action => 'status') %>
@@ -0,0 +1,13 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Bootc Switch - Script Default
4
+ job_category: Bootc
5
+ description_format: 'bootc switch %{options} %{target}'
6
+ feature: katello_bootc_switch
7
+ provider_type: script
8
+ foreign_input_sets:
9
+ - template: Bootc Action - Script Default
10
+ exclude: action
11
+ %>
12
+
13
+ <%= render_template('Bootc Action - Script Default', :action => 'switch') %>
@@ -0,0 +1,13 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Bootc Upgrade - Script Default
4
+ job_category: Bootc
5
+ description_format: 'bootc upgrade %{options}'
6
+ feature: katello_bootc_upgrade
7
+ provider_type: script
8
+ foreign_input_sets:
9
+ - template: Bootc Action - Script Default
10
+ exclude: action, target
11
+ %>
12
+
13
+ <%= render_template('Bootc Action - Script Default', :action => 'upgrade') %>
@@ -0,0 +1,23 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Flatpak - Install application on host
4
+ job_category: Katello
5
+ description_format: 'Install Flatpak application %{Application name} on host'
6
+ provider_type: script
7
+ template_inputs:
8
+ - name: Flatpak remote name
9
+ description: Name of remote to use on host
10
+ input_type: user
11
+ required: false
12
+ - name: Application name
13
+ description: Name of the application to install
14
+ input_type: user
15
+ required: true
16
+ %>
17
+
18
+ <%
19
+ remote_name = input('Flatpak remote name')
20
+ app_name = input('Application name')
21
+ %>
22
+
23
+ sudo dbus-launch flatpak install <%= remote_name %> <%= app_name %> --assumeyes
@@ -0,0 +1,30 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Flatpak - Login to registry via podman
4
+ job_category: Katello
5
+ description_format: 'Login to flatpak registry via podman'
6
+ provider_type: script
7
+ template_inputs:
8
+ - name: Flatpak registry URL
9
+ description: URL of server/capsule
10
+ input_type: user
11
+ required: true
12
+ - name: Username
13
+ description: Username for container registry login
14
+ input_type: user
15
+ required: true
16
+ - name: Password
17
+ description: Password/Access token for container registry login
18
+ input_type: user
19
+ required: true
20
+ hidden_value: true
21
+ %>
22
+
23
+ <%
24
+ server_url = input('Flatpak registry URL')
25
+ username = input('Username')
26
+ password = input('Password')
27
+ %>
28
+
29
+ sudo podman login <%= server_url %> --username <%= username %> --password <%= password %>
30
+ sudo cp /run/containers/0/auth.json /etc/flatpak/oci-auth.json
@@ -0,0 +1,27 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Flatpak - Set up remote on host
4
+ job_category: Katello
5
+ description_format: 'Set up Flatpak remote on host'
6
+ provider_type: script
7
+ template_inputs:
8
+ - name: Remote Name
9
+ description: Remote name for Flatpak
10
+ input_type: user
11
+ required: true
12
+ - name: Flatpak registry URL
13
+ description: URL of server/capsule
14
+ input_type: user
15
+ required: true
16
+ foreign_input_sets:
17
+ - template: Flatpak - Login to registry via podman
18
+ exclude: Flatpak registry URL
19
+ %>
20
+
21
+ <%
22
+ remote_name = input('Remote Name')
23
+ registry_url = input('Flatpak registry URL')
24
+ %>
25
+
26
+ sudo flatpak remote-add --authenticator-name=org.flatpak.Authenticator.Oci <%= remote_name %> oci+<%= registry_url %>/
27
+ <%= render_template('Flatpak - Login to registry via podman', 'Flatpak registry URL': registry_url) %>
@@ -15,7 +15,7 @@ foreign_input_sets:
15
15
  exclude: action,package
16
16
  %>
17
17
 
18
- <% advisory_ids = @host.advisory_ids(search: input("Errata search query"), check_installable_for_host: false) -%>
18
+ <% advisory_ids = @host.advisory_ids(search: input("Errata search query")) -%>
19
19
  <% render_error(N_("No errata matching given search query")) if !input("Errata search query").blank? && advisory_ids.blank? -%>
20
20
  # RESOLVED_ERRATA_IDS=<%= advisory_ids.join(',') %>
21
21
 
@@ -12,7 +12,7 @@ template_inputs:
12
12
  required: false
13
13
  %>
14
14
 
15
- <% advisory_ids = @host.advisory_ids(search: input("Errata search query"), check_installable_for_host: false) -%>
15
+ <% advisory_ids = @host.advisory_ids(search: input("Errata search query")) -%>
16
16
  <% render_error(N_("No errata matching given search query")) if !input("Errata search query").blank? && advisory_ids.blank? -%>
17
17
  # RESOLVED_ERRATA_IDS=<%= advisory_ids.join(',') %>
18
18
 
@@ -18,7 +18,7 @@ commands = @host.traces_helpers(search: input('Traces search query'))
18
18
  reboot = commands.delete('reboot')
19
19
  -%>
20
20
  <% if reboot -%>
21
- - reboot:
21
+ <%= render_template('Power Action - Ansible Default', action: 'restart') %>
22
22
  <% else -%>
23
23
  <%= render_template(
24
24
  'Run Command - Ansible Default',
@@ -22,7 +22,7 @@ template_inputs:
22
22
  versions: input('Selected update versions')
23
23
  ) -%>
24
24
  <% if package_names.empty? -%>
25
- <%= render_template('Package Action - Ansible Default', :state => 'latest', :name => '"*"') %>
25
+ <%= render_template('Package Action - Ansible Default', :state => 'latest', :name => '*') %>
26
26
  <% else -%>
27
27
  ---
28
28
  - hosts: all
@@ -51,10 +51,6 @@ end
51
51
 
52
52
  attributes :usage_count, :user_id, :max_hosts, :system_template_id, :release_version, :purpose_usage, :purpose_role
53
53
 
54
- node :purpose_addons do |key|
55
- key.purpose_addons.pluck(:name)
56
- end
57
-
58
54
  node :permissions do |activation_key|
59
55
  {
60
56
  :view_activation_keys => activation_key.readable?,
@@ -61,7 +61,8 @@ node :lifecycle_environment do |content_facet|
61
61
  end
62
62
 
63
63
  child :content_source => :content_source do
64
- attributes :id, :name, :url
64
+ attributes :id, :name, :url, :registration_host
65
+ node(:load_balanced) { |content_source| content_source.load_balanced? }
65
66
  end
66
67
 
67
68
  child :kickstart_repository => :kickstart_repository do
@@ -39,6 +39,8 @@ child :content_facet => :content_facet_attributes do
39
39
  node(:view_activation_keys) { user.can?("view_activation_keys") }
40
40
  node(:view_products) { user.can?("view_products") }
41
41
  node(:create_bookmarks) { user.can?("create_bookmarks") }
42
+ node(:view_smart_proxies) { user.can?("view_smart_proxies") }
43
+ node(:view_capsule_content) { user.can?("view_capsule_content") }
42
44
  end
43
45
  end
44
46
 
@@ -13,6 +13,7 @@ attributes :start_date, :if => lambda { |rule| rule.respond_to?(:start_date) &&
13
13
  attributes :end_date, :if => lambda { |rule| rule.respond_to?(:end_date) && !rule.end_date.blank? }
14
14
  attributes :architecture, :if => lambda { |rule| rule.respond_to?(:architecture) && !rule.architecture.blank? }
15
15
  attributes :types, :if => lambda { |rule| rule.respond_to?(:types) && !rule.types.blank? }
16
+ attributes :allow_other_types, :if => lambda { |rule| rule.respond_to?(:allow_other_types) }
16
17
  attributes :date_type, :if => lambda { |rule| rule.respond_to?(:date_type) }
17
18
  attributes :module_stream_id, :if => lambda { |rule| rule.respond_to?(:module_stream_id) && !rule.module_stream_id.blank? }
18
19
  if @resource&.try(:module_stream)
@@ -46,10 +46,14 @@ node :permissions do |cvv|
46
46
  }
47
47
  end
48
48
 
49
+ child :content_view_environments => :content_view_environments do
50
+ attributes :label, :environment_id, :environment_name
51
+ end
52
+
49
53
  extends 'katello/api/v2/common/timestamps'
50
54
 
51
55
  version = @object || @resource
52
- child :environments => :environments do
56
+ child :sorted_organization_readable_environments => :environments do
53
57
  attributes :id, :name, :label
54
58
 
55
59
  node :publish_date do |env|
@@ -1,6 +1,6 @@
1
1
  object @resource
2
2
 
3
- attributes :id, :schema_version, :digest, :manifest_type
3
+ attributes :id, :schema_version, :digest, :manifest_type, :content_type
4
4
  attributes :annotations, :labels, :is_bootable, :is_flatpak
5
5
 
6
6
  child :docker_tags => :tags do
@@ -1,6 +1,6 @@
1
1
  object @resource
2
2
 
3
- attributes :id, :schema_version, :digest, :manifest_type
3
+ attributes :id, :schema_version, :digest, :manifest_type, :content_type
4
4
  attributes :annotations, :labels, :is_bootable, :is_flatpak
5
5
 
6
6
  child :docker_tags => :tags do
@@ -0,0 +1,4 @@
1
+ extends 'katello/api/v2/common/identifier'
2
+
3
+ attributes :name
4
+ attributes :label, :flatpak_remote_id
@@ -0,0 +1,7 @@
1
+ object false
2
+
3
+ extends "katello/api/v2/common/index"
4
+
5
+ child @collection[:results] => :results do
6
+ extends "katello/api/v2/flatpak_remote_repositories/base"
7
+ end
@@ -0,0 +1,13 @@
1
+ object @resource
2
+
3
+ extends "katello/api/v2/flatpak_remote_repositories/base"
4
+
5
+ child :flatpak_remote => :flatpak_remote do
6
+ attributes :id, :name, :url
7
+ end
8
+
9
+ if ::Foreman::Cast.to_bool params[:manifests]
10
+ child :manifests => :manifests do
11
+ attributes :name, :digest, :tags, :application, :runtime, :flatpak_ref
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ extends 'katello/api/v2/common/identifier'
2
+ extends 'katello/api/v2/common/org_reference'
3
+
4
+ attributes :name
5
+ attributes :url, :description, :username, :seeded, :registry_url
@@ -0,0 +1,8 @@
1
+ object false
2
+
3
+ extends "katello/api/v2/common/index"
4
+ extends 'katello/api/v2/flatpak_remotes/permissions'
5
+
6
+ child @collection[:results] => :results do
7
+ extends "katello/api/v2/flatpak_remotes/base"
8
+ end
@@ -0,0 +1,11 @@
1
+ collection @flatpak_remotes
2
+
3
+ if ::Foreman::Cast.to_bool(params.fetch(:include_permissions, false))
4
+ user = User.current # current_user is not available here
5
+ node do
6
+ node(:can_create) { user.can?("create_flatpak_remotes") }
7
+ node(:can_edit) { user.can?("edit_flatpak_remotes") }
8
+ node(:can_delete) { user.can?("destroy_flatpak_remotes") }
9
+ node(:can_view) { user.can?("view_flatpak_remotes") }
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ object @resource
2
+
3
+ extends "katello/api/v2/flatpak_remotes/base"
@@ -5,14 +5,6 @@ object @resource
5
5
 
6
6
  attributes :id, :name, :description
7
7
 
8
- node :operatingsystem_family do |resource|
9
- resource.operatingsystem&.family
10
- end
11
-
12
- node :operatingsystem_major do |resource|
13
- resource.operatingsystem&.major
14
- end
15
-
16
8
  if @facet
17
9
  node :content_view do
18
10
  content_view = @facet&.single_content_view