katello 4.10.0.rc2 → 4.11.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 (418) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/locale/bn/katello.js +254 -215
  3. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +254 -215
  4. data/app/assets/javascripts/katello/locale/ca/katello.js +254 -215
  5. data/app/assets/javascripts/katello/locale/cs/katello.js +254 -215
  6. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +254 -215
  7. data/app/assets/javascripts/katello/locale/de/katello.js +260 -245
  8. data/app/assets/javascripts/katello/locale/de_AT/katello.js +254 -215
  9. data/app/assets/javascripts/katello/locale/de_DE/katello.js +254 -215
  10. data/app/assets/javascripts/katello/locale/el/katello.js +254 -215
  11. data/app/assets/javascripts/katello/locale/en/katello.js +254 -215
  12. data/app/assets/javascripts/katello/locale/en_GB/katello.js +254 -215
  13. data/app/assets/javascripts/katello/locale/en_US/katello.js +254 -215
  14. data/app/assets/javascripts/katello/locale/es/katello.js +257 -233
  15. data/app/assets/javascripts/katello/locale/et_EE/katello.js +254 -215
  16. data/app/assets/javascripts/katello/locale/fr/katello.js +268 -268
  17. data/app/assets/javascripts/katello/locale/gl/katello.js +254 -215
  18. data/app/assets/javascripts/katello/locale/gu/katello.js +254 -215
  19. data/app/assets/javascripts/katello/locale/he_IL/katello.js +254 -215
  20. data/app/assets/javascripts/katello/locale/hi/katello.js +254 -215
  21. data/app/assets/javascripts/katello/locale/id/katello.js +254 -215
  22. data/app/assets/javascripts/katello/locale/it/katello.js +254 -221
  23. data/app/assets/javascripts/katello/locale/ja/katello.js +268 -268
  24. data/app/assets/javascripts/katello/locale/ka/katello.js +261 -231
  25. data/app/assets/javascripts/katello/locale/kn/katello.js +254 -215
  26. data/app/assets/javascripts/katello/locale/ko/katello.js +255 -222
  27. data/app/assets/javascripts/katello/locale/locale/katello.js +1049 -1012
  28. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +254 -215
  29. data/app/assets/javascripts/katello/locale/mr/katello.js +254 -215
  30. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +254 -215
  31. data/app/assets/javascripts/katello/locale/or/katello.js +254 -215
  32. data/app/assets/javascripts/katello/locale/pa/katello.js +254 -215
  33. data/app/assets/javascripts/katello/locale/pl/katello.js +254 -215
  34. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +254 -215
  35. data/app/assets/javascripts/katello/locale/pt/katello.js +254 -215
  36. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +257 -233
  37. data/app/assets/javascripts/katello/locale/ro/katello.js +254 -215
  38. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +254 -215
  39. data/app/assets/javascripts/katello/locale/ru/katello.js +255 -222
  40. data/app/assets/javascripts/katello/locale/sl/katello.js +254 -215
  41. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +254 -215
  42. data/app/assets/javascripts/katello/locale/ta/katello.js +254 -215
  43. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +254 -215
  44. data/app/assets/javascripts/katello/locale/te/katello.js +254 -215
  45. data/app/assets/javascripts/katello/locale/tr/katello.js +254 -215
  46. data/app/assets/javascripts/katello/locale/vi/katello.js +254 -215
  47. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +254 -215
  48. data/app/assets/javascripts/katello/locale/zh/katello.js +254 -215
  49. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +268 -268
  50. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +255 -222
  51. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +15 -2
  52. data/app/controllers/katello/api/v2/capsule_content_controller.rb +21 -4
  53. data/app/controllers/katello/api/v2/capsules_controller.rb +11 -1
  54. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +1 -1
  55. data/app/controllers/katello/api/v2/docker_tags_controller.rb +2 -0
  56. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +2 -1
  57. data/app/controllers/katello/api/v2/organizations_controller.rb +2 -2
  58. data/app/controllers/katello/api/v2/repositories_controller.rb +1 -0
  59. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +5 -5
  60. data/app/controllers/katello/api/v2/sync_plans_controller.rb +11 -3
  61. data/app/controllers/katello/concerns/api/api_controller.rb +6 -0
  62. data/app/controllers/katello/concerns/api/v2/hosts_bulk_actions_controller_extensions.rb +23 -0
  63. data/app/controllers/katello/concerns/filtered_auto_complete_search.rb +1 -1
  64. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +2 -0
  65. data/app/controllers/katello/remote_execution_controller.rb +1 -1
  66. data/app/jobs/create_host_lifecycle_expire_soon_notifications.rb +11 -0
  67. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +10 -0
  68. data/app/lib/actions/katello/capsule_content/refresh_repos.rb +8 -2
  69. data/app/lib/actions/katello/capsule_content/sync.rb +30 -10
  70. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +13 -0
  71. data/app/lib/actions/katello/capsule_content/update_content_counts.rb +24 -0
  72. data/app/lib/actions/katello/content_view/promote.rb +9 -0
  73. data/app/lib/actions/katello/content_view/publish.rb +9 -0
  74. data/app/lib/actions/katello/orphan_cleanup/remove_orphans.rb +8 -0
  75. data/app/lib/actions/katello/repository/remove_content.rb +9 -1
  76. data/app/lib/actions/katello/repository/sync.rb +11 -0
  77. data/app/lib/actions/pulp3/capsule_content/reclaim_space.rb +5 -0
  78. data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +6 -1
  79. data/app/lib/actions/pulp3/content_view_version/export.rb +8 -0
  80. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +1 -1
  81. data/app/lib/katello/concerns/base_template_scope_extensions.rb +14 -1
  82. data/app/lib/katello/errors.rb +1 -0
  83. data/app/lib/katello/repo_discovery.rb +78 -5
  84. data/app/lib/katello/validators/content_view_environment_coherent_default_validator.rb +22 -0
  85. data/app/lib/katello/validators/content_view_environment_validator.rb +1 -0
  86. data/app/mailers/katello/task_mailer.rb +54 -0
  87. data/app/models/katello/concerns/host_managed_extensions.rb +41 -1
  88. data/app/models/katello/concerns/organization_extensions.rb +1 -1
  89. data/app/models/katello/concerns/smart_proxy_extensions.rb +75 -3
  90. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +6 -0
  91. data/app/models/katello/content_view.rb +21 -0
  92. data/app/models/katello/content_view_environment.rb +6 -1
  93. data/app/models/katello/docker_meta_tag.rb +1 -1
  94. data/app/models/katello/docker_tag.rb +1 -1
  95. data/app/models/katello/erratum.rb +1 -1
  96. data/app/models/katello/host/content_facet.rb +10 -7
  97. data/app/models/katello/product.rb +8 -0
  98. data/app/models/katello/repository.rb +31 -6
  99. data/app/models/katello/rhel_lifecycle_status.rb +214 -0
  100. data/app/models/katello/sync_plan.rb +19 -1
  101. data/app/models/katello/yum_metadata_file.rb +1 -1
  102. data/app/services/katello/applicability/applicable_content_helper.rb +1 -1
  103. data/app/services/katello/event_queue.rb +10 -2
  104. data/app/services/katello/host_status_manager.rb +1 -0
  105. data/app/services/katello/product_content_importer.rb +45 -3
  106. data/app/services/katello/pulp3/ansible_collection.rb +1 -0
  107. data/app/services/katello/pulp3/api/core.rb +1 -1
  108. data/app/services/katello/pulp3/deb.rb +1 -0
  109. data/app/services/katello/pulp3/docker_manifest.rb +1 -0
  110. data/app/services/katello/pulp3/docker_manifest_list.rb +9 -4
  111. data/app/services/katello/pulp3/docker_tag.rb +1 -0
  112. data/app/services/katello/pulp3/erratum.rb +1 -0
  113. data/app/services/katello/pulp3/file_unit.rb +1 -0
  114. data/app/services/katello/pulp3/module_stream.rb +1 -0
  115. data/app/services/katello/pulp3/package_group.rb +1 -0
  116. data/app/services/katello/pulp3/pulp_content_unit.rb +39 -0
  117. data/app/services/katello/pulp3/repository_mirror.rb +21 -2
  118. data/app/services/katello/pulp3/rpm.rb +1 -0
  119. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
  120. data/app/services/katello/pulp3/srpm.rb +3 -2
  121. data/app/services/katello/registration_manager.rb +6 -3
  122. data/app/services/katello/repository_type.rb +2 -1
  123. data/app/services/katello/ui_notifications/hosts/lifecycle_expire_soon.rb +58 -0
  124. data/app/views/foreman/job_templates/resolve_traces.erb +1 -1
  125. data/app/views/foreman/smart_proxies/_content_tab.html.erb +1 -3
  126. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +39 -1
  127. data/app/views/katello/api/v2/content_facet/show.json.rabl +4 -0
  128. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -1
  129. data/app/views/katello/api/v2/docker_tags/_base.json.rabl +28 -6
  130. data/app/views/katello/hosts/_errata_counts.html.erb +2 -2
  131. data/app/views/katello/task_mailer/cv_promote_failure.html.erb +31 -0
  132. data/app/views/katello/task_mailer/cv_promote_failure.text.erb +13 -0
  133. data/app/views/katello/task_mailer/cv_publish_failure.html.erb +31 -0
  134. data/app/views/katello/task_mailer/cv_publish_failure.text.erb +13 -0
  135. data/app/views/katello/task_mailer/proxy_sync_failure.html.erb +45 -0
  136. data/app/views/katello/task_mailer/proxy_sync_failure.text.erb +25 -0
  137. data/app/views/katello/task_mailer/repo_sync_failure.html.erb +35 -0
  138. data/app/views/katello/task_mailer/repo_sync_failure.text.erb +15 -0
  139. data/app/views/overrides/organizations/_edit_override.html.erb +4 -0
  140. data/config/routes/api/v2.rb +2 -0
  141. data/db/migrate/20230825180856_add_content_counts_to_smart_proxy.rb +7 -0
  142. data/db/migrate/20231020153017_create_indexes_for_nvra_and_epoch.rb +6 -0
  143. data/db/seeds.d/106-mail_notifications.rb +32 -0
  144. data/db/seeds.d/109-katello-notification-blueprints.rb +6 -0
  145. data/engines/bastion/app/assets/javascripts/bastion/components/views/bst-alert.html +1 -1
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.controller.js +4 -0
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-host-collections.controller.js +3 -0
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-subscriptions.controller.js +3 -0
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +4 -0
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-copy.controller.js +7 -2
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-host-collections.controller.js +3 -0
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +3 -0
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-subscriptions.controller.js +3 -0
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/new/new-activation-key.controller.js +6 -2
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +16 -1
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/rhel-lifecycle-notice.html +5 -0
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.controller.js +7 -2
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-acs.controller.js +7 -2
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-products.controller.js +7 -2
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-repositories.controller.js +7 -2
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/new/new-content-credential.controller.js +3 -0
  162. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +5 -1
  163. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-actions.controller.js +5 -1
  164. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-applicable.controller.js +3 -0
  165. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-installed.controller.js +3 -0
  166. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +4 -0
  167. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +3 -0
  168. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-applicable.controller.js +3 -0
  169. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +3 -0
  170. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +3 -0
  171. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +4 -0
  172. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-actions.html +1 -1
  173. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-applicable.html +1 -1
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-installed.html +1 -1
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +3 -3
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-module-streams.html +1 -1
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -1
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -1
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +1 -1
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-traces.html +3 -3
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +5 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +1 -1
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-host-collections.controller.js +4 -1
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-subscriptions.controller.js +3 -0
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-host-collections.controller.js +4 -1
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-repository-sets.controller.js +3 -0
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-subscriptions.controller.js +3 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-add-subscriptions.html +1 -1
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +4 -3
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-host-collections.html +1 -1
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +3 -3
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-provisioning-info.html +2 -2
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-subscriptions-list.html +1 -1
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-subscriptions.html +1 -1
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +3 -3
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +7 -0
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-content-views.controller.js +8 -1
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-repositories.controller.js +10 -2
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-environments.controller.js +5 -2
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-repositories.controller.js +6 -2
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.controller.js +6 -3
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +13 -0
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +6 -0
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/new-environment.controller.js +8 -2
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +4 -0
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-content-hosts.controller.js +7 -2
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-repositories.controller.js +7 -2
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum.controller.js +6 -2
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +2 -2
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.controller.js +5 -0
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata.html +1 -1
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-content-views.controller.js +10 -2
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-repositories.controller.js +8 -1
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.controller.js +9 -2
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +3 -0
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-copy.controller.js +7 -2
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +3 -0
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collections.controller.js +4 -0
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/new/new-host-collection.controller.js +6 -2
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host.factory.js +4 -0
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +166 -43
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +4 -0
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +1 -1
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +7 -0
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +5 -0
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-advanced-sync.controller.js +6 -2
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +11 -0
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +3 -0
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +2 -2
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery-create.controller.js +3 -0
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery.controller.js +3 -0
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/new/product-form.controller.js +6 -2
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +4 -0
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html +1 -1
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-add-products.controller.js +5 -1
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-products.controller.js +4 -0
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/new/new-sync-plan.controller.js +3 -0
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/sync-plans.controller.js +4 -0
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/task-details.controller.js +6 -2
  240. data/lib/katello/engine.rb +2 -3
  241. data/lib/katello/permission_creator.rb +2 -2
  242. data/lib/katello/plugin.rb +4 -0
  243. data/lib/katello/repository_types/ostree.rb +1 -0
  244. data/lib/katello/repository_types/python.rb +1 -0
  245. data/lib/katello/scheduled_jobs.rb +1 -1
  246. data/lib/katello/version.rb +1 -1
  247. data/locale/action_names.rb +1 -3
  248. data/locale/bn/katello.po +236 -197
  249. data/locale/bn_IN/katello.po +236 -197
  250. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  251. data/locale/ca/katello.po +236 -197
  252. data/locale/cs/katello.po +236 -206
  253. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  254. data/locale/cs_CZ/katello.po +236 -197
  255. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  256. data/locale/de/katello.po +241 -202
  257. data/locale/de_AT/katello.po +236 -197
  258. data/locale/de_DE/katello.po +236 -197
  259. data/locale/el/katello.po +236 -197
  260. data/locale/en/katello.po +236 -197
  261. data/locale/en_GB/katello.po +236 -197
  262. data/locale/en_US/katello.po +236 -197
  263. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  264. data/locale/es/katello.po +238 -199
  265. data/locale/et_EE/katello.po +236 -197
  266. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  267. data/locale/fr/katello.po +247 -208
  268. data/locale/gl/katello.po +236 -197
  269. data/locale/gu/katello.po +236 -197
  270. data/locale/he_IL/katello.po +236 -197
  271. data/locale/hi/katello.po +236 -197
  272. data/locale/id/katello.po +236 -197
  273. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  274. data/locale/it/katello.po +236 -197
  275. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  276. data/locale/ja/katello.po +247 -208
  277. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  278. data/locale/ka/katello.po +241 -202
  279. data/locale/katello.pot +1427 -1296
  280. data/locale/kn/katello.po +236 -197
  281. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  282. data/locale/ko/katello.po +236 -197
  283. data/locale/ml_IN/katello.po +236 -197
  284. data/locale/mr/katello.po +236 -197
  285. data/locale/nl_NL/katello.po +236 -197
  286. data/locale/or/katello.po +236 -197
  287. data/locale/pa/katello.po +236 -197
  288. data/locale/pl/katello.po +236 -197
  289. data/locale/pl_PL/katello.po +236 -197
  290. data/locale/pt/katello.po +236 -197
  291. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  292. data/locale/pt_BR/katello.po +238 -199
  293. data/locale/ro/katello.po +236 -197
  294. data/locale/ro_RO/katello.po +236 -197
  295. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  296. data/locale/ru/katello.po +236 -197
  297. data/locale/sl/katello.po +236 -197
  298. data/locale/sv_SE/katello.po +236 -197
  299. data/locale/ta/katello.po +236 -197
  300. data/locale/ta_IN/katello.po +236 -197
  301. data/locale/te/katello.po +236 -197
  302. data/locale/tr/katello.po +236 -197
  303. data/locale/vi/katello.po +236 -197
  304. data/locale/vi_VN/katello.po +236 -197
  305. data/locale/zh/katello.po +236 -197
  306. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  307. data/locale/zh_CN/katello.po +247 -208
  308. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  309. data/locale/zh_TW/katello.po +236 -197
  310. data/webpack/components/Table/EmptyStateMessage.js +7 -4
  311. data/webpack/components/Table/MainTable.scss +18 -17
  312. data/webpack/components/Table/TableWrapper.js +4 -1
  313. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +45 -4
  314. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +9 -7
  315. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +1 -1
  316. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +1 -1
  317. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeActions.js +29 -7
  318. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +106 -66
  319. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +6 -0
  320. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeConstants.js +2 -0
  321. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +53 -29
  322. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeSelectors.js +7 -6
  323. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +24 -5
  324. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +137 -7
  325. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +11 -10
  326. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +8 -2
  327. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +27 -10
  328. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataActions.js +3 -22
  329. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataConstants.js +0 -1
  330. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +3 -2
  331. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +2 -2
  332. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +48 -12
  333. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +22 -10
  334. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionHooks.js +1 -1
  335. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +2 -2
  336. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +71 -5
  337. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.scss +16 -0
  338. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +4 -1
  339. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +6 -2
  340. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +2 -1
  341. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +25 -0
  342. data/webpack/components/extensions/Hosts/ActionsBar/index.js +36 -0
  343. data/webpack/components/extensions/Hosts/constants.js +2 -0
  344. data/webpack/components/extensions/RegistrationCommands/RegistrationCommandsPageHelpers.js +13 -7
  345. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +9 -1
  346. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +87 -22
  347. data/webpack/components/extensions/RegistrationCommands/index.js +17 -41
  348. data/webpack/global_index.js +11 -2
  349. data/webpack/redux/reducers/RedHatRepositories/enabled.fixtures.js +4 -0
  350. data/webpack/redux/reducers/RedHatRepositories/enabled.js +1 -0
  351. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.js +10 -1
  352. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.scss +33 -31
  353. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +3 -1
  354. data/webpack/scenes/Content/ContentConfig.js +3 -0
  355. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +6 -4
  356. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.scss +8 -6
  357. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +1 -0
  358. data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +4 -2
  359. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -4
  360. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +2 -2
  361. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +5 -5
  362. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/compositeCVDetails.fixtures.json +393 -0
  363. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +30 -4
  364. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +3 -1
  365. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +18 -4
  366. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/matchContentModal.scss +3 -0
  367. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +15 -1
  368. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +3 -3
  369. data/webpack/scenes/ContentViews/Details/Repositories/RepoIcon.js +2 -1
  370. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +1 -1
  371. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +1 -1
  372. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +1 -1
  373. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +1 -1
  374. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +24 -1
  375. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +1 -0
  376. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +42 -0
  377. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +13 -11
  378. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +2 -1
  379. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
  380. data/webpack/scenes/Hosts/ChangeContentSource/index.js +4 -3
  381. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +1 -2
  382. data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetails.test.js.snap +1 -1
  383. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +2 -1
  384. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +6 -0
  385. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +4 -1
  386. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +13 -4
  387. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/EnabledRepositoryContent.test.js +1 -0
  388. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepository.test.js.snap +1 -0
  389. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepositoryContent.test.js.snap +3 -2
  390. data/webpack/scenes/SmartProxy/AdditionalCapsuleContent.js +93 -0
  391. data/webpack/scenes/SmartProxy/Content.js +12 -4
  392. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +107 -0
  393. data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +139 -0
  394. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +17 -4
  395. data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +1 -0
  396. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +150 -0
  397. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.fixtures.json +799 -0
  398. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +29 -17
  399. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +16 -19
  400. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.scss +12 -8
  401. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +21 -18
  402. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationForm.scss +4 -2
  403. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.scss +38 -19
  404. data/webpack/scenes/Subscriptions/Manifest/index.js +0 -2
  405. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +38 -12
  406. data/webpack/scenes/Subscriptions/SubscriptionsPage.scss +38 -36
  407. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +16 -13
  408. data/webpack/utils/helpers.js +0 -1
  409. metadata +58 -39
  410. data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +0 -47
  411. data/webpack/components/Table/TableHooks.js +0 -315
  412. data/webpack/components/Table/__test__/useBulkSelect.test.js +0 -99
  413. data/webpack/components/extensions/RegistrationCommands/__tests__/LifeCycleEnvironment.test.js +0 -11
  414. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/LifeCycleEnvironment.test.js.snap +0 -29
  415. data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +0 -57
  416. data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +0 -164
  417. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentResult.fixtures.json +0 -140
  418. data/webpack/scenes/Subscriptions/Manifest/Manifest.scss +0 -16
