katello 4.8.4 → 4.9.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 (481) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +40 -4
  3. data/app/assets/javascripts/katello/locale/bn/katello.js +1 -0
  4. data/app/assets/javascripts/katello/locale/cs/katello.js +1 -0
  5. data/app/assets/javascripts/katello/locale/de/katello.js +1 -0
  6. data/app/assets/javascripts/katello/locale/en/katello.js +1 -0
  7. data/app/assets/javascripts/katello/locale/es/katello.js +1 -0
  8. data/app/assets/javascripts/katello/locale/fr/katello.js +1 -0
  9. data/app/assets/javascripts/katello/locale/gu/katello.js +1 -0
  10. data/app/assets/javascripts/katello/locale/hi/katello.js +1 -0
  11. data/app/assets/javascripts/katello/locale/it/katello.js +1 -0
  12. data/app/assets/javascripts/katello/locale/ja/katello.js +1 -0
  13. data/app/assets/javascripts/katello/locale/ka/katello.js +1 -0
  14. data/app/assets/javascripts/katello/locale/kn/katello.js +1 -0
  15. data/app/assets/javascripts/katello/locale/ko/katello.js +1 -0
  16. data/app/assets/javascripts/katello/locale/locale/katello.js +1 -0
  17. data/app/assets/javascripts/katello/locale/mr/katello.js +1 -0
  18. data/app/assets/javascripts/katello/locale/or/katello.js +1 -0
  19. data/app/assets/javascripts/katello/locale/pa/katello.js +1 -0
  20. data/app/assets/javascripts/katello/locale/pt/katello.js +1 -0
  21. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +1 -0
  22. data/app/assets/javascripts/katello/locale/ru/katello.js +1 -0
  23. data/app/assets/javascripts/katello/locale/ta/katello.js +1 -0
  24. data/app/assets/javascripts/katello/locale/te/katello.js +1 -0
  25. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +1 -0
  26. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +1 -0
  27. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +10 -0
  28. data/app/controllers/katello/api/v2/activation_keys_controller.rb +1 -0
  29. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +2 -0
  30. data/app/controllers/katello/api/v2/content_views_controller.rb +22 -12
  31. data/app/controllers/katello/api/v2/environments_controller.rb +5 -1
  32. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +1 -1
  33. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -2
  34. data/app/controllers/katello/api/v2/organizations_controller.rb +11 -0
  35. data/app/controllers/katello/api/v2/repositories_controller.rb +4 -3
  36. data/app/controllers/katello/api/v2/repository_sets_controller.rb +13 -4
  37. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +1 -3
  38. data/app/controllers/katello/concerns/api/api_controller.rb +2 -2
  39. data/app/controllers/katello/concerns/content_facet_hosts_controller_extensions.rb +1 -1
  40. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +6 -4
  41. data/app/lib/actions/candlepin/product/content_add.rb +13 -1
  42. data/app/lib/actions/candlepin/product/content_update.rb +2 -1
  43. data/app/lib/actions/katello/agent_action.rb +3 -4
  44. data/app/lib/actions/katello/bulk_agent_action.rb +1 -4
  45. data/app/lib/actions/katello/content_view/publish.rb +1 -0
  46. data/app/lib/actions/katello/content_view_version/incremental_update.rb +1 -0
  47. data/app/lib/actions/katello/host/update_content_view.rb +2 -4
  48. data/app/lib/actions/katello/organization/simple_content_access/enable.rb +0 -10
  49. data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +2 -12
  50. data/app/lib/actions/katello/product/content_create.rb +2 -2
  51. data/app/lib/actions/katello/repository/destroy.rb +15 -7
  52. data/app/lib/actions/katello/repository/update.rb +23 -1
  53. data/app/lib/actions/pulp3/abstract_async_task.rb +2 -0
  54. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +5 -12
  55. data/app/lib/katello/concerns/base_template_scope_extensions.rb +34 -2
  56. data/app/lib/katello/event_daemon/runner.rb +8 -4
  57. data/app/lib/katello/repo_discovery.rb +3 -1
  58. data/app/lib/katello/resources/cdn/katello_cdn.rb +4 -8
  59. data/app/lib/katello/util/default_enablement_migrator.rb +183 -0
  60. data/app/models/katello/activation_key.rb +4 -0
  61. data/app/models/katello/alternate_content_source.rb +13 -8
  62. data/app/models/katello/candlepin/repository_mapper.rb +0 -1
  63. data/app/models/katello/concerns/content_view_filter_rule_common.rb +42 -0
  64. data/app/models/katello/concerns/host_managed_extensions.rb +9 -40
  65. data/app/models/katello/concerns/smart_proxy_extensions.rb +24 -23
  66. data/app/models/katello/content.rb +9 -0
  67. data/app/models/katello/content_view.rb +99 -4
  68. data/app/models/katello/content_view_environment_content_facet.rb +12 -0
  69. data/app/models/katello/content_view_filter.rb +5 -1
  70. data/app/models/katello/content_view_package_filter_rule.rb +0 -1
  71. data/app/models/katello/content_view_repository.rb +0 -1
  72. data/app/models/katello/content_view_version.rb +26 -0
  73. data/app/models/katello/docker_meta_tag.rb +4 -0
  74. data/app/models/katello/host/content_facet.rb +2 -0
  75. data/app/models/katello/kt_environment.rb +13 -3
  76. data/app/models/katello/ping.rb +1 -1
  77. data/app/models/katello/product.rb +1 -1
  78. data/app/models/katello/product_content.rb +13 -15
  79. data/app/models/katello/root_repository.rb +21 -2
  80. data/app/models/katello/sync_plan.rb +2 -6
  81. data/app/presenters/katello/host_package_presenter.rb +5 -3
  82. data/app/services/katello/product_content_finder.rb +6 -1
  83. data/app/services/katello/pulp3/alternate_content_source.rb +5 -0
  84. data/app/services/katello/pulp3/module_stream.rb +2 -12
  85. data/app/services/katello/pulp3/repository/yum.rb +3 -0
  86. data/app/views/foreman/job_templates/install_errata.erb +4 -4
  87. data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +4 -7
  88. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +5 -6
  89. data/app/views/katello/api/v2/activation_keys/base.json.rabl +6 -0
  90. data/app/views/katello/api/v2/common/destroy.json.rabl +2 -1
  91. data/app/views/katello/api/v2/content_credentials/show.json.rabl +1 -1
  92. data/app/views/katello/api/v2/content_facet/base.json.rabl +10 -9
  93. data/app/views/katello/api/v2/content_view_repositories/show_all.json.rabl +6 -0
  94. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +11 -1
  95. data/app/views/katello/api/v2/content_views/base.json.rabl +3 -0
  96. data/app/views/katello/api/v2/docker_tags/_base.json.rabl +4 -0
  97. data/app/views/katello/api/v2/environments/show.json.rabl +10 -0
  98. data/app/views/katello/api/v2/host_subscriptions/show.json.rabl +1 -0
  99. data/app/views/katello/api/v2/repositories/index.json.rabl +6 -0
  100. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
  101. data/app/views/katello/api/v2/repository_sets/show.json.rabl +8 -2
  102. data/app/views/overrides/activation_keys/_host_environment_select.html.erb +22 -15
  103. data/app/views/smart_proxies/_disk_usage.html.erb +2 -0
  104. data/ca/redhat-uep.pem +53 -53
  105. data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +0 -1
  106. data/db/migrate/20230328180352_add_applied_filters_to_katello_content_view_versions.rb +5 -0
  107. data/db/migrate/20230503190626_add_metadata_expire_to_root.rb +5 -0
  108. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  109. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +4 -2
  110. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +16 -0
  111. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html +4 -3
  112. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +15 -1
  113. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions.html +1 -1
  114. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +1 -1
  115. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/views/content-credentials.html +1 -1
  116. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +4 -2
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-host-bulk-module-streams-modal.html +1 -1
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html +1 -1
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +10 -4
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-host-collections-modal.html +1 -1
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-repository-sets-modal.html +1 -1
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +2 -2
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +1 -1
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +2 -0
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -0
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -0
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +2 -0
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +2 -4
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +2 -4
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +0 -1
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +0 -4
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb.controller.js +4 -2
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +12 -3
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-repositories.controller.js +43 -0
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-details.html +7 -0
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-environments.html +0 -1
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-info.html +0 -7
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-repositories.html +60 -0
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.controller.js +0 -8
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.routes.js +10 -0
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/views/docker-tags.html +0 -4
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +1 -1
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-content-hosts.controller.js +4 -2
  144. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-content-hosts.html +5 -4
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +2 -2
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-packages.html +2 -2
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +7 -0
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata.html +1 -1
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +4 -2
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +4 -2
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-add-hosts.html +4 -3
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts-list.html +4 -3
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +590 -175
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +5157 -0
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +5157 -0
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +5157 -0
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +5204 -0
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +5153 -0
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +5159 -0
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +5157 -0
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +5158 -0
  162. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +5153 -0
  163. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +5153 -0
  164. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +5157 -0
  165. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +5157 -0
  166. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +5191 -0
  167. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +5157 -0
  168. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +5136 -0
  169. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +5303 -0
  170. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +34 -14
  171. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +5157 -0
  172. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +5153 -0
  173. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +5157 -0
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +5161 -0
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +5157 -0
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +5157 -0
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +5192 -0
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +5187 -0
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +5174 -0
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +5170 -0
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +5170 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +5279 -0
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +5191 -0
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +5158 -0
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +5157 -0
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +5157 -0
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +5157 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +5157 -0
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +5136 -0
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +5136 -0
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +5136 -0
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +38 -1
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/views/organization-selector.html +1 -1
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package.controller.js +8 -2
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +12 -3
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-advanced-sync-modal.html +1 -1
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-http-proxy-modal.html +1 -1
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +1 -1
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +13 -4
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +1 -1
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +12 -2
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details-reclaim-space-modal.html +1 -1
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +6 -0
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +17 -0
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifest-lists.html +1 -1
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html +1 -1
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-tags.html +0 -4
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +6 -4
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +20 -1
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +1 -0
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories-reclaim-space-modal.html +1 -1
  212. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/activation_keys.scss +13 -0
  213. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +1 -0
  214. data/lib/katello/engine.rb +0 -7
  215. data/lib/katello/plugin.rb +18 -15
  216. data/lib/katello/tasks/upgrades/4.9/update_custom_products_enablement.rake +11 -0
  217. data/lib/katello/version.rb +1 -1
  218. data/locale/action_names.rb +1 -2
  219. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  220. data/locale/bn/katello.po +215 -183
  221. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  222. data/locale/bn_IN/katello.po +8901 -0
  223. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  224. data/locale/ca/katello.po +8900 -0
  225. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  226. data/locale/cs/katello.po +216 -185
  227. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  228. data/locale/cs_CZ/katello.po +8906 -0
  229. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  230. data/locale/de/katello.po +223 -191
  231. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  232. data/locale/de_AT/katello.po +8897 -0
  233. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  234. data/locale/de_DE/katello.po +8906 -0
  235. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  236. data/locale/el/katello.po +8900 -0
  237. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  238. data/locale/en/katello.po +215 -183
  239. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  240. data/locale/en_GB/katello.po +8902 -0
  241. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  242. data/locale/en_US/katello.po +8897 -0
  243. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  244. data/locale/es/katello.po +218 -187
  245. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  246. data/locale/et_EE/katello.po +8897 -0
  247. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  248. data/locale/fr/katello.po +233 -204
  249. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  250. data/locale/gl/katello.po +8900 -0
  251. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  252. data/locale/gu/katello.po +215 -183
  253. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  254. data/locale/he_IL/katello.po +8902 -0
  255. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  256. data/locale/hi/katello.po +215 -183
  257. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  258. data/locale/id/katello.po +8896 -0
  259. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  260. data/locale/it/katello.po +216 -185
  261. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  262. data/locale/ja/katello.po +233 -202
  263. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  264. data/locale/ka/katello.po +223 -191
  265. data/locale/katello.pot +1844 -1796
  266. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  267. data/locale/kn/katello.po +215 -183
  268. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  269. data/locale/ko/katello.po +216 -183
  270. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  271. data/locale/ml_IN/katello.po +8897 -0
  272. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  273. data/locale/mr/katello.po +215 -183
  274. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  275. data/locale/nl_NL/katello.po +8907 -0
  276. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  277. data/locale/or/katello.po +215 -183
  278. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  279. data/locale/pa/katello.po +215 -183
  280. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  281. data/locale/pl/katello.po +8903 -0
  282. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  283. data/locale/pl_PL/katello.po +8899 -0
  284. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  285. data/locale/pt/katello.po +215 -183
  286. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  287. data/locale/pt_BR/katello.po +218 -187
  288. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  289. data/locale/ro/katello.po +8897 -0
  290. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  291. data/locale/ro_RO/katello.po +8898 -0
  292. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  293. data/locale/ru/katello.po +216 -184
  294. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  295. data/locale/sl/katello.po +8901 -0
  296. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  297. data/locale/sv_SE/katello.po +8903 -0
  298. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  299. data/locale/ta/katello.po +215 -183
  300. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  301. data/locale/ta_IN/katello.po +8901 -0
  302. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  303. data/locale/te/katello.po +215 -183
  304. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  305. data/locale/tr/katello.po +8900 -0
  306. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  307. data/locale/vi/katello.po +8896 -0
  308. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  309. data/locale/vi_VN/katello.po +8897 -0
  310. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  311. data/locale/zh/katello.po +8896 -0
  312. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  313. data/locale/zh_CN/katello.po +233 -202
  314. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  315. data/locale/zh_TW/katello.po +216 -183
  316. data/package.json +1 -0
  317. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
  318. data/webpack/components/Bookmark/AddBookmarkModal.js +8 -2
  319. data/webpack/components/Content/ContentTable.js +1 -0
  320. data/webpack/components/Content/Details/ContentDetailInfo.js +1 -1
  321. data/webpack/components/Content/Details/ContentDetails.js +3 -3
  322. data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetailInfo.test.js.snap +1 -0
  323. data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +4 -0
  324. data/webpack/components/Content/__tests__/__snapshots__/ContentTable.test.js.snap +1 -0
  325. data/webpack/components/RoutedTabs/index.js +1 -1
  326. data/webpack/components/SelectOrg/SetOrganization.js +7 -1
  327. data/webpack/components/Table/EmptyStateMessage.js +8 -3
  328. data/webpack/components/Table/MainTable.js +8 -2
  329. data/webpack/components/TooltipButton/TooltipButton.js +2 -2
  330. data/webpack/components/TooltipButton/__snapshots__/TooltipButton.test.js.snap +3 -0
  331. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +2 -0
  332. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +81 -24
  333. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.scss +3 -0
  334. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +10 -3
  335. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +8 -0
  336. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +3 -2
  337. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +3 -1
  338. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +1 -1
  339. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +0 -4
  340. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErratumExpansionDetail.js +2 -2
  341. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +1 -5
  342. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +20 -0
  343. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
  344. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +16 -0
  345. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +54 -8
  346. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +1 -0
  347. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +8 -1
  348. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -0
  349. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -0
  350. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/LifeCycleEnvironment.test.js.snap +1 -0
  351. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +2 -1
  352. data/webpack/components/extensions/RegistrationCommands/fields/Force.js +1 -0
  353. data/webpack/components/extensions/RegistrationCommands/fields/IgnoreSubmanErrors.js +1 -0
  354. data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +1 -0
  355. data/webpack/components/extensions/about/index.js +2 -2
  356. data/webpack/components/pf3Table/components/Table.js +1 -0
  357. data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +6 -1
  358. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +15 -2
  359. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +6 -1
  360. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +4 -1
  361. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -0
  362. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +1 -0
  363. data/webpack/scenes/Content/Details/ContentDetails.js +4 -2
  364. data/webpack/scenes/Content/Details/ContentRepositories.js +1 -1
  365. data/webpack/scenes/Content/GenericContentPage.js +1 -1
  366. data/webpack/scenes/Content/Table/ContentTable.js +2 -2
  367. data/webpack/scenes/ContentViews/ContentViewsConstants.js +4 -0
  368. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +26 -13
  369. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +27 -13
  370. data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +8 -4
  371. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -2
  372. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
  373. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +25 -24
  374. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -1
  375. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +19 -3
  376. data/webpack/scenes/ContentViews/Details/ContentViewDetailReducer.js +6 -0
  377. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +2 -0
  378. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -2
  379. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +15 -2
  380. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +5 -1
  381. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +13 -9
  382. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +19 -6
  383. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +5 -1
  384. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +50 -51
  385. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +45 -44
  386. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +45 -44
  387. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -8
  388. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +4 -3
  389. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +5 -2
  390. data/webpack/scenes/ContentViews/Details/Filters/FilterRuleConstants.js +6 -0
  391. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +3 -2
  392. data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +10 -2
  393. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +5 -1
  394. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +7 -0
  395. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +37 -24
  396. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +3 -3
  397. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -1
  398. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +78 -8
  399. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +27 -8
  400. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailNoReposAdded.fixtures.json +13 -0
  401. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +1 -1
  402. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +16 -16
  403. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +16 -16
  404. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteVersions.fixtures.json +6 -3
  405. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentViewVersion.fixtures.json +10 -5
  406. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +9 -2
  407. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +1 -0
  408. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +2 -1
  409. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +2 -1
  410. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +2 -1
  411. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +12 -6
  412. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +2 -1
  413. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +2 -1
  414. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +25 -4
  415. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +4 -2
  416. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +26 -13
  417. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +30 -17
  418. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +1 -0
  419. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +6 -3
  420. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
  421. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +2 -2
  422. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +8 -1
  423. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +1 -1
  424. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +55 -6
  425. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +6 -3
  426. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +2 -1
  427. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +8 -4
  428. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +1 -1
  429. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +4 -2
  430. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  431. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +4 -2
  432. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +30 -3
  433. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +24 -2
  434. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -0
  435. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +2 -2
  436. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -3
  437. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
  438. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +2 -1
  439. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +3 -2
  440. data/webpack/scenes/ContentViews/components/ContentViewSelect/helpers.js +32 -0
  441. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +52 -42
  442. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +1 -0
  443. data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +17 -0
  444. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +45 -0
  445. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +9 -0
  446. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +1 -1
  447. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +49 -22
  448. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +7 -1
  449. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -0
  450. data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +2 -0
  451. data/webpack/scenes/Hosts/ChangeContentSource/index.js +2 -0
  452. data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetailInfo.test.js.snap +1 -0
  453. data/webpack/scenes/ModuleStreams/__tests__/__snapshots__/ModuleStreamsTable.test.js.snap +1 -0
  454. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +2 -0
  455. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +2 -0
  456. data/webpack/scenes/RedHatRepositories/components/RecommendedRepositorySetsToggler.js +6 -1
  457. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -1
  458. data/webpack/scenes/RedHatRepositories/components/__tests__/__snapshots__/RecommendedRepositorySetsToggler.test.js.snap +1 -0
  459. data/webpack/scenes/RedHatRepositories/components/__tests__/__snapshots__/RepositorySetRepositories.test.js.snap +1 -0
  460. data/webpack/scenes/RedHatRepositories/helpers.js +2 -0
  461. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailAssociations.js +1 -1
  462. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailInfo.js +2 -2
  463. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +4 -4
  464. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailAssociations.test.js.snap +1 -0
  465. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +2 -0
  466. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +4 -0
  467. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +2 -1
  468. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +5 -4
  469. data/webpack/scenes/Subscriptions/Manifest/SimpleContentAccess.js +1 -0
  470. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +1 -1
  471. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +3 -1
  472. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +3 -0
  473. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +1 -0
  474. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +1 -1
  475. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +5 -6
  476. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +60 -5
  477. data/webpack/utils/useKatelloDocUrl.js +18 -0
  478. metadata +163 -22
  479. data/app/lib/actions/katello/organization/simple_content_access/prepare_content_overrides.rb +0 -36
  480. data/app/lib/katello/util/content_overrides_migrator.rb +0 -98
  481. data/webpack/components/extensions/HostDetails/common/KatelloAgentDeprecationAlert.js +0 -23
