katello 4.15.0.rc2 → 4.16.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 (460) 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/locale/bn/katello.js +248 -263
  4. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +247 -262
  5. data/app/assets/javascripts/katello/locale/ca/katello.js +247 -262
  6. data/app/assets/javascripts/katello/locale/cs/katello.js +521 -536
  7. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +253 -268
  8. data/app/assets/javascripts/katello/locale/de/katello.js +248 -263
  9. data/app/assets/javascripts/katello/locale/de_AT/katello.js +247 -262
  10. data/app/assets/javascripts/katello/locale/de_DE/katello.js +249 -264
  11. data/app/assets/javascripts/katello/locale/el/katello.js +251 -266
  12. data/app/assets/javascripts/katello/locale/en/katello.js +253 -268
  13. data/app/assets/javascripts/katello/locale/en_GB/katello.js +263 -278
  14. data/app/assets/javascripts/katello/locale/en_US/katello.js +247 -262
  15. data/app/assets/javascripts/katello/locale/es/katello.js +248 -263
  16. data/app/assets/javascripts/katello/locale/et_EE/katello.js +247 -262
  17. data/app/assets/javascripts/katello/locale/fr/katello.js +250 -265
  18. data/app/assets/javascripts/katello/locale/gl/katello.js +247 -262
  19. data/app/assets/javascripts/katello/locale/gu/katello.js +249 -264
  20. data/app/assets/javascripts/katello/locale/he_IL/katello.js +249 -264
  21. data/app/assets/javascripts/katello/locale/hi/katello.js +248 -263
  22. data/app/assets/javascripts/katello/locale/id/katello.js +261 -275
  23. data/app/assets/javascripts/katello/locale/it/katello.js +252 -267
  24. data/app/assets/javascripts/katello/locale/ja/katello.js +250 -265
  25. data/app/assets/javascripts/katello/locale/ka/katello.js +247 -262
  26. data/app/assets/javascripts/katello/locale/kn/katello.js +248 -263
  27. data/app/assets/javascripts/katello/locale/ko/katello.js +248 -263
  28. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +247 -262
  29. data/app/assets/javascripts/katello/locale/mr/katello.js +248 -263
  30. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +252 -267
  31. data/app/assets/javascripts/katello/locale/or/katello.js +248 -263
  32. data/app/assets/javascripts/katello/locale/pa/katello.js +248 -263
  33. data/app/assets/javascripts/katello/locale/pl/katello.js +248 -263
  34. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +247 -262
  35. data/app/assets/javascripts/katello/locale/pt/katello.js +248 -263
  36. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +248 -263
  37. data/app/assets/javascripts/katello/locale/ro/katello.js +247 -262
  38. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +247 -262
  39. data/app/assets/javascripts/katello/locale/ru/katello.js +253 -268
  40. data/app/assets/javascripts/katello/locale/sl/katello.js +247 -262
  41. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +248 -263
  42. data/app/assets/javascripts/katello/locale/ta/katello.js +248 -263
  43. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +247 -262
  44. data/app/assets/javascripts/katello/locale/te/katello.js +248 -263
  45. data/app/assets/javascripts/katello/locale/tr/katello.js +247 -262
  46. data/app/assets/javascripts/katello/locale/vi/katello.js +247 -262
  47. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +247 -262
  48. data/app/assets/javascripts/katello/locale/zh/katello.js +247 -262
  49. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +250 -265
  50. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +255 -270
  51. data/app/assets/javascripts/katello/sync_management/sync_management.js +16 -2
  52. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +33 -9
  53. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
  54. data/app/controllers/katello/api/v2/activation_keys_controller.rb +4 -9
  55. data/app/controllers/katello/api/v2/content_uploads_controller.rb +2 -1
  56. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +3 -1
  57. data/app/controllers/katello/api/v2/content_views_controller.rb +4 -1
  58. data/app/controllers/katello/api/v2/environments_controller.rb +4 -0
  59. data/app/controllers/katello/api/v2/errata_controller.rb +12 -1
  60. data/app/controllers/katello/api/v2/flatpak_remote_repositories_controller.rb +81 -0
  61. data/app/controllers/katello/api/v2/flatpak_remotes_controller.rb +86 -0
  62. data/app/controllers/katello/api/v2/host_bootc_images_controller.rb +71 -0
  63. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +4 -6
  64. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +3 -5
  65. data/app/controllers/katello/api/v2/repositories_controller.rb +18 -3
  66. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +0 -8
  67. data/app/controllers/katello/concerns/api/v2/http_proxies_controller_extensions.rb +17 -0
  68. data/app/controllers/katello/concerns/http_proxies_controller_extensions.rb +20 -0
  69. data/app/controllers/katello/sync_management_controller.rb +6 -2
  70. data/app/helpers/katello/content_source_helper.rb +8 -1
  71. data/app/helpers/katello/content_view_helper.rb +3 -1
  72. data/app/lib/actions/candlepin/activation_key/create.rb +1 -3
  73. data/app/lib/actions/candlepin/activation_key/update.rb +1 -3
  74. data/app/lib/actions/candlepin/environment/set_content.rb +17 -4
  75. data/app/lib/actions/katello/activation_key/create.rb +1 -2
  76. data/app/lib/actions/katello/activation_key/update.rb +2 -4
  77. data/app/lib/actions/katello/capsule_content/refresh_repos.rb +7 -1
  78. data/app/lib/actions/katello/content_view/presenters/incremental_updates_presenter.rb +3 -2
  79. data/app/lib/actions/katello/content_view/publish.rb +7 -2
  80. data/app/lib/actions/katello/content_view_environment/reassign_objects.rb +11 -2
  81. data/app/lib/actions/katello/content_view_version/incremental_update.rb +31 -22
  82. data/app/lib/actions/katello/flatpak/mirror_remote_repository.rb +30 -0
  83. data/app/lib/actions/katello/flatpak/scan_remote.rb +17 -12
  84. data/app/lib/actions/katello/host/update_system_purpose.rb +1 -6
  85. data/app/lib/actions/katello/repository/destroy.rb +1 -5
  86. data/app/lib/actions/katello/repository/update.rb +1 -5
  87. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +18 -2
  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 +4 -2
  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 +21 -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 +16 -18
  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_view_filter_rules/show.json.rabl +1 -0
  169. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +5 -1
  170. data/app/views/katello/api/v2/docker_manifest_lists/show.json.rabl +1 -1
  171. data/app/views/katello/api/v2/docker_manifests/show.json.rabl +1 -1
  172. data/app/views/katello/api/v2/flatpak_remote_repositories/base.json.rabl +4 -0
  173. data/app/views/katello/api/v2/flatpak_remote_repositories/index.json.rabl +7 -0
  174. data/app/views/katello/api/v2/flatpak_remote_repositories/show.json.rabl +13 -0
  175. data/app/views/katello/api/v2/flatpak_remotes/base.json.rabl +5 -0
  176. data/app/views/katello/api/v2/flatpak_remotes/index.json.rabl +8 -0
  177. data/app/views/katello/api/v2/flatpak_remotes/permissions.json.rabl +11 -0
  178. data/app/views/katello/api/v2/flatpak_remotes/show.json.rabl +3 -0
  179. data/app/views/katello/api/v2/hosts/base.json.rabl +0 -8
  180. data/app/views/katello/api/v2/hosts/os_attributes.json.rabl +13 -0
  181. data/app/views/katello/api/v2/http_proxies/show.json.rabl +1 -0
  182. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
  183. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
  184. data/app/views/katello/api/v2/subscription_facet/base.json.rabl +0 -4
  185. data/app/views/katello/api/v2/subscriptions/show.json.rabl +1 -1
  186. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +10 -4
  187. data/app/views/overrides/http_proxies/_update_setting_input.html.erb +18 -0
  188. data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
  189. data/config/initializers/monkeys.rb +0 -1
  190. data/config/initializers/pagelets.rb +6 -0
  191. data/config/routes/api/registry.rb +1 -0
  192. data/config/routes/api/v2.rb +21 -0
  193. data/config/routes/overrides.rb +1 -0
  194. data/config/routes.rb +2 -0
  195. data/db/migrate/20190605014649_add_purpose_addons.rb +0 -12
  196. data/db/migrate/20200213184848_create_evr_type.rb +126 -1
  197. data/db/migrate/20200818192230_update_system_purpose_status.rb +0 -1
  198. data/db/migrate/20240207191223_remove_entitlement_mode_host_statuses.rb +0 -1
  199. data/db/migrate/20240924161240_katello_recreate_evr_constructs.rb +160 -0
  200. data/db/migrate/20241022121706_add_sync_dependencies_option.rb +5 -0
  201. data/db/migrate/20241101144625_remove_system_purpose_addons.rb +9 -0
  202. data/db/migrate/20241107002541_add_registry_url_to_katello_flatpak_remotes.rb +5 -0
  203. data/db/migrate/20241112145802_add_manifest_entity_to_content_facets.rb +7 -0
  204. data/db/migrate/20241120213713_add_allow_other_types_to_content_view_erratum_filter_rules.rb +6 -0
  205. data/db/migrate/20241206183052_add_content_type_to_container_manifests_and_lists.rb +9 -0
  206. data/db/seeds.d/75-job_templates.rb +5 -1
  207. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +2 -2
  208. data/engines/bastion/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap-tpls.js +3 -3
  209. data/engines/bastion/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap.js +3 -3
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details-info.controller.js +0 -5
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +1 -41
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +0 -12
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/subscription-add-or-remove.html +1 -1
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-system-purpose-modal.controller.js +1 -41
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-traces-modal.controller.js +1 -1
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +2 -2
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +2 -2
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +0 -13
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -1
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +0 -5
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +1 -35
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -14
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-provisioning-info.html +1 -1
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +46 -22
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-content-views.controller.js +2 -1
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/views/debs.html +4 -0
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-details.html +1 -1
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-errata.html +1 -1
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-tasks-list.html +2 -1
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +85 -29
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +338 -93
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +340 -95
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +340 -95
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +341 -96
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +31 -54
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +338 -93
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +338 -93
  240. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +341 -96
  241. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +349 -104
  242. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +338 -93
  243. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +33 -56
  244. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +338 -93
  245. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +80 -68
  246. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +340 -95
  247. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +340 -95
  248. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +339 -111
  249. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +340 -95
  250. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +379 -130
  251. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +342 -103
  252. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +70 -83
  253. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +84 -90
  254. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +340 -95
  255. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +130 -138
  256. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +338 -93
  257. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +340 -95
  258. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +343 -97
  259. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +340 -95
  260. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +340 -95
  261. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +340 -95
  262. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +338 -93
  263. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +338 -93
  264. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +40 -63
  265. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +338 -93
  266. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +338 -93
  267. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +343 -102
  268. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +338 -93
  269. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +340 -95
  270. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +338 -93
  271. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +340 -95
  272. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +340 -95
  273. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +338 -93
  274. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +338 -93
  275. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +338 -93
  276. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +338 -93
  277. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +70 -83
  278. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +362 -105
  279. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +29 -29
  280. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +1 -1
  281. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js +1 -1
  282. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +2 -2
  283. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +5 -1
  284. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +24 -8
  285. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-tasks.html +2 -1
  286. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +2 -2
  287. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +21 -8
  288. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/os-versions.service.js +1 -0
  289. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-info.html +3 -3
  290. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-tasks.html +2 -1
  291. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +4 -2
  292. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery.html +2 -1
  293. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +3 -3
  294. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/partials/product-table-sync-status.html +1 -1
  295. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscription-start-date.html +1 -1
  296. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
  297. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/views/sync-plans.html +2 -2
  298. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/tasks-table.directive.js +2 -1
  299. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/task-details.html +2 -2
  300. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-index.html +1 -1
  301. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-table.html +1 -1
  302. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/user-tasks-table.html +1 -1
  303. data/lib/katello/engine.rb +6 -0
  304. data/lib/katello/permission_creator.rb +37 -0
  305. data/lib/katello/permissions/host_permissions.rb +2 -0
  306. data/lib/katello/permissions/registry_permissions.rb +1 -0
  307. data/lib/katello/plugin.rb +18 -1
  308. data/lib/katello/repository_types/docker.rb +0 -1
  309. data/lib/katello/repository_types/python.rb +4 -1
  310. data/lib/katello/version.rb +1 -1
  311. data/lib/katello.rb +2 -0
  312. data/locale/Makefile +20 -24
  313. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  314. data/locale/bn/katello.po +248 -263
  315. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  316. data/locale/bn_IN/katello.po +247 -262
  317. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  318. data/locale/ca/katello.po +247 -262
  319. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  320. data/locale/cs/katello.po +524 -799
  321. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  322. data/locale/cs_CZ/katello.po +254 -269
  323. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  324. data/locale/de/katello.po +248 -263
  325. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  326. data/locale/de_AT/katello.po +247 -262
  327. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  328. data/locale/de_DE/katello.po +250 -265
  329. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  330. data/locale/el/katello.po +252 -267
  331. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  332. data/locale/en/katello.po +257 -271
  333. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  334. data/locale/en_GB/katello.po +264 -279
  335. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  336. data/locale/en_US/katello.po +247 -262
  337. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  338. data/locale/es/katello.po +248 -263
  339. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  340. data/locale/et_EE/katello.po +247 -262
  341. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  342. data/locale/fr/katello.po +250 -265
  343. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  344. data/locale/gl/katello.po +247 -262
  345. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  346. data/locale/gu/katello.po +250 -265
  347. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  348. data/locale/he_IL/katello.po +249 -264
  349. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  350. data/locale/hi/katello.po +248 -263
  351. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  352. data/locale/id/katello.po +264 -275
  353. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  354. data/locale/it/katello.po +254 -270
  355. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  356. data/locale/ja/katello.po +250 -265
  357. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  358. data/locale/ka/katello.po +247 -262
  359. data/locale/katello.pot +1216 -1215
  360. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  361. data/locale/kn/katello.po +248 -263
  362. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  363. data/locale/ko/katello.po +248 -263
  364. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  365. data/locale/ml_IN/katello.po +247 -262
  366. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  367. data/locale/mr/katello.po +248 -263
  368. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  369. data/locale/nl_NL/katello.po +254 -268
  370. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  371. data/locale/or/katello.po +248 -263
  372. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  373. data/locale/pa/katello.po +248 -263
  374. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  375. data/locale/pl/katello.po +249 -264
  376. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  377. data/locale/pl_PL/katello.po +247 -262
  378. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  379. data/locale/pt/katello.po +248 -263
  380. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  381. data/locale/pt_BR/katello.po +248 -263
  382. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  383. data/locale/ro/katello.po +247 -262
  384. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  385. data/locale/ro_RO/katello.po +247 -262
  386. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  387. data/locale/ru/katello.po +255 -270
  388. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  389. data/locale/sl/katello.po +247 -262
  390. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  391. data/locale/sv_SE/katello.po +249 -264
  392. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  393. data/locale/ta/katello.po +248 -263
  394. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  395. data/locale/ta_IN/katello.po +247 -262
  396. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  397. data/locale/te/katello.po +248 -263
  398. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  399. data/locale/tr/katello.po +247 -262
  400. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  401. data/locale/vi/katello.po +247 -262
  402. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  403. data/locale/vi_VN/katello.po +247 -262
  404. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  405. data/locale/zh/katello.po +247 -262
  406. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  407. data/locale/zh_CN/katello.po +250 -265
  408. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  409. data/locale/zh_TW/katello.po +257 -272
  410. data/webpack/ForemanColumnExtensions/index.js +73 -3
  411. data/webpack/ForemanColumnExtensions/index.scss +9 -0
  412. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
  413. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +1 -1
  414. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +1 -20
  415. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +3 -61
  416. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +0 -5
  417. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +0 -5
  418. data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +87 -0
  419. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +28 -2
  420. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +1 -1
  421. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +2 -2
  422. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +1 -1
  423. data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +55 -0
  424. data/webpack/containers/Application/config.js +5 -0
  425. data/webpack/global_index.js +3 -1
  426. data/webpack/redux/actions/RedHatRepositories/helpers.js +15 -6
  427. data/webpack/scenes/BootedContainerImages/BootedContainerImagesConstants.js +5 -0
  428. data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +242 -0
  429. data/webpack/scenes/BootedContainerImages/__tests__/bootedContainerImages.fixtures.js +42 -0
  430. data/webpack/scenes/BootedContainerImages/__tests__/bootedContainerImagesPage.test.js +233 -0
  431. data/webpack/scenes/BootedContainerImages/index.js +4 -0
  432. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +1 -2
  433. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +39 -7
  434. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +13 -2
  435. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +1 -1
  436. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +1 -0
  437. data/webpack/scenes/ContentViews/Details/Repositories/RepoIcon.js +4 -2
  438. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +1 -2
  439. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +20 -1
  440. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +20 -1
  441. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +128 -18
  442. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedActivationKeys.fixture.json +0 -1
  443. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +1 -2
  444. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -4
  445. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +5 -1
  446. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +6 -1
  447. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -1
  448. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +5 -1
  449. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +4 -2
  450. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
  451. data/webpack/scenes/Subscriptions/Details/SubscriptionPurposeAttributes.js +0 -1
  452. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +0 -10
  453. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +0 -3
  454. data/webpack/scenes/Subscriptions/Details/__tests__/subscriptionDetails.fixtures.js +0 -1
  455. metadata +63 -12
  456. data/app/models/katello/activation_key_purpose_addon.rb +0 -6
  457. data/app/models/katello/purpose_addon.rb +0 -11
  458. data/app/models/katello/subscription_facet_purpose_addon.rb +0 -6
  459. data/lib/monkeys/fx_sqlite_skip.rb +0 -13
  460. data/locale/action_names.rb +0 -181
