katello 4.10.0 → 4.11.0.rc2

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 (498) 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/sync.rb +11 -0
  76. data/app/lib/actions/pulp3/capsule_content/reclaim_space.rb +5 -0
  77. data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +6 -1
  78. data/app/lib/actions/pulp3/content_view_version/export.rb +8 -0
  79. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +1 -1
  80. data/app/lib/katello/concerns/base_template_scope_extensions.rb +14 -1
  81. data/app/lib/katello/errors.rb +1 -0
  82. data/app/lib/katello/repo_discovery.rb +2 -2
  83. data/app/lib/katello/validators/content_view_environment_coherent_default_validator.rb +22 -0
  84. data/app/lib/katello/validators/content_view_environment_validator.rb +1 -0
  85. data/app/mailers/katello/task_mailer.rb +54 -0
  86. data/app/models/katello/concerns/host_managed_extensions.rb +41 -1
  87. data/app/models/katello/concerns/organization_extensions.rb +1 -1
  88. data/app/models/katello/concerns/smart_proxy_extensions.rb +75 -3
  89. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +6 -0
  90. data/app/models/katello/content_view.rb +21 -0
  91. data/app/models/katello/content_view_environment.rb +6 -1
  92. data/app/models/katello/docker_meta_tag.rb +1 -1
  93. data/app/models/katello/docker_tag.rb +1 -1
  94. data/app/models/katello/erratum.rb +1 -1
  95. data/app/models/katello/host/content_facet.rb +10 -7
  96. data/app/models/katello/product.rb +8 -0
  97. data/app/models/katello/repository.rb +31 -6
  98. data/app/models/katello/rhel_lifecycle_status.rb +214 -0
  99. data/app/models/katello/sync_plan.rb +19 -1
  100. data/app/models/katello/yum_metadata_file.rb +1 -1
  101. data/app/services/katello/applicability/applicable_content_helper.rb +1 -1
  102. data/app/services/katello/event_queue.rb +10 -2
  103. data/app/services/katello/host_status_manager.rb +1 -0
  104. data/app/services/katello/product_content_importer.rb +45 -3
  105. data/app/services/katello/pulp3/ansible_collection.rb +1 -0
  106. data/app/services/katello/pulp3/api/core.rb +1 -1
  107. data/app/services/katello/pulp3/deb.rb +1 -0
  108. data/app/services/katello/pulp3/docker_manifest.rb +1 -0
  109. data/app/services/katello/pulp3/docker_manifest_list.rb +9 -4
  110. data/app/services/katello/pulp3/docker_tag.rb +1 -0
  111. data/app/services/katello/pulp3/erratum.rb +1 -0
  112. data/app/services/katello/pulp3/file_unit.rb +1 -0
  113. data/app/services/katello/pulp3/module_stream.rb +1 -0
  114. data/app/services/katello/pulp3/package_group.rb +1 -0
  115. data/app/services/katello/pulp3/pulp_content_unit.rb +39 -0
  116. data/app/services/katello/pulp3/repository_mirror.rb +21 -2
  117. data/app/services/katello/pulp3/rpm.rb +1 -0
  118. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
  119. data/app/services/katello/pulp3/srpm.rb +3 -2
  120. data/app/services/katello/registration_manager.rb +6 -3
  121. data/app/services/katello/repository_type.rb +2 -1
  122. data/app/services/katello/ui_notifications/hosts/lifecycle_expire_soon.rb +58 -0
  123. data/app/views/foreman/job_templates/resolve_traces.erb +1 -1
  124. data/app/views/foreman/smart_proxies/_content_tab.html.erb +1 -3
  125. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +39 -1
  126. data/app/views/katello/api/v2/content_export_incrementals/repository.json.rabl +13 -0
  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/LC_MESSAGES/katello.mo +0 -0
  249. data/locale/bn/katello.po +236 -197
  250. data/locale/bn/katello.po.time_stamp +0 -0
  251. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  252. data/locale/bn_IN/katello.po +236 -197
  253. data/locale/bn_IN/katello.po.time_stamp +0 -0
  254. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  255. data/locale/ca/katello.po +236 -197
  256. data/locale/ca/katello.po.time_stamp +0 -0
  257. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  258. data/locale/cs/katello.po +236 -206
  259. data/locale/cs/katello.po.time_stamp +0 -0
  260. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  261. data/locale/cs_CZ/katello.po +236 -197
  262. data/locale/cs_CZ/katello.po.time_stamp +0 -0
  263. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  264. data/locale/de/katello.po +241 -202
  265. data/locale/de/katello.po.time_stamp +0 -0
  266. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  267. data/locale/de_AT/katello.po +236 -197
  268. data/locale/de_AT/katello.po.time_stamp +0 -0
  269. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  270. data/locale/de_DE/katello.po +236 -197
  271. data/locale/de_DE/katello.po.time_stamp +0 -0
  272. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  273. data/locale/el/katello.po +236 -197
  274. data/locale/el/katello.po.time_stamp +0 -0
  275. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  276. data/locale/en/katello.po +236 -197
  277. data/locale/en/katello.po.time_stamp +0 -0
  278. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  279. data/locale/en_GB/katello.po +236 -197
  280. data/locale/en_GB/katello.po.time_stamp +0 -0
  281. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  282. data/locale/en_US/katello.po +236 -197
  283. data/locale/en_US/katello.po.time_stamp +0 -0
  284. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  285. data/locale/es/katello.po +238 -199
  286. data/locale/es/katello.po.time_stamp +0 -0
  287. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  288. data/locale/et_EE/katello.po +236 -197
  289. data/locale/et_EE/katello.po.time_stamp +0 -0
  290. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  291. data/locale/fr/katello.po +247 -208
  292. data/locale/fr/katello.po.time_stamp +0 -0
  293. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  294. data/locale/gl/katello.po +236 -197
  295. data/locale/gl/katello.po.time_stamp +0 -0
  296. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  297. data/locale/gu/katello.po +236 -197
  298. data/locale/gu/katello.po.time_stamp +0 -0
  299. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  300. data/locale/he_IL/katello.po +236 -197
  301. data/locale/he_IL/katello.po.time_stamp +0 -0
  302. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  303. data/locale/hi/katello.po +236 -197
  304. data/locale/hi/katello.po.time_stamp +0 -0
  305. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  306. data/locale/id/katello.po +236 -197
  307. data/locale/id/katello.po.time_stamp +0 -0
  308. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  309. data/locale/it/katello.po +236 -197
  310. data/locale/it/katello.po.time_stamp +0 -0
  311. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  312. data/locale/ja/katello.po +247 -208
  313. data/locale/ja/katello.po.time_stamp +0 -0
  314. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  315. data/locale/ka/katello.po +241 -202
  316. data/locale/ka/katello.po.time_stamp +0 -0
  317. data/locale/katello.pot +1427 -1296
  318. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  319. data/locale/kn/katello.po +236 -197
  320. data/locale/kn/katello.po.time_stamp +0 -0
  321. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  322. data/locale/ko/katello.po +236 -197
  323. data/locale/ko/katello.po.time_stamp +0 -0
  324. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  325. data/locale/ml_IN/katello.po +236 -197
  326. data/locale/ml_IN/katello.po.time_stamp +0 -0
  327. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  328. data/locale/mr/katello.po +236 -197
  329. data/locale/mr/katello.po.time_stamp +0 -0
  330. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  331. data/locale/nl_NL/katello.po +236 -197
  332. data/locale/nl_NL/katello.po.time_stamp +0 -0
  333. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  334. data/locale/or/katello.po +236 -197
  335. data/locale/or/katello.po.time_stamp +0 -0
  336. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  337. data/locale/pa/katello.po +236 -197
  338. data/locale/pa/katello.po.time_stamp +0 -0
  339. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  340. data/locale/pl/katello.po +236 -197
  341. data/locale/pl/katello.po.time_stamp +0 -0
  342. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  343. data/locale/pl_PL/katello.po +236 -197
  344. data/locale/pl_PL/katello.po.time_stamp +0 -0
  345. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  346. data/locale/pt/katello.po +236 -197
  347. data/locale/pt/katello.po.time_stamp +0 -0
  348. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  349. data/locale/pt_BR/katello.po +238 -199
  350. data/locale/pt_BR/katello.po.time_stamp +0 -0
  351. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  352. data/locale/ro/katello.po +236 -197
  353. data/locale/ro/katello.po.time_stamp +0 -0
  354. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  355. data/locale/ro_RO/katello.po +236 -197
  356. data/locale/ro_RO/katello.po.time_stamp +0 -0
  357. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  358. data/locale/ru/katello.po +236 -197
  359. data/locale/ru/katello.po.time_stamp +0 -0
  360. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  361. data/locale/sl/katello.po +236 -197
  362. data/locale/sl/katello.po.time_stamp +0 -0
  363. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  364. data/locale/sv_SE/katello.po +236 -197
  365. data/locale/sv_SE/katello.po.time_stamp +0 -0
  366. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  367. data/locale/ta/katello.po +236 -197
  368. data/locale/ta/katello.po.time_stamp +0 -0
  369. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  370. data/locale/ta_IN/katello.po +236 -197
  371. data/locale/ta_IN/katello.po.time_stamp +0 -0
  372. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  373. data/locale/te/katello.po +236 -197
  374. data/locale/te/katello.po.time_stamp +0 -0
  375. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  376. data/locale/tr/katello.po +236 -197
  377. data/locale/tr/katello.po.time_stamp +0 -0
  378. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  379. data/locale/vi/katello.po +236 -197
  380. data/locale/vi/katello.po.time_stamp +0 -0
  381. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  382. data/locale/vi_VN/katello.po +236 -197
  383. data/locale/vi_VN/katello.po.time_stamp +0 -0
  384. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  385. data/locale/zh/katello.po +236 -197
  386. data/locale/zh/katello.po.time_stamp +0 -0
  387. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  388. data/locale/zh_CN/katello.po +247 -208
  389. data/locale/zh_CN/katello.po.time_stamp +0 -0
  390. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  391. data/locale/zh_TW/katello.po +236 -197
  392. data/locale/zh_TW/katello.po.time_stamp +0 -0
  393. data/webpack/components/Table/EmptyStateMessage.js +7 -4
  394. data/webpack/components/Table/MainTable.scss +18 -17
  395. data/webpack/components/Table/TableWrapper.js +4 -1
  396. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +45 -4
  397. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +9 -7
  398. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +1 -1
  399. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +1 -1
  400. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeActions.js +29 -7
  401. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +106 -66
  402. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +6 -0
  403. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeConstants.js +2 -0
  404. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +53 -29
  405. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeSelectors.js +7 -6
  406. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +24 -5
  407. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +137 -7
  408. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +11 -10
  409. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +8 -2
  410. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +27 -10
  411. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataActions.js +3 -22
  412. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataConstants.js +0 -1
  413. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +3 -2
  414. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +2 -2
  415. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +48 -12
  416. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +22 -10
  417. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionHooks.js +1 -1
  418. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +2 -2
  419. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +71 -5
  420. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.scss +16 -0
  421. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +4 -1
  422. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +6 -2
  423. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +2 -1
  424. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +25 -0
  425. data/webpack/components/extensions/Hosts/ActionsBar/index.js +36 -0
  426. data/webpack/components/extensions/Hosts/constants.js +2 -0
  427. data/webpack/components/extensions/RegistrationCommands/RegistrationCommandsPageHelpers.js +13 -7
  428. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +9 -1
  429. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +87 -22
  430. data/webpack/components/extensions/RegistrationCommands/index.js +17 -41
  431. data/webpack/global_index.js +11 -2
  432. data/webpack/redux/reducers/RedHatRepositories/enabled.fixtures.js +4 -0
  433. data/webpack/redux/reducers/RedHatRepositories/enabled.js +1 -0
  434. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.js +10 -1
  435. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.scss +33 -31
  436. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +3 -1
  437. data/webpack/scenes/Content/ContentConfig.js +3 -0
  438. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +6 -4
  439. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.scss +8 -6
  440. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +1 -0
  441. data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +4 -2
  442. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -4
  443. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +2 -2
  444. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +5 -5
  445. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/compositeCVDetails.fixtures.json +393 -0
  446. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +30 -4
  447. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +3 -1
  448. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +3 -3
  449. data/webpack/scenes/ContentViews/Details/Repositories/RepoIcon.js +2 -1
  450. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +1 -1
  451. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +1 -1
  452. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +1 -1
  453. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +1 -1
  454. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +24 -1
  455. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +1 -0
  456. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +42 -0
  457. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +13 -11
  458. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +2 -1
  459. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
  460. data/webpack/scenes/Hosts/ChangeContentSource/index.js +4 -3
  461. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +1 -2
  462. data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetails.test.js.snap +1 -1
  463. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +2 -1
  464. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +6 -0
  465. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +4 -1
  466. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +13 -4
  467. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/EnabledRepositoryContent.test.js +1 -0
  468. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepository.test.js.snap +1 -0
  469. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepositoryContent.test.js.snap +3 -2
  470. data/webpack/scenes/SmartProxy/AdditionalCapsuleContent.js +93 -0
  471. data/webpack/scenes/SmartProxy/Content.js +12 -4
  472. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +107 -0
  473. data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +139 -0
  474. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +17 -4
  475. data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +1 -0
  476. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +150 -0
  477. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.fixtures.json +799 -0
  478. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +29 -17
  479. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +16 -19
  480. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.scss +12 -8
  481. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +21 -18
  482. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationForm.scss +4 -2
  483. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.scss +38 -19
  484. data/webpack/scenes/Subscriptions/Manifest/index.js +0 -2
  485. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +38 -12
  486. data/webpack/scenes/Subscriptions/SubscriptionsPage.scss +38 -36
  487. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +16 -13
  488. data/webpack/utils/helpers.js +0 -1
  489. metadata +148 -33
  490. data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +0 -47
  491. data/webpack/components/Table/TableHooks.js +0 -315
  492. data/webpack/components/Table/__test__/useBulkSelect.test.js +0 -99
  493. data/webpack/components/extensions/RegistrationCommands/__tests__/LifeCycleEnvironment.test.js +0 -11
  494. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/LifeCycleEnvironment.test.js.snap +0 -29
  495. data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +0 -57
  496. data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +0 -164
  497. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentResult.fixtures.json +0 -140
  498. data/webpack/scenes/Subscriptions/Manifest/Manifest.scss +0 -16
