katello 4.15.0 → 4.16.0.rc2

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

Potentially problematic release.


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

Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/katello_object.js +2 -2
  3. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +9 -8
  4. data/app/assets/javascripts/katello/locale/bn/katello.js +248 -263
  5. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +247 -262
  6. data/app/assets/javascripts/katello/locale/ca/katello.js +247 -262
  7. data/app/assets/javascripts/katello/locale/cs/katello.js +521 -536
  8. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +253 -268
  9. data/app/assets/javascripts/katello/locale/de/katello.js +248 -263
  10. data/app/assets/javascripts/katello/locale/de_AT/katello.js +247 -262
  11. data/app/assets/javascripts/katello/locale/de_DE/katello.js +249 -264
  12. data/app/assets/javascripts/katello/locale/el/katello.js +251 -266
  13. data/app/assets/javascripts/katello/locale/en/katello.js +253 -268
  14. data/app/assets/javascripts/katello/locale/en_GB/katello.js +263 -278
  15. data/app/assets/javascripts/katello/locale/en_US/katello.js +247 -262
  16. data/app/assets/javascripts/katello/locale/es/katello.js +248 -263
  17. data/app/assets/javascripts/katello/locale/et_EE/katello.js +247 -262
  18. data/app/assets/javascripts/katello/locale/fr/katello.js +250 -265
  19. data/app/assets/javascripts/katello/locale/gl/katello.js +247 -262
  20. data/app/assets/javascripts/katello/locale/gu/katello.js +249 -264
  21. data/app/assets/javascripts/katello/locale/he_IL/katello.js +249 -264
  22. data/app/assets/javascripts/katello/locale/hi/katello.js +248 -263
  23. data/app/assets/javascripts/katello/locale/id/katello.js +261 -275
  24. data/app/assets/javascripts/katello/locale/it/katello.js +252 -267
  25. data/app/assets/javascripts/katello/locale/ja/katello.js +250 -265
  26. data/app/assets/javascripts/katello/locale/ka/katello.js +247 -262
  27. data/app/assets/javascripts/katello/locale/kn/katello.js +248 -263
  28. data/app/assets/javascripts/katello/locale/ko/katello.js +248 -263
  29. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +247 -262
  30. data/app/assets/javascripts/katello/locale/mr/katello.js +248 -263
  31. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +252 -267
  32. data/app/assets/javascripts/katello/locale/or/katello.js +248 -263
  33. data/app/assets/javascripts/katello/locale/pa/katello.js +248 -263
  34. data/app/assets/javascripts/katello/locale/pl/katello.js +248 -263
  35. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +247 -262
  36. data/app/assets/javascripts/katello/locale/pt/katello.js +248 -263
  37. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +248 -263
  38. data/app/assets/javascripts/katello/locale/ro/katello.js +247 -262
  39. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +247 -262
  40. data/app/assets/javascripts/katello/locale/ru/katello.js +253 -268
  41. data/app/assets/javascripts/katello/locale/sl/katello.js +247 -262
  42. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +248 -263
  43. data/app/assets/javascripts/katello/locale/ta/katello.js +248 -263
  44. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +247 -262
  45. data/app/assets/javascripts/katello/locale/te/katello.js +248 -263
  46. data/app/assets/javascripts/katello/locale/tr/katello.js +247 -262
  47. data/app/assets/javascripts/katello/locale/vi/katello.js +247 -262
  48. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +247 -262
  49. data/app/assets/javascripts/katello/locale/zh/katello.js +247 -262
  50. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +250 -265
  51. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +255 -270
  52. data/app/assets/javascripts/katello/sync_management/sync_management.js +16 -2
  53. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +46 -10
  54. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
  55. data/app/controllers/katello/api/v2/activation_keys_controller.rb +4 -9
  56. data/app/controllers/katello/api/v2/content_uploads_controller.rb +2 -1
  57. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +3 -1
  58. data/app/controllers/katello/api/v2/content_views_controller.rb +4 -1
  59. data/app/controllers/katello/api/v2/environments_controller.rb +4 -0
  60. data/app/controllers/katello/api/v2/errata_controller.rb +12 -1
  61. data/app/controllers/katello/api/v2/flatpak_remote_repositories_controller.rb +81 -0
  62. data/app/controllers/katello/api/v2/flatpak_remotes_controller.rb +86 -0
  63. data/app/controllers/katello/api/v2/host_bootc_images_controller.rb +71 -0
  64. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +4 -6
  65. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +3 -5
  66. data/app/controllers/katello/api/v2/repositories_controller.rb +18 -3
  67. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +0 -8
  68. data/app/controllers/katello/concerns/api/v2/http_proxies_controller_extensions.rb +17 -0
  69. data/app/controllers/katello/concerns/http_proxies_controller_extensions.rb +20 -0
  70. data/app/controllers/katello/sync_management_controller.rb +6 -2
  71. data/app/helpers/katello/content_source_helper.rb +8 -1
  72. data/app/helpers/katello/content_view_helper.rb +3 -1
  73. data/app/lib/actions/candlepin/activation_key/create.rb +1 -3
  74. data/app/lib/actions/candlepin/activation_key/update.rb +1 -3
  75. data/app/lib/actions/candlepin/environment/set_content.rb +17 -4
  76. data/app/lib/actions/katello/activation_key/create.rb +1 -2
  77. data/app/lib/actions/katello/activation_key/update.rb +2 -4
  78. data/app/lib/actions/katello/capsule_content/refresh_repos.rb +7 -1
  79. data/app/lib/actions/katello/content_view/presenters/incremental_updates_presenter.rb +3 -2
  80. data/app/lib/actions/katello/content_view/publish.rb +7 -2
  81. data/app/lib/actions/katello/content_view_environment/reassign_objects.rb +11 -2
  82. data/app/lib/actions/katello/content_view_version/incremental_update.rb +31 -22
  83. data/app/lib/actions/katello/flatpak/mirror_remote_repository.rb +30 -0
  84. data/app/lib/actions/katello/flatpak/scan_remote.rb +17 -12
  85. data/app/lib/actions/katello/host/update_system_purpose.rb +1 -6
  86. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +18 -2
  87. data/app/lib/actions/pulp3/orchestration/repository/multi_copy_all_units.rb +5 -0
  88. data/app/lib/actions/pulp3/repository/multi_copy_units.rb +4 -0
  89. data/app/lib/katello/api/v2/rendering.rb +2 -1
  90. data/app/lib/katello/concerns/base_template_scope_extensions.rb +3 -4
  91. data/app/lib/katello/concerns/bookmark_controller_validator_extensions.rb +13 -0
  92. data/app/lib/katello/resources/candlepin/activation_key.rb +3 -5
  93. data/app/lib/katello/resources/candlepin/product.rb +2 -1
  94. data/app/lib/katello/util/cveak_migrator.rb +3 -2
  95. data/app/lib/katello/validators/alternate_content_source_path_validator.rb +2 -2
  96. data/app/lib/katello/validators/container_image_name_validator.rb +1 -1
  97. data/app/lib/katello/validators/content_validator.rb +1 -1
  98. data/app/lib/katello/validators/content_view_environment_coherent_default_validator.rb +2 -2
  99. data/app/lib/katello/validators/content_view_environment_org_validator.rb +2 -2
  100. data/app/lib/katello/validators/content_view_environment_validator.rb +3 -3
  101. data/app/lib/katello/validators/content_view_erratum_filter_rule_validator.rb +12 -12
  102. data/app/lib/katello/validators/content_view_filter_version_validator.rb +1 -1
  103. data/app/lib/katello/validators/generated_content_view_validator.rb +1 -1
  104. data/app/lib/katello/validators/gpg_key_content_type_validator.rb +2 -2
  105. data/app/lib/katello/validators/gpg_key_content_validator.rb +5 -5
  106. data/app/lib/katello/validators/katello_label_format_validator.rb +4 -4
  107. data/app/lib/katello/validators/katello_name_format_validator.rb +2 -2
  108. data/app/lib/katello/validators/katello_url_format_validator.rb +1 -1
  109. data/app/lib/katello/validators/library_presence_validator.rb +1 -1
  110. data/app/lib/katello/validators/no_trailing_space_validator.rb +1 -1
  111. data/app/lib/katello/validators/non_library_environment_validator.rb +1 -1
  112. data/app/lib/katello/validators/not_in_library_validator.rb +1 -1
  113. data/app/lib/katello/validators/path_descendents_validator.rb +1 -1
  114. data/app/lib/katello/validators/prior_validator.rb +1 -1
  115. data/app/lib/katello/validators/product_unique_attribute_validator.rb +1 -1
  116. data/app/lib/katello/validators/repo_disablement_validator.rb +2 -2
  117. data/app/lib/katello/validators/root_repository_unique_attribute_validator.rb +1 -1
  118. data/app/lib/katello/validators/self_reference_environment_validator.rb +1 -1
  119. data/app/lib/katello/validators/unique_field_in_org.rb +1 -1
  120. data/app/models/katello/activation_key.rb +6 -17
  121. data/app/models/katello/authorization/flatpak_remote.rb +33 -0
  122. data/app/models/katello/concerns/content_facet_host_extensions.rb +2 -1
  123. data/app/models/katello/concerns/host_managed_extensions.rb +8 -5
  124. data/app/models/katello/concerns/http_proxy_extensions.rb +4 -0
  125. data/app/models/katello/concerns/smart_proxy_extensions.rb +30 -6
  126. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +0 -8
  127. data/app/models/katello/content_view.rb +6 -4
  128. data/app/models/katello/content_view_erratum_filter.rb +18 -2
  129. data/app/models/katello/content_view_version.rb +6 -0
  130. data/app/models/katello/docker_manifest.rb +8 -0
  131. data/app/models/katello/docker_manifest_list.rb +8 -0
  132. data/app/models/katello/erratum.rb +8 -2
  133. data/app/models/katello/flatpak_remote.rb +16 -0
  134. data/app/models/katello/flatpak_remote_repository.rb +18 -0
  135. data/app/models/katello/flatpak_remote_repository_manifest.rb +4 -0
  136. data/app/models/katello/glue/candlepin/pool.rb +1 -1
  137. data/app/models/katello/glue/pulp/repos.rb +12 -1
  138. data/app/models/katello/host/content_facet.rb +42 -3
  139. data/app/models/katello/host/subscription_facet.rb +4 -12
  140. data/app/models/katello/repository.rb +22 -8
  141. data/app/models/katello/rhel_lifecycle_status.rb +6 -0
  142. data/app/models/katello/root_repository.rb +6 -8
  143. data/app/models/katello/upstream_pool.rb +1 -0
  144. data/app/overrides/add_organization_attributes.rb +6 -0
  145. data/app/services/katello/product_content_finder.rb +2 -1
  146. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +1 -1
  147. data/app/services/katello/pulp3/docker_manifest.rb +3 -2
  148. data/app/services/katello/pulp3/docker_manifest_list.rb +3 -2
  149. data/app/services/katello/pulp3/repository/ansible_collection.rb +8 -1
  150. data/app/services/katello/pulp3/repository/apt.rb +37 -21
  151. data/app/services/katello/pulp3/repository/file.rb +4 -2
  152. data/app/services/katello/pulp3/repository.rb +4 -0
  153. data/app/services/katello/pulp3/task.rb +2 -2
  154. data/app/views/foreman/job_templates/bootc_action.erb +26 -0
  155. data/app/views/foreman/job_templates/bootc_rollback.erb +13 -0
  156. data/app/views/foreman/job_templates/bootc_status.erb +13 -0
  157. data/app/views/foreman/job_templates/bootc_switch.erb +13 -0
  158. data/app/views/foreman/job_templates/bootc_upgrade.erb +13 -0
  159. data/app/views/foreman/job_templates/flatpak_install.erb +23 -0
  160. data/app/views/foreman/job_templates/flatpak_login_action.erb +30 -0
  161. data/app/views/foreman/job_templates/flatpak_setup.erb +27 -0
  162. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +1 -1
  163. data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +1 -1
  164. data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +1 -1
  165. data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +1 -1
  166. data/app/views/katello/api/v2/activation_keys/base.json.rabl +0 -4
  167. data/app/views/katello/api/v2/content_facet/base.json.rabl +2 -1
  168. data/app/views/katello/api/v2/content_facet/show.json.rabl +2 -0
  169. data/app/views/katello/api/v2/content_view_filter_rules/show.json.rabl +1 -0
  170. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +5 -1
  171. data/app/views/katello/api/v2/docker_manifest_lists/show.json.rabl +1 -1
  172. data/app/views/katello/api/v2/docker_manifests/show.json.rabl +1 -1
  173. data/app/views/katello/api/v2/flatpak_remote_repositories/base.json.rabl +4 -0
  174. data/app/views/katello/api/v2/flatpak_remote_repositories/index.json.rabl +7 -0
  175. data/app/views/katello/api/v2/flatpak_remote_repositories/show.json.rabl +13 -0
  176. data/app/views/katello/api/v2/flatpak_remotes/base.json.rabl +5 -0
  177. data/app/views/katello/api/v2/flatpak_remotes/index.json.rabl +8 -0
  178. data/app/views/katello/api/v2/flatpak_remotes/permissions.json.rabl +11 -0
  179. data/app/views/katello/api/v2/flatpak_remotes/show.json.rabl +3 -0
  180. data/app/views/katello/api/v2/hosts/base.json.rabl +0 -8
  181. data/app/views/katello/api/v2/hosts/os_attributes.json.rabl +13 -0
  182. data/app/views/katello/api/v2/http_proxies/show.json.rabl +1 -0
  183. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
  184. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
  185. data/app/views/katello/api/v2/subscription_facet/base.json.rabl +0 -4
  186. data/app/views/katello/api/v2/subscriptions/show.json.rabl +1 -1
  187. data/app/views/overrides/activation_keys/_host_environment_select.html.erb +2 -1
  188. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +10 -4
  189. data/app/views/overrides/http_proxies/_update_setting_input.html.erb +18 -0
  190. data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
  191. data/config/initializers/monkeys.rb +0 -1
  192. data/config/initializers/pagelets.rb +6 -0
  193. data/config/routes/api/registry.rb +1 -0
  194. data/config/routes/api/v2.rb +21 -0
  195. data/config/routes/overrides.rb +1 -0
  196. data/config/routes.rb +2 -0
  197. data/db/migrate/20190605014649_add_purpose_addons.rb +0 -12
  198. data/db/migrate/20200213184848_create_evr_type.rb +126 -1
  199. data/db/migrate/20200818192230_update_system_purpose_status.rb +0 -1
  200. data/db/migrate/20240207191223_remove_entitlement_mode_host_statuses.rb +0 -1
  201. data/db/migrate/20240924161240_katello_recreate_evr_constructs.rb +160 -0
  202. data/db/migrate/20241022121706_add_sync_dependencies_option.rb +5 -0
  203. data/db/migrate/20241101144625_remove_system_purpose_addons.rb +9 -0
  204. data/db/migrate/20241107002541_add_registry_url_to_katello_flatpak_remotes.rb +5 -0
  205. data/db/migrate/20241112145802_add_manifest_entity_to_content_facets.rb +7 -0
  206. data/db/migrate/20241120213713_add_allow_other_types_to_content_view_erratum_filter_rules.rb +6 -0
  207. data/db/migrate/20241206183052_add_content_type_to_container_manifests_and_lists.rb +9 -0
  208. data/db/seeds.d/75-job_templates.rb +5 -1
  209. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +2 -2
  210. data/engines/bastion/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap-tpls.js +3 -3
  211. data/engines/bastion/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap.js +3 -3
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details-info.controller.js +0 -5
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +1 -41
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +0 -12
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/new/views/activation-key-new.html +2 -1
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/subscription-add-or-remove.html +1 -1
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-release-version-modal.controller.js +3 -1
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-system-purpose-modal.controller.js +1 -41
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-traces-modal.controller.js +1 -1
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +2 -2
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-release-version-modal.html +1 -1
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +2 -2
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +0 -13
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -1
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +0 -5
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +1 -35
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -14
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-provisioning-info.html +1 -1
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +46 -22
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-content-views.controller.js +2 -1
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/views/debs.html +4 -0
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-details.html +1 -1
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-errata.html +1 -1
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-tasks-list.html +2 -1
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +85 -29
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +338 -93
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +340 -95
  240. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +340 -95
  241. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +341 -96
  242. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +31 -54
  243. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +338 -93
  244. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +338 -93
  245. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +341 -96
  246. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +349 -104
  247. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +338 -93
  248. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +33 -56
  249. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +338 -93
  250. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +80 -68
  251. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +340 -95
  252. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +340 -95
  253. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +339 -111
  254. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +340 -95
  255. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +379 -130
  256. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +342 -103
  257. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +70 -83
  258. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +84 -90
  259. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +340 -95
  260. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +130 -138
  261. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +338 -93
  262. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +340 -95
  263. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +343 -97
  264. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +340 -95
  265. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +340 -95
  266. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +340 -95
  267. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +338 -93
  268. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +338 -93
  269. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +40 -63
  270. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +338 -93
  271. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +338 -93
  272. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +343 -102
  273. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +338 -93
  274. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +340 -95
  275. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +338 -93
  276. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +340 -95
  277. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +340 -95
  278. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +338 -93
  279. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +338 -93
  280. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +338 -93
  281. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +338 -93
  282. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +70 -83
  283. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +362 -105
  284. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +29 -29
  285. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +1 -1
  286. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js +1 -1
  287. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +2 -2
  288. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +24 -8
  289. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-tasks.html +2 -1
  290. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +2 -2
  291. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +21 -8
  292. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/os-versions.service.js +1 -0
  293. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-info.html +3 -3
  294. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-tasks.html +2 -1
  295. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +4 -2
  296. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery.html +2 -1
  297. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +3 -3
  298. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/partials/product-table-sync-status.html +1 -1
  299. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscription-start-date.html +1 -1
  300. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
  301. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/views/sync-plans.html +2 -2
  302. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/tasks-table.directive.js +2 -1
  303. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/task-details.html +2 -2
  304. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-index.html +1 -1
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-table.html +1 -1
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/user-tasks-table.html +1 -1
  307. data/lib/katello/engine.rb +6 -0
  308. data/lib/katello/permission_creator.rb +37 -0
  309. data/lib/katello/permissions/host_permissions.rb +2 -0
  310. data/lib/katello/permissions/registry_permissions.rb +1 -0
  311. data/lib/katello/plugin.rb +18 -1
  312. data/lib/katello/repository_types/docker.rb +0 -1
  313. data/lib/katello/repository_types/python.rb +1 -1
  314. data/lib/katello/version.rb +1 -1
  315. data/lib/katello.rb +2 -0
  316. data/locale/Makefile +20 -24
  317. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  318. data/locale/bn/katello.po +248 -263
  319. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  320. data/locale/bn_IN/katello.po +247 -262
  321. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  322. data/locale/ca/katello.po +247 -262
  323. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  324. data/locale/cs/katello.po +524 -799
  325. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  326. data/locale/cs_CZ/katello.po +254 -269
  327. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  328. data/locale/de/katello.po +248 -263
  329. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  330. data/locale/de_AT/katello.po +247 -262
  331. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  332. data/locale/de_DE/katello.po +250 -265
  333. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  334. data/locale/el/katello.po +252 -267
  335. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  336. data/locale/en/katello.po +257 -271
  337. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  338. data/locale/en_GB/katello.po +264 -279
  339. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  340. data/locale/en_US/katello.po +247 -262
  341. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  342. data/locale/es/katello.po +248 -263
  343. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  344. data/locale/et_EE/katello.po +247 -262
  345. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  346. data/locale/fr/katello.po +250 -265
  347. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  348. data/locale/gl/katello.po +247 -262
  349. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  350. data/locale/gu/katello.po +250 -265
  351. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  352. data/locale/he_IL/katello.po +249 -264
  353. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  354. data/locale/hi/katello.po +248 -263
  355. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  356. data/locale/id/katello.po +264 -275
  357. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  358. data/locale/it/katello.po +254 -270
  359. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  360. data/locale/ja/katello.po +250 -265
  361. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  362. data/locale/ka/katello.po +247 -262
  363. data/locale/katello.pot +1216 -1215
  364. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  365. data/locale/kn/katello.po +248 -263
  366. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  367. data/locale/ko/katello.po +248 -263
  368. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  369. data/locale/ml_IN/katello.po +247 -262
  370. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  371. data/locale/mr/katello.po +248 -263
  372. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  373. data/locale/nl_NL/katello.po +254 -268
  374. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  375. data/locale/or/katello.po +248 -263
  376. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  377. data/locale/pa/katello.po +248 -263
  378. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  379. data/locale/pl/katello.po +249 -264
  380. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  381. data/locale/pl_PL/katello.po +247 -262
  382. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  383. data/locale/pt/katello.po +248 -263
  384. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  385. data/locale/pt_BR/katello.po +248 -263
  386. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  387. data/locale/ro/katello.po +247 -262
  388. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  389. data/locale/ro_RO/katello.po +247 -262
  390. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  391. data/locale/ru/katello.po +255 -270
  392. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  393. data/locale/sl/katello.po +247 -262
  394. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  395. data/locale/sv_SE/katello.po +249 -264
  396. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  397. data/locale/ta/katello.po +248 -263
  398. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  399. data/locale/ta_IN/katello.po +247 -262
  400. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  401. data/locale/te/katello.po +248 -263
  402. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  403. data/locale/tr/katello.po +247 -262
  404. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  405. data/locale/vi/katello.po +247 -262
  406. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  407. data/locale/vi_VN/katello.po +247 -262
  408. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  409. data/locale/zh/katello.po +247 -262
  410. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  411. data/locale/zh_CN/katello.po +250 -265
  412. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  413. data/locale/zh_TW/katello.po +257 -272
  414. data/webpack/ForemanColumnExtensions/index.js +71 -3
  415. data/webpack/ForemanColumnExtensions/index.scss +9 -0
  416. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
  417. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +14 -8
  418. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +1 -1
  419. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +1 -20
  420. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +3 -61
  421. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +0 -5
  422. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +0 -5
  423. data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +87 -0
  424. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +28 -2
  425. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +1 -1
  426. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +2 -2
  427. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +1 -1
  428. data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +55 -0
  429. data/webpack/containers/Application/config.js +5 -0
  430. data/webpack/global_index.js +3 -1
  431. data/webpack/redux/actions/RedHatRepositories/helpers.js +12 -6
  432. data/webpack/scenes/BootedContainerImages/BootedContainerImagesConstants.js +5 -0
  433. data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +244 -0
  434. data/webpack/scenes/BootedContainerImages/__tests__/bootedContainerImages.fixtures.js +42 -0
  435. data/webpack/scenes/BootedContainerImages/__tests__/bootedContainerImagesPage.test.js +233 -0
  436. data/webpack/scenes/BootedContainerImages/index.js +4 -0
  437. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +1 -2
  438. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +39 -7
  439. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +13 -2
  440. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +1 -1
  441. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +1 -0
  442. data/webpack/scenes/ContentViews/Details/Repositories/RepoIcon.js +4 -2
  443. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +1 -2
  444. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +20 -1
  445. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +20 -1
  446. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +128 -18
  447. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedActivationKeys.fixture.json +0 -1
  448. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +1 -2
  449. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -4
  450. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +5 -1
  451. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +6 -1
  452. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -1
  453. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +5 -1
  454. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +4 -2
  455. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
  456. data/webpack/scenes/Subscriptions/Details/SubscriptionPurposeAttributes.js +0 -1
  457. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +0 -10
  458. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +0 -3
  459. data/webpack/scenes/Subscriptions/Details/__tests__/subscriptionDetails.fixtures.js +0 -1
  460. metadata +61 -58
  461. data/app/models/katello/activation_key_purpose_addon.rb +0 -6
  462. data/app/models/katello/purpose_addon.rb +0 -11
  463. data/app/models/katello/subscription_facet_purpose_addon.rb +0 -6
  464. data/lib/monkeys/fx_sqlite_skip.rb +0 -13
  465. data/locale/action_names.rb +0 -181
  466. data/locale/bn/katello.po.time_stamp +0 -0
  467. data/locale/bn_IN/katello.po.time_stamp +0 -0
  468. data/locale/ca/katello.po.time_stamp +0 -0
  469. data/locale/cs/katello.po.time_stamp +0 -0
  470. data/locale/cs_CZ/katello.po.time_stamp +0 -0
  471. data/locale/de/katello.po.time_stamp +0 -0
  472. data/locale/de_AT/katello.po.time_stamp +0 -0
  473. data/locale/de_DE/katello.po.time_stamp +0 -0
  474. data/locale/el/katello.po.time_stamp +0 -0
  475. data/locale/en/katello.po.time_stamp +0 -0
  476. data/locale/en_GB/katello.po.time_stamp +0 -0
  477. data/locale/en_US/katello.po.time_stamp +0 -0
  478. data/locale/es/katello.po.time_stamp +0 -0
  479. data/locale/et_EE/katello.po.time_stamp +0 -0
  480. data/locale/fr/katello.po.time_stamp +0 -0
  481. data/locale/gl/katello.po.time_stamp +0 -0
  482. data/locale/gu/katello.po.time_stamp +0 -0
  483. data/locale/he_IL/katello.po.time_stamp +0 -0
  484. data/locale/hi/katello.po.time_stamp +0 -0
  485. data/locale/id/katello.po.time_stamp +0 -0
  486. data/locale/it/katello.po.time_stamp +0 -0
  487. data/locale/ja/katello.po.time_stamp +0 -0
  488. data/locale/ka/katello.po.time_stamp +0 -0
  489. data/locale/kn/katello.po.time_stamp +0 -0
  490. data/locale/ko/katello.po.time_stamp +0 -0
  491. data/locale/ml_IN/katello.po.time_stamp +0 -0
  492. data/locale/mr/katello.po.time_stamp +0 -0
  493. data/locale/nl_NL/katello.po.time_stamp +0 -0
  494. data/locale/or/katello.po.time_stamp +0 -0
  495. data/locale/pa/katello.po.time_stamp +0 -0
  496. data/locale/pl/katello.po.time_stamp +0 -0
  497. data/locale/pl_PL/katello.po.time_stamp +0 -0
  498. data/locale/pt/katello.po.time_stamp +0 -0
  499. data/locale/pt_BR/katello.po.time_stamp +0 -0
  500. data/locale/ro/katello.po.time_stamp +0 -0
  501. data/locale/ro_RO/katello.po.time_stamp +0 -0
  502. data/locale/ru/katello.po.time_stamp +0 -0
  503. data/locale/sl/katello.po.time_stamp +0 -0
  504. data/locale/sv_SE/katello.po.time_stamp +0 -0
  505. data/locale/ta/katello.po.time_stamp +0 -0
  506. data/locale/ta_IN/katello.po.time_stamp +0 -0
  507. data/locale/te/katello.po.time_stamp +0 -0
  508. data/locale/tr/katello.po.time_stamp +0 -0
  509. data/locale/vi/katello.po.time_stamp +0 -0
  510. data/locale/vi_VN/katello.po.time_stamp +0 -0
  511. data/locale/zh/katello.po.time_stamp +0 -0
  512. data/locale/zh_CN/katello.po.time_stamp +0 -0
  513. data/locale/zh_TW/katello.po.time_stamp +0 -0