@@ -4,7 +4,6 @@ import React, {
4
4
  } from 'react';
5
5
 
6
6
  import { translate as __ } from 'foremanReact/common/I18n';
7
- import { STATUS } from 'foremanReact/constants';
8
7
  import { first } from 'lodash';
9
8
  import { FormattedMessage } from 'react-intl';
10
9
  import {
@@ -39,6 +38,7 @@ import {
39
38
  getNumberOfHosts,
40
39
  } from '../BulkDeleteHelpers';
41
40
  import ContentViewSelect from '../../../../components/ContentViewSelect/ContentViewSelect';
41
+ import { getCVPlaceholderText, shouldDisableCVSelect } from '../../../../components/ContentViewSelect/helpers';
42
42
 
43
43
  export default () => {
44
44
  const dispatch = useDispatch();
@@ -55,7 +55,6 @@ export default () => {
55
55
  const { results = [] } = useSelector(selectContentViews);
56
56
  const { content_view: { name: cvName, id: cvId } } = first(versions);
57
57
  const contentViewsInEnvStatus = useSelector(selectContentViewStatus);
58
- const cvInEnvLoading = contentViewsInEnvStatus === STATUS.PENDING;
59
58
  const [toggleCVSelect, setToggleCVSelect] = useState(false);
60
59
 
61
60
  const numberOfHosts = getNumberOfHosts(versions);
@@ -92,18 +91,12 @@ export default () => {
92
91
  {name}
93
92
  </SelectOption>));
94
93
 
95
- const placeHolder = (() => {
96
- switch (true) {
97
- case cvInEnvLoading && !!selectedEnvForHosts.length:
98
- return __('Loading...');
99
- case selectedEnvForHosts.length === 0:
100
- return __('Select an environment above');
101
- case selectOptions.length > 0:
102
- return __('Select a content view');
103
- default:
104
- return __('No content views available');
105
- }
106
- })();
94
+ const placeholderText = getCVPlaceholderText({
95
+ contentSourceId: null,
96
+ environments: selectedEnvForHosts,
97
+ contentViewsStatus: contentViewsInEnvStatus,
98
+ cvSelectOptions: selectOptions,
99
+ });
107
100
 
108
101
  const setUserCheckedItems = (value) => {
109
102
  setSelectedCVForHosts(null);
@@ -131,6 +124,13 @@ export default () => {
131
124
  setToggleCVSelect(false);
132
125
  };
133
126
 
127
+ const disableCVSelect = shouldDisableCVSelect({
128
+ contentSourceId: null,
129
+ environments: selectedEnvForHosts,
130
+ contentViewsStatus: contentViewsInEnvStatus,
131
+ cvSelectOptions: selectOptions,
132
+ });
133
+
134
134
  const contentHostHref =
135
135
  `/content_hosts?search=content_view = ${cvName} AND ( ${versionEnvironments.map(({ name }) =>
136
136
  `lifecycle_environment = ${name}`).join(' OR ')})`;
@@ -206,8 +206,8 @@ export default () => {
206
206
  selections={selectedCVForHosts}
207
207
  onSelect={onSelect}
208
208
  onClear={onClear}
209
- isDisabled={cvInEnvLoading || !selectOptions?.length || !selectedEnvForHosts?.length}
210
- placeholderText={placeHolder}
209
+ isDisabled={disableCVSelect}
210
+ placeholderText={placeholderText}
211
211
  isOpen={toggleCVSelect}
212
212
  onToggle={setToggleCVSelect}
213
213
  menuAppendTo={() => document.body}
@@ -212,7 +212,8 @@
212
212
  },
213
213
  "permissions": {
214
214
  "deletable": true
215
- }
215
+ },
216
+ "filters_applied": true
216
217
  },
217
218
  {
218
219
  "version": "82.0",
@@ -394,7 +395,8 @@
394
395
  },
395
396
  "permissions": {
396
397
  "deletable": true
397
- }
398
+ },
399
+ "filters_applied": true
398
400
  },
