katello 4.15.0 → 4.16.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (505) 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/pulp3/orchestration/repository/import_upload.rb +18 -2
  86. data/app/lib/actions/pulp3/repository/multi_copy_units.rb +4 -0
  87. data/app/lib/katello/api/v2/rendering.rb +2 -1
  88. data/app/lib/katello/concerns/base_template_scope_extensions.rb +3 -4
  89. data/app/lib/katello/concerns/bookmark_controller_validator_extensions.rb +13 -0
  90. data/app/lib/katello/resources/candlepin/activation_key.rb +3 -5
  91. data/app/lib/katello/resources/candlepin/product.rb +2 -1
  92. data/app/lib/katello/util/cveak_migrator.rb +3 -2
  93. data/app/lib/katello/validators/alternate_content_source_path_validator.rb +2 -2
  94. data/app/lib/katello/validators/container_image_name_validator.rb +1 -1
  95. data/app/lib/katello/validators/content_validator.rb +1 -1
  96. data/app/lib/katello/validators/content_view_environment_coherent_default_validator.rb +2 -2
  97. data/app/lib/katello/validators/content_view_environment_org_validator.rb +2 -2
  98. data/app/lib/katello/validators/content_view_environment_validator.rb +3 -3
  99. data/app/lib/katello/validators/content_view_erratum_filter_rule_validator.rb +12 -12
  100. data/app/lib/katello/validators/content_view_filter_version_validator.rb +1 -1
  101. data/app/lib/katello/validators/generated_content_view_validator.rb +1 -1
  102. data/app/lib/katello/validators/gpg_key_content_type_validator.rb +2 -2
  103. data/app/lib/katello/validators/gpg_key_content_validator.rb +5 -5
  104. data/app/lib/katello/validators/katello_label_format_validator.rb +4 -4
  105. data/app/lib/katello/validators/katello_name_format_validator.rb +2 -2
  106. data/app/lib/katello/validators/katello_url_format_validator.rb +1 -1
  107. data/app/lib/katello/validators/library_presence_validator.rb +1 -1
  108. data/app/lib/katello/validators/no_trailing_space_validator.rb +1 -1
  109. data/app/lib/katello/validators/non_library_environment_validator.rb +1 -1
  110. data/app/lib/katello/validators/not_in_library_validator.rb +1 -1
  111. data/app/lib/katello/validators/path_descendents_validator.rb +1 -1
  112. data/app/lib/katello/validators/prior_validator.rb +1 -1
  113. data/app/lib/katello/validators/product_unique_attribute_validator.rb +1 -1
  114. data/app/lib/katello/validators/repo_disablement_validator.rb +2 -2
  115. data/app/lib/katello/validators/root_repository_unique_attribute_validator.rb +1 -1
  116. data/app/lib/katello/validators/self_reference_environment_validator.rb +1 -1
  117. data/app/lib/katello/validators/unique_field_in_org.rb +1 -1
  118. data/app/models/katello/activation_key.rb +6 -17
  119. data/app/models/katello/authorization/flatpak_remote.rb +33 -0
  120. data/app/models/katello/concerns/content_facet_host_extensions.rb +2 -1
  121. data/app/models/katello/concerns/host_managed_extensions.rb +8 -5
  122. data/app/models/katello/concerns/http_proxy_extensions.rb +4 -0
  123. data/app/models/katello/concerns/smart_proxy_extensions.rb +30 -6
  124. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +0 -8
  125. data/app/models/katello/content_view.rb +4 -2
  126. data/app/models/katello/content_view_erratum_filter.rb +18 -2
  127. data/app/models/katello/content_view_version.rb +6 -0
  128. data/app/models/katello/docker_manifest.rb +8 -0
  129. data/app/models/katello/docker_manifest_list.rb +8 -0
  130. data/app/models/katello/erratum.rb +8 -2
  131. data/app/models/katello/flatpak_remote.rb +16 -0
  132. data/app/models/katello/flatpak_remote_repository.rb +18 -0
  133. data/app/models/katello/flatpak_remote_repository_manifest.rb +4 -0
  134. data/app/models/katello/glue/candlepin/pool.rb +1 -1
  135. data/app/models/katello/glue/pulp/repos.rb +12 -1
  136. data/app/models/katello/host/content_facet.rb +42 -3
  137. data/app/models/katello/host/subscription_facet.rb +4 -12
  138. data/app/models/katello/repository.rb +21 -8
  139. data/app/models/katello/rhel_lifecycle_status.rb +6 -0
  140. data/app/models/katello/root_repository.rb +6 -8
  141. data/app/models/katello/upstream_pool.rb +1 -0
  142. data/app/overrides/add_organization_attributes.rb +6 -0
  143. data/app/services/katello/product_content_finder.rb +2 -1
  144. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +1 -1
  145. data/app/services/katello/pulp3/docker_manifest.rb +3 -2
  146. data/app/services/katello/pulp3/docker_manifest_list.rb +3 -2
  147. data/app/services/katello/pulp3/repository/ansible_collection.rb +8 -1
  148. data/app/services/katello/pulp3/repository/apt.rb +16 -18
  149. data/app/services/katello/pulp3/repository/file.rb +4 -2
  150. data/app/services/katello/pulp3/repository.rb +4 -0
  151. data/app/services/katello/pulp3/task.rb +2 -2
  152. data/app/views/foreman/job_templates/bootc_action.erb +26 -0
  153. data/app/views/foreman/job_templates/bootc_rollback.erb +13 -0
  154. data/app/views/foreman/job_templates/bootc_status.erb +13 -0
  155. data/app/views/foreman/job_templates/bootc_switch.erb +13 -0
  156. data/app/views/foreman/job_templates/bootc_upgrade.erb +13 -0
  157. data/app/views/foreman/job_templates/flatpak_install.erb +23 -0
  158. data/app/views/foreman/job_templates/flatpak_login_action.erb +30 -0
  159. data/app/views/foreman/job_templates/flatpak_setup.erb +27 -0
  160. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +1 -1
  161. data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +1 -1
  162. data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +1 -1
  163. data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +1 -1
  164. data/app/views/katello/api/v2/activation_keys/base.json.rabl +0 -4
  165. data/app/views/katello/api/v2/content_facet/base.json.rabl +2 -1
  166. data/app/views/katello/api/v2/content_view_filter_rules/show.json.rabl +1 -0
  167. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +5 -1
  168. data/app/views/katello/api/v2/docker_manifest_lists/show.json.rabl +1 -1
  169. data/app/views/katello/api/v2/docker_manifests/show.json.rabl +1 -1
  170. data/app/views/katello/api/v2/flatpak_remote_repositories/base.json.rabl +4 -0
  171. data/app/views/katello/api/v2/flatpak_remote_repositories/index.json.rabl +7 -0
  172. data/app/views/katello/api/v2/flatpak_remote_repositories/show.json.rabl +13 -0
  173. data/app/views/katello/api/v2/flatpak_remotes/base.json.rabl +5 -0
  174. data/app/views/katello/api/v2/flatpak_remotes/index.json.rabl +8 -0
  175. data/app/views/katello/api/v2/flatpak_remotes/permissions.json.rabl +11 -0
  176. data/app/views/katello/api/v2/flatpak_remotes/show.json.rabl +3 -0
  177. data/app/views/katello/api/v2/hosts/base.json.rabl +0 -8
  178. data/app/views/katello/api/v2/hosts/os_attributes.json.rabl +13 -0
  179. data/app/views/katello/api/v2/http_proxies/show.json.rabl +1 -0
  180. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
  181. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
  182. data/app/views/katello/api/v2/subscription_facet/base.json.rabl +0 -4
  183. data/app/views/katello/api/v2/subscriptions/show.json.rabl +1 -1
  184. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +10 -4
  185. data/app/views/overrides/http_proxies/_update_setting_input.html.erb +18 -0
  186. data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
  187. data/config/initializers/monkeys.rb +0 -1
  188. data/config/initializers/pagelets.rb +6 -0
  189. data/config/routes/api/registry.rb +1 -0
  190. data/config/routes/api/v2.rb +21 -0
  191. data/config/routes/overrides.rb +1 -0
  192. data/config/routes.rb +2 -0
  193. data/db/migrate/20190605014649_add_purpose_addons.rb +0 -12
  194. data/db/migrate/20200213184848_create_evr_type.rb +126 -1
  195. data/db/migrate/20200818192230_update_system_purpose_status.rb +0 -1
  196. data/db/migrate/20240207191223_remove_entitlement_mode_host_statuses.rb +0 -1
  197. data/db/migrate/20240924161240_katello_recreate_evr_constructs.rb +160 -0
  198. data/db/migrate/20241022121706_add_sync_dependencies_option.rb +5 -0
  199. data/db/migrate/20241101144625_remove_system_purpose_addons.rb +9 -0
  200. data/db/migrate/20241107002541_add_registry_url_to_katello_flatpak_remotes.rb +5 -0
  201. data/db/migrate/20241112145802_add_manifest_entity_to_content_facets.rb +7 -0
  202. data/db/migrate/20241120213713_add_allow_other_types_to_content_view_erratum_filter_rules.rb +6 -0
  203. data/db/migrate/20241206183052_add_content_type_to_container_manifests_and_lists.rb +9 -0
  204. data/db/seeds.d/75-job_templates.rb +5 -1
  205. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +2 -2
  206. data/engines/bastion/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap-tpls.js +3 -3
  207. data/engines/bastion/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap.js +3 -3
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details-info.controller.js +0 -5
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +1 -41
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +0 -12
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/subscription-add-or-remove.html +1 -1
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-system-purpose-modal.controller.js +1 -41
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-traces-modal.controller.js +1 -1
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +2 -2
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +2 -2
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +0 -13
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -1
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +0 -5
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +1 -35
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -14
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-provisioning-info.html +1 -1
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +46 -22
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-content-views.controller.js +2 -1
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/views/debs.html +4 -0
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-details.html +1 -1
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-errata.html +1 -1
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-tasks-list.html +2 -1
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +85 -29
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +338 -93
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +340 -95
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +340 -95
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +341 -96
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +31 -54
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +338 -93
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +338 -93
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +341 -96
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +349 -104
  240. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +338 -93
  241. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +33 -56
  242. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +338 -93
  243. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +80 -68
  244. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +340 -95
  245. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +340 -95
  246. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +339 -111
  247. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +340 -95
  248. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +379 -130
  249. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +342 -103
  250. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +70 -83
  251. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +84 -90
  252. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +340 -95
  253. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +130 -138
  254. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +338 -93
  255. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +340 -95
  256. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +343 -97
  257. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +340 -95
  258. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +340 -95
  259. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +340 -95
  260. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +338 -93
  261. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +338 -93
  262. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +40 -63
  263. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +338 -93
  264. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +338 -93
  265. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +343 -102
  266. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +338 -93
  267. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +340 -95
  268. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +338 -93
  269. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +340 -95
  270. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +340 -95
  271. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +338 -93
  272. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +338 -93
  273. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +338 -93
  274. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +338 -93
  275. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +70 -83
  276. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +362 -105
  277. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +29 -29
  278. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +1 -1
  279. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js +1 -1
  280. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +2 -2
  281. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +24 -8
  282. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-tasks.html +2 -1
  283. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +2 -2
  284. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +21 -8
  285. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/os-versions.service.js +1 -0
  286. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-info.html +3 -3
  287. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-tasks.html +2 -1
  288. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +4 -2
  289. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery.html +2 -1
  290. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +3 -3
  291. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/partials/product-table-sync-status.html +1 -1
  292. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscription-start-date.html +1 -1
  293. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
  294. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/views/sync-plans.html +2 -2
  295. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/tasks-table.directive.js +2 -1
  296. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/task-details.html +2 -2
  297. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-index.html +1 -1
  298. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-table.html +1 -1
  299. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/user-tasks-table.html +1 -1
  300. data/lib/katello/engine.rb +6 -0
  301. data/lib/katello/permission_creator.rb +37 -0
  302. data/lib/katello/permissions/host_permissions.rb +2 -0
  303. data/lib/katello/permissions/registry_permissions.rb +1 -0
  304. data/lib/katello/plugin.rb +18 -1
  305. data/lib/katello/repository_types/docker.rb +0 -1
  306. data/lib/katello/repository_types/python.rb +1 -1
  307. data/lib/katello/version.rb +1 -1
  308. data/lib/katello.rb +2 -0
  309. data/locale/Makefile +20 -24
  310. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  311. data/locale/bn/katello.po +248 -263
  312. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  313. data/locale/bn_IN/katello.po +247 -262
  314. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  315. data/locale/ca/katello.po +247 -262
  316. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  317. data/locale/cs/katello.po +524 -799
  318. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  319. data/locale/cs_CZ/katello.po +254 -269
  320. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  321. data/locale/de/katello.po +248 -263
  322. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  323. data/locale/de_AT/katello.po +247 -262
  324. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  325. data/locale/de_DE/katello.po +250 -265
  326. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  327. data/locale/el/katello.po +252 -267
  328. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  329. data/locale/en/katello.po +257 -271
  330. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  331. data/locale/en_GB/katello.po +264 -279
  332. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  333. data/locale/en_US/katello.po +247 -262
  334. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  335. data/locale/es/katello.po +248 -263
  336. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  337. data/locale/et_EE/katello.po +247 -262
  338. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  339. data/locale/fr/katello.po +250 -265
  340. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  341. data/locale/gl/katello.po +247 -262
  342. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  343. data/locale/gu/katello.po +250 -265
  344. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  345. data/locale/he_IL/katello.po +249 -264
  346. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  347. data/locale/hi/katello.po +248 -263
  348. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  349. data/locale/id/katello.po +264 -275
  350. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  351. data/locale/it/katello.po +254 -270
  352. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  353. data/locale/ja/katello.po +250 -265
  354. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  355. data/locale/ka/katello.po +247 -262
  356. data/locale/katello.pot +1216 -1215
  357. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  358. data/locale/kn/katello.po +248 -263
  359. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  360. data/locale/ko/katello.po +248 -263
  361. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  362. data/locale/ml_IN/katello.po +247 -262
  363. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  364. data/locale/mr/katello.po +248 -263
  365. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  366. data/locale/nl_NL/katello.po +254 -268
  367. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  368. data/locale/or/katello.po +248 -263
  369. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  370. data/locale/pa/katello.po +248 -263
  371. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  372. data/locale/pl/katello.po +249 -264
  373. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  374. data/locale/pl_PL/katello.po +247 -262
  375. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  376. data/locale/pt/katello.po +248 -263
  377. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  378. data/locale/pt_BR/katello.po +248 -263
  379. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  380. data/locale/ro/katello.po +247 -262
  381. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  382. data/locale/ro_RO/katello.po +247 -262
  383. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  384. data/locale/ru/katello.po +255 -270
  385. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  386. data/locale/sl/katello.po +247 -262
  387. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  388. data/locale/sv_SE/katello.po +249 -264
  389. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  390. data/locale/ta/katello.po +248 -263
  391. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  392. data/locale/ta_IN/katello.po +247 -262
  393. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  394. data/locale/te/katello.po +248 -263
  395. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  396. data/locale/tr/katello.po +247 -262
  397. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  398. data/locale/vi/katello.po +247 -262
  399. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  400. data/locale/vi_VN/katello.po +247 -262
  401. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  402. data/locale/zh/katello.po +247 -262
  403. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  404. data/locale/zh_CN/katello.po +250 -265
  405. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  406. data/locale/zh_TW/katello.po +257 -272
  407. data/webpack/ForemanColumnExtensions/index.js +73 -3
  408. data/webpack/ForemanColumnExtensions/index.scss +9 -0
  409. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
  410. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +1 -1
  411. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +1 -20
  412. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +3 -61
  413. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +0 -5
  414. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +0 -5
  415. data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +87 -0
  416. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +28 -2
  417. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +1 -1
  418. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +2 -2
  419. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +1 -1
  420. data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +55 -0
  421. data/webpack/containers/Application/config.js +5 -0
  422. data/webpack/global_index.js +3 -1
  423. data/webpack/redux/actions/RedHatRepositories/helpers.js +9 -0
  424. data/webpack/scenes/BootedContainerImages/BootedContainerImagesConstants.js +5 -0
  425. data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +242 -0
  426. data/webpack/scenes/BootedContainerImages/__tests__/bootedContainerImages.fixtures.js +42 -0
  427. data/webpack/scenes/BootedContainerImages/__tests__/bootedContainerImagesPage.test.js +233 -0
  428. data/webpack/scenes/BootedContainerImages/index.js +4 -0
  429. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +1 -2
  430. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +39 -7
  431. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +13 -2
  432. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +1 -1
  433. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +1 -0
  434. data/webpack/scenes/ContentViews/Details/Repositories/RepoIcon.js +4 -2
  435. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +1 -2
  436. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +20 -1
  437. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +20 -1
  438. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +128 -18
  439. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedActivationKeys.fixture.json +0 -1
  440. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +1 -2
  441. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -4
  442. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +5 -1
  443. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +6 -1
  444. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -1
  445. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +5 -1
  446. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +4 -2
  447. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
  448. data/webpack/scenes/Subscriptions/Details/SubscriptionPurposeAttributes.js +0 -1
  449. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +0 -10
  450. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +0 -3
  451. data/webpack/scenes/Subscriptions/Details/__tests__/subscriptionDetails.fixtures.js +0 -1
  452. metadata +61 -58
  453. data/app/models/katello/activation_key_purpose_addon.rb +0 -6
  454. data/app/models/katello/purpose_addon.rb +0 -11
  455. data/app/models/katello/subscription_facet_purpose_addon.rb +0 -6
  456. data/lib/monkeys/fx_sqlite_skip.rb +0 -13
  457. data/locale/action_names.rb +0 -181
  458. data/locale/bn/katello.po.time_stamp +0 -0
  459. data/locale/bn_IN/katello.po.time_stamp +0 -0
  460. data/locale/ca/katello.po.time_stamp +0 -0
  461. data/locale/cs/katello.po.time_stamp +0 -0
  462. data/locale/cs_CZ/katello.po.time_stamp +0 -0
  463. data/locale/de/katello.po.time_stamp +0 -0
  464. data/locale/de_AT/katello.po.time_stamp +0 -0
  465. data/locale/de_DE/katello.po.time_stamp +0 -0
  466. data/locale/el/katello.po.time_stamp +0 -0
  467. data/locale/en/katello.po.time_stamp +0 -0
  468. data/locale/en_GB/katello.po.time_stamp +0 -0
  469. data/locale/en_US/katello.po.time_stamp +0 -0
  470. data/locale/es/katello.po.time_stamp +0 -0
  471. data/locale/et_EE/katello.po.time_stamp +0 -0
  472. data/locale/fr/katello.po.time_stamp +0 -0
  473. data/locale/gl/katello.po.time_stamp +0 -0
  474. data/locale/gu/katello.po.time_stamp +0 -0
  475. data/locale/he_IL/katello.po.time_stamp +0 -0
  476. data/locale/hi/katello.po.time_stamp +0 -0
  477. data/locale/id/katello.po.time_stamp +0 -0
  478. data/locale/it/katello.po.time_stamp +0 -0
  479. data/locale/ja/katello.po.time_stamp +0 -0
  480. data/locale/ka/katello.po.time_stamp +0 -0
  481. data/locale/kn/katello.po.time_stamp +0 -0
  482. data/locale/ko/katello.po.time_stamp +0 -0
  483. data/locale/ml_IN/katello.po.time_stamp +0 -0
  484. data/locale/mr/katello.po.time_stamp +0 -0
  485. data/locale/nl_NL/katello.po.time_stamp +0 -0
  486. data/locale/or/katello.po.time_stamp +0 -0
  487. data/locale/pa/katello.po.time_stamp +0 -0
  488. data/locale/pl/katello.po.time_stamp +0 -0
  489. data/locale/pl_PL/katello.po.time_stamp +0 -0
  490. data/locale/pt/katello.po.time_stamp +0 -0
  491. data/locale/pt_BR/katello.po.time_stamp +0 -0
  492. data/locale/ro/katello.po.time_stamp +0 -0
  493. data/locale/ro_RO/katello.po.time_stamp +0 -0
  494. data/locale/ru/katello.po.time_stamp +0 -0
  495. data/locale/sl/katello.po.time_stamp +0 -0
  496. data/locale/sv_SE/katello.po.time_stamp +0 -0
  497. data/locale/ta/katello.po.time_stamp +0 -0
  498. data/locale/ta_IN/katello.po.time_stamp +0 -0
  499. data/locale/te/katello.po.time_stamp +0 -0
  500. data/locale/tr/katello.po.time_stamp +0 -0
  501. data/locale/vi/katello.po.time_stamp +0 -0
  502. data/locale/vi_VN/katello.po.time_stamp +0 -0
  503. data/locale/zh/katello.po.time_stamp +0 -0
  504. data/locale/zh_CN/katello.po.time_stamp +0 -0
  505. data/locale/zh_TW/katello.po.time_stamp +0 -0
@@ -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>