@@ -1,4 +1,4 @@
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 ng-hide="host.hasSubscription()">
4
4
  <div data-extend-template="common/views/registration.html"></div>
@@ -65,7 +65,7 @@
65
65
 
66
66
  <dt ng-show="host.subscription_facet_attributes.virtual_host" translate>Virtual Host</dt>
67
67
  <dd ng-show="host.subscription_facet_attributes.virtual_host">
68
- <a ui-sref="content-host.info({hostId: host.subscription_facet_attributes.virtual_host.id })">{{ host.subscription_facet_attributes.virtual_host.name }}</a>
68
+ <a ui-sref="content-host.info({hostId: host.subscription_facet_attributes.virtual_host.id })">{{ host.subscription_facet_attributes.virtual_host.display_name }}</a>
69
69
  </dd>
70
70
  </dl>
71
71
 
@@ -345,7 +345,7 @@
345
345
 
346
346
  <dl class="dl-horizontal dl-horizontal-left">
347
347
  <dt translate>Hostname</dt>
348
- <dd>{{ host.name }}</dd>
348
+ <dd>{{ host.display_name }}</dd>
349
349
 
350
350
  <dt translate>IPv4 Address</dt>
351
351
  <dd>{{ host.facts["network::ipv4_address"] }}</dd>