@@ -1,4 +1,3 @@
1
1
  #place where monkey patches are required
2
2
  require 'monkeys/ar_postgres_evr_t'
3
- require 'monkeys/fx_sqlite_skip'
4
3
  require 'monkeys/remove_hidden_distribution'
@@ -4,3 +4,9 @@ Pagelets::Manager.with_key "hosts/_form" do |mgr|
4
4
  :partial => "overrides/activation_keys/host_environment_select",
5
5
  :priority => 80
6
6
  end
7
+
8
+ Pagelets::Manager.with_key "http_proxies/_form" do |mgr|
9
+ mgr.add_pagelet :main_tab_fields,
10
+ :partial => "overrides/http_proxies/update_setting_input",
11
+ :priority => 80
12
+ end
@@ -19,6 +19,7 @@ Katello::Engine.routes.draw do
19
19
  match '/v2' => 'registry_proxies#ping', :via => :get
20
20
  match '/v1/_ping' => 'registry_proxies#v1_ping', :via => :get
21
21
  match '/v1/search' => 'registry_proxies#v1_search', :via => :get
22
+ match '/index/static' => 'registry_proxies#static_index', :via => :get
22
23
  end
23
24
  end
24
25
  end
@@ -15,6 +15,25 @@ Katello::Engine.routes.draw do
15
15
  get :auto_complete_search, :on => :collection