@@ -88,7 +88,7 @@
88
88
  <dd>{{ package.buildhost }}</dd>
89
89
 
90
90
  <dt translate>Build Time</dt>
91
- <dd><long-date-time date="package.build_time_utc" /></dd>
91
+ <dd><long-date-time date="package.build_time_utc"></long-date-time></dd>
92
92
  </dl>
93
93
  </div>
94
94
  </div>
@@ -25,7 +25,7 @@ angular.module('Bastion.products').controller('ProductsBulkAdvancedSyncModalCont
25
25
  Notification.setSuccessMessage(message, {
26
26
  link: {
27
27
  children: translate("Click to view task"),
28
- href: translate("/foreman_tasks/tasks/%taskId").replace('%taskId', task.id)
28
+ href: "/foreman_tasks/tasks/%taskId".replace('%taskId', task.id)
29
29
  }});
30
30
  };
31
31
 
@@ -68,10 +68,10 @@
68
68
  <tr bst-table-row ng-repeat="syncPlan in table.rows" class="clickable-row"
69
69
  ng-click="selectSyncPlan(syncPlan)" ng-class="{'selected-row': syncPlan === selectedSyncPlan }">
70
70
  <td bst-table-cell>{{ syncPlan.name }}</td>
71
- <td bst-table-cell><long-date-time date="syncPlan.sync_date" /></td>
71
+ <td bst-table-cell><long-date-time date="syncPlan.sync_date"></long-date-time></td>
72
72
  <td bst-table-cell>{{ syncPlan.enabled }}</td>