@@ -1,4 +1,4 @@
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/two-column-details.html">
4
4
  <div data-block="left-column">
@@ -8,7 +8,7 @@
8
8
  <dt translate>Name</dt>
9
9
  <dd>
10
10
  <a href="/hosts/{{ host.name }}">
11
- {{ host.name }}
11
+ {{ host.display_name }}
12
12
  </a>
13
13
  </dd>
14
14
 
@@ -1,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Subscriptions for Content Host:' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ '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,4 +1,4 @@
1
- <span page-title ng-model="host">{{ 'Subscriptions for: ' | translate }} {{ host.name }}</span>
1
+ <span page-title ng-model="host">{{ 'Subscriptions for: ' | translate }} {{ host.display_name }}</span>
2
2
 
3
3
  <div ng-hide="host.hasSubscription()">
4
4
  <div data-extend-template="common/views/registration.html"></div>
@@ -100,9 +100,9 @@
100
100
  ng-controller="ContentHostStatusController">
101
101
  <td bst-table-cell>
102
102
  <span ng-switch="newHostDetailsUI">
103
- <a ng-switch-when="true" ng-if="host.subscription_facet_attributes.uuid" ng-href="/new/hosts/{{host.name}}/content">{{ host.name }}</a>
104
- <a ng-switch-when="true" ng-if="!host.subscription_facet_attributes.uuid" ng-href="/new/hosts/{{host.name}}">{{ host.name}}</a>
105
- <a ng-switch-when="false" ui-sref="content-host.info({hostId: host.id})">{{ host.name }}</a>
103
+ <a ng-switch-when="true" ng-if="host.subscription_facet_attributes.uuid" ng-href="/new/hosts/{{host.name}}/content">{{ host.display_name }}</a>
104
+ <a ng-switch-when="true" ng-if="!host.subscription_facet_attributes.uuid" ng-href="/new/hosts/{{host.name}}">{{ host.display_name }}</a>
105
+ <a ng-switch-when="false" ui-sref="content-host.info({hostId: host.id})">{{ host.display_name }}</a>
106
106
  </span>