@@ -7,8 +7,11 @@
7
7
  *
8
8
  * @description
9
9
  * For copying a host collection.
10
+ *
11
+ * @requires translate
12
+ *
10
13
  */
11
- function ActivationKeyCopyController($scope, ActivationKey, Notification) {
14
+ function ActivationKeyCopyController($scope, ActivationKey, Notification, translate) {
12
15
  $scope.copy = function (newName) {
13
16
  ActivationKey.copy({id: $scope.activationKey.id, 'new_name': newName}, function (response) {
14
17
  $scope.transitionTo('activation-key.info', {activationKeyId: response.id});
@@ -16,12 +19,14 @@
16
19
  Notification.setErrorMessage(response.data.displayMessage);
17
20
  });
18
21
  };
22
+ // Labels so breadcrumb strings can be translated
23
+ $scope.label = translate('Create Copy');
19
24
  }
20
25
 
21
26
  angular
22
27
  .module('Bastion.activation-keys')
23
28
  .controller('ActivationKeyCopyController', ActivationKeyCopyController);
24
29
 
25
- ActivationKeyCopyController.$inject = ['$scope', 'ActivationKey', 'Notification'];
30
+ ActivationKeyCopyController.$inject = ['$scope', 'ActivationKey', 'Notification', 'translate'];
26
31
 
27
32
  })();