73
73
  <td bst-table-cell>{{ syncPlan.interval | translate | capitalize }}</td>
74
- <td bst-table-cell><long-date-time date="syncPlan.next_sync" /></td>
74
+ <td bst-table-cell><long-date-time date="syncPlan.next_sync"></long-date-time></td>
75
75
  </tr>
76
76
  </tbody>
77
77
  </table>
@@ -54,7 +54,7 @@
54
54
  </dd>
55
55
 
56
56
  <dt ng-if="product.redhat != true" translate>Metadata Expiration (Seconds)</dt>
57
- <dd bst-edit-number="repository.metadata_expire" on-save="save(repository)"
57
+ <dd bst-edit-number="repository.metadata_expire" on-save="save(repository)"
58
58
  readonly="product.redhat || denied('edit_products', product) || !repository.allow_updates || repository.is_container_push"
59
59
  deletable="repository.metadata_expire !== null"
60
60
  on-delete="clearMetadataExpire()"
@@ -77,7 +77,7 @@
77
77
  </dd>
78
78
 
79
79
  <span ng-show="repository.generic_remote_options !== []">
80
- <span ng-repeat="option in genericRemoteOptions">
80
+ <span ng-repeat="option in genericRemoteOptions">
81
81
  <dt>{{option.title}}</dt>
