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
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import { translate as __ } from 'foremanReact/common/I18n';
3
+ import PropTypes from 'prop-types';
4
+ import { Tooltip } from '@patternfly/react-core';
5
+ import { ArrowCircleUpIcon } from '@patternfly/react-icons';
6
+ import './NeedsPublishIcon.scss';
7
+
8
+ const tooltipContent = (composite, determinate) => {
9
+ let content = '';
10
+ if (determinate) {
11
+ content = composite ? __('Updates available: Component content view versions have been updated.') :
12
+ __('Updates available: Repositories and/or filters have changed.');
13
+ } else {
14
+ content = __('We could not determine if publish is required for the content view. ' +
15
+ 'Audit records may have been cleaned or not created for this version.');
16
+ }
17
+ return content;
18
+ };
19
+
20
+ const NeedsPublishIcon = ({ composite, determinate }) => (
21
+ <Tooltip
22
+ position="auto"
23
+ enableFlip
24
+ entryDelay={400}
25
+ content={tooltipContent(composite, determinate)}
26
+ >
27
+ <ArrowCircleUpIcon
28
+ id={determinate ? 'determinate-needs-publish' : 'indeterminate-needs-publish'}
29
+ size="sm"
30
+ className={determinate ? 'determinate-needs-publish' : 'indeterminate-needs-publish'}
31
+ />
32
+ </Tooltip>
33
+ );
34
+
35
+ NeedsPublishIcon.propTypes = {
36
+ composite: PropTypes.bool,
37
+ determinate: PropTypes.bool,
38
+ };
39
+
40
+ NeedsPublishIcon.defaultProps = {
41
+ composite: false,
42
+ determinate: false,
43
+ };
44
+
45
+ export default NeedsPublishIcon;
@@ -0,0 +1,9 @@
1
+ .determinate-needs-publish {
2
+ color: var(--pf-global--primary-color--100);
3
+ margin-left: 9px;
4
+ }
5
+
6
+ .indeterminate-needs-publish {
7
+ color: var(--pf-global--disabled-color--200);
8
+ margin-left: 9px;
9
+ }
@@ -83,7 +83,7 @@ const RelatedContentViewsModal = ({ cvName, cvId, relatedCVCount }) => {
83
83
  </Thead>
84
84
  <Tbody>
85
85
  {results?.map(details => (
86
- <Tr key={details.content_view.id} ouiaId={details.content_view.id}>
86
+ <Tr key={`${details.content_view.id}`} ouiaId={`${details.content_view.id}`}>
87
87
  <Td>
88
88
  <Link to={urlBuilder(`content_views/${details.content_view.id}`, '')}>{details.content_view.name}</Link>
89
89
  </Td>
@@ -22,6 +22,8 @@ import EnvironmentPaths from '../../../../scenes/ContentViews/components/Environ
22
22
  import ContentViewSelect from '../../../../scenes/ContentViews/components/ContentViewSelect/ContentViewSelect';
23
23
  import ContentViewSelectOption from '../../../../scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption';
24
24
  import { selectContentViewsStatus } from '../selectors';
25
+ import { getCVPlaceholderText, shouldDisableCVSelect } from '../../../ContentViews/components/ContentViewSelect/helpers';
26
+ import { selectEnvironmentPaths } from '../../../ContentViews/components/EnvironmentPaths/EnvironmentPathSelectors';
25
27
 
26
28
  const ENV_PATH_OPTIONS = { key: ENVIRONMENT_PATHS_KEY };
27
29
 
@@ -52,7 +54,7 @@ const ContentSourceSelect = ({
52
54
  {contentSources.map(cs => (
53
55
  <SelectOption
54
56
  key={cs.id}
55
- value={cs.id}
57
+ value={`${cs.id}`}
56
58
  >
57
59
  {cs.name}
58
60
  </SelectOption>
@@ -95,12 +97,15 @@ const ContentSourceForm = ({
95
97
  isLoading,
96
98
  hostsUpdated,
97
99
  }) => {
100
+ const pathsUrl = `/organizations/${orgId()}/environments/paths?permission_type=promotable${contentSourceId ? `&content_source_id=${contentSourceId}` : ''}`;
98
101
  useAPI( // No TableWrapper here, so we can useAPI from Foreman
99
102
  'get',
100
- api.getApiUrl(`/organizations/${orgId()}/environments/paths?permission_type=promotable`),
103
+ api.getApiUrl(pathsUrl),
101
104
  ENV_PATH_OPTIONS,
102
105
  );
103
106
  const contentViewsStatus = useSelector(selectContentViewsStatus);
107
+ const environmentPathResponse = useSelector(selectEnvironmentPaths);
108
+ const envList = environmentPathResponse?.results?.map(path => path.environments).flat();
104
109
  const [csSelectOpen, setCSSelectOpen] = useState(false);
105
110
  const [cvSelectOpen, setCVSelectOpen] = useState(false);
106
111
 
@@ -126,6 +131,20 @@ const ContentSourceForm = ({
126
131
  const viewIsDisabled = (isLoading || contentViews.length === 0 ||
127
132
  contentSourceId === '' || environments === []);
128
133
 
134
+ const cvPlaceholderText = getCVPlaceholderText({
135
+ contentSourceId,
136
+ environments,
137
+ contentViewsStatus,
138
+ cvSelectOptions: contentViews,
139
+ });
140
+
141
+ const disableCVSelect = shouldDisableCVSelect({
142
+ contentSourceId,
143
+ environments,
144
+ contentViewsStatus,
145
+ cvSelectOptions: contentViews,
146
+ });
147
+
129
148
  return (
130
149
  <Form
131
150
  onSubmit={e => handleSubmit(e)}
@@ -137,6 +156,7 @@ const ContentSourceForm = ({
137
156
 
138
157
  <GridItem span={7}>
139
158
  <Alert
159
+ ouiaId="no-hosts-alert"
140
160
  variant="danger"
141
161
  className="margin-top-20"
142
162
  title={__('No hosts found')}
@@ -146,6 +166,7 @@ const ContentSourceForm = ({
146
166
  {contentViewsStatus === STATUS.RESOLVED &&
147
167
  !!environments.length && contentViews.length === 0 &&
148
168
  <Alert
169
+ ouiaId="no-cv-alert"
149
170
  variant="warning"
150
171
  className="margin-top-20"
151
172
  title={__('No content views available for the selected environment')}
@@ -165,6 +186,17 @@ const ContentSourceForm = ({
165
186
  isOpen={csSelectOpen}
166
187
  isDisabled={contentSourcesIsDisabled || hostsUpdated}
167
188
  />
189
+ {envList?.some(env => env?.content_source?.environment_is_associated === false) &&
190
+ <Alert
191
+ ouiaId="disabled-environments-alert"
192
+ variant="info"
193
+ isInline
194
+ title={__('Some environments are disabled because they are not associated with the selected content source.')}
195
+ style={{ marginBottom: '1rem' }}
196
+ >
197
+ {__('To enable them, add the environment to the content source, or select a different content source.')}
198
+ </Alert>
199
+ }
168
200
  <EnvironmentPaths
169
201
  style={{ display: 'block' }}
170
202
  userCheckedItems={environments}
@@ -174,30 +206,25 @@ const ContentSourceForm = ({
174
206
  headerText={__('Environment')}
175
207
  isDisabled={environmentIsDisabled || hostsUpdated}
176
208
  />
177
- {environments.length > 0 && contentViewsStatus !== STATUS.PENDING &&
178
- <ContentViewSelect
179
- selections={contentViewName}
180
- onClear={() => handleContentView(null)}
181
- onSelect={handleCVSelect}
182
- isOpen={cvSelectOpen}
183
- isDisabled={viewIsDisabled || hostsUpdated}
184
- onToggle={isExpanded => setCVSelectOpen(isExpanded)}
185
- headerText={__('Content view')}
186
- ouiaId="SelectContentView"
187
- className="set-select-width"
188
- placeholderText={(contentViews.length === 0) ? __('No content views available') : __('Select a content view')}
189
- >
190
- {contentViews?.map(cv => (<ContentViewSelectOption
191
- key={cv.id}
192
- cv={cv}
193
- env={environments[0]}
194
- />))}
195
- </ContentViewSelect>
196
- }
209
+ <ContentViewSelect
210
+ selections={contentViewName}
211
+ onClear={() => handleContentView(null)}
212
+ onSelect={handleCVSelect}
213
+ isOpen={cvSelectOpen}
214
+ isDisabled={viewIsDisabled || hostsUpdated || disableCVSelect}
215
+ onToggle={isExpanded => setCVSelectOpen(isExpanded)}
216
+ headerText={__('Content view')}
217
+ ouiaId="SelectContentView"
218
+ className="set-select-width"
219
+ placeholderText={cvPlaceholderText}
220
+ >
221
+ {!environmentIsDisabled && contentViews?.map(cv => <ContentViewSelectOption key={`${cv.id}`} value={`${cv.name}`} cv={cv} env={environments[0]} />)}
222
+ </ContentViewSelect>
197
223
  <ActionGroup style={{ display: 'block' }}>
198
224
  <Button
199
225
  variant="primary"
200
226
  id="generate_btn"
227
+ ouiaId="update-source-button"
201
228
  onClick={e => handleSubmit(e)}
202
229
  isDisabled={isLoading || !formIsValid() || hostsUpdated}
203
230
  isLoading={isLoading}
@@ -41,7 +41,13 @@ const ContentSourceTemplate = ({ template, jobInvocationPath }) => {
41
41
  return (
42
42
  <Grid>
43
43
  <GridItem span={7}>
44
- <Alert variant="warning" title={__('Host configurations are not updated yet')} className="margin-top-20" isInline>
44
+ <Alert
45
+ ouiaId="host-configuration-alert"
46
+ variant="warning"
47
+ title={__('Host configurations are not updated yet')}
48
+ className="margin-top-20"
49
+ isInline
50
+ >
45
51
  <FormattedMessage
46
52
  id="ccs_alert"
47
53
  values={{
@@ -14,6 +14,7 @@ const FormField = ({
14
14
  <GridItem span={7}>
15
15
  <FormGroup label={label} fieldId={id} isRequired>
16
16
  <FormSelect
17
+ ouiaId={`${id}_select`}
17
18
  value={value}
18
19
  onChange={v => onChange(v)}
19
20
  className="without_select2"
@@ -19,6 +19,7 @@ const HostsModal = ({
19
19
 
20
20
  return (
21
21
  <Modal
22
+ ouiaId="hosts-modal-modal"
22
23
  variant={ModalVariant.small}
23
24
  title={modalTitle}
24
25
  position="top"
@@ -35,6 +36,7 @@ const HostsModal = ({
35
36
  {(search ? hosts.filter(h => (`${h.name}`).includes(search)) : hosts).map(h => (
36
37
  <ListItem key={h.id}>
37
38
  <Button
39
+ ouiaId={`hosts-modal-button-${h.id}`}
38
40
  component="a"
39
41
  href={foremanUrl(`/new/hosts/${h.name}`)}
40
42
  variant="link"
@@ -122,6 +122,7 @@ const ChangeContentSourcePage = () => {
122
122
  <Grid className="margin-left-20">
123
123
  <GridItem span={7}>
124
124
  <Title
125
+ ouiaId="change-cs-title"
125
126
  headingLevel="h5"
126
127
  size="2xl"
127
128
  >
@@ -131,6 +132,7 @@ const ChangeContentSourcePage = () => {
131
132
  {noHostSpecified &&
132
133
  <GridItem span={7}>
133
134
  <Alert
135
+ ouiaId="no-host-alert"
134
136
  variant="danger"
135
137
  className="margin-top-20"
136
138
  title={__('No hosts were specified')}
@@ -6,6 +6,7 @@ exports[`Module stream detail info component rendering renders with module strea
6
6
  bsClass="table"
7
7
  condensed={false}
8
8
  hover={false}
9
+ ouiaId="content-details-info-table"
9
10
  responsive={false}
10
11
  striped={false}
11
12
  >
@@ -88,6 +88,7 @@ exports[`Module streams table should render and contain appropiate components 1`
88
88
  }
89
89
  itemCount={0}
90
90
  onPaginationChange={[Function]}
91
+ ouiaId="content-table-table"
91
92
  pagination={Object {}}
92
93
  rows={Array []}
93
94
  />
@@ -49,6 +49,7 @@ class RedHatRepositoriesPage extends Component {
49
49
  <Row className="toolbar-pf">
50
50
  <Col>
51
51
  <Alert
52
+ ouiaId="repo-sets-alert"
52
53
  variant="info"
53
54
  className="repo-sets-alert"
54
55
  isInline
@@ -96,6 +97,7 @@ class RedHatRepositoriesPage extends Component {
96
97
  <h2>
97
98
  {__('Enabled Repositories')}
98
99
  <Button
100
+ ouiaId="export-csv-button"
99
101
  className="pull-right"
100
102
  onClick={() => { api.open('/repositories.csv', repoParams); }}
101
103
  >
@@ -97,6 +97,7 @@ exports[`RedHatRepositories page should render 1`] = `
97
97
  className="pull-right"
98
98
  disabled={false}
99
99
  onClick={[Function]}
100
+ ouiaId="export-csv-button"
100
101
  >
101
102
  Export as CSV
102
103
  </Button>
@@ -120,6 +121,7 @@ exports[`RedHatRepositories page should render 1`] = `
120
121
  onChange={[Function]}
121
122
  onPerPageSelect={null}
122
123
  onSetPage={null}
124
+ ouiaId="enabled-repos-pagination"
123
125
  page={1}
124
126
  perPage={null}
125
127
  updateParamsByUrl={true}
@@ -18,7 +18,12 @@ const RecommendedRepositorySetsToggler = ({
18
18
 
19
19
  return (
20
20
  <div className={classes} {...props}>
21
- <Switch bsSize="mini" value={enabled} onChange={() => onChange(!enabled)} />
21
+ <Switch
22
+ ouiaId="enabled-repo-set-switch"
23
+ bsSize="mini"
24
+ value={enabled}
25
+ onChange={() => onChange(!enabled)}
26
+ />
22
27
  <Icon type="fa" name="star" />
23
28
  {children}
24
29
  <FieldLevelHelp content={help} />
@@ -53,7 +53,7 @@ export class RepositorySetRepositories extends Component {
53
53
 
54
54
  if (data.error) {
55
55
  return (
56
- <Alert type="danger">
56
+ <Alert type="danger" ouiaId="repo-set-alert">
57
57
  <span>{data.error.displayMessage}</span>
58
58
  </Alert>
59
59
  );
@@ -19,6 +19,7 @@ exports[`RecommendedRepositorySetsToggler rendering renders recommended-reposito
19
19
  onChange={[Function]}
20
20
  onColor="primary"
21
21
  onText="ON"
22
+ ouiaId="enabled-repo-set-switch"
22
23
  readonly={false}
23
24
  tristate={false}
24
25
  value={true}
@@ -18,6 +18,7 @@ exports[`RepositorySetRepositories Component should render with error 1`] = `
18
18
  <Alert
19
19
  className=""
20
20
  onDismiss={null}
21
+ ouiaId="repo-set-alert"
21
22
  type="danger"
22
23
  >
23
24
  <span>
@@ -34,6 +34,7 @@ export const getSetsComponent = (repoSetsState, onPaginationChange) => {
34
34
  <ListView>
35
35
  <div className="sticky-pagination">
36
36
  <Pagination
37
+ ouiaId="repos-pagination"
37
38
  itemCount={itemCount}
38
39
  onChange={onPaginationChange}
39
40
  isCompact
@@ -64,6 +65,7 @@ export const getEnabledComponent = (enabledReposState, onPaginationChange) => {
64
65
  <ListView>
65
66
  <div className="sticky-pagination sticky-pagination-grey">
66
67
  <Pagination
68
+ ouiaId="enabled-repos-pagination"
67
69
  isCompact
68
70
  itemCount={itemCount}
69
71
  onChange={onPaginationChange}
@@ -10,7 +10,7 @@ const SubscriptionDetailAssociations = ({ subscriptionDetails }) => {
10
10
  return (
11
11
  <div>
12
12
  <h2>{__('Associations')}</h2>
13
- <Table striped bordered condensed hover>
13
+ <Table ouiaId="associations-table" striped bordered condensed hover>
14
14
  <thead>
15
15
  <tr>
16
16
  <td><b>{__('Resource')}</b></td>
@@ -37,7 +37,7 @@ const SubscriptionDetailInfo = ({ subscriptionDetails }) => {
37
37
  return (
38
38
  <div>
39
39
  <h2>{__('Subscription Info')}</h2>
40
- <Table>
40
+ <Table ouiaId="subscription-info-table">
41
41
  <tbody>
42
42
  {Object.keys(subscriptionAttributes).map(key => (
43
43
  <tr key={key}>
@@ -56,7 +56,7 @@ const SubscriptionDetailInfo = ({ subscriptionDetails }) => {
56
56
  </tbody>
57
57
  </Table>
58
58
  <h2>{__('System Purpose')}</h2>
59
- <Table>
59
+ <Table ouiaId="system-purpose-table">
60
60
  <tbody>
61
61
  {Object.keys(subscriptionPurposeAttributes).map(key => (
62
62
  <tr key={key}>
@@ -81,16 +81,16 @@ class SubscriptionDetails extends Component {
81
81
  <TabContainer id="subscription-tabs-container" defaultActiveKey={1}>
82
82
  <div>
83
83
  <LoadingState loading={subscriptionDetails.loading} loadingText={__('Loading')}>
84
- <Nav bsClass="nav nav-tabs">
85
- <NavItem eventKey={1}>
84
+ <Nav bsClass="nav nav-tabs" ouiaId="subscription-details-nav">
85
+ <NavItem eventKey={1} ouiaId="details-nav-item">
86
86
  <div>{__('Details')}</div>
87
87
  </NavItem>
88
- <NavItem eventKey={2}>
88
+ <NavItem eventKey={2} ouiaId="product-content-nav-item">
89
89
  <div>{__('Product Content')}</div>
90
90
  </NavItem>
91
91
  </Nav>
92
92
  <Grid bsClass="container-fluid">
93
- <TabContent animation={false}>
93
+ <TabContent ouiaId="subscription-details-tab-content" animation={false}>
94
94
  <TabPane eventKey={1}>
95
95
  <div>
96
96
  <Row>
@@ -7,6 +7,7 @@ exports[`subscriptions detail associations page renders correctly 1`] = `
7
7
  </h2>
8
8
  <table
9
9
  className="table table-striped table-bordered table-condensed table-hover"
10
+ ouiaId="associations-table"
10
11
  >
11
12
  <thead>
12
13
  <tr>
@@ -7,6 +7,7 @@ exports[`subscriptions detail associations page renders correctly 1`] = `
7
7
  </h2>
8
8
  <table
9
9
  className="table"
10
+ ouiaId="subscription-info-table"
10
11
  >
11
12
  <tbody>
12
13
  <tr>
@@ -176,6 +177,7 @@ exports[`subscriptions detail associations page renders correctly 1`] = `
176
177
  </h2>
177
178
  <table
178
179
  className="table"
180
+ ouiaId="system-purpose-table"
179
181
  >
180
182
  <tbody>
181
183
  <tr>
@@ -37,6 +37,7 @@ exports[`subscriptions details page should render and contain appropiate compone
37
37
  <Nav
38
38
  bsClass="nav nav-tabs"
39
39
  justified={false}
40
+ ouiaId="subscription-details-nav"
40
41
  pullLeft={false}
41
42
  pullRight={false}
42
43
  stacked={false}
@@ -45,6 +46,7 @@ exports[`subscriptions details page should render and contain appropiate compone
45
46
  active={false}
46
47
  disabled={false}
47
48
  eventKey={1}
49
+ ouiaId="details-nav-item"
48
50
  >
49
51
  <div>
50
52
  Details
@@ -54,6 +56,7 @@ exports[`subscriptions details page should render and contain appropiate compone
54
56
  active={false}
55
57
  disabled={false}
56
58
  eventKey={2}
59
+ ouiaId="product-content-nav-item"
57
60
  >
58
61
  <div>
59
62
  Product Content
@@ -70,6 +73,7 @@ exports[`subscriptions details page should render and contain appropiate compone
70
73
  bsClass="tab"
71
74
  componentClass="div"
72
75
  mountOnEnter={false}
76
+ ouiaId="subscription-details-tab-content"
73
77
  unmountOnExit={false}
74
78
  >
75
79
  <TabPane
@@ -117,6 +117,7 @@ const NetworkSyncForm = ({
117
117
  { !validated && (
118
118
  <FormAlert>
119
119
  <Alert
120
+ ouiaId="cdn-configuration-form-alert"
120
121
  variant="danger"
121
122
  title={__('Username, Password, Organization Label, and SSL CA Content Credential must be provided together.')}
122
123
  aria-live="polite"
@@ -126,7 +127,7 @@ const NetworkSyncForm = ({
126
127
  )}
127
128
 
128
129
  <div id="update-hint-upstream-server" className="margin-top-16">
129
- <Text>
130
+ <Text ouiaId="upstream-server-text">
130
131
  <FormattedMessage
131
132
  id="cdn-configuration-type"
132
133
  defaultMessage={__('Red Hat content will be consumed from an {type}.')}
@@ -128,7 +128,7 @@ class ManageManifestModal extends Component {
128
128
 
129
129
  return (
130
130
  <ForemanModal id={MANAGE_MANIFEST_MODAL_ID} title={__('Manage Manifest')}>
131
- <Tabs id="manifest-history-tabs">
131
+ <Tabs id="manifest-history-tabs" ouiaId="manifest-history-tabs">
132
132
  {showManifestTab &&
133
133
  <Tab eventKey={1} title={__('Manifest')}>
134
134
  {showSubscriptionManifest &&
@@ -194,10 +194,10 @@ class ManageManifestModal extends Component {
194
194
  <ForemanModal title={__('Confirm delete manifest')} id={DELETE_MANIFEST_MODAL_ID}>
195
195
  <DeleteManifestModalText />
196
196
  <ForemanModal.Footer>
197
- <Button bsStyle="default" onClick={this.hideDeleteManifestModal}>
197
+ <Button ouiaId="cancel-button" bsStyle="default" onClick={this.hideDeleteManifestModal}>
198
198
  {__('Cancel')}
199
199
  </Button>
200
- <Button bsStyle="danger" onClick={this.deleteManifest}>
200
+ <Button ouiaId="delete-button" bsStyle="danger" onClick={this.deleteManifest}>
201
201
  {__('Delete')}
202
202
  </Button>
203
203
  </ForemanModal.Footer>
@@ -213,6 +213,7 @@ class ManageManifestModal extends Component {
213
213
  <Tab eventKey={2} title={__('Manifest History')}>
214
214
  <LoadingState loading={manifestHistory.loading} loadingText={__('Loading')}>
215
215
  <Table
216
+ ouiaId="manifest-history-table"
216
217
  rows={manifestHistory.results}
217
218
  columns={columns}
218
219
  emptyState={emptyStateData()}
@@ -234,7 +235,7 @@ class ManageManifestModal extends Component {
234
235
  }
235
236
  </Tabs>
236
237
  <ForemanModal.Footer>
237
- <Button bsStyle="primary" onClick={this.hideModal}>
238
+ <Button ouiaId="close-button" bsStyle="primary" onClick={this.hideModal}>
238
239
  {__('Close')}
239
240
  </Button>
240
241
  </ForemanModal.Footer>
@@ -65,6 +65,7 @@ const SimpleContentAccess = (props) => {
65
65
  <div id="manifest-toggle-sca-switch">
66
66
  <Switch
67
67
  id="simple-switch"
68
+ ouiaId="simple-switch"
68
69
  isChecked={isSimpleContentAccessEnabled}
69
70
  onChange={toggleSimpleContentAccess}
70
71
  isDisabled={!canToggleSimpleContentAccess}
@@ -220,7 +220,7 @@ class SubscriptionsPage extends Component {
220
220
  };
221
221
 
222
222
  const SCAAlert = (
223
- <Alert type={simpleContentAccess ? 'info' : 'warning'}>
223
+ <Alert ouiaId="sca-alert" type={simpleContentAccess ? 'info' : 'warning'}>
224
224
  <FormattedMessage
225
225
  id="sca-alert"
226
226
  values={{
@@ -132,6 +132,7 @@ class UpstreamSubscriptionsPage extends Component {
132
132
  <Row>
133
133
  <Col sm={12}>
134
134
  <Button
135
+ ouiaId="submit-button"
135
136
  style={{ marginTop: '10px', marginRight: '5px' }}
136
137
  bsStyle="primary"
137
138
  type="submit"
@@ -143,7 +144,7 @@ class UpstreamSubscriptionsPage extends Component {
143
144
  </Button>
144
145
 
145
146
  <LinkContainer to="/subscriptions" style={{ marginTop: '10px' }}>
146
- <Button>
147
+ <Button ouiaId="cancel-button">
147
148
  {__('Cancel')}
148
149
  </Button>
149
150
  </LinkContainer>
@@ -240,6 +241,7 @@ class UpstreamSubscriptionsPage extends Component {
240
241
  <Row>
241
242
  <Col sm={12}>
242
243
  <Table
244
+ ouiaId="upstream-subscriptions-table"
243
245
  rows={rows}
244
246
  columns={tableColumns}
245
247
  emptyState={emptyStateData()}
@@ -137,6 +137,7 @@ exports[`upstream subscriptions page should render 1`] = `
137
137
  }
138
138
  itemCount={2}
139
139
  onPaginationChange={[Function]}
140
+ ouiaId="upstream-subscriptions-table"
140
141
  pagination={
141
142
  Object {
142
143
  "page": 1,
@@ -190,6 +191,7 @@ exports[`upstream subscriptions page should render 1`] = `
190
191
  bsStyle="primary"
191
192
  disabled={true}
192
193
  onClick={[Function]}
194
+ ouiaId="submit-button"
193
195
  style={
194
196
  Object {
195
197
  "marginRight": "5px",
@@ -214,6 +216,7 @@ exports[`upstream subscriptions page should render 1`] = `
214
216
  bsClass="btn"
215
217
  bsStyle="default"
216
218
  disabled={false}
219
+ ouiaId="cancel-button"
217
220
  >
218
221
  Cancel
219
222
  </Button>
@@ -74,6 +74,7 @@ exports[`subscriptions page should render 1`] = `
74
74
  <Alert
75
75
  className=""
76
76
  onDismiss={null}
77
+ ouiaId="sca-alert"
77
78
  type="warning"
78
79
  >
79
80
  <FormattedMessage
@@ -270,7 +270,7 @@ class SubscriptionsTable extends Component {
270
270
  render() {
271
271
  return (
272
272
  <LoadingState {...this.getLoadingStateProps()}>
273
- <Table {...this.getTableProps()} />
273
+ <Table ouiaId="subscriptions-table" {...this.getTableProps()} />
274
274
  <Dialogs {...this.getDialogsProps()} />
275
275
  </LoadingState>
276
276
  );