16
16
  end
17
17
 
18
+ api_resources :flatpak_remotes, :only => [:index, :show, :create, :update, :destroy] do
19
+ get :auto_complete_search, :on => :collection
20
+ member do
21
+ post :scan
22
+ end
23
+ api_resources :flatpak_remote_repositories, :only => [:index, :show]
24
+ end
25
+
26
+ api_resources :flatpak_remote_repositories, :only => [:index, :show] do
27
+ get :auto_complete_search, :on => :collection
28
+ member do
29
+ post :mirror
30
+ end
31
+ end
32
+
33
+ api_resources :host_bootc_images, :only => [:auto_complete_search] do
34
+ get :auto_complete_search, :on => :collection
35
+ end
36
+
18
37
  api_resources :capsules, :only => [:index, :show] do
19
38
  member do
20
39
  resource :content, :only => [], :controller => 'capsule_content' do
@@ -263,6 +282,8 @@ Katello::Engine.routes.draw do
263
282
  get :manifest_history
264
283
  end
265
284
  end
285
+ api_resources :flatpak_remotes, :only => [:index, :show]
286
+ api_resources :flatpak_remote_repositories, :only => [:index, :show]
266
287
  end
267
288
 
268
289
  match "/packages/thindex" => "packages#thindex", :via => :get