82
82
  <dd bst-edit-text="genericRemoteOptions[$index].value"
83
83
  on-save="save(repository)"
@@ -144,6 +144,13 @@
144
144
  edit-trigger="uploadedFile">
145
145
  </dd>
146
146
 
147
+ <dt translate>Sync Dependencies</dt>
148
+ <dd bst-edit-checkbox="repository.sync_dependencies"
149
+ formatter="booleanToYesNo"
150
+ on-save="save(repository)"
151
+ readonly="denied('edit_products', product) || !repository.allow_updates || repository.is_container_push">
152
+ </dd>
153
+
147
154
  <dt translate>Ansible Collection Authorization</dt>
148
155
  <dd bst-edit-custom="repository.ansible_collection_auth_exists"
149
156
  readonly="denied('edit_products', product) || !repository.allow_updates || repository.is_container_push"
@@ -312,6 +319,12 @@
312
319
  on-save="save(repository)">
313
320
  </dd>
314
321
  </span>
322
+ <span ng-if="((repository.content_type === 'yum' && !product.redhat) || repository.content_type === 'deb') && repository.full_gpg_key_path ">
323
+ <dt translate>URL to GPG Key</dt>
324
+ <dd>
325
+ <a ng-href="{{ repository.full_gpg_key_path }}">{{ repository.full_gpg_key_path }}</a>
326
+ </dd>
327
+ </span>
315
328
  <dt translate>SSL CA Cert</dt>