@@ -26,6 +26,9 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyHostCollectio
26
26
  'full_result': true
27
27
  };
28
28
 
29
+ // Labels so breadcrumb strings can be translated
30
+ $scope.label = translate('List Host Collections');
31
+
29
32
  hostCollectionsPane = new Nutupane(ActivationKey, params, 'hostCollections');
30
33
  $scope.controllerName = 'katello_host_collections';
31
34
  $scope.table = hostCollectionsPane.table;
@@ -18,6 +18,9 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyRepositorySet
18
18
  function ($scope, translate, Nutupane, ActivationKey, RepositorySet, ContentOverrideHelper, Notification) {
19
19
  var params, saveContentOverride, success, error;
20
20
 
21
+ // Labels so breadcrumb strings can be translated
22
+ $scope.label = translate('Repository Sets');
23
+
21
24
  params = {
22
25
  'activation_key_id': $scope.$stateParams.activationKeyId,
23
26
  'content_access_mode_all': $scope.simpleContentAccessEnabled,
@@ -25,6 +25,9 @@ angular.module('Bastion.activation-keys').controller('ActivationKeySubscriptions
25
25
  'paged': true
26
26
  };
27
27
 
28
+ // Labels so breadcrumb strings can be translated
29
+ $scope.label = translate('List Subscriptions');
30
+
28
31
  $scope.contentNutupane = new Nutupane(ActivationKey, params, "subscriptions");
29
32
  $scope.controllerName = 'katello_subscriptions';
30
33
  $scope.table = $scope.contentNutupane.table;
@@ -9,18 +9,22 @@
9
9
  * @requires Organization
10
10
  * @requires CurrentOrganization
11
11
  * @requires ContentView
12
+ * @requires translate
12
13
  *
13
14
  * @description
14
15
  * Controls the creation of an empty ActivationKey object for use by sub-controllers.
15
16
  */
16
17
  angular.module('Bastion.activation-keys').controller('NewActivationKeyController',
17
- ['$scope', '$q', 'FormUtils', 'ActivationKey', 'Organization', 'CurrentOrganization', 'ContentView',
18
- function ($scope, $q, FormUtils, ActivationKey, Organization, CurrentOrganization, ContentView) {
18
+ ['$scope', '$q', 'FormUtils', 'ActivationKey', 'Organization', 'CurrentOrganization', 'ContentView', 'translate',
19
+ function ($scope, $q, FormUtils, ActivationKey, Organization, CurrentOrganization, ContentView, translate) {
19
20
 
20
21
  function success() {
21
22
  $scope.transitionTo('activation-key.info', {activationKeyId: $scope.activationKey.id});
22
23
  }
23
24
 
25
+ // Labels so breadcrumb strings can be translated
26
+ $scope.label = translate('New Activation Key');
27
+
24
28
  function error(response) {
25
29
  $scope.working = false;
26
30
  angular.forEach(response.data.errors, function (errors, field) {
@@ -111,12 +111,27 @@ angular.module('Bastion.capsule-content').controller('CapsuleContentController',
111
111
  }
112
112
  Notification.setErrorMessage(translate('Last sync failed: ') + errorMessage);
113
113
  }
114
+ } else if (syncStatus['last_failed_reclaim_tasks'].length > 0) {
115
+ activeOrFailedTask = pickLastTask(syncStatus['last_failed_reclaim_tasks']);
116
+ $scope.syncTask = activeOrFailedTask;
117
+ errorCount = $scope.syncTask.humanized.errors.length;
118
+
119
+ if (errorCount > 0) {
120
+ errorMessage = $scope.syncTask.humanized.errors[0];
121
+ if (errorCount > 2) {
122
+ errorMessage += " " + translate("Plus %y more errors").replace("%y", errorCount - 1);
123
+ } else if (errorCount > 1) {
124
+ errorMessage += " " + translate("Plus 1 more error");
125
+ }
126
+ Notification.setErrorMessage(translate('Last reclaim failed: ') + errorMessage);
127
+ }
114
128
  }
115
129
  $scope.syncState.set(stateFromTask(activeOrFailedTask));
116
130
  }, function (response) {
117
131
  $scope.syncStatus = {
118
132
  'active_sync_tasks': [],
119
- 'last_failed_sync_tasks': []
133
+ 'last_failed_sync_tasks': [],
134
+ 'last_failed_reclaim_tasks': []
120
135
  };
121
136
  processError(response, translate('Last sync failed: '));
122
137
  });
@@ -0,0 +1,5 @@
1
+ <div id="lifecycle-expire-soon-banner" bst-alert="warning" ng-if="host.rhelLifecycleExpireSoon()" close>
2
+ <span translate>
3
+ {{ host.rhel_lifecycle_status_label }}
4
+ </span>
5
+ </div>
@@ -7,6 +7,7 @@
7
7
  * @requires Nutupane
8
8
  * @requires ContentCredential
9
9
  * @requires CurrentOrganization
10
+ * @requires translate
10
11
  *
11
12
  * @description
12
13
  * Provides the functionality specific to ContentCredentials for use with the Nutupane UI pattern.
@@ -14,8 +15,8 @@
14
15
  * within the table.
15
16
  */
16
17
  angular.module('Bastion.content-credentials').controller('ContentCredentialsController',
17
- ['$scope', '$location', 'Nutupane', 'ContentCredential', 'CurrentOrganization',
18
- function ($scope, $location, Nutupane, ContentCredential, CurrentOrganization) {
18
+ ['$scope', '$location', 'Nutupane', 'ContentCredential', 'CurrentOrganization', 'translate',
19
+ function ($scope, $location, Nutupane, ContentCredential, CurrentOrganization, translate) {
19
20
  var params = {
20
21
  'organization_id': CurrentOrganization,
21
22
  'search': $location.search().search || "",
@@ -25,6 +26,10 @@ angular.module('Bastion.content-credentials').controller('ContentCredentialsCont
25
26
  };
26
27
 
27
28
  var nutupane = new Nutupane(ContentCredential, params);
29
+
30
+ // Labels so breadcrumb strings can be translated
31
+ $scope.label = translate('Content Credential');
32
+
28
33
  $scope.controllerName = 'katello_content_credentials';
29
34
  $scope.table = nutupane.table;
30
35
  $scope.panel = {loading: false};
@@ -6,16 +6,21 @@
6
6
  * @requires Nutupane
7
7
  * @requires ContentCredential
8
8
  * @requires ApiErrorHandler
9
+ * @requires translate
9
10
  *
10
11
  * @description
11
12
  * Page for Content Credential acs
12
13
  */
13
14
  (function () {
14
- function ContentCredentialACSController($scope, Nutupane, ContentCredential, ApiErrorHandler) {
15
+ function ContentCredentialACSController($scope, Nutupane, ContentCredential, ApiErrorHandler, translate) {
15
16
  var nutupane = new Nutupane(ContentCredential, {
16
17
  id: $scope.$stateParams.contentCredentialId
17
18
  }, 'acs');
18
19
  $scope.controllerName = 'katello_content_credentials';
20
+
21
+ // Labels so breadcrumb strings can be translated
22
+ $scope.label = translate('Alternate Content Sources');
23
+
19
24
  nutupane.primaryOnly = true;
20
25
 
21
26
  $scope.panel = $scope.panel || {error: false, loading: false};
@@ -32,5 +37,5 @@
32
37
  }
33
38
 
34
39
  angular.module('Bastion.content-credentials').controller('ContentCredentialACSController', ContentCredentialACSController);
35
- ContentCredentialACSController.$inject = ['$scope', 'Nutupane', 'ContentCredential', 'ApiErrorHandler'];
40
+ ContentCredentialACSController.$inject = ['$scope', 'Nutupane', 'ContentCredential', 'ApiErrorHandler', 'translate'];
36
41
  })();
@@ -6,16 +6,21 @@
6
6
  * @requires Nutupane
7
7
  * @requires ContentCredential
8
8
  * @requires ApiErrorHandler
9
+ * @requires translate
9
10
  *
10
11
  * @description
11
12
  * Page for Content Credential products
12
13
  */
13
14
  (function () {
14
- function ContentCredentialProductsController($scope, Nutupane, ContentCredential, ApiErrorHandler) {
15
+ function ContentCredentialProductsController($scope, Nutupane, ContentCredential, ApiErrorHandler, translate) {
15
16
  var nutupane = new Nutupane(ContentCredential, {
16
17
  id: $scope.$stateParams.contentCredentialId
17
18
  }, 'products');
18
19
  $scope.controllerName = 'katello_content_credentials';
20
+
21
+ // Labels so breadcrumb strings can be translated
22
+ $scope.label = translate('Products');
23
+
19
24
  nutupane.primaryOnly = true;
20
25
 
21
26
  $scope.panel = $scope.panel || {error: false, loading: false};
@@ -32,5 +37,5 @@
32
37
  }
33
38
 
34
39
  angular.module('Bastion.content-credentials').controller('ContentCredentialProductsController', ContentCredentialProductsController);
35
- ContentCredentialProductsController.$inject = ['$scope', 'Nutupane', 'ContentCredential', 'ApiErrorHandler'];
40
+ ContentCredentialProductsController.$inject = ['$scope', 'Nutupane', 'ContentCredential', 'ApiErrorHandler', 'translate'];
36
41
  })();
@@ -1,5 +1,5 @@
1
1
  (function () {
2
- function ContentCredentialRepositoriesController($scope, Nutupane, ContentCredential, ApiErrorHandler) {
2
+ function ContentCredentialRepositoriesController($scope, Nutupane, ContentCredential, ApiErrorHandler, translate) {
3
3
  /**
4
4
  * @ngdoc object
5
5
  * @name Bastion.content-credentials.controller:ContentCredentialRepositoriesController
@@ -8,6 +8,7 @@
8
8
  * @requires Nutupane
9
9
  * @requires ContentCredential
10
10
  * @requires ApiErrorHandler
11
+ * @requires translate
11
12
  *
12
13
  * @description
13
14
  * Page for Content Credential repositories
@@ -16,6 +17,10 @@
16
17
  id: $scope.$stateParams.contentCredentialId
17
18
  }, 'repositories');
18
19
  $scope.controllerName = 'katello_content_credentials';
20
+
21
+ // Labels so breadcrumb strings can be translated
22
+ $scope.label = translate('Repositories');
23
+
19
24
  nutupane.primaryOnly = true;
20
25
 
21
26
  $scope.panel = $scope.panel || {error: false, loading: false};
@@ -32,5 +37,5 @@
32
37
  }
33
38
 
34
39
  angular.module('Bastion.content-credentials').controller('ContentCredentialRepositoriesController', ContentCredentialRepositoriesController);
35
- ContentCredentialRepositoriesController.$inject = ['$scope', 'Nutupane', 'ContentCredential', 'ApiErrorHandler'];
40
+ ContentCredentialRepositoriesController.$inject = ['$scope', 'Nutupane', 'ContentCredential', 'ApiErrorHandler', 'translate'];
36
41
  })();
@@ -21,6 +21,9 @@ angular.module('Bastion.content-credentials').controller('NewContentCredentialCo
21
21
  $scope.progress = {uploading: false};
22
22
  $scope.uploadURL = 'katello/api/v2/content_credentials?organization_id=' + CurrentOrganization;
23
23
 
24
+ // Labels so breadcrumb strings can be translated
25
+ $scope.label = translate('New Content Credential');
26
+
24
27
  $scope.uploadContent = function (response) {
25
28
  if (response) {
26
29
  if (angular.isUndefined(response.errors)) {
@@ -79,7 +79,7 @@ angular.module('Bastion.content-hosts').controller('ContentHostsBulkErrataModalC
79
79
  };
80
80
 
81
81
  $scope.selectedErrataIds = function () {
82
- return $scope.table.getSelected();
82
+ return $scope.nutupane.getAllSelectedResults('errata_id');
83
83
  };
84
84
 
85
85
  $scope.installErrataViaRemoteExecution = function(customize) {
@@ -88,6 +88,10 @@ angular.module('Bastion.content-hosts').controller('ContentHostsBulkErrataModalC
88
88
  $scope.errataActionFormValues.remoteAction = 'errata_install';
89
89
  $scope.errataActionFormValues.bulkErrataIds = angular.toJson(errataIds);
90
90
  $scope.errataActionFormValues.customize = customize;
91
+
92
+ $timeout(function () {
93
+ angular.element('#errataActionForm').submit();
94
+ }, 0);
91
95
  };
92
96
 
93
97
  $scope.ok = function () {
@@ -3,12 +3,16 @@
3
3
  * @name Bastion.content-hosts.controller:ContentHostDebsActionsController
4
4
  *
5
5
  * @requires $scope
6
+ * @requires translate
6
7
  *
7
8
  * @description
8
9
  * Provides the functionality for the content host deb package actions.
9
10
  */
10
11
  angular.module('Bastion.content-hosts').controller('ContentHostDebsActionsController',
11
- ['$scope', function ($scope) {
12
+ ['$scope', 'translate', function ($scope, translate) {
13
+ // Labels so breadcrumb strings can be translated
14
+ $scope.label = translate('Deb Package Actions');
15
+
12
16
  $scope.packageAction = {actionType: 'packageInstall'}; // default to packageInstall
13
17
  }
14
18
  ]);
@@ -18,6 +18,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostDebsApplicableCon
18
18
  function ($scope, $timeout, $window, Deb, HostDeb, translate, Nutupane) {
19
19
  var debsNutupane, openEventInfo;
20
20
 
21
+ // Labels so breadcrumb strings can be translated
22
+ $scope.label = translate('Applicable Deb Packages');
23
+
21
24
  $scope.getSelectedDebs = function () {
22
25
  var selected = $scope.table.getSelected();
23
26
  selected = _.map(selected, function(pkg) {
@@ -17,6 +17,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostDebsInstalledCont
17
17
  function ($scope, $timeout, $window, HostDeb, translate, Nutupane) {
18
18
  var debsNutupane;
19
19
 
20
+ // Labels so breadcrumb strings can be translated
21
+ $scope.label = translate('Installed Deb Packages');
22
+
20
23
  $scope.removeSelectedDebs = function () {
21
24
  var selected;
22
25
 
@@ -8,6 +8,7 @@
8
8
  * @requires HostErratum
9
9
  * @requires Nutupane
10
10
  * @requires BastionConfig
11
+ * @requires translate
11
12
  *
12
13
  * @description
13
14
  * Provides the functionality for the content host package list and actions.
@@ -23,6 +24,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostErrataController'
23
24
  'id': $scope.$stateParams.hostId
24
25
  };
25
26
 
27
+ // Labels so breadcrumb strings can be translated
28
+ $scope.label = translate('Errata');
29
+
26
30
  function loadErratum(errataId) {
27
31
  $scope.erratum = HostErratum.get({'id': $scope.host.id,
28
32
  'errata_id': errataId});
@@ -18,6 +18,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostModuleStreamsCont
18
18
  function ($scope, $timeout, $window, HostModuleStream, Nutupane, BastionConfig, ModuleStreamActions, translate) {
19
19
  $scope.moduleStreamActions = ModuleStreamActions.getActions();
20
20
 
21
+ // Labels so breadcrumb strings can be translated
22
+ $scope.label = translate('Module Streams');
23
+
21
24
  $scope.working = false;
22
25
 
23
26
  $scope.nutupaneParams = { id: $scope.$stateParams.hostId };
@@ -19,6 +19,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostPackagesApplicabl
19
19
  function ($scope, $timeout, $window, Package, HostPackage, translate, Nutupane, BastionConfig) {
20
20
  var packagesNutupane, openEventInfo;
21
21
 
22
+ // Labels so breadcrumb strings can be translated
23
+ $scope.label = translate('Applicable Packages');
24
+
22
25
  $scope.remoteExecutionPresent = BastionConfig.remoteExecutionPresent;
23
26
  $scope.hostToolingEnabled = BastionConfig.hostToolingEnabled;
24
27
 
@@ -21,6 +21,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostPackagesInstalled
21
21
  $scope.remoteExecutionPresent = BastionConfig.remoteExecutionPresent;
22
22
  $scope.hostToolingEnabled = BastionConfig.hostToolingEnabled;
23
23
 
24
+ // Labels so breadcrumb strings can be translated
25
+ $scope.label = translate('Installed Packages');
26
+
24
27
  $scope.removeSelectedPackages = function () {
25
28
  var selected = _.map($scope.table.getSelected(), 'name');
26
29
 
@@ -27,6 +27,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostPackagesControlle
27
27
  $scope.working = false;
28
28
  };
29
29
 
30
+ // Labels so breadcrumb strings can be translated
31
+ $scope.label = translate('Package Actions');
32
+
30
33
  $scope.errorHandler = function (response) {
31
34
  angular.forEach(response.data.errors, function (responseError) {
32
35
  Notification.setErrorMessage(responseError);
@@ -5,6 +5,7 @@
5
5
  * @requires $scope
6
6
  * @resource $timeout
7
7
  * @resource $window
8
+ * @requires translate
8
9
  * @requires HostTraces
9
10
  * @requires Nutupane
10
11
  * @requires BastionConfig
@@ -21,6 +22,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostTracesController'
21
22
  'paged': true
22
23
  };
23
24
 
25
+ // Labels so breadcrumb strings can be translated
26
+ $scope.label = translate('Traces');
27
+
24
28
  tracesNutupane = new Nutupane(HostTraces, params, 'get', {'disableAutoLoad': true});
25
29
  tracesNutupane.primaryOnly = true;
26
30
  $scope.controllerName = 'katello_host_tracers';
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <section ng-hide="denied('edit_hosts', host)" bst-feature-flag="remote_actions">
4
4
  <h4 translate>Package Actions</h4>
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Deb Packages for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Deb Packages for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <h3 translate>Applicable Deb Packages</h3>
4
4
 
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <section ng-hide="denied('edit_hosts', host)" bst-feature-flag="remote_actions">
4
4
  <p bst-alert="info" ng-hide="remoteExecutionPresent">
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Errata for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Errata for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <div bst-feature-flag="remote_actions">
4
4
  <h3 translate ng-hide="selectedErrataOption === 'current'">Applicable Errata</h3>
@@ -53,8 +53,8 @@
53
53
 
54
54
  <span data-block="list-actions" ng-hide="contentHost.readonly">
55
55
  <div bst-modal="applySelected()" model="host">
56
- <div data-block="modal-header" translate>Apply Errata to Content Host "{{host.name}}"?</div>
57
- <div data-block="modal-body" translate>Are you sure you want to apply Errata to content host "{{ host.name }}"?</div>
56
+ <div data-block="modal-header" translate>Apply Errata to Content Host "{{host.display_name}}"?</div>
57
+ <div data-block="modal-body" translate>Are you sure you want to apply Errata to content host "{{ host.display_name }}"?</div>
58
58
  <span data-block="modal-confirm-button">
59
59
  <button class="btn btn-primary" ng-click="ok()">
60
60
  <span translate>Apply</span>
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Module Streams for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Module Streams for: ' | translate }} {{ host.display_name }}</span>
2
2
  <div bst-feature-flag="remote_actions">
3
3
  <h3 translate ng-hide="selectedModuleStreamOption === 'available'">Available Module Streams</h3>
4
4
  </div>
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <section ng-hide="denied('edit_hosts', host)" bst-feature-flag="remote_actions">
4
4
  <h4 translate>Package Actions</h4>
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <h3 translate>Applicable Packages</h3>
4
4
 
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Packages for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <h3 translate>Installed Packages</h3>
4
4
 
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Traces for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Traces for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <div ng-hide="host.hasContent()">
4
4
  <div data-extend-template="common/views/registration.html"></div>
@@ -39,9 +39,9 @@
39
39
  <div data-extend-template="layouts/partials/table.html">
40
40
  <span data-block="list-actions" ng-hide="contentHost.readonly">
41
41
  <div bst-modal="performViaRemoteExecution(false)" model="host">
42
- <div data-block="modal-header" translate>Restart Services on Content Host "{{host.name}}"?</div>
42
+ <div data-block="modal-header" translate>Restart Services on Content Host "{{host.display_name}}"?</div>
43
43
  <div data-block="modal-body">
44
- <span translate>Are you sure you want to restart services on content host "{{ host.name }}"?</span>
44
+ <span translate>Are you sure you want to restart services on content host "{{ host.display_name }}"?</span>
45
45
  <span ng-show="host.rebootRequired()">
46
46
  <strong translate>Resolving the selected Traces will reboot this host.</strong>
47
47
  </span>
@@ -39,6 +39,11 @@ angular.module('Bastion.content-hosts').controller('ContentHostsController',
39
39
  'sort_order': 'ASC'
40
40
  };
41
41
 
42
+ // Labels so breadcrumb strings can be translated
43
+ $scope.label = translate('Content Hosts');
44
+ $scope.provisioningLabel = translate('Provisioning');
45
+ $scope.tasksLabel = translate('Tasks');
46
+
42
47
  $scope.csvQuery = function () {
43
48
  return $httpParamSerializer(params);
44
49
  };
@@ -51,7 +51,7 @@ angular.module('Bastion.content-hosts').config(['$stateProvider', function ($sta
51
51
  controller: 'ContentHostDetailsInfoController',
52
52
  templateUrl: 'content-hosts/details/views/content-host-info.html',
53
53
  ncyBreadcrumb: {
54
- label: "{{ host.name }}",
54
+ label: "{{ host.display_name }}",
55
55
  parent: 'content-hosts'
56
56
  }
57
57
  })
@@ -30,6 +30,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostAddHostCollection
30
30
  'host_id': $scope.$stateParams.hostId
31
31
  };
32
32
 
33
+ // Labels so breadcrumb strings can be translated
34
+ $scope.label = translate('Add Host Collections');
35
+
33
36
  nutupane = new Nutupane(HostCollection, params);
34
37
  $scope.controllerName = 'katello_host_collections';
35
38
  nutupane.primaryOnly = true;
@@ -46,7 +49,7 @@ angular.module('Bastion.content-hosts').controller('ContentHostAddHostCollection
46
49
 
47
50
  success = function (response) {
48
51
  Notification.setSuccessMessage(translate('Added %x host collections to content host "%y".')
49
- .replace('%x', $scope.table.numSelected).replace('%y', host.name));
52
+ .replace('%x', $scope.table.numSelected).replace('%y', host.display_name));
50
53
  $scope.table.working = false;
51
54
  $scope.table.selectAll(false);
52
55
  nutupane.refresh();
@@ -26,6 +26,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostAddSubscriptionsC
26
26
  'host_id': $scope.$stateParams.hostId
27
27
  };
28
28
 
29
+ // Labels so breadcrumb strings can be translated
30
+ $scope.label = translate('Add Subscriptions');
31
+
29
32
  $scope.nutupane = new Nutupane(Subscription, params);
30
33
  $scope.controllerName = 'katello_subscriptions';
31
34
  $scope.nutupane.setSearchKey('subscriptionSearch');
@@ -29,6 +29,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostHostCollectionsCo
29
29
  'host_id': $scope.$stateParams.hostId
30
30
  };
31
31
 
32
+ // Labels so breadcrumb strings can be translated
33
+ $scope.label = translate('Host Collections');
34
+
32
35
  nutupane = new Nutupane(HostCollection, params);
33
36
  $scope.controllerName = 'katello_host_collections';
34
37
  nutupane.primaryOnly = true;
@@ -45,7 +48,7 @@ angular.module('Bastion.content-hosts').controller('ContentHostHostCollectionsCo
45
48
 
46
49
  success = function (response) {
47
50
  var message = translate('Removed %x host collections from content host "%y".')
48
- .replace('%x', $scope.table.numSelected).replace('%y', host.name);
51
+ .replace('%x', $scope.table.numSelected).replace('%y', host.display_name);
49
52
 
50
53
  Notification.setSuccessMessage(message);
51
54
  $scope.table.working = false;
@@ -25,6 +25,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostRepositorySetsCon
25
25
  'paged': true
26
26
  };
27
27
 
28
+ // Labels so breadcrumb strings can be translated
29
+ $scope.label = translate('Products');
30
+
28
31
  $scope.nutupane = new Nutupane(RepositorySet, params);
29
32
  $scope.table = $scope.nutupane.table;
30
33
  $scope.nutupane.primaryOnly = true;
@@ -23,6 +23,9 @@ angular.module('Bastion.content-hosts').controller('ContentHostSubscriptionsCont
23
23
  'sort_order': 'ASC'
24
24
  };
25
25
 
26
+ // Labels so breadcrumb strings can be translated
27
+ $scope.label = translate('Subscriptions');
28
+
26
29
  $scope.nutupane = new Nutupane(HostSubscription, params);
27
30
  $scope.controllerName = 'katello_subscriptions';
28
31
  $scope.nutupane.table.initialLoad = false;
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Add Subscriptions for Content Host:' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Add Subscriptions for Content Host:' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <div data-extend-template="layouts/partials/table.html">
4
4
  <div data-block="list-actions">
@@ -1,8 +1,8 @@
1
- <span page-title ng-model="host">{{ 'Content Host:' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Content Host:' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <div data-extend-template="layouts/details-page-with-breadcrumbs.html">
4
4
  <header data-block="header" translate>
5
- {{ host.name }}
5
+ {{ host.display_name }}
6
6
  </header>
7
7
 
8
8
  <nav data-block="item-actions">
@@ -15,7 +15,7 @@
15
15
 
16
16
  <div bst-modal="unregisterContentHost(host)" model="host">
17
17
  <div data-block="modal-header" translate>
18
- Unregister Host "{{host.name}}"?
18
+ Unregister Host "{{host.display_name}}"?
19
19
  </div>
20
20
  <div data-block="modal-body">
21
21
  <p translate>
@@ -54,6 +54,7 @@
54
54
 
55
55
  <nav data-block="navigation">
56
56
  <div content-access-mode-banner></div>
57
+ <div data-extend-template="common/views/rhel-lifecycle-notice.html"></div>
57
58
  <ul class="nav nav-tabs">
58
59
  <li ng-class="{active: isState('content-host.info')}">
59
60
  <a translate