@@ -59,6 +59,7 @@ Foreman::Application.routes.draw do
59
59
 
60
60
  collection do
61
61
  match '/auto_complete_search' => 'host_autocomplete#auto_complete_search', :via => :get
62
+ match '/bootc_images' => 'host_bootc_images#bootc_images', :via => :get
62
63
  match '/bulk/add_host_collections' => 'hosts_bulk_actions#bulk_add_host_collections', :via => :put
63
64
  match '/bulk/remove_host_collections' => 'hosts_bulk_actions#bulk_remove_host_collections', :via => :put
64
65
  match '/bulk/remove_host_collections' => 'hosts_bulk_actions#bulk_remove_host_collections', :via => :put
data/config/routes.rb CHANGED
@@ -33,6 +33,8 @@ Katello::Engine.routes.draw do
33
33
  match '/alternate_content_sources' => 'react#index', :via => [:get]
34
34
  match '/alternate_content_sources/*page' => 'react#index', :via => [:get]
35
35
 
36
+ match '/booted_container_images' => 'react#index', :via => [:get]
37
+
36
38
  Katello::RepositoryTypeManager.generic_ui_content_types(false).each do |type|
37
39
  get "/#{type.pluralize}", to: redirect("/content/#{type.pluralize}")
38
40
  get "/#{type.pluralize}/:page", to: redirect("/content/#{type.pluralize}/%{page}")
@@ -12,18 +12,6 @@ class AddPurposeAddons < ActiveRecord::Migration[5.2]
12
12
  add_foreign_key :katello_subscription_facet_purpose_addons, :katello_subscription_facets, column: :subscription_facet_id, name: :katello_sub_facet_purpose_addon_facet_id
13
13
  add_foreign_key :katello_subscription_facet_purpose_addons, :katello_purpose_addons, column: :purpose_addon_id, name: :katello_sub_facet_purpose_addon_purpose_addon_id
14
14
 
15
- Katello::Host::SubscriptionFacet.pluck(:id, :purpose_addons).each do |facet|
16
- yaml_string = facet[1]
17
- next if yaml_string.nil?
18
-
19
- parsed = YAML.parse(yaml_string)
20
- addon_names = parsed.root.children.map(&:value)
21
- addon_names.each do |addon|
22
- purpose_addon = Katello::PurposeAddon.find_or_create_by(name: addon)
23
- Katello::SubscriptionFacetPurposeAddon.create(purpose_addon_id: purpose_addon.id, subscription_facet_id: facet[0])
24
- end
25
- end
26
-
27
15
  remove_column :katello_subscription_facets, :purpose_addons, :text