316
329
  <dd bst-edit-select="repository.ssl_ca_cert.name"
317
330
  readonly="product.redhat ||denied('edit_products', product) || !repository.allow_updates || repository.is_container_push"
@@ -333,7 +346,7 @@
333
346
  options="certs()"
334
347
  on-save="save(repository)">
335
348
  </dd>
336
- <span ng-if="repository.content_type == 'yum' || repository.content_type == 'deb' || repository.content_type == 'docker'">
349
+ <span ng-if="repository.content_type === 'deb' || repository.content_type === 'docker' || repository.content_type === 'file' || repository.content_type === 'yum'">
337
350
  <dt translate>Download Policy</dt>
338
351
  <dd bst-edit-select="downloadPolicyDisplay(repository.download_policy)"
339
352
  readonly="denied('edit_products', product) || !repository.allow_updates || repository.is_container_push"
@@ -383,17 +396,20 @@
383
396
  <span ng-include="'products/details/partials/sync-status.html'"></span>
384
397
 
385
398
  <dt translate>Last Sync</dt>
386
- <dd ng-show="repository.last_sync == null" translate>
399
+ <dd ng-show="repository.last_sync == null && repository.last_sync_words == null" translate>
387
400
  Not Synced
388
401
  </dd>
402
+ <dd ng-show="repository.last_sync == null && repository.last_sync_words" translate>
403
+ Completed {{ repository.last_sync_words }} ago
404
+ </dd>
389
405
  <dd ng-hide="repository.last_sync == null || repository.last_sync.ended_at == null">
390
- <relative-date date="repository.last_sync.ended_at" />
391
- (<short-date-time date="repository.last_sync.ended_at" /> <translate>Local Time</translate>)
406
+ <relative-date date="repository.last_sync.ended_at" ></relative-date>
407
+ (<short-date-time date="repository.last_sync.ended_at" ></short-date-time> <translate>Local Time</translate>)
392
408
  </dd>
393
409
 
394
410
  <dt translate>Next Sync</dt>
395
411
  <dd ng-show="repository.product.sync_plan.next_sync">
396
- <long-date-time date="repository.product.sync_plan.next_sync" /> (<translate>Server Time</translate>)
412
+ <long-date-time date="repository.product.sync_plan.next_sync" ></long-date-time> (<translate>Server Time</translate>)
397
413
  </dd>
398
414
  <dd ng-hide="repository.product.sync_plan.next_sync" translate>
399
415
  Synced manually, no interval set.
@@ -524,7 +540,7 @@
524
540
  </tbody>
525
541
  </table>
526
542
 
527
- <div class="divider" ng-if="repository.content_type === 'ostree'"/>
543
+ <div class="divider" ng-if="repository.content_type === 'ostree'"></div>
528
544
  </section>
529
545
 
530
546
  <span ng-hide="(repository.content_type === 'deb' && repository.url)">
@@ -1,4 +1,5 @@
1
1
  <div tasks-table details-state="product.repository.tasks.details"
2
2
  known-context="repository,organization"
3
3
  resource-type="Katello::Repository"
4
- resource-id="{{ repository.id }}"/>
4
+ resource-id="{{ repository.id }}">
5
+ </div>
@@ -132,7 +132,7 @@ angular.module('Bastion.repositories').controller('NewRepositoryController',
132
132
  });
133
133
 