107
107
  </td>
108
108
  <td bst-table-cell ng-hide="simpleContentAccessEnabled">
@@ -8,6 +8,9 @@
8
8
  * @description
9
9
  * Handles fetching deb packages and populating Nutupane based on the current
10
10
  * ui-router state.
11
+ *
12
+ * @requires translate
13
+ *
11
14
  */
12
15
  function DebsController($scope, $location, translate, Nutupane, Deb, CurrentOrganization) {
13
16
  var nutupane;
@@ -24,6 +27,10 @@
24
27
  nutupane.primaryOnly = true;
25
28
 
26
29
  $scope.table = nutupane.table;
30
+
31
+ // Labels so breadcrumb strings can be translated
32
+ $scope.label = translate('Debs');
33
+
27
34
  $scope.controllerName = 'katello_debs';
28
35
 
29
36
  Deb.queryPaged({'organization_id': CurrentOrganization}, function (result) {
@@ -6,8 +6,11 @@
6
6
  *
7
7
  * @description
8
8
  * Provides the functionality for the debs details contentViews page.
9
+ *
10
+ * @requires translate
11
+ *
9
12
  */
10
- function DebContentViewsController($scope, Nutupane, ContentViewVersion, CurrentOrganization) {
13
+ function DebContentViewsController($scope, Nutupane, ContentViewVersion, CurrentOrganization, translate) {
11
14
  var contentViewsNutupane,
12
15
  params = {
13
16
  'deb_id': $scope.$stateParams.debId,
@@ -16,6 +19,10 @@
16
19
 
17
20
  contentViewsNutupane = new Nutupane(ContentViewVersion, params);
18
21
  $scope.controllerName = 'katello_content_views';
22
+
23
+ // Labels so breadcrumb strings can be translated
24
+ $scope.label = translate('Content Views');
25
+
19
26
  contentViewsNutupane.primaryOnly = true;
20
27
  contentViewsNutupane.setSearchKey('contentViewsSearch');
21
28
 
@@ -6,8 +6,11 @@
6
6
  *
7
7
  * @description
8
8
  * Provides the functionality for the debs details repositories page.
9
+ *
10
+ * @requires translate
11
+ *
9
12
  */
10
- function DebRepositoriesController($scope, Nutupane, Repository, CurrentOrganization) {
13
+ function DebRepositoriesController($scope, Nutupane, Repository, CurrentOrganization, translate) {
11
14
  var repositoriesNutupane,
12
15
  params = {
13
16
  'deb_id': $scope.$stateParams.debId,
@@ -16,6 +19,10 @@
16
19
 
17
20
  repositoriesNutupane = new Nutupane(Repository, params);
18
21
  $scope.controllerName = 'katello_repositories';
22
+
23
+ // Labels so breadcrumb strings can be translated
24
+ $scope.label = translate('Repositories');
25
+
19
26
  repositoriesNutupane.primaryOnly = true;
20
27
  repositoriesNutupane.setSearchKey('repositoriesSearch');
21
28
 
@@ -30,7 +37,8 @@
30
37
  '$scope',
31
38
  'Nutupane',
32
39
  'Repository',
33
- 'CurrentOrganization'
40
+ 'CurrentOrganization',
41
+ 'translate'
34
42
  ];
35
43
 
36
44
  })();
@@ -6,13 +6,14 @@
6
6
  * @requires $location
7
7
  * @requires DockerTag
8
8
  * @requires CurrentOrganization
9
+ * @requires translate
9
10
  *
10
11
  * @description
11
12
  * Provides the functionality for the docker tags details environments list.
12
13
  */
13
14
  angular.module('Bastion.docker-tags').controller('DockerTagEnvironmentsController',
14
- ['$scope', '$location', 'Nutupane', 'DockerTag', 'CurrentOrganization',
15
- function ($scope, $location, Nutupane, DockerTag, CurrentOrganization) {
15
+ ['$scope', '$location', 'Nutupane', 'DockerTag', 'CurrentOrganization', 'translate',
16
+ function ($scope, $location, Nutupane, DockerTag, CurrentOrganization, translate) {
16
17
  var params = {
17
18
  'organization_id': CurrentOrganization,
18
19
  'search': $location.search().search || "",
@@ -31,6 +32,8 @@ angular.module('Bastion.docker-tags').controller('DockerTagEnvironmentsControlle
31
32
  nutupane.refresh();
32
33
  };
33
34
 
35
+ // Labels so breadcrumb strings can be translated
36
+ $scope.label = translate('Lifecycle Environments');
34
37
  $scope.table = nutupane.table;
35
38
 
36
39
  $scope.controllerName = 'katello_docker_tags';
@@ -6,13 +6,14 @@
6
6
  * @requires $location
7
7
  * @requires DockerTag
8
8
  * @requires CurrentOrganization
9
+ * @requires translate
9
10
  *
10
11
  * @description
11
12
  * Provides the functionality for the docker tags details repositories list.
12
13
  */
13
14
  angular.module('Bastion.docker-tags').controller('DockerTagRepositoriesController',
14
- ['$scope', '$location', 'Nutupane', 'DockerTag', 'CurrentOrganization',
15
- function ($scope, $location, Nutupane, DockerTag, CurrentOrganization) {
15
+ ['$scope', '$location', 'Nutupane', 'DockerTag', 'CurrentOrganization', 'translate',
16
+ function ($scope, $location, Nutupane, DockerTag, CurrentOrganization, translate) {
16
17
  var params = {
17
18
  'organization_id': CurrentOrganization,
18
19
  'search': $location.search().search || "",
@@ -31,6 +32,9 @@ angular.module('Bastion.docker-tags').controller('DockerTagRepositoriesControlle
31
32
  nutupane.refresh();
32
33
  };
33
34
 
35
+ // Labels so breadcrumb strings can be translated
36
+ $scope.label = translate('Repositories');
37
+
34
38
  $scope.table = nutupane.table;
35
39
 
36
40
  $scope.controllerName = 'katello_docker_tags';
@@ -7,6 +7,7 @@
7
7
  * @requires Nutupane
8
8
  * @requires DockerTag
9
9
  * @requires CurrentOrganization
10
+ * @requires translate
10
11
  *
11
12
  * @description
12
13
  * Provides the functionality specific to docker tags for use with the Nutupane UI pattern.
@@ -14,8 +15,8 @@
14
15
  * within the table.
15
16
  */
16
17
  angular.module('Bastion.docker-tags').controller('DockerTagsController',
17
- ['$scope', '$location', 'Nutupane', 'DockerTag', 'CurrentOrganization',
18
- function ($scope, $location, Nutupane, DockerTag, CurrentOrganization) {
18
+ ['$scope', '$location', 'Nutupane', 'DockerTag', 'CurrentOrganization', 'translate',
19
+ function ($scope, $location, Nutupane, DockerTag, CurrentOrganization, translate) {
19
20
 
20
21
  var params = {
21
22
  'organization_id': CurrentOrganization,
@@ -27,7 +28,9 @@ angular.module('Bastion.docker-tags').controller('DockerTagsController',
27
28
  var nutupane = new Nutupane(DockerTag, params);
28
29
  $scope.controllerName = 'katello_docker_tags';
29
30
  $scope.table = nutupane.table;
30
- $scope.controllerName = 'katello_docker_tags';
31
+
32
+ // Labels so breadcrumb strings can be translated
33
+ $scope.label = translate('Container Image Tags');
31
34
 
32
35
  $scope.table.closeItem = function () {
33
36
  $scope.transitionTo('docker-tags');
@@ -7,12 +7,25 @@
7
7
  *
8
8
  * @description
9
9
  * Controls displaying content tables for a given environment along with appropriate filtering.
10
+ *
11
+ * @requires translate
12
+ *
10
13
  */
11
14
  function EnvironmentContentController($scope, ContentService, ContentView, Repository, translate, $location) {
12
15
  var nutupane, allRepositories, nutupaneParams;
13
16
 
14
17
  $scope.controllerName = 'katello_environments';
15
18
 
19
+ // Labels so breadcrumb strings can be translated
20
+ $scope.errataLabel = translate('Errata');
21
+ $scope.repositoriesLabel = translate('Repositories');
22
+ $scope.packagesLabel = translate('Packages');
23
+ $scope.debReposLabel = translate('Deb Repositories');
24
+ $scope.debsLabel = translate('Deb Packages');
25
+ $scope.moduleStreamsLabel = translate('Module Streams');
26
+ $scope.dockerLabel = translate('Docker');
27
+ $scope.contentViewsLabel = translate('Content Views');
28
+
16
29
  function fetchContentViews(environmentId) {
17
30
  ContentView.queryUnpaged({'environment_id': environmentId}, function (data) {
18
31
  $scope.contentViews = [$scope.contentView].concat(data.results);
@@ -7,6 +7,9 @@
7
7
  *
8
8
  * @description
9
9
  * Enter a description!
10
+ *
11
+ * @requires translate
12
+ *
10
13
  */
11
14
  function EnvironmentController($scope, Environment, translate, ContentService, ApiErrorHandler, Notification, RepositoryTypesService) {
12
15
 
@@ -18,6 +21,9 @@
18
21
 
19
22
  $scope.controllerName = 'katello_environments';
20
23
 
24
+ // Labels so breadcrumb strings can be translated
25
+ $scope.label = translate('Environments');
26
+
21
27
  $scope.repositoryTypeEnabled = RepositoryTypesService.repositoryTypeEnabled;
22
28
  $scope.environment = Environment.get({id: $scope.$stateParams.environmentId}, function () {
23
29
  $scope.panel.loading = false;
@@ -7,8 +7,11 @@
7
7
  *
8
8
  * @description
9
9
  * Handles creating a new environment.
10
+ *
11
+ * @requires translate
12
+ *
10
13
  */
11
- function NewEnvironmentController($scope, Environment, FormUtils, Notification, PathsService) {
14
+ function NewEnvironmentController($scope, Environment, FormUtils, Notification, PathsService, translate) {
12
15
 
13
16
  function success() {
14
17
  $scope.transitionTo('environments');
@@ -26,6 +29,9 @@
26
29
  });
27
30
  }
28
31
 
32
+ // Labels so breadcrumb strings can be translated
33
+ $scope.label = translate('New Environment');
34
+
29
35
  $scope.loading = true;
30
36
  $scope.environment = new Environment();
31
37
  $scope.priorEnvironment = Environment.get({id: $scope.$stateParams.priorId});
@@ -65,6 +71,6 @@
65
71
  .module('Bastion.environments')
66
72
  .controller('NewEnvironmentController', NewEnvironmentController);
67
73
 
68
- NewEnvironmentController.$inject = ['$scope', 'Environment', 'FormUtils', 'Notification', 'PathsService'];
74
+ NewEnvironmentController.$inject = ['$scope', 'Environment', 'FormUtils', 'Notification', 'PathsService', 'translate'];
69
75
 
70
76
  })();
@@ -42,6 +42,10 @@ angular.module('Bastion.errata').controller('ApplyErrataController',
42
42
 
43
43
  $scope.applyingErrata = false;
44
44
 
45
+ // Labels so breadcrumb strings can be translated
46
+ $scope.label = translate('Apply');
47
+ $scope.confirmLabel = translate('Confirm');
48
+
45
49
  $scope.remoteExecutionPresent = BastionConfig.remoteExecutionPresent;
46
50
  $scope.errataActionFormValues = {
47
51
  authenticityToken: $window.AUTH_TOKEN.replace(/&quot;/g, ''),
@@ -9,19 +9,24 @@
9
9
  * @requires Environment
10
10
  * @requires CurrentOrganization
11
11
  * @requires newHostDetailsUI
12
+ * @requires translate
12
13
  *
13
14
  * @description
14
15
  * Provides the functionality for the available host collection details action pane.
15
16
  */
16
17
  angular.module('Bastion.errata').controller('ErratumContentHostsController',
17
- ['$scope', 'Nutupane', 'Host', 'IncrementalUpdate', 'Environment', 'CurrentOrganization', 'newHostDetailsUI',
18
- function ($scope, Nutupane, Host, IncrementalUpdate, Environment, CurrentOrganization, newHostDetailsUI) {
18
+ ['$scope', 'Nutupane', 'Host', 'IncrementalUpdate', 'Environment', 'CurrentOrganization', 'newHostDetailsUI', 'translate',
19
+ function ($scope, Nutupane, Host, IncrementalUpdate, Environment, CurrentOrganization, newHostDetailsUI, translate) {
19
20
  var nutupane, params, searchString, nutupaneParams = {
20
21
  'overrideAutoLoad': true
21
22
  };
22
23
 
23
24
  $scope.restrictInstallable = false;
24
25
 
26
+ // Labels so breadcrumb strings can be translated
27
+ $scope.label = translate('Content Hosts');
28
+ $scope.selectLabel = translate('Select Content Host(s)');
29
+
25
30
  params = {
26
31
  'erratum_id': $scope.$stateParams.errataId,
27
32
  'organization_id': CurrentOrganization
@@ -10,13 +10,14 @@
10
10
  * @requires ContentView
11
11
  * @requires CurrentOrganization
12
12
  * @requires RepositoriesFilters
13
+ * @requires translate
13
14
  *
14
15
  * @description
15
16
  * Provides the functionality for the errata details repositories page.
16
17
  */
17
18
  angular.module('Bastion.errata').controller('ErratumRepositoriesController',
18
- ['$scope', '$q', 'Nutupane', 'Repository', 'Environment', 'ContentView', 'CurrentOrganization', 'RepositoriesFilters',
19
- function ($scope, $q, Nutupane, Repository, Environment, ContentView, CurrentOrganization, RepositoriesFilters) {
19
+ ['$scope', '$q', 'Nutupane', 'Repository', 'Environment', 'ContentView', 'CurrentOrganization', 'RepositoriesFilters', 'translate',
20
+ function ($scope, $q, Nutupane, Repository, Environment, ContentView, CurrentOrganization, RepositoriesFilters, translate) {
20
21
  var repositoriesNutupane, environment, contentView, params = {
21
22
  'erratum_id': $scope.$stateParams.errataId,
22
23
  'organization_id': CurrentOrganization
@@ -24,6 +25,10 @@ function ($scope, $q, Nutupane, Repository, Environment, ContentView, CurrentOrg
24
25
 
25
26
  repositoriesNutupane = new Nutupane(Repository, params);
26
27
  $scope.controllerName = 'katello_repositories';
28
+
29
+ // Labels so breadcrumb strings can be translated
30
+ $scope.label = translate('Repositories');
31
+
27
32
  $scope.table = repositoriesNutupane.table;
28
33
  $scope.table.initialLoad = false;
29
34
  repositoriesNutupane.primaryOnly = true;
@@ -5,12 +5,13 @@
5
5
  * @requires $scope
6
6
  * @requires Errata
7
7
  * @requires ApiErrorHandler
8
+ * @requires translate
8
9
  *
9
10
  * @description
10
11
  * Provides the functionality for the errata pages.
11
12
  */
12
- angular.module('Bastion.errata').controller('ErratumController', ['$scope', 'Erratum', 'ApiErrorHandler',
13
- function ($scope, Erratum, ApiErrorHandler) {
13
+ angular.module('Bastion.errata').controller('ErratumController', ['$scope', 'Erratum', 'ApiErrorHandler', 'translate',
14
+ function ($scope, Erratum, ApiErrorHandler, translate) {
14
15
  $scope.panel = {
15
16
  error: false,
16
17
  loading: true
@@ -18,6 +19,9 @@ angular.module('Bastion.errata').controller('ErratumController', ['$scope', 'Err
18
19
 
19
20
  $scope.moduleStreamShowMap = {};
20
21
 
22
+ // Labels so breadcrumb strings can be translated
23
+ $scope.packagesLabel = translate('Packages');
24
+
21
25
  if ($scope.errata) {
22
26
  $scope.panel.loading = false;
23
27
  }
@@ -24,10 +24,10 @@
24
24
  <dd>{{ errata.severity | errataSeverity }}</dd>
25
25
 
26
26
  <dt translate>Issued</dt>
27
- <dd><long-date-time date="errata.issued" /></dd>
27
+ <dd>{{ errata.issued }}</dd>
28
28
 
29
29
  <dt translate>Last Updated On</dt>
30
- <dd><long-date-time date="errata.updated" /></dd>
30
+ <dd>{{ errata.updated }}</dd>
31
31
 
32
32
  <dt translate>Reboot Suggested?</dt>
33
33
  <dd>{{ errata.reboot_suggested | booleanToYesNo }}</dd>
@@ -36,6 +36,11 @@ angular.module('Bastion.errata').controller('ErrataController',
36
36
 
37
37
  nutupane = $scope.nutupane = new Nutupane(Erratum, params);
38
38
  $scope.controllerName = 'katello_errata';
39
+
40
+ // Labels so breadcrumb strings can be translated
41
+ $scope.label = translate('Errata');
42
+ $scope.tasksLabel = translate('Tasks');
43
+
39
44
  $scope.table = nutupane.table;
40
45
  $scope.removeRow = nutupane.removeRow;
41
46
 
@@ -101,7 +101,7 @@
101
101
  <span translate>{{ errata.hosts_applicable_count || 0 }} Applicable, </span>
102
102
  <span translate>{{ errata.hosts_available_count || 0 }} Installable</span>
103
103
  </td>
104
- <td bst-table-cell><long-date-time date="errata.updated" /></td>
104
+ <td bst-table-cell>{{ errata.updated }}</td>
105
105
  </tr>
106
106
  </tbody>
107
107
  </table>
@@ -6,8 +6,11 @@
6
6
  *
7
7
  * @description
8
8
  * Provides the functionality for the files details contentViews page.
9
+ *
10
+ * @requires translate
11
+ *
9
12
  */
10
- function FileContentViewsController($scope, Nutupane, ContentViewVersion, CurrentOrganization) {
13
+ function FileContentViewsController($scope, Nutupane, ContentViewVersion, CurrentOrganization, translate) {
11
14
  var contentViewsNutupane,
12
15
  params = {
13
16
  'file_id': $scope.$stateParams.fileId,
@@ -17,6 +20,10 @@
17
20
 
18
21
  contentViewsNutupane = new Nutupane(ContentViewVersion, params);
19
22
  $scope.controllerName = 'katello_content_views';
23
+
24
+ // Labels so breadcrumb strings can be translated
25
+ $scope.label = translate('Content Views');
26
+
20
27
  contentViewsNutupane.primaryOnly = true;
21
28
  contentViewsNutupane.setSearchKey('contentViewsSearch');
22
29
 
@@ -39,7 +46,8 @@
39
46
  '$scope',
40
47
  'Nutupane',
41
48
  'ContentViewVersion',
42
- 'CurrentOrganization'
49
+ 'CurrentOrganization',
50
+ 'translate'
43
51
  ];
44
52
 
45
53
  })();
@@ -6,8 +6,11 @@
6
6
  *
7
7
  * @description
8
8
  * Provides the functionality for the files details repositories page.
9
+ *
10
+ * @requires translate
11
+ *
9
12
  */
10
- function FileRepositoriesController($scope, Nutupane, Repository, CurrentOrganization) {
13
+ function FileRepositoriesController($scope, Nutupane, Repository, CurrentOrganization, translate) {
11
14
  var repositoriesNutupane,
12
15
  params = {
13
16
  'file_id': $scope.$stateParams.fileId,
@@ -16,6 +19,10 @@
16
19
 
17
20
  repositoriesNutupane = new Nutupane(Repository, params);
18
21
  $scope.controllerName = 'katello_repositories';
22
+
23
+ // Labels so breadcrumb strings can be translated
24
+ $scope.label = translate('Repositories');
25
+
19
26
  repositoriesNutupane.primaryOnly = true;
20
27
  repositoriesNutupane.setSearchKey('repositoriesSearch');
21
28
 
@@ -8,8 +8,11 @@
8
8
  * @description
9
9
  * Handles fetching files and populating Nutupane based on the current
10
10
  * ui-router state.
11
+ *
12
+ * @requires translate
13
+ *
11
14
  */
12
- function FilesController($scope, Nutupane, File, CurrentOrganization) {
15
+ function FilesController($scope, Nutupane, File, CurrentOrganization, translate) {
13
16
  var nutupane;
14
17
 
15
18
  var params = {
@@ -20,6 +23,10 @@
20
23
 
21
24
  nutupane = new Nutupane(File, params);
22
25
  $scope.controllerName = 'katello_files';
26
+
27
+ // Labels so breadcrumb strings can be translated
28
+ $scope.label = translate('Files');
29
+
23
30
  nutupane.primaryOnly = true;
24
31
 
25
32
  $scope.table = nutupane.table;
@@ -30,6 +37,6 @@
30
37
  .module('Bastion.files')
31
38
  .controller('FilesController', FilesController);
32
39
 
33
- FilesController.$inject = ['$scope', 'Nutupane', 'File', 'CurrentOrganization'];
40
+ FilesController.$inject = ['$scope', 'Nutupane', 'File', 'CurrentOrganization', 'translate'];
34
41
 
35
42
  })();
@@ -20,6 +20,9 @@ angular.module('Bastion.host-collections').controller('HostCollectionAddHostsCon
20
20
  function ($scope, $state, $location, translate, Nutupane, CurrentOrganization, Host, HostCollection, Notification, newHostDetailsUI) {
21
21
  var contentNutupane, params, nutupaneParams;
22
22
 
23
+ // Labels so breadcrumb strings can be translated
24
+ $scope.label = translate('List Hosts');
25
+
23
26
  params = {
24
27
  'organization_id': CurrentOrganization,
25
28
  'search': $location.search().search || "",
@@ -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 HostCollectionCopyController($scope, Notification, HostCollection) {
14
+ function HostCollectionCopyController($scope, Notification, HostCollection, translate) {
12
15
  $scope.copy = function (newName) {
13
16
  HostCollection.copy({id: $scope.$stateParams.hostCollectionId, 'host_collection': {name: newName}}, function (response) {
14
17
  $scope.transitionTo('host-collection.info', {hostCollectionId: 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.host-collections')
23
28
  .controller('HostCollectionCopyController', HostCollectionCopyController);
24
29
 
25
- HostCollectionCopyController.$inject = ['$scope', 'Notification', 'HostCollection'];
30
+ HostCollectionCopyController.$inject = ['$scope', 'Notification', 'HostCollection', 'translate'];
26
31
 
27
32
  })();
@@ -20,6 +20,9 @@ angular.module('Bastion.host-collections').controller('HostCollectionHostsContro
20
20
  function ($scope, $location, Notification, translate, Nutupane, CurrentOrganization, Host, HostCollection, newHostDetailsUI) {
21
21
  var params, nutupaneParams;
22
22
 
23
+ // Labels so breadcrumb strings can be translated
24
+ $scope.label = translate('List Hosts');
25
+
23
26
  params = {
24
27
  'organization_id': CurrentOrganization,
25
28
  'search': $location.search().search || "",
@@ -26,6 +26,10 @@ angular.module('Bastion.host-collections').controller('HostCollectionsController
26
26
  };
27
27
 
28
28
  var nutupane = new Nutupane(HostCollection, params);
29
+
30
+ // Labels so breadcrumb strings can be translated
31
+ $scope.label = translate('Host Collections');
32
+
29
33
  $scope.controllerName = 'katello_host_collections';
30
34
  nutupane.primaryOnly = true;
31
35
 
@@ -5,17 +5,21 @@
5
5
  * @requires $scope
6
6
  * @requires HostCollection
7
7
  * @requires CurrentOrganization
8
+ * @requires translate
8
9
  *
9
10
  * @description
10
11
  * Controls the creation of an empty HostCollection object for use by sub-controllers.
11
12
  */
12
13
  angular.module('Bastion.host-collections').controller('NewHostCollectionController',
13
- ['$scope', 'HostCollection', 'CurrentOrganization',
14
- function ($scope, HostCollection, CurrentOrganization) {
14
+ ['$scope', 'HostCollection', 'CurrentOrganization', 'translate',
15
+ function ($scope, HostCollection, CurrentOrganization, translate) {
15
16
 
16
17
  $scope.hostCollection = new HostCollection();
17
18
  $scope.panel = {loading: false};
18
19
 
20
+ // Labels so breadcrumb strings can be translated
21
+ $scope.label = translate('New Host Collection');
22
+
19
23
  function success() {
20
24
  $scope.transitionTo('host-collection.info', {hostCollectionId: $scope.hostCollection.id});
21
25
  }
@@ -30,6 +30,10 @@ angular.module('Bastion.hosts').factory('Host',
30
30
  return _.isString(this.operatingsystem_name) && (this.operatingsystem_name.indexOf("Debian") >= 0 || this.operatingsystem_name.indexOf("Ubuntu") >= 0);
31
31
  };
32
32
 
33
+ resource.prototype.rhelLifecycleExpireSoon = function() {
34
+ return _.isString(this.rhel_lifecycle_status_label) && (this.rhel_lifecycle_status_label.indexOf("Approaching end of") >= 0);
35
+ };
36
+
33
37
  return resource;
34
38
  }]
35
39
  );