28
16
  end
29
17
  end
@@ -4,7 +4,132 @@ class CreateEvrType < ActiveRecord::Migration[5.2]
4
4
  def up
5
5
  unless connection.adapter_name.downcase.include?('sqlite')
6
6
 
7
- enable_extension "evr"
7
+ execute <<~SQL
8
+ create type evr_array_item as (
9
+ n NUMERIC,
10
+ s TEXT
11
+ );
12
+
13
+ create type evr_t as (
14
+ epoch INT,
15
+ version evr_array_item[],
16
+ release evr_array_item[]
17
+ );
18
+
19
+ CREATE FUNCTION evr_trigger() RETURNS trigger AS $$
20
+ BEGIN
21
+ NEW.evr = (select ROW(coalesce(NEW.epoch::numeric,0),
22
+ rpmver_array(coalesce(NEW.version,'empty'))::evr_array_item[],
23
+ rpmver_array(coalesce(NEW.release,'empty'))::evr_array_item[])::evr_t);
24
+ RETURN NEW;
25
+ END;
26
+ $$ language 'plpgsql';
27
+
28
+ create or replace FUNCTION empty(t TEXT)
29
+ RETURNS BOOLEAN as $$
30
+ BEGIN
31
+ return t ~ '^[[:space:]]*$';
32
+ END;
33
+ $$ language 'plpgsql';
34
+
35
+ create or replace FUNCTION isalpha(ch CHAR)
36
+ RETURNS BOOLEAN as $$
37
+ BEGIN
38
+ if ascii(ch) between ascii('a') and ascii('z') or
39
+ ascii(ch) between ascii('A') and ascii('Z')
40
+ then
41
+ return TRUE;
42
+ end if;
43
+ return FALSE;
44
+ END;
45
+ $$ language 'plpgsql';
46
+
47
+ create or replace FUNCTION isalphanum(ch CHAR)
48
+ RETURNS BOOLEAN as $$
49
+ BEGIN
50
+ if ascii(ch) between ascii('a') and ascii('z') or
51
+ ascii(ch) between ascii('A') and ascii('Z') or
52
+ ascii(ch) between ascii('0') and ascii('9')
53
+ then
54
+ return TRUE;
55
+ end if;
56
+ return FALSE;
57
+ END;
58
+ $$ language 'plpgsql';
59
+
60
+ create or replace function isdigit(ch CHAR)
61
+ RETURNS BOOLEAN as $$
62
+ BEGIN
63
+ if ascii(ch) between ascii('0') and ascii('9')
64
+ then
65
+ return TRUE;
66
+ end if;
67
+ return FALSE;
68
+ END ;
69
+ $$ language 'plpgsql';
70
+
71
+ create or replace FUNCTION rpmver_array (string1 IN VARCHAR)
72
+ RETURNS evr_array_item[] as $$
73
+ declare
74
+ str1 VARCHAR := string1;
75
+ digits VARCHAR(10) := '0123456789';
76
+ lc_alpha VARCHAR(27) := 'abcdefghijklmnopqrstuvwxyz';
77
+ uc_alpha VARCHAR(27) := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
78
+ alpha VARCHAR(54) := lc_alpha || uc_alpha;
79
+ one VARCHAR;
80
+ isnum BOOLEAN;
81
+ ver_array evr_array_item[] := ARRAY[]::evr_array_item[];
82
+ BEGIN
83
+ if str1 is NULL
84
+ then
85
+ RAISE EXCEPTION 'VALUE_ERROR.';
86
+ end if;
87
+
88
+ one := str1;
89
+ <<segment_loop>>
90
+ while one <> ''
91
+ loop
92
+ declare
93
+ segm1 VARCHAR;
94
+ segm1_n NUMERIC := 0;
95
+ begin
96
+ -- Throw out all non-alphanum characters
97
+ while one <> '' and not isalphanum(one)
98
+ loop
99
+ one := substr(one, 2);
100
+ end loop;
101
+ str1 := one;
102
+ if str1 <> '' and isdigit(str1)
103
+ then
104
+ str1 := ltrim(str1, digits);
105
+ isnum := true;
106
+ else
107
+ str1 := ltrim(str1, alpha);
108
+ isnum := false;
109
+ end if;
110
+ if str1 <> ''
111
+ then segm1 := substr(one, 1, length(one) - length(str1));
112
+ else segm1 := one;
113
+ end if;
114
+
115
+ if segm1 = '' then return ver_array; end if; /* arbitrary */
116
+ if isnum
117
+ then
118
+ segm1 := ltrim(segm1, '0');
119
+ if segm1 <> '' then segm1_n := segm1::numeric; end if;
120
+ segm1 := NULL;
121
+ else
122
+ end if;
123
+ ver_array := array_append(ver_array, (segm1_n, segm1)::evr_array_item);
124
+ one := str1;
125
+ end;
126
+ end loop segment_loop;
127
+
128
+ return ver_array;
129
+ END ;
130
+ $$ language 'plpgsql';
131
+
132
+ SQL
8
133
 
9
134
  add_column :katello_rpms, :evr, :evr_t
10
135
  add_column :katello_installed_packages, :evr, :evr_t
@@ -2,7 +2,6 @@ class UpdateSystemPurposeStatus < ActiveRecord::Migration[6.0]
2
2
  def change