134
134
  $scope.save = function (repository) {
135
- var fields = ['upstream_password', 'upstream_username', 'ansible_collection_auth_token', 'ansible_collection_auth_url', 'ansible_collection_requirements'];
135
+ var fields = ['upstream_password', 'upstream_username', 'ansible_collection_auth_token', 'ansible_collection_auth_url', 'ansible_collection_requirements', 'sync_repositories'];
136
136
  if (repository.content_type === 'yum') {
137
137
  repository.os_versions = $scope.osVersionsParam();
138
138
  repository.ignorable_content = [];
@@ -143,7 +143,7 @@ angular.module('Bastion.repositories').controller('NewRepositoryController',
143
143
  repository.ignorable_content.push("treeinfo");
144
144
  }
145
145
  }
146
- if (repository.content_type !== 'yum' && repository.content_type !== 'deb' && repository.content_type !== 'docker') {
146
+ if (repository.content_type !== 'deb' && repository.content_type !== 'docker' && repository.content_type !== 'file' && repository.content_type !== 'yum') {
147
147
  repository['download_policy'] = '';
148
148
  }
149
149
  if (repository.arch === 'No restriction') {
@@ -26,8 +26,8 @@
26
26
  <div bst-form-group label="{{ 'Description' | translate }}">
27
27
  <textarea id="description"
28
28
  name="description"
29
- ng-model="repository.description"
30
- type="text"/>
29
+ ng-model="repository.description">
30
+ </textarea>
31
31
  </div>
32
32
 
33
33
  <div bst-form-group label="{{ 'Type' | translate }}">
@@ -107,8 +107,8 @@
107
107
  name="ansible_collection_requirements"
108
108
  ng-model="repository.ansible_collection_requirements"
109
109
  rows="10"
110
- placeholder= "{{ 'You can upload a requirements.yml file below to auto-fill contents or paste contents of requirement.yml here' | translate }}"
111
- type="text"/>
110
+ placeholder= "{{ 'You can upload a requirements.yml file below to auto-fill contents or paste contents of requirement.yml here' | translate }}">
111
+ </textarea>
112
112
  </div>
113
113
 
114
114
  <div class="form-group" ng-show="repository.content_type === 'ansible_collection'">
@@ -118,6 +118,19 @@
118
118
  </a></p>
119
119
  </div>
120
120
 
121
+ <div ng-show="repository.content_type === 'ansible_collection'">
122
+ <div class="checkbox">
123
+ <label>
124
+ <input id="sync_dependencies" name="sync_dependencies" ng-model="repository.sync_dependencies" ng-init="repository.sync_dependencies=true" type="checkbox"/>
125
+ <span translate>Sync Dependencies</span>
126
+ </label>
127
+
128
+ <p class="help-block" translate>
129
+ Include dependencies of Ansible collections in the repository.
130
+ </p>
131
+ </div>
132
+ </div>
133
+
121
134
  <div ng-show="repository.content_type === 'ansible_collection'" bst-form-group label="{{ 'Auth URL' | translate }}">
122
135
  <input id="ansible_collection_auth_url"
123
136
  name="ansible_collection_auth_url"
@@ -152,7 +165,7 @@
152
165
  <br />
153
166
  <div class="alert alert-danger" ><strong>Warning. </strong>Are you sure you want to add a comma in this whitespace separated list of distributions?</div>
154
167
  </div>
155
-
168
+
156
169
  </div>
157
170
 
158
171
  <div ng-show="repository.content_type === 'deb'" bst-form-group label="{{ 'Components' | translate }}">
@@ -277,8 +290,8 @@
277
290
  <textarea
278
291
  id="option-{{$index}}"
279
292
  name="option-{{$index}}"
280
- ng-model="genericRemoteOptions[$index].value"
281
- type="text"/>
293
+ ng-model="genericRemoteOptions[$index].value">
294
+ </textarea>
282
295
  <p class="help-block" translate>
283
296
  {{option.description}}
284
297
  </p>
@@ -296,7 +309,7 @@
296
309
  </div>
297
310
  </div>
298
311
 
299
- <div bst-form-group label="{{ 'Download Policy' | translate }}" ng-if="repository.content_type === 'yum' || repository.content_type === 'deb' || repository.content_type === 'docker'">
312
+ <div bst-form-group label="{{ 'Download Policy' | translate }}" ng-if="repository.content_type === 'deb' || repository.content_type === 'docker' || repository.content_type === 'file' || repository.content_type === 'yum'">
300
313
  <select id="download_policy"
301
314
  name="download_policy"
302
315
  ng-model="repository.download_policy"
@@ -14,6 +14,7 @@ angular
14
14
  this.getOSVersionsOptions = function () {
15
15
  return [
16
16
  { name: 'No restriction', id: '' },
17
+ { name: 'Red Hat Enterprise Linux 10 ', id: 'rhel-10' },
17
18
  { name: 'Red Hat Enterprise Linux 9 ', id: 'rhel-9' },
18
19
  { name: 'Red Hat Enterprise Linux 8 ', id: 'rhel-8' },
19
20
  { name: 'Red Hat Enterprise Linux 7 ', id: 'rhel-7' },
@@ -88,13 +88,13 @@
88
88
 
89
89
  <dt translate>Last Sync</dt>
90
90
  <dd>
91
- <relative-date date="product.last_sync" />
92
- (<long-date-time date="product.last_sync" /> <translate>Local Time</translate>)
91
+ <relative-date date="product.last_sync" ></relative-date>
92
+ (<long-date-time date="product.last_sync" ></long-date-time> <translate>Local Time</translate>)
93
93
  </dd>
94
94
 
95
95
  <dt translate>Next Sync</dt>
96
96
  <dd ng-show="product.sync_plan.next_sync">
97
- <long-date-time date="product.sync_plan.next_sync" /> (<translate>Server Time</translate>)
97
+ <long-date-time date="product.sync_plan.next_sync" ></long-date-time> (<translate>Server Time</translate>)
98
98
  </dd>
99
99
  <dd ng-hide="product.sync_plan.next_sync" translate>
100
100
  Synced manually, no interval set.
@@ -1,4 +1,5 @@
1
1
  <div tasks-table details-state="product.tasks.details"
2
2
  known-context="product,organization"
3
3
  resource-type="Katello::Product"
4
- resource-id="{{ product.id }}"/>
4
+ resource-id="{{ product.id }}">
5
+ </div>
@@ -16,7 +16,8 @@
16
16
  <select class="form-control" ng-disabled="creating()"
17
17
  ng-model="createRepoChoices.existingProductId"
18
18
  ng-options="product.id as product.name for product in products"
19
- ng-required="createRepoChoices.newProduct === 'false'"/>
19
+ ng-required="createRepoChoices.newProduct === 'false'">
20
+ </select>
20
21
  </div>
21
22
 
22
23
  <div bst-form-group ng-show="createRepoChoices.newProduct === 'true'"
@@ -45,7 +46,8 @@
45
46
  <div bst-form-group ng-show="createRepoChoices.newProduct === 'true' && contentCredentials.length !== 0"
46
47
  label="{{ 'GPG Key' | translate }}">
47
48
  <select class="form-control" ng-model="createRepoChoices.product.gpg_key_id"
48
- ng-options="content_credential.id as content_credential.name for content_credential in contentCredentials"/>
49
+ ng-options="content_credential.id as content_credential.name for content_credential in contentCredentials">
50
+ </select>
49
51
  </div>
50
52
 
51
53
  <h4 translate>Repository Options</h4>
@@ -4,7 +4,8 @@
4
4
  <form ng-submit="discover()" name="discoveryForm" class="col-sm-5" role="form">
5
5
  <div bst-form-group label="{{ 'Repository Type' | translate }}">
6
6
  <select ng-model="discovery.contentType"
7
- ng-options="contentType.id as contentType.name for contentType in contentTypes"/>
7
+ ng-options="contentType.id as contentType.name for contentType in contentTypes">
8
+ </select>
8
9
  </div>
9
10
 
10
11
  <div bst-form-group ng-if="discovery.contentType === 'yum'"
@@ -68,7 +68,7 @@ angular.module('Bastion.products').controller('ProductsController',
68
68
  Notification.setSuccessMessage(message, {
69
69
  link: {
70
70
  children: translate("Click to view task"),
71
- href: translate("/foreman_tasks/tasks/%taskId").replace('%taskId', taskId)
71
+ href: "/foreman_tasks/tasks/%taskId".replace('%taskId', taskId)
72
72
  }});
73
73
  });
74
74
 
@@ -98,7 +98,7 @@ angular.module('Bastion.products').controller('ProductsController',
98
98
  Notification.setSuccessMessage(message, {
99
99
  link: {
100
100
  children: translate("Click to monitor task progress."),
101
- href: translate("/foreman_tasks/tasks/%taskId").replace('%taskId', task.id)
101
+ href: "/foreman_tasks/tasks/%taskId".replace('%taskId', task.id)
102
102
  }});
103
103
  };
104
104
 
@@ -113,7 +113,7 @@ angular.module('Bastion.products').controller('ProductsController',
113
113
  Notification.setSuccessMessage(message, {
114
114
  link: {
115
115
  children: translate("Click to monitor task progress."),
116
- href: translate("/foreman_tasks/tasks/%taskId").replace('%taskId', task.id)
116
+ href: "/foreman_tasks/tasks/%taskId".replace('%taskId', task.id)
117
117
  }});
118
118
  };
119
119
 
@@ -1,7 +1,7 @@
1
1
  <div class="list-unstyled" ng-show="product.last_sync">
2
2
  <div>
3
3
  <span translate>Last synced </span>
4
- <relative-date date="product.last_sync" />.
4
+ <relative-date date="product.last_sync" ></relative-date>.
5
5
  </div>
6
6
  <div ng-show="mostImportantSyncState(product) == 'pending'"
7
7
  translate
@@ -1,2 +1,2 @@
1
1
 
2
- <date date="subscription.start_date" />{{ checkFutureDate(subscription.start_date) }}
2
+ <date date="subscription.start_date" ></date>{{ checkFutureDate(subscription.start_date) }}
@@ -42,7 +42,7 @@
42
42
  </dd>
43
43
 
44
44
  <dt translate>Next Sync</dt>
45
- <dd><long-date-time date="syncPlan.next_sync" /></dd>
45
+ <dd><long-date-time date="syncPlan.next_sync"></long-date-time></dd>
46
46
 
47
47
  <dt translate>Recurring Logic</dt>
48
48
  <dd>
@@ -43,10 +43,10 @@
43
43
  </a>
44
44
  </td>
45
45
  <td bst-table-cell>{{ syncPlan.description }}</td>
46
- <td bst-table-cell><long-date-time date="syncPlan.sync_date" /></td>
46
+ <td bst-table-cell><long-date-time date="syncPlan.sync_date"></long-date-time></td>
47
47
  <td bst-table-cell>{{ syncPlan.enabled }}</td>
48
48
  <td bst-table-cell>{{ syncPlan.interval | translate | capitalize }}</td>
49
- <td bst-table-cell><long-date-time date="syncPlan.next_sync" /></td>
49
+ <td bst-table-cell><long-date-time date="syncPlan.next_sync"></long-date-time></td>
50
50
  </tr>
51
51
  </tbody>
52
52
  </table>
@@ -26,7 +26,8 @@
26
26
  <div tasks-table details-state="product.tasks.details"
27
27
  known-context="product,organization"
28
28
  resource-type="Katello::Product"
29
- resource-id="{{ product.id }}"/>
29
+ resource-id="{{ product.id }}">
30
+ </dev>
30
31
  </pre>
31
32
  */
32
33
  angular.module('Bastion.tasks').directive('tasksTable',
@@ -8,10 +8,10 @@
8
8
  <dd>{{ task.username }}</dd>
9
9
 
10
10
  <dt translate>Started At</dt>
11
- <dd><short-date-time date="task.started_at" /></dd>
11
+ <dd><short-date-time date="task.started_at"></short-date-time></dd>
12
12
 
13
13
  <dt translate>Finished At</dt>
14
- <dd><short-date-time date="task.ended_at" /></dd>
14
+ <dd><short-date-time date="task.ended_at"></short-date-time></dd>
15
15
 
16
16
  <dt translate>Parameters</dt>
17
17
  <dd ng-switch="isArray(task.humanized.input)">
@@ -1 +1 @@
1
- <div tasks-table details-state="tasks.details" all/>
1
+ <div tasks-table details-state="tasks.details" all></div>
@@ -32,7 +32,7 @@
32
32
  </a>
33
33
  </td>
34
34
  <td bst-table-cell>{{ task.username }}</td>
35
- <td bst-table-cell><short-date-time date="task.started_at" /></td>
35
+ <td bst-table-cell><short-date-time date="task.started_at"></short-date-time></td>
36
36
  </tr>
37
37
  </tbody>
38
38
  </table>
@@ -22,7 +22,7 @@
22
22
  {{ task.humanized.input | taskInputShort | taskInputCompile }}
23
23
  </a>
24
24
  </td>
25
- <td bst-table-cell><short-date-time date="task.started_at" /></td>
25
+ <td bst-table-cell><short-date-time date="task.started_at"></short-date-time></td>
26
26
  </tr>
27
27
  </tbody>
28
28
  </table>
@@ -156,9 +156,13 @@ module Katello
156
156
  ::HttpProxy.include Katello::Concerns::HttpProxyExtensions
157
157
  ForemanTasks::RecurringLogic.include Katello::Concerns::RecurringLogicExtensions
158
158
 
159
+ # Validator extensions
160
+ ::BookmarkControllerValidator.singleton_class.send :prepend, Katello::Concerns::BookmarkControllerValidatorExtensions
161
+
159
162
  #Controller extensions
160
163
  ::HostsController.include Katello::Concerns::HostsControllerExtensions
161
164
  ::SmartProxiesController.include Katello::Concerns::SmartProxiesControllerExtensions
165
+ ::HttpProxiesController.include Katello::Concerns::HttpProxiesControllerExtensions
162
166
  ::RegistrationCommandsController.prepend Katello::Concerns::RegistrationCommandsControllerExtensions
163
167
 
164
168
  #Helper Extensions
@@ -198,6 +202,8 @@ module Katello
198
202
  ::Api::V2::HostsBulkActionsController.include Katello::Concerns::Api::V2::HostsBulkActionsControllerExtensions
199
203
  ::Api::V2::HostgroupsController.include Katello::Concerns::Api::V2::HostgroupsControllerExtensions
200
204
  ::Api::V2::SmartProxiesController.include Katello::Concerns::Api::V2::SmartProxiesControllerExtensions
205
+ ::Api::V2::HttpProxiesController.include Katello::Concerns::HttpProxiesControllerExtensions
206
+ ::Api::V2::HttpProxiesController.include Katello::Concerns::Api::V2::HttpProxiesControllerExtensions
201
207
  ::Api::V2::RegistrationController.include ::Foreman::Controller::SmartProxyAuth
202
208
  ::Api::V2::RegistrationController.prepend Katello::Concerns::Api::V2::RegistrationControllerExtensions
203
209
  ::Api::V2::RegistrationCommandsController.include Katello::Concerns::Api::V2::RegistrationCommandsControllerExtensions
@@ -16,6 +16,7 @@ module Katello
16
16
  subscription_permissions
17
17
  sync_plan_permissions
18
18
  alternate_content_source_permissions
19
+ flatpak_remote_permissions
19
20
  user_permissions
20
21
  end
21
22
 
@@ -305,6 +306,7 @@ module Katello
305
306
  'katello/api/v2/content_uploads' => [:create, :update, :destroy],
306
307
  'katello/api/v2/organizations' => [:repo_discover, :cancel_repo_discover],
307
308
  'katello/api/v2/repository_sets' => [:enable, :disable],
309
+ 'katello/api/v2/flatpak_remote_repositories' => [:mirror],
308
310
  },
309
311
  :resource_type => 'Katello::Product',
310
312
  :finder_scope => :editable
@@ -449,5 +451,40 @@ module Katello
449
451
  },
450
452
  :resource_type => 'Organization'
451
453
  end
454
+
455
+ def flatpak_remote_permissions
456
+ @plugin.permission :view_flatpak_remotes,
457
+ {
458
+ 'katello/api/v2/flatpak_remotes' => [:index, :show, :auto_complete_search],
459
+ 'katello/api/v2/flatpak_remote_repositories' => [:index, :show, :auto_complete_search],
460
+ 'katello/api/v2/flatpak_remote_repository_manifests' => [:index, :show, :auto_complete_search],
461
+ },
462
+ :resource_type => 'Katello::FlatpakRemote',
463
+ :finder_scope => :readable
464
+ @plugin.permission :create_flatpak_remotes,
465
+ {
466
+ 'katello/api/v2/flatpak_remotes' => [:create],
467
+ 'katello/api/v2/flatpak_remote_repositories' => [:create],
468
+ 'katello/api/v2/flatpak_remote_repository_manifests' => [:create],
469
+ },
470
+ :resource_type => 'Katello::FlatpakRemote',
471
+ :finder_scope => :creatable
472
+ @plugin.permission :edit_flatpak_remotes,
473
+ {
474
+ 'katello/api/v2/flatpak_remotes' => [:update, :scan],
475
+ 'katello/api/v2/flatpak_remote_repositories' => [:update],
476
+ 'katello/api/v2/flatpak_remote_repository_manifests' => [:update],
477
+ },
478
+ :resource_type => 'Katello::FlatpakRemote',
479
+ :finder_scope => :editable
480
+ @plugin.permission :destroy_flatpak_remotes,
481
+ {
482
+ 'katello/api/v2/flatpak_remotes' => [:destroy],
483
+ 'katello/api/v2/flatpak_remote_repositories' => [:destroy],
484
+ 'katello/api/v2/flatpak_remote_repository_manifests' => [:destroy],
485
+ },
486
+ :resource_type => 'Katello::FlatpakRemote',
487
+ :finder_scope => :deletable
488
+ end
452
489
  end
453
490
  end
@@ -43,6 +43,8 @@ Foreman::AccessControl.permission(:edit_hosts).actions.concat [
43
43
 
44
44
  Foreman::AccessControl.permission(:view_hosts).actions.concat [
45
45
  'hosts/content_hosts',
46
+ 'katello/api/v2/host_bootc_images/bootc_images',
47
+ 'katello/api/v2/host_bootc_images/auto_complete_search',
46
48
  'katello/api/v2/host_autocomplete/auto_complete_search',
47
49
  'katello/api/v2/host_errata/index',
48
50
  'katello/api/v2/host_errata/show',
@@ -14,4 +14,5 @@ Foreman::AccessControl.permission(:create_personal_access_tokens).actions.concat
14
14
  'katello/api/registry/registry_proxies/start_upload_blob',
15
15
  'katello/api/registry/registry_proxies/upload_blob',
16
16
  'katello/api/registry/registry_proxies/finish_upload_blob',
17
+ 'katello/api/registry/registry_proxies/static_index',
17
18
  ]
@@ -70,6 +70,15 @@ Foreman::Plugin.register :katello do
70
70
  :engine => Katello::Engine,
71
71
  :turbolinks => false
72
72
 
73
+ menu :top_menu,
74
+ :booted_container_images,
75
+ :caption => N_('Booted Container Images'),
76
+ :url_hash => {:controller => 'katello/api/v2/host_bootc_images',
77
+ :action => 'bootc_images'},
78
+ :url => '/booted_container_images',
79
+ :engine => Katello::Engine,
80
+ :turbolinks => false
81
+
73
82
  divider :top_menu, :caption => N_('Lifecycle'), :parent => :content_menu
74
83
 
75
84
  menu :top_menu,
@@ -226,7 +235,7 @@ Foreman::Plugin.register :katello do
226
235
  :content_facet_attributes => [:content_view_id, :lifecycle_environment_id, :content_source_id,
227
236
  :host, :kickstart_repository_id],
228
237
  :subscription_facet_attributes => [:release_version, :autoheal, :purpose_usage, :purpose_role, :service_level, :host,
229
- {:installed_products => [:product_id, :product_name, :arch, :version]}, :facts, {:hypervisor_guest_uuids => []}, {:purpose_addon_ids => []}]
238
+ {:installed_products => [:product_id, :product_name, :arch, :version]}, :facts, {:hypervisor_guest_uuids => []}]
230
239
  parameter_filter ::Hostgroup, :content_view_id, :lifecycle_environment_id, :content_source_id,
231
240
  :kickstart_repository_id
232
241
  parameter_filter Organization, :label, :service_level
@@ -298,6 +307,9 @@ Foreman::Plugin.register :katello do
298
307
  extend_rabl_template 'api/v2/smart_proxies/main', 'katello/api/v2/smart_proxies/pulp_info'
299
308
  extend_rabl_template 'api/v2/hosts/show', 'katello/api/v2/hosts/host_collections'
300
309
  extend_rabl_template 'api/v2/hosts/show', 'katello/api/v2/hosts/show'
310
+ extend_rabl_template 'api/v2/hosts/show', 'katello/api/v2/hosts/os_attributes'
311
+ extend_rabl_template 'api/v2/hosts/index', 'katello/api/v2/hosts/os_attributes'
312
+ extend_rabl_template 'api/v2/http_proxies/show', 'katello/api/v2/http_proxies/show'
301
313
 
302
314
  # Katello variables for Host Registration
303
315
  extend_allowed_registration_vars :activation_keys
@@ -696,6 +708,11 @@ Foreman::Plugin.register :katello do
696
708
  RemoteExecutionFeature.register(:katello_module_stream_action, N_("Katello: Module Stream Actions"),
697
709
  :description => N_("Perform a module stream action via Katello interface"),
698
710
  :provided_inputs => ['action', 'module_spec', 'options'])
711
+ RemoteExecutionFeature.register(:katello_bootc_action, N_("Katello: Bootc Action"), :description => N_("Katello Bootc interface"))
712
+ RemoteExecutionFeature.register(:katello_bootc_upgrade, N_("Katello: Bootc Upgrade"), :description => N_("Bootc upgrade via Bootc interface"))
713
+ RemoteExecutionFeature.register(:katello_bootc_switch, N_("Katello: Bootc Switch"), :description => N_("Bootc switch via Bootc interface"))
714
+ RemoteExecutionFeature.register(:katello_bootc_rollback, N_("Katello: Bootc Rollback"), :description => N_("Bootc rollback via Bootc interface"))
715
+ RemoteExecutionFeature.register(:katello_bootc_status, N_("Katello: Bootc Status"), :description => N_("Bootc status via Bootc interface"))
699
716
  allowed_template_helpers :errata
700
717
 
701
718
  RemoteExecutionProvider.singleton_class.prepend(Katello::Concerns::RemoteExecutionProviderExtensions)
@@ -27,7 +27,6 @@ Katello::RepositoryTypeManager.register(::Katello::Repository::DOCKER_TYPE) do
27
27
  :priority => 1,
28
28
  :pulp3_service_class => ::Katello::Pulp3::DockerManifest,
29
29
  :removable => true,
30
- :uploadable => true,
31
30
  :primary_content => true
32
31
  content_type Katello::DockerManifestList,
33
32
  :priority => 2,
@@ -26,7 +26,7 @@ Katello::RepositoryTypeManager.register('python') do
26
26
  description: N_("Python packages to exclude from the upstream URL, names separated by newline. You may also specify versions, for example: django~=2.0.")
27
27
 
28
28
  generic_remote_option :package_types, title: N_("Package Types"), type: Array, input_type: "text", delimiter: ",", default: [],
29
- description: N_("Package types to sync for Python content, separated by comma. Leave empty to get every package type. Package types are: bdist_dmg, bdist_dumb, bdist_egg, bdist_msi, bdist_rpm, bdist_wheel, bdist_wininst, sdist.")
29
+ description: N_("Package types to sync for Python content, separated by comma. Leave empty to get every package type. Package types are: bdist_dmg,bdist_dumb,bdist_egg,bdist_msi,bdist_rpm,bdist_wheel,bdist_wininst,sdist.")
30
30
 
31
31
  generic_remote_option :keep_latest_packages, title: N_("Keep latest packages"), type: :number, input_type: "number", default: 0,
32
32
  description: N_("The amount of latest versions of a package to keep on sync, includes pre-releases if synced. Default 0 keeps all versions.")
@@ -1,3 +1,3 @@
1
1
  module Katello
2
- VERSION = "4.15.0".freeze
2
+ VERSION = "4.16.0.rc2".freeze
3
3
  end
data/lib/katello.rb CHANGED
@@ -12,6 +12,8 @@ require "securerandom"
12
12
 
13
13
  require "deface"
14
14
 
15
+ require "jquery-ui-rails"
16
+
15
17
  # to make Foreman#in_rake? helper available if Foreman's lib is available
16
18
  lib_foreman = File.expand_path('lib/foreman', Rails.root)
17
19
  require lib_foreman if Dir.exist?(lib_foreman)