399
401
  {
400
402
  "version": "81.0",
@@ -594,7 +596,8 @@
594
596
  },
595
597
  "permissions": {
596
598
  "deletable": true
597
- }
599
+ },
600
+ "filters_applied": true
598
601
  }
599
602
  ]
600
603
  }
@@ -192,7 +192,8 @@
192
192
  },
193
193
  "permissions": {
194
194
  "deletable": true
195
- }
195
+ },
196
+ "filters_applied": true
196
197
  },
197
198
  {
198
199
  "version": "88.0",
@@ -378,7 +379,8 @@
378
379
  },
379
380
  "permissions": {
380
381
  "deletable": true
381
- }
382
+ },
383
+ "filters_applied": true
382
384
  },
383
385
  {
384
386
  "version": "85.0",
@@ -560,7 +562,8 @@
560
562
  },
561
563
  "permissions": {
562
564
  "deletable": true
563
- }
565
+ },
566
+ "filters_applied": true
564
567
  },
565
568
  {
566
569
  "version": "84.0",
@@ -745,7 +748,8 @@
745
748
  },
746
749
  "permissions": {
747
750
  "deletable": true
748
- }
751
+ },
752
+ "filters_applied": true
749
753
  },
750
754
  {
751
755
  "version": "83.0",
@@ -930,7 +934,8 @@
930
934
  },
931
935
  "permissions": {
932
936
  "deletable": true
933
- }
937
+ },
938
+ "filters_applied": true
934
939
  }
935
940
  ]
936
941
  }
@@ -137,7 +137,7 @@ export default ({
137
137
  selectRPMPackagesComparison(state, versionOneId, versionTwoId, viewBy),
138
138
  statusSelector: state =>
139
139
  selectRPMPackagesComparisonStatus(state, versionOneId, versionTwoId, viewBy),
140
- autocompleteEndpoint: '/katello/api/v2/packages',
140
+ autocompleteEndpoint: 'katello/api/v2/packages',
141
141
  bookmarkController: 'katello_content_view_components',
142
142
  fetchItems: params => getRPMPackagesComparison(
143
143
  versionOneId,
@@ -367,7 +367,14 @@ export default ({
367
367
  return __('Schema Version 2');
368
368
  },
369
369
  },
370
- { title: __('Product Name'), getProperty: item => item?.product?.name },
370
+ {
371
+ title: __('Product'),
372
+ getProperty: item => (
373
+ <a href={urlBuilder(`products/${item?.product?.id}`, '')}>
374
+ {item?.product?.name}
375
+ </a>),
376
+ },
377
+ { title: __('Image'), getProperty: item => item?.upstream_name },
371
378
  { title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
372
379
  { title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
373
380
  ],
@@ -71,6 +71,7 @@ const CVVersionCompareTable = ({
71
71
  {columnHeaders.map(({ title }) =>
72
72
  (
73
73
  <Th
74
+ modifier="wrap"
74
75
  key={`${title}-header`}
75
76
  sort={sortConfig[title] ? pfSortParams(title) : undefined}
76
77
  >
@@ -157,5 +157,6 @@
157
157
  },
158
158
  "permissions": {
159
159
  "deletable": true
160
- }
160
+ },
161
+ "filters_applied": true
161
162
  }
@@ -150,5 +150,6 @@
150
150
  },
151
151
  "permissions": {
152
152
  "deletable": true
153
- }
153
+ },
154
+ "filters_applied": true
154
155
  }
@@ -207,5 +207,6 @@
207
207
  },
208
208
  "permissions": {
209
209
  "deletable": true
210
- }
210
+ },
211
+ "filters_applied": true
211
212
  }
@@ -220,7 +220,8 @@
220
220
  },
221
221
  "permissions": {
222
222
  "deletable": true
223
- }
223
+ },
224
+ "filters_applied": true
224
225
  },
225
226
  {
226
227
  "version": "5.0",
@@ -402,7 +403,8 @@
402
403
  },
403
404
  "permissions": {
404
405
  "deletable": true
405
- }
406
+ },
407
+ "filters_applied": true
406
408
  },
407
409
  {
408
410
  "version": "4.0",
@@ -563,7 +565,8 @@
563
565
  },
564
566
  "permissions": {
565
567
  "deletable": true
566
- }
568
+ },
569
+ "filters_applied": true
567
570
  },
568
571
  {
569
572
  "version": "3.0",
@@ -717,7 +720,8 @@
717
720
  },
718
721
  "permissions": {
719
722
  "deletable": true
720
- }
723
+ },
724
+ "filters_applied": true
721
725
  },
722
726
  {
723
727
  "version": "2.0",
@@ -862,7 +866,8 @@
862
866
  },
863
867
  "permissions": {
864
868
  "deletable": true
865
- }
869
+ },
870
+ "filters_applied": true
866
871
  },
867
872
  {
868
873
  "version": "1.0",
@@ -1007,7 +1012,8 @@
1007
1012
  },
1008
1013
  "permissions": {
1009
1014
  "deletable": true
1010
- }
1015
+ },
1016
+ "filters_applied": true
1011
1017
  }
1012
1018
  ]
1013
1019
  }
@@ -141,5 +141,6 @@
141
141
  },
142
142
  "permissions": {
143
143
  "deletable": true
144
- }
144
+ },
145
+ "filters_applied": true
145
146
  }
@@ -141,5 +141,6 @@
141
141
  },
142
142
  "permissions": {
143
143
  "deletable": true
144
- }
144
+ },
145
+ "filters_applied": true
145
146
  }
@@ -19,7 +19,7 @@ import {
19
19
  selectCVVersions,
20
20
  selectCVVersionsStatus,
21
21
  selectCVVersionsError,
22
- selectCVDetails,
22
+ selectCVDetails, selectCVNeedsPublish,
23
23
  } from '../ContentViewDetailSelectors';
24
24
  import getEnvironmentPaths from '../../components/EnvironmentPaths/EnvironmentPathActions';
25
25
  import ContentViewVersionPromote from '../Promote/ContentViewVersionPromote';
@@ -30,6 +30,8 @@ import BulkDeleteModal from './BulkDelete/BulkDeleteModal';
30
30
  import { selectEnvironmentPathsStatus } from '../../components/EnvironmentPaths/EnvironmentPathSelectors';
31
31
  import PublishContentViewWizard from '../../Publish/PublishContentViewWizard';
32
32
  import CVVersionCompare from './Compare/CVVersionCompare';
33
+ import NeedsPublishIcon from '../../components/NeedsPublishIcon';
34
+ import FiltersAppliedIcon from '../../components/FiltersAppliedIcon';
33
35
 