3
3
  purpose_types = [
4
4
  "Katello::PurposeStatus",
5
- "Katello::PurposeAddonsStatus",
6
5
  "Katello::PurposeRoleStatus",
7
6
  "Katello::PurposeSlaStatus",
8
7
  "Katello::PurposeUsageStatus",
@@ -8,7 +8,6 @@ class RemoveEntitlementModeHostStatuses < ActiveRecord::Migration[6.1]
8
8
  obsolete_statuses = [
9
9
  "Katello::SubscriptionStatus",
10
10
  "Katello::PurposeStatus",
11
- "Katello::PurposeAddonsStatus",
12
11
  "Katello::PurposeRoleStatus",
13
12
  "Katello::PurposeSlaStatus",
14
13
  "Katello::PurposeUsageStatus",
@@ -0,0 +1,160 @@
1
+ class KatelloRecreateEvrConstructs < ActiveRecord::Migration[6.1]
2
+ def up
3
+ if !extension_enabled?('evr')
4
+ return
5
+ else
6
+ execute <<~SQL
7
+ DROP EXTENSION evr CASCADE;
8
+ SQL
9
+
10
+ execute <<~SQL
11
+ create type evr_array_item as (
12
+ n NUMERIC,
13
+ s TEXT
14
+ );
15
+
16
+ create type evr_t as (
17
+ epoch INT,
18
+ version evr_array_item[],
19
+ release evr_array_item[]
20
+ );
21
+
22
+ CREATE FUNCTION evr_trigger() RETURNS trigger AS $$
23
+ BEGIN
24
+ NEW.evr = (select ROW(coalesce(NEW.epoch::numeric,0),
25
+ rpmver_array(coalesce(NEW.version,'empty'))::evr_array_item[],
26
+ rpmver_array(coalesce(NEW.release,'empty'))::evr_array_item[])::evr_t);
27
+ RETURN NEW;
28
+ END;
29
+ $$ language 'plpgsql';
30
+
31
+ create or replace FUNCTION empty(t TEXT)
32
+ RETURNS BOOLEAN as $$
33
+ BEGIN
34
+ return t ~ '^[[:space:]]*$';
35
+ END;
36
+ $$ language 'plpgsql';
37
+
38
+ create or replace FUNCTION isalpha(ch CHAR)
39
+ RETURNS BOOLEAN as $$
40
+ BEGIN
41
+ if ascii(ch) between ascii('a') and ascii('z') or
42
+ ascii(ch) between ascii('A') and ascii('Z')
43
+ then
44
+ return TRUE;
45
+ end if;
46
+ return FALSE;
47
+ END;
48
+ $$ language 'plpgsql';
49
+
50
+ create or replace FUNCTION isalphanum(ch CHAR)
51
+ RETURNS BOOLEAN as $$
52
+ BEGIN
53
+ if ascii(ch) between ascii('a') and ascii('z') or
54
+ ascii(ch) between ascii('A') and ascii('Z') or
55
+ ascii(ch) between ascii('0') and ascii('9')
56
+ then
57
+ return TRUE;
58
+ end if;
59
+ return FALSE;
60
+ END;
61
+ $$ language 'plpgsql';
62
+
63
+ create or replace function isdigit(ch CHAR)
64
+ RETURNS BOOLEAN as $$
65
+ BEGIN
66
+ if ascii(ch) between ascii('0') and ascii('9')
67
+ then
68
+ return TRUE;
69
+ end if;
70
+ return FALSE;
71
+ END ;
72
+ $$ language 'plpgsql';
73
+
74
+ create or replace FUNCTION rpmver_array (string1 IN VARCHAR)
75
+ RETURNS evr_array_item[] as $$
76
+ declare
77
+ str1 VARCHAR := string1;
78
+ digits VARCHAR(10) := '0123456789';
79
+ lc_alpha VARCHAR(27) := 'abcdefghijklmnopqrstuvwxyz';
80
+ uc_alpha VARCHAR(27) := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
81
+ alpha VARCHAR(54) := lc_alpha || uc_alpha;
82
+ one VARCHAR;
83
+ isnum BOOLEAN;
84
+ ver_array evr_array_item[] := ARRAY[]::evr_array_item[];
85
+ BEGIN
86
+ if str1 is NULL
87
+ then
88
+ RAISE EXCEPTION 'VALUE_ERROR.';
89
+ end if;
90
+
91
+ one := str1;
92
+ <<segment_loop>>
93
+ while one <> ''
94
+ loop
95
+ declare
96
+ segm1 VARCHAR;
97
+ segm1_n NUMERIC := 0;
98
+ begin
99
+ -- Throw out all non-alphanum characters
100
+ while one <> '' and not isalphanum(one)
101
+ loop
102
+ one := substr(one, 2);
103
+ end loop;
104
+ str1 := one;
105
+ if str1 <> '' and isdigit(str1)
106
+ then
107
+ str1 := ltrim(str1, digits);
108
+ isnum := true;
109
+ else
110
+ str1 := ltrim(str1, alpha);
111
+ isnum := false;
112
+ end if;
113
+ if str1 <> ''
114
+ then segm1 := substr(one, 1, length(one) - length(str1));
115
+ else segm1 := one;
116
+ end if;
117
+
118
+ if segm1 = '' then return ver_array; end if; /* arbitrary */
119
+ if isnum
120
+ then
121
+ segm1 := ltrim(segm1, '0');
122
+ if segm1 <> '' then segm1_n := segm1::numeric; end if;
123
+ segm1 := NULL;
124
+ else
125
+ end if;
126
+ ver_array := array_append(ver_array, (segm1_n, segm1)::evr_array_item);
127
+ one := str1;
128
+ end;
129
+ end loop segment_loop;
130
+
131
+ return ver_array;
132
+ END ;
133
+ $$ language 'plpgsql';
134
+
135
+ SQL
136
+
137
+ add_column :katello_rpms, :evr, :evr_t
138
+ add_column :katello_installed_packages, :evr, :evr_t
139
+
140
+ execute <<-SQL
141
+ update katello_rpms SET evr = (ROW(coalesce(epoch::numeric,0),
142
+ rpmver_array(coalesce(version,'empty'))::evr_array_item[],
143
+ rpmver_array(coalesce(release,'empty'))::evr_array_item[])::evr_t);
144
+
145
+ update katello_installed_packages SET evr = (ROW(coalesce(epoch::numeric,0),
146
+ rpmver_array(coalesce(version,'empty'))::evr_array_item[],
147
+ rpmver_array(coalesce(release,'empty'))::evr_array_item[])::evr_t);
148
+ SQL
149
+
150
+ create_trigger :evr_insert_trigger_katello_rpms, on: :katello_rpms
151
+ create_trigger :evr_update_trigger_katello_rpms, on: :katello_rpms
152
+ create_trigger :evr_insert_trigger_katello_installed_packages, on: :katello_installed_packages
153
+ create_trigger :evr_update_trigger_katello_installed_packages, on: :katello_installed_packages
154
+ end
155
+ end
156
+
157
+ def down
158
+ fail ActiveRecord::IrreversibleMigration
159
+ end
160
+ end
@@ -0,0 +1,5 @@
1
+ class AddSyncDependenciesOption < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_column :katello_root_repositories, :sync_dependencies, :boolean, :default => true
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class RemoveSystemPurposeAddons < ActiveRecord::Migration[6.1]
2
+ def change
3
+ remove_foreign_key :katello_subscription_facet_purpose_addons, :katello_purpose_addons, column: :purpose_addon_id
4
+
5
+ drop_table :katello_activation_key_purpose_addons
6
+ drop_table :katello_purpose_addons
7
+ drop_table :katello_subscription_facet_purpose_addons
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class AddRegistryURLToKatelloFlatpakRemotes < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_column :katello_flatpak_remotes, :registry_url, :string
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class AddManifestEntityToContentFacets < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_reference :katello_content_facets, :manifest_entity, polymorphic: true, index: true
4
+ change_column_null :katello_content_facets, :manifest_entity_type, true
5
+ change_column_null :katello_content_facets, :manifest_entity_id, true
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ class AddAllowOtherTypesToContentViewErratumFilterRules < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_column :katello_content_view_erratum_filter_rules, :allow_other_types, :boolean,
4
+ :default => false, :null => false
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ class AddContentTypeToContainerManifestsAndLists < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_column :katello_docker_manifests, :content_type, :string, :limit => 255
4
+ add_column :katello_docker_manifest_lists, :content_type, :string, :limit => 255
5
+
6
+ add_index :katello_docker_manifests, :content_type
7
+ add_index :katello_docker_manifest_lists, :content_type
8
+ end
9
+ end
@@ -1,8 +1,12 @@
1
1
  User.as_anonymous_admin do
2
2
  JobTemplate.without_auditing do
3
+ # let's name root template as *_action.erb
4
+ root_action_files = Dir[File.join("#{Katello::Engine.root}/app/views/foreman/job_templates/**/*_action.erb")]
3
5
  template_files = Dir[File.join("#{Katello::Engine.root}/app/views/foreman/job_templates/**/*.erb")]
4
6
  template_files.reject! { |file| file.end_with?('_ansible_default.erb') } unless Katello.with_ansible?
5
- template_files.each do |template|
7
+
8
+ # root templates need to be imported first
9
+ (root_action_files + (template_files - root_action_files)).each do |template|
6
10
  sync = !Rails.env.test? && Setting[:remote_execution_sync_templates]
7
11
  template = JobTemplate.import_raw!(File.read(template), :default => true, :lock => true, :update => sync)
8
12
 
@@ -9593,7 +9593,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
9593
9593
 
9594
9594
  if (writeAttr !== false) {
9595
9595
  if (value === null || isUndefined(value)) {
9596
- this.$$element.removeAttr(attrName);
9596
+ this.$$element.prop(attrName, false);
9597
9597
  } else {
9598
9598
  if (SIMPLE_ATTR_NAME.test(attrName)) {
9599
9599
  // jQuery skips special boolean attrs treatment in XML nodes for
@@ -9602,7 +9602,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
9602
9602
  // in XHTML, call `removeAttr` in such cases instead.
9603
9603
  // See https://github.com/jquery/jquery/issues/4249
9604
9604
  if (booleanKey && value === false) {
9605
- this.$$element.removeAttr(attrName);
9605
+ this.$$element.prop(attrName, false);
9606
9606
  } else {
9607
9607
  this.$$element.attr(attrName, value);
9608
9608
  }
@@ -6083,7 +6083,7 @@ angular.module('ui.bootstrap.timepicker', [])
6083
6083
  padHours = angular.isDefined($attrs.padHours) ? $scope.$parent.$eval($attrs.padHours) : true;
6084
6084
 
6085
6085
  $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0;
6086
- $element.removeAttr('tabindex');
6086
+ $element.prop('tabIndex', false);
6087
6087
 
6088
6088
  this.init = function(ngModelCtrl_, inputs) {
6089
6089
  ngModelCtrl = ngModelCtrl_;
@@ -6806,7 +6806,7 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap
6806
6806
  });
6807
6807
 
6808
6808
  if (hintInputElem.attr('id')) {
6809
- hintInputElem.removeAttr('id'); // remove duplicate id if present.
6809
+ hintInputElem.prop('id', false); // remove duplicate id if present.
6810
6810
  }
6811
6811
  inputsContainer.append(hintInputElem);
6812
6812
  hintInputElem.after(element);
@@ -6855,7 +6855,7 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap
6855
6855
  // This attribute is added or removed automatically when the `activeIdx` changes.
6856
6856
  scope.$watch('activeIdx', function(index) {
6857
6857
  if (index < 0) {
6858
- element.removeAttr('aria-activedescendant');
6858
+ element.prop('aria-activedescendant', false);
6859
6859
  } else {
6860
6860
  element.attr('aria-activedescendant', getMatchId(index));
6861
6861
  }
@@ -6082,7 +6082,7 @@ angular.module('ui.bootstrap.timepicker', [])
6082
6082
  padHours = angular.isDefined($attrs.padHours) ? $scope.$parent.$eval($attrs.padHours) : true;
6083
6083
 
6084
6084
  $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0;
6085
- $element.removeAttr('tabindex');
6085
+ $element.prop('tabindex', false);
6086
6086
 
6087
6087
  this.init = function(ngModelCtrl_, inputs) {
6088
6088
  ngModelCtrl = ngModelCtrl_;
@@ -6805,7 +6805,7 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap
6805
6805
  });
6806
6806
 
6807
6807
  if (hintInputElem.attr('id')) {
6808
- hintInputElem.removeAttr('id'); // remove duplicate id if present.
6808
+ hintInputElem.prop('id', false); // remove duplicate id if present.
6809
6809
  }
6810
6810
  inputsContainer.append(hintInputElem);
6811
6811
  hintInputElem.after(element);
@@ -6854,7 +6854,7 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap
6854
6854
  // This attribute is added or removed automatically when the `activeIdx` changes.
6855
6855
  scope.$watch('activeIdx', function(index) {
6856
6856
  if (index < 0) {
6857
- element.removeAttr('aria-activedescendant');
6857
+ element.prop('aria-activedescendant', '');
6858
6858
  } else {
6859
6859
  element.attr('aria-activedescendant', getMatchId(index));
6860
6860
  }
@@ -117,11 +117,6 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyDetailsInfoCo
117
117
  $scope.save($scope.activationKey);
118
118
  };
119
119
 
120
- $scope.clearAddOns = function () {
121
- $scope.activationKey['purpose_addons'] = [];
122
- $scope.save($scope.activationKey);
123
- };
124
-
125
120
  $scope.contentViews = function () {
126
121
  var deferred = $q.defer();
127
122
 
@@ -22,11 +22,9 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyDetailsContro
22
22
  $scope.defaultRoles = ['Red Hat Enterprise Linux Server', 'Red Hat Enterprise Linux Workstation', 'Red Hat Enterprise Linux Compute Node'];
23
23
  $scope.defaultUsages = ['Production', 'Development/Test', 'Disaster Recovery'];
24
24
 
25
- $scope.purposeAddonsCount = 0;
26
25
  $scope.simpleContentAccessEnabled = simpleContentAccessEnabled;
27
26
 
28
- $scope.organization = Organization.get({id: CurrentOrganization}, function(org) {
29
- $scope.purposeAddonsCount += org.system_purposes.addons.length;
27
+ $scope.organization = Organization.get({id: CurrentOrganization}, function() {
30
28
  });
31
29
 
32
30
  $scope.panel = {
@@ -113,43 +111,5 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyDetailsContro
113
111
  return _.union(roles, $scope.defaultRoles);
114
112
  });
115
113
  };
116
-
117
-
118
- $scope.savePurposeAddons = function (key) {
119
-
120
- if ($scope.purposeAddonsList) {
121
- key['purpose_addons'] = _.chain($scope.purposeAddonsList).filter(function(addOn) {
122
- return addOn.selected;
123
- }).map(function(addOn) {
124
- return addOn.name;
125
- }).value();
126
- }
127
-
128
- return $scope.save(key);
129
- };
130
-
131
-
132
- $scope.purposeAddons = function () {
133
- var purposeAddons;
134
- var addOns;
135
-
136
- return $scope.organization.$promise.then(function(org) {
137
- $scope.purposeAddonsList = [];
138
- addOns = org.system_purposes.addons;
139
-
140
- purposeAddons = $scope.activationKey.purpose_addons;
141
- angular.forEach(purposeAddons, function(addOn) {
142
- if (addOn && !_.includes(addOns, addOn)) {
143
- addOns.push(addOn);
144
- }
145
- });
146
-
147
- angular.forEach(addOns, function (addOn) {
148
- $scope.purposeAddonsList.push({"name": addOn, "selected": purposeAddons.indexOf(addOn) > -1});
149
- });
150
-
151
- return $scope.purposeAddonsList;
152
- });
153
- };
154
114
  }]
155
115
  );
@@ -93,18 +93,6 @@
93
93
  on-delete="clearRole()"
94
94
  on-save="save(activationKey)">
95
95
  </dd>
96
-
97
- <dt translate>Add ons</dt>
98
- <dd bst-edit-multiselect="activationKey.purpose_addons"
99
- readonly="denied('edit_activation_keys', activationKey) || purposeAddonsCount === 0"
100
- options="purposeAddons()"
101
- formatter="arrayToString"
102
- deletable="true"
103
- on-delete="clearAddOns()"
104
- selector="activationKey.purpose_addons"
105
- on-save="savePurposeAddons(activationKey)">
106
- </dd>
107
-
108
96
  </dl>
109
97
  </div>
110
98
 
@@ -40,7 +40,7 @@
40
40
  </td>
41
41
  <td bst-table-cell><div subscription-type="subscription"></div></td>
42
42
  <td bst-table-cell><div subscription-start-date="subscription"></div></td>
43
- <td bst-table-cell><date date="subscription.end_date" /></td>
43
+ <td bst-table-cell><date date="subscription.end_date" ></date></td>
44
44
  <td bst-table-cell>{{ subscription.support_level }}</td>
45
45
  <td bst-table-cell>{{ subscription.contract_number }}</td>
46
46
  <td bst-table-cell>{{ subscription.account_number }}</td>