34
36
  const ContentViewVersions = ({ cvId, details }) => {
35
37
  const response = useSelector(state => selectCVVersions(state, cvId));
@@ -56,7 +58,10 @@ const ContentViewVersions = ({ cvId, details }) => {
56
58
  const [removingFromEnv, setRemovingFromEnv] = useState(false);
57
59
  const [deleteVersion, setDeleteVersion] = useState(false);
58
60
  const [currentStep, setCurrentStep] = useState(1);
59
- const { permissions } = details;
61
+ const {
62
+ permissions, needs_publish: needsPublish, composite, latest_version_id: latestVersionId,
63
+ } = details;
64
+ const needsPublishLocal = useSelector(state => selectCVNeedsPublish(state));
60
65
  const [kebabOpen, setKebabOpen] = useState(false);
61
66
  const hasActionPermissions = hasPermission(permissions, 'promote_or_remove_content_views');
62
67
  const hasPublishCvPermissions = hasPermission(permissions, 'publish_content_views');
@@ -121,6 +126,7 @@ const ContentViewVersions = ({ cvId, details }) => {
121
126
  rpm_count: packageCount,
122
127
  errata_counts: errataCounts,
123
128
  active_history: activeHistory,
129
+ filters_applied: filtersApplied,
124
130
  } = cvVersion;
125
131
 
126
132
  if (activeHistory?.length) {
@@ -147,7 +153,19 @@ const ContentViewVersions = ({ cvId, details }) => {
147
153
  isChecked={isSelected(versionId)}
148
154
  onChange={selected => selectOne(selected, versionId)}
149
155
  />,
150
- <Link to={`/versions/${versionId}`}>{__('Version ')}{version}</Link>,
156
+ <>
157
+ <Link to={`/versions/${versionId}`}>{__('Version ')}{version}</Link>
158
+ {(latestVersionId === versionId &&
159
+ (needsPublish === null || needsPublish || needsPublishLocal)) &&
160
+ <NeedsPublishIcon
161
+ composite={composite}
162
+ determinate={needsPublish !== null || needsPublishLocal}
163
+ />
164
+ }
165
+ {(filtersApplied) &&
166
+ <FiltersAppliedIcon />
167
+ }
168
+ </>,
151
169
  <ContentViewVersionEnvironments {...{ environments }} />,
152
170
  Number(packageCount) ?
153
171
  <a href={urlBuilder(`content_views/${cvId}#/versions/${versionId}/packages`, '')}>{packageCount}</a> :
@@ -213,7 +231,7 @@ const ContentViewVersions = ({ cvId, details }) => {
213
231
  },
214
232
  ];
215
233
 
216
- const emptyContentTitle = __("You currently don't have any versions for this content view.");
234
+ const emptyContentTitle = __('No versions yet');
217
235
  const emptyContentBody = __('Versions will appear here when the content view is published.');
218
236
  const emptySearchTitle = __('No matching version found');
219
237
  const emptySearchBody = __('Try changing your search settings.');
@@ -384,6 +402,9 @@ ContentViewVersions.propTypes = {
384
402
  cvId: PropTypes.number.isRequired,
385
403
  details: PropTypes.shape({
386
404
  permissions: PropTypes.shape({}),
405
+ needs_publish: PropTypes.bool,
406
+ composite: PropTypes.bool,
407
+ latest_version_id: PropTypes.number,
387
408
  }).isRequired,
388
409
  };
389
410
 
@@ -54,6 +54,7 @@ const CVEnvironmentSelectionForm = () => {
54
54
  <>
55
55
  {!alertDismissed && deleteFlow &&
56
56
  <Alert
57
+ ouiaId="delete-version-info-alert"
57
58
  variant="warning"
58
59
  isInline
59
60
  title={__('Warning')}
@@ -65,9 +66,10 @@ const CVEnvironmentSelectionForm = () => {
65
66
  {(!deleteFlow &&
66
67
  (removeDeletionFlow || areAllSelected() || versionEnvironments.length === 0))
67
68
  && (
68
- <Alert variant="warning" isInline title={__('Warning')}>
69
+ <Alert variant="warning" isInline title={__('Warning')} ouiaId="delete-version-alert">
69
70
  <p style={{ marginBottom: '0.5em' }}>{removeDeletionFlow ? versionDeleteInfo : versionRemovalInfo}</p>
70
71
  <Checkbox
72
+ ouiaId="delete-version-checkbox"
71
73
  id="delete_version"
72
74
  label={__('Delete version')}
73
75
  isChecked={removeDeletionFlow}
@@ -119,7 +121,7 @@ const CVEnvironmentSelectionForm = () => {
119
121
  </TableComposable>}
120
122
  {(versionEnvironments.length === 0) &&
121
123
  <EmptyState variant={EmptyStateVariant.xs}>
122
- <Title headingLevel="h4" size="md">
124
+ <Title headingLevel="h4" size="md" ouiaId="not-promoted-title">
123
125
  {__('This version has not been promoted to any environments.')}
124
126
  </Title>
125
127
  <EmptyStateBody>
@@ -10,6 +10,7 @@ import { selectContentViewError, selectContentViews, selectContentViewStatus } f
10
10
  import AffectedActivationKeys from '../affectedActivationKeys';
11
11
  import DeleteContext from '../DeleteContext';
12
12
  import ContentViewSelect from '../../../../components/ContentViewSelect/ContentViewSelect';
13
+ import { getCVPlaceholderText, shouldDisableCVSelect } from '../../../../components/ContentViewSelect/helpers';
13
14
 
14
15
  const CVReassignActivationKeysForm = () => {
15
16
  const dispatch = useDispatch();
@@ -87,6 +88,20 @@ const CVReassignActivationKeysForm = () => {
87
88
  setCVSelectOpen(false);
88
89
  };
89
90
 
91
+ const placeholderText = getCVPlaceholderText({
92
+ contentSourceId: null,
93
+ environments: selectedEnvForAK,
94
+ contentViewsStatus: contentViewsInEnvStatus,
95
+ cvSelectOptions,
96
+ });
97
+
98
+ const disableCVSelect = shouldDisableCVSelect({
99
+ contentSourceId: null,
100
+ environments: selectedEnvForAK,
101
+ contentViewsStatus: contentViewsInEnvStatus,
102
+ cvSelectOptions,
103
+ });
104
+
90
105
  return (
91
106
  <>
92
107
  <EnvironmentPaths
@@ -96,19 +111,17 @@ const CVReassignActivationKeysForm = () => {
96
111
  headerText={__('Select lifecycle environment')}
97
112
  multiSelect={false}
98
113
  />
99
- {!cvInEnvLoading && selectedEnvForAK.length > 0 &&
100
- <ContentViewSelect
101
- selections={selectedCVForAK}
102
- onSelect={onSelect}
103
- onClear={onClear}
104
- isOpen={cvSelectOpen}
105
- isDisabled={cvSelectOptions.length === 0}
106
- onToggle={isExpanded => setCVSelectOpen(isExpanded)}
107
- placeholderText={(cvSelectOptions.length === 0) ? __('No content views available') : __('Select a content view')}
108
- >
109
- {cvSelectOptions}
110
- </ContentViewSelect>
111
- }
114
+ <ContentViewSelect
115
+ selections={selectedCVForAK}
116
+ onSelect={onSelect}
117
+ onClear={onClear}
118
+ isOpen={cvSelectOpen}
119
+ isDisabled={disableCVSelect}
120
+ onToggle={isExpanded => setCVSelectOpen(isExpanded)}
121
+ placeholderText={placeholderText}
122
+ >
123
+ {cvSelectOptions}
124
+ </ContentViewSelect>
112
125
  <ExpandableSection
113
126
  toggleText={showActivationKeys ?
114
127
  'Hide activation keys' :
@@ -10,6 +10,7 @@ import { selectContentViewError, selectContentViews, selectContentViewStatus } f
10
10
  import AffectedHosts from '../affectedHosts';
11
11
  import DeleteContext from '../DeleteContext';
12
12
  import ContentViewSelect from '../../../../components/ContentViewSelect/ContentViewSelect';
13
+ import { getCVPlaceholderText, shouldDisableCVSelect } from '../../../../components/ContentViewSelect/helpers';
13
14
 
14
15
  const CVReassignHostsForm = () => {
15
16
  const dispatch = useDispatch();
@@ -86,6 +87,20 @@ const CVReassignHostsForm = () => {
86
87
  setCVSelectOpen(false);
87
88
  };
88
89
 
90
+ const placeholderText = getCVPlaceholderText({
91
+ contentSourceId: null,
92
+ environments: selectedEnvForHost,
93
+ contentViewsStatus: contentViewsInEnvStatus,
94
+ cvSelectOptions,
95
+ });
96
+
97
+ const disableCVSelect = shouldDisableCVSelect({
98
+ contentSourceId: null,
99
+ environments: selectedEnvForHost,
100
+ contentViewsStatus: contentViewsInEnvStatus,
101
+ cvSelectOptions,
102
+ });
103
+
89
104
  return (
90
105
  <>
91
106
  <EnvironmentPaths
@@ -95,23 +110,21 @@ const CVReassignHostsForm = () => {
95
110
  headerText={__('Select lifecycle environment')}
96
111
  multiSelect={false}
97
112
  />
98
- {selectedEnvForHost.length > 0 &&
99
- <ContentViewSelect
100
- onClear={onClear}
101
- selections={selectedCVForHosts}
102
- onSelect={onSelect}
103
- isOpen={cvSelectOpen}
104
- isDisabled={cvSelectOptions.length === 0}
105
- onToggle={isExpanded => setCVSelectOpen(isExpanded)}
106
- id="selectCV"
107
- ouiaId="selectCV"
108
- name="selectCV"
109
- aria-label="selectCV"
110
- placeholderText={(cvSelectOptions.length === 0) ? __('No content views available') : __('Select a content view')}
111
- >
112
- {cvSelectOptions}
113
- </ContentViewSelect>
114
- }
113
+ <ContentViewSelect
114
+ onClear={onClear}
115
+ selections={selectedCVForHosts}
116
+ onSelect={onSelect}
117
+ isOpen={cvSelectOpen}
118
+ isDisabled={disableCVSelect}
119
+ onToggle={isExpanded => setCVSelectOpen(isExpanded)}
120
+ id="selectCV"
121
+ ouiaId="selectCV"
122
+ name="selectCV"
123
+ aria-label="selectCV"
124
+ placeholderText={placeholderText}
125
+ >
126
+ {cvSelectOptions}
127
+ </ContentViewSelect>
115
128
  <ExpandableSection
116
129
  toggleText={showHosts ? 'Hide hosts' : 'Show hosts'}
117
130
  onToggle={expanded => setShowHosts(expanded)}
@@ -29,6 +29,7 @@ const CVVersionRemoveReview = () => {
29
29
  <WizardHeader title={__('Review details')} />
30
30
  {!alertDismissed && (deleteFlow || removeDeletionFlow) &&
31
31
  <Alert
32
+ ouiaId="cvv-remove-review-alert"
32
33
  variant="warning"
33
34
  isInline
34
35
  title={__('Warning')}
@@ -256,7 +256,8 @@
256
256
  },
257
257
  "permissions": {
258
258
  "deletable": true
259
- }
259
+ },
260
+ "filters_applied": true
260
261
  },
261
262
  {
262
263
  "version": "6.0",
@@ -416,7 +417,8 @@
416
417
  },
417
418
  "permissions": {
418
419
  "deletable": true
419
- }
420
+ },
421
+ "filters_applied": true
420
422
  },
421
423
  {
422
424
  "version": "5.0",
@@ -574,7 +576,8 @@
574
576
  },
575
577
  "permissions": {
576
578
  "deletable": true
577
- }
579
+ },
580
+ "filters_applied": true
578
581
  }
579
582
  ]
580
583
  }
@@ -66,7 +66,7 @@ const AffectedActivationKeys = ({
66
66
  </Thead>
67
67
  <Tbody>
68
68
  {results?.map(({ name, id, environment }) => (
69
- <Tr ouiaId={id} key={id}>
69
+ <Tr ouiaId={`${id}`} key={`${id}`}>
70
70
  <Td>
71
71
  <a rel="noreferrer" target="_blank" href={urlBuilder(`activation_keys/${id}`, '')}>{name}</a>
72
72
  </Td>
@@ -65,9 +65,9 @@ const AffectedHosts = ({
65
65
  id,
66
66
  content_facet_attributes: { lifecycle_environment: environment },
67
67
  }) => (
68
- <Tr ouiaId={id} key={id}>
68
+ <Tr ouiaId={`${id}`} key={`${id}`}>
69
69
  <Td>
70
- <a rel="noreferrer" target="_blank" href={urlBuilder(`hosts/${id}`, '')}>{name}</a>
70
+ <a rel="noreferrer" target="_blank" href={urlBuilder(`new/hosts/${id}`, '')}>{name}</a>
71
71
  </Td>
72
72
  <Td><EnvironmentLabels environments={environment} /></Td>
73
73
  </Tr>
@@ -330,7 +330,14 @@ export default ({ cvId, versionId }) => [
330
330
  return __('Schema Version 2');
331
331
  },
332
332
  },
333
- { title: __('Product Name'), getProperty: item => item?.product?.name },
333
+ {
334
+ title: __('Product'),
335
+ getProperty: item => (
336
+ <a href={urlBuilder(`products/${item?.product?.id}`, '')}>
337
+ {item?.product?.name}
338
+ </a>),
339
+ },
340
+ { title: __('Image'), getProperty: item => item?.upstream_name },
334
341
  ],
335
342
  },
336
343
  ...ContentConfig.map(({
@@ -87,7 +87,7 @@ const ContentViewVersionDetails = ({ cvId, details }) => {
87
87
  />
88
88
  ))}
89
89
  </Tabs>
90
- <Switch>
90
+ <Switch ouiaId="cv-version-details-switch">
91
91
  {filteredTableConfigs.map(config => (
92
92
  <Route
93
93
  key={config.route}