katello 4.16.0 → 4.17.0.rc1

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

Potentially problematic release.


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

Files changed (562) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +5 -3
  3. data/app/assets/javascripts/katello/locale/bn/katello.js +82 -31
  4. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +82 -31
  5. data/app/assets/javascripts/katello/locale/ca/katello.js +82 -31
  6. data/app/assets/javascripts/katello/locale/cs/katello.js +82 -31
  7. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +83 -32
  8. data/app/assets/javascripts/katello/locale/de/katello.js +82 -31
  9. data/app/assets/javascripts/katello/locale/de_AT/katello.js +82 -31
  10. data/app/assets/javascripts/katello/locale/de_DE/katello.js +82 -31
  11. data/app/assets/javascripts/katello/locale/el/katello.js +82 -31
  12. data/app/assets/javascripts/katello/locale/en/katello.js +82 -31
  13. data/app/assets/javascripts/katello/locale/en_GB/katello.js +84 -33
  14. data/app/assets/javascripts/katello/locale/en_US/katello.js +82 -31
  15. data/app/assets/javascripts/katello/locale/es/katello.js +82 -31
  16. data/app/assets/javascripts/katello/locale/et_EE/katello.js +82 -31
  17. data/app/assets/javascripts/katello/locale/fr/katello.js +83 -32
  18. data/app/assets/javascripts/katello/locale/gl/katello.js +82 -31
  19. data/app/assets/javascripts/katello/locale/gu/katello.js +83 -32
  20. data/app/assets/javascripts/katello/locale/he_IL/katello.js +82 -31
  21. data/app/assets/javascripts/katello/locale/hi/katello.js +82 -31
  22. data/app/assets/javascripts/katello/locale/id/katello.js +82 -31
  23. data/app/assets/javascripts/katello/locale/it/katello.js +84 -33
  24. data/app/assets/javascripts/katello/locale/ja/katello.js +83 -32
  25. data/app/assets/javascripts/katello/locale/ka/katello.js +82 -31
  26. data/app/assets/javascripts/katello/locale/kn/katello.js +82 -31
  27. data/app/assets/javascripts/katello/locale/ko/katello.js +82 -31
  28. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +82 -31
  29. data/app/assets/javascripts/katello/locale/mr/katello.js +82 -31
  30. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +82 -31
  31. data/app/assets/javascripts/katello/locale/or/katello.js +82 -31
  32. data/app/assets/javascripts/katello/locale/pa/katello.js +82 -31
  33. data/app/assets/javascripts/katello/locale/pl/katello.js +83 -32
  34. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +82 -31
  35. data/app/assets/javascripts/katello/locale/pt/katello.js +82 -31
  36. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +82 -31
  37. data/app/assets/javascripts/katello/locale/ro/katello.js +82 -31
  38. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +82 -31
  39. data/app/assets/javascripts/katello/locale/ru/katello.js +84 -33
  40. data/app/assets/javascripts/katello/locale/sl/katello.js +82 -31
  41. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +83 -32
  42. data/app/assets/javascripts/katello/locale/ta/katello.js +82 -31
  43. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +82 -31
  44. data/app/assets/javascripts/katello/locale/te/katello.js +82 -31
  45. data/app/assets/javascripts/katello/locale/tr/katello.js +82 -31
  46. data/app/assets/javascripts/katello/locale/vi/katello.js +82 -31
  47. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +82 -31
  48. data/app/assets/javascripts/katello/locale/zh/katello.js +82 -31
  49. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +83 -32
  50. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +84 -33
  51. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +19 -3
  52. data/app/controllers/katello/api/v2/content_view_components_controller.rb +6 -6
  53. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +3 -0
  54. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +6 -0
  55. data/app/controllers/katello/api/v2/content_views_controller.rb +12 -1
  56. data/app/controllers/katello/api/v2/exports_controller.rb +3 -0
  57. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +12 -14
  58. data/app/controllers/katello/api/v2/organizations_controller.rb +10 -10
  59. data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +8 -2
  60. data/app/lib/actions/candlepin/environment/set_content.rb +2 -2
  61. data/app/lib/actions/helpers/rolling_cv_repos.rb +25 -0
  62. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +6 -1
  63. data/app/lib/actions/katello/content_view/add_rolling_repo_clone.rb +39 -0
  64. data/app/lib/actions/katello/content_view/create.rb +3 -0
  65. data/app/lib/actions/katello/content_view/refresh_rolling_repo.rb +40 -0
  66. data/app/lib/actions/katello/content_view/remove.rb +8 -4
  67. data/app/lib/actions/katello/content_view/remove_rolling_repo_clone.rb +28 -0
  68. data/app/lib/actions/katello/content_view/update.rb +8 -0
  69. data/app/lib/actions/katello/repository/check_matching_content.rb +1 -8
  70. data/app/lib/actions/katello/repository/import_upload.rb +5 -0
  71. data/app/lib/actions/katello/repository/sync.rb +8 -4
  72. data/app/lib/actions/katello/repository/upload_files.rb +7 -1
  73. data/app/lib/actions/pulp3/orchestration/orphan_cleanup/remove_orphans.rb +3 -2
  74. data/app/lib/actions/pulp3/orchestration/repository/trigger_update_repo_cert_guard.rb +1 -1
  75. data/app/lib/actions/pulp3/orphan_cleanup/delete_orphan_repository_versions.rb +8 -1
  76. data/app/lib/katello/errors.rb +8 -0
  77. data/app/lib/katello/validators/container_image_name_validator.rb +3 -2
  78. data/app/models/katello/authorization/repository.rb +11 -1
  79. data/app/models/katello/candlepin/repository_mapper.rb +1 -1
  80. data/app/models/katello/concerns/host_managed_extensions.rb +2 -2
  81. data/app/models/katello/concerns/pulp_database_unit.rb +12 -42
  82. data/app/models/katello/concerns/smart_proxy_extensions.rb +8 -0
  83. data/app/models/katello/content_view.rb +14 -1
  84. data/app/models/katello/content_view_component.rb +4 -0
  85. data/app/models/katello/content_view_environment.rb +1 -0
  86. data/app/models/katello/content_view_version.rb +3 -2
  87. data/app/models/katello/host/content_facet.rb +18 -5
  88. data/app/models/katello/product_content.rb +3 -1
  89. data/app/models/katello/repository.rb +3 -3
  90. data/app/services/katello/content_unit_indexer.rb +1 -1
  91. data/app/services/katello/pulp3/api/content_guard.rb +1 -1
  92. data/app/services/katello/pulp3/api/core.rb +6 -0
  93. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +58 -1
  94. data/app/services/katello/pulp3/smart_proxy_repository.rb +67 -3
  95. data/app/services/katello/smart_proxy_helper.rb +6 -1
  96. data/app/views/foreman/job_templates/flatpak_install.erb +10 -2
  97. data/app/views/foreman/job_templates/flatpak_login_action.erb +2 -5
  98. data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +15 -1
  99. data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +15 -1
  100. data/app/views/foreman/job_templates/install_group_-_katello_ansible_default.erb +15 -2
  101. data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb +21 -2
  102. data/app/views/foreman/job_templates/remove_group_-_katello_ansible_default.erb +15 -1
  103. data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb +20 -1
  104. data/app/views/foreman/job_templates/update_group_-_katello_ansible_default.erb +15 -2
  105. data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +17 -1
  106. data/app/views/katello/api/v2/activation_keys/base.json.rabl +1 -0
  107. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +2 -1
  108. data/app/views/katello/api/v2/content_facet/base.json.rabl +2 -0
  109. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +12 -0
  110. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  111. data/app/views/katello/api/v2/environments/show.json.rabl +14 -0
  112. data/app/views/katello/api/v2/hosts/base.json.rabl +1 -0
  113. data/app/views/katello/api/v2/organizations/show.json.rabl +2 -0
  114. data/app/views/katello/api/v2/repositories/base.json.rabl +2 -1
  115. data/db/migrate/20190930192813_add_pulp3_hrefs_to_content_types.rb +1 -1
  116. data/db/migrate/20241022122325_add_rolling_to_katello_content_views.rb +5 -0
  117. data/db/migrate/20241025151105_remove_pulp3_migrated_hrefs_from_content_tables.rb +1 -1
  118. data/db/migrate/20250215143303_drop_katello_yum_metadata_file.rb +5 -0
  119. data/db/migrate/20250409120843_fix_file_download_policy.rb +11 -0
  120. data/db/migrate/20250410155300_change_ansible_templates_category.rb +22 -0
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -0
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +90 -31
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +90 -31
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +90 -31
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +90 -31
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +93 -60
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +90 -31
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +90 -31
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +90 -31
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +94 -35
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +90 -31
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +93 -40
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +90 -31
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +254 -192
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +90 -31
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +90 -31
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +90 -31
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +90 -31
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +90 -31
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +90 -35
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +113 -52
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +93 -34
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +90 -31
  144. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +101 -40
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +90 -31
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +90 -31
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +90 -31
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +90 -31
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +90 -31
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +90 -31
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +90 -31
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +90 -31
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +93 -40
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +90 -31
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +90 -31
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +91 -34
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +90 -31
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +90 -31
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +90 -31
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +90 -31
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +90 -31
  162. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +90 -31
  163. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +90 -31
  164. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +90 -31
  165. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +90 -31
  166. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +99 -40
  167. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +92 -33
  168. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +14 -14
  169. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +3 -0
  170. data/lib/katello/engine.rb +9 -1
  171. data/lib/katello/repository_types/python.rb +1 -1
  172. data/lib/katello/tasks/repository.rake +1 -1
  173. data/lib/katello/version.rb +1 -1
  174. data/locale/action_names.rb +186 -0
  175. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  176. data/locale/bn/katello.po +82 -31
  177. data/locale/bn/katello.po.time_stamp +0 -0
  178. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  179. data/locale/bn_IN/katello.po +82 -31
  180. data/locale/bn_IN/katello.po.time_stamp +0 -0
  181. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  182. data/locale/ca/katello.po +82 -31
  183. data/locale/ca/katello.po.time_stamp +0 -0
  184. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  185. data/locale/cs/katello.po +82 -31
  186. data/locale/cs/katello.po.time_stamp +0 -0
  187. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  188. data/locale/cs_CZ/katello.po +83 -32
  189. data/locale/cs_CZ/katello.po.time_stamp +0 -0
  190. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  191. data/locale/de/katello.po +82 -31
  192. data/locale/de/katello.po.time_stamp +0 -0
  193. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  194. data/locale/de_AT/katello.po +82 -31
  195. data/locale/de_AT/katello.po.time_stamp +0 -0
  196. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  197. data/locale/de_DE/katello.po +82 -31
  198. data/locale/de_DE/katello.po.time_stamp +0 -0
  199. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  200. data/locale/el/katello.po +82 -31
  201. data/locale/el/katello.po.time_stamp +0 -0
  202. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  203. data/locale/en/katello.po +82 -31
  204. data/locale/en/katello.po.time_stamp +0 -0
  205. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  206. data/locale/en_GB/katello.po +84 -33
  207. data/locale/en_GB/katello.po.time_stamp +0 -0
  208. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  209. data/locale/en_US/katello.po +82 -31
  210. data/locale/en_US/katello.po.time_stamp +0 -0
  211. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  212. data/locale/es/katello.po +82 -31
  213. data/locale/es/katello.po.time_stamp +0 -0
  214. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  215. data/locale/et_EE/katello.po +82 -31
  216. data/locale/et_EE/katello.po.time_stamp +0 -0
  217. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  218. data/locale/fr/katello.po +83 -32
  219. data/locale/fr/katello.po.time_stamp +0 -0
  220. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  221. data/locale/gl/katello.po +82 -31
  222. data/locale/gl/katello.po.time_stamp +0 -0
  223. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  224. data/locale/gu/katello.po +84 -33
  225. data/locale/gu/katello.po.time_stamp +0 -0
  226. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  227. data/locale/he_IL/katello.po +82 -31
  228. data/locale/he_IL/katello.po.time_stamp +0 -0
  229. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  230. data/locale/hi/katello.po +82 -31
  231. data/locale/hi/katello.po.time_stamp +0 -0
  232. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  233. data/locale/id/katello.po +82 -31
  234. data/locale/id/katello.po.time_stamp +0 -0
  235. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  236. data/locale/it/katello.po +85 -34
  237. data/locale/it/katello.po.time_stamp +0 -0
  238. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  239. data/locale/ja/katello.po +83 -32
  240. data/locale/ja/katello.po.time_stamp +0 -0
  241. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  242. data/locale/ka/katello.po +82 -31
  243. data/locale/ka/katello.po.time_stamp +0 -0
  244. data/locale/katello.pot +1232 -1140
  245. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  246. data/locale/kn/katello.po +82 -31
  247. data/locale/kn/katello.po.time_stamp +0 -0
  248. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  249. data/locale/ko/katello.po +82 -31
  250. data/locale/ko/katello.po.time_stamp +0 -0
  251. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  252. data/locale/ml_IN/katello.po +82 -31
  253. data/locale/ml_IN/katello.po.time_stamp +0 -0
  254. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  255. data/locale/mr/katello.po +82 -31
  256. data/locale/mr/katello.po.time_stamp +0 -0
  257. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  258. data/locale/nl_NL/katello.po +82 -31
  259. data/locale/nl_NL/katello.po.time_stamp +0 -0
  260. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  261. data/locale/or/katello.po +82 -31
  262. data/locale/or/katello.po.time_stamp +0 -0
  263. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  264. data/locale/pa/katello.po +82 -31
  265. data/locale/pa/katello.po.time_stamp +0 -0
  266. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  267. data/locale/pl/katello.po +84 -33
  268. data/locale/pl/katello.po.time_stamp +0 -0
  269. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  270. data/locale/pl_PL/katello.po +82 -31
  271. data/locale/pl_PL/katello.po.time_stamp +0 -0
  272. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  273. data/locale/pt/katello.po +82 -31
  274. data/locale/pt/katello.po.time_stamp +0 -0
  275. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  276. data/locale/pt_BR/katello.po +82 -31
  277. data/locale/pt_BR/katello.po.time_stamp +0 -0
  278. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  279. data/locale/ro/katello.po +82 -31
  280. data/locale/ro/katello.po.time_stamp +0 -0
  281. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  282. data/locale/ro_RO/katello.po +82 -31
  283. data/locale/ro_RO/katello.po.time_stamp +0 -0
  284. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  285. data/locale/ru/katello.po +85 -34
  286. data/locale/ru/katello.po.time_stamp +0 -0
  287. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  288. data/locale/sl/katello.po +82 -31
  289. data/locale/sl/katello.po.time_stamp +0 -0
  290. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  291. data/locale/sv_SE/katello.po +84 -33
  292. data/locale/sv_SE/katello.po.time_stamp +0 -0
  293. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  294. data/locale/ta/katello.po +82 -31
  295. data/locale/ta/katello.po.time_stamp +0 -0
  296. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  297. data/locale/ta_IN/katello.po +82 -31
  298. data/locale/ta_IN/katello.po.time_stamp +0 -0
  299. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  300. data/locale/te/katello.po +82 -31
  301. data/locale/te/katello.po.time_stamp +0 -0
  302. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  303. data/locale/tr/katello.po +82 -31
  304. data/locale/tr/katello.po.time_stamp +0 -0
  305. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  306. data/locale/vi/katello.po +82 -31
  307. data/locale/vi/katello.po.time_stamp +0 -0
  308. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  309. data/locale/vi_VN/katello.po +82 -31
  310. data/locale/vi_VN/katello.po.time_stamp +0 -0
  311. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  312. data/locale/zh/katello.po +82 -31
  313. data/locale/zh/katello.po.time_stamp +0 -0
  314. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  315. data/locale/zh_CN/katello.po +83 -32
  316. data/locale/zh_CN/katello.po.time_stamp +0 -0
  317. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  318. data/locale/zh_TW/katello.po +85 -34
  319. data/locale/zh_TW/katello.po.time_stamp +0 -0
  320. data/webpack/ForemanColumnExtensions/index.js +12 -4
  321. data/webpack/components/ActivationKeysSearch/index.js +6 -7
  322. data/webpack/components/Bookmark/AddBookmarkModal.js +3 -3
  323. data/webpack/components/Bookmark/Bookmark.scss +3 -3
  324. data/webpack/components/Bookmark/index.js +7 -2
  325. data/webpack/components/EditableSwitch.js +1 -1
  326. data/webpack/components/EditableTextInput/EditableTextInput.js +1 -1
  327. data/webpack/components/EditableTextInput/editableTextInput.scss +1 -1
  328. data/webpack/components/Errata/index.js +1 -24
  329. data/webpack/components/Loading.js +10 -6
  330. data/webpack/components/Packages/index.js +2 -1
  331. data/webpack/components/SelectAllCheckbox/index.js +7 -3
  332. data/webpack/components/SelectableDropdown/SelectableDropdown.js +21 -3
  333. data/webpack/components/Table/EmptyStateMessage.js +12 -14
  334. data/webpack/components/Table/MainTable.js +8 -7
  335. data/webpack/components/Table/MainTable.scss +4 -4
  336. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +4 -1
  337. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +1 -1
  338. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +9 -6
  339. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +2 -1
  340. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +4 -1
  341. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +23 -6
  342. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +1 -1
  343. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +5 -3
  344. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.scss +3 -3
  345. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +1 -1
  346. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +25 -10
  347. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +5 -2
  348. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +2 -2
  349. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +5 -4
  350. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +6 -3
  351. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +19 -12
  352. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +1 -1
  353. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +1 -4
  354. data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +2 -4
  355. data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +1 -4
  356. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/HwPropertiesCard.test.js +63 -0
  357. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/ImageModeCard.test.js +73 -0
  358. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/InstalledProductsCard.test.js +45 -0
  359. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +12 -2
  360. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.scss +1 -1
  361. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.js +10 -13
  362. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.scss +1 -1
  363. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +46 -21
  364. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.scss +1 -1
  365. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +15 -7
  366. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +13 -3
  367. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.scss +1 -1
  368. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +34 -20
  369. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.scss +1 -1
  370. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +8 -6
  371. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +5 -3
  372. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.scss +1 -1
  373. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +12 -13
  374. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +16 -6
  375. data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsInstallModal.test.js +10 -5
  376. data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsTab.test.js +48 -22
  377. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +123 -47
  378. data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +14 -7
  379. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +10 -5
  380. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +41 -24
  381. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +50 -25
  382. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +50 -25
  383. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +3 -0
  384. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_Review.js +16 -2
  385. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_ReviewFooter.js +6 -2
  386. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +5 -1
  387. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_Review.js +16 -2
  388. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_ReviewFooter.js +6 -2
  389. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +15 -2
  390. data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +1 -1
  391. data/webpack/components/extensions/Hosts/BulkActions/__tests__/bulkChangeHostCVModal.test.js +2 -1
  392. data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +1 -1
  393. data/webpack/components/extensions/Hosts/ImageModeHostAlert.js +14 -0
  394. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +14 -17
  395. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -1
  396. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -1
  397. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +38 -49
  398. data/webpack/containers/Application/overrides.scss +7 -7
  399. data/webpack/ouia_id_check.js +15 -11
  400. data/webpack/redux/actions/RedHatRepositories/helpers.js +0 -2
  401. data/webpack/scenes/ActivationKeys/Details/__tests__/activationKeyDetails.test.js +12 -6
  402. data/webpack/scenes/ActivationKeys/Details/components/DeleteMenu.js +12 -2
  403. data/webpack/scenes/ActivationKeys/Details/components/EditModal.js +3 -3
  404. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +3 -1
  405. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +3 -1
  406. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +12 -6
  407. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +1 -1
  408. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +22 -7
  409. data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +2 -2
  410. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +1 -1
  411. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +6 -3
  412. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +25 -15
  413. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -6
  414. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +2 -2
  415. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +1 -1
  416. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +33 -7
  417. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +10 -5
  418. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +4 -2
  419. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +10 -8
  420. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +4 -2
  421. data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +5 -5
  422. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +8 -4
  423. data/webpack/scenes/Content/__tests__/contentTable.test.js +4 -2
  424. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -1
  425. data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +1 -0
  426. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +2 -1
  427. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +86 -31
  428. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.scss +10 -2
  429. data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -0
  430. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +10 -4
  431. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +3 -1
  432. data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +6 -6
  433. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +7 -2
  434. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +7 -2
  435. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +3 -3
  436. data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +1 -1
  437. data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +2 -1
  438. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +3 -2
  439. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +10 -8
  440. data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +2 -1
  441. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +16 -5
  442. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +19 -5
  443. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
  444. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +11 -2
  445. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/compositeCVDetails.fixtures.json +2 -1
  446. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +69 -27
  447. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/publishedContentViewDetails.fixtures.json +2 -1
  448. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +22 -29
  449. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +6 -2
  450. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +20 -7
  451. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +4 -2
  452. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +5 -2
  453. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +3 -1
  454. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +1 -1
  455. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +4 -2
  456. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +13 -1
  457. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +23 -7
  458. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +23 -5
  459. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +15 -3
  460. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +15 -3
  461. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -1
  462. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +6 -4
  463. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +11 -1
  464. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +4 -2
  465. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/matchContentModal.scss +1 -1
  466. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +2 -2
  467. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +4 -4
  468. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +18 -12
  469. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +7 -11
  470. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +81 -70
  471. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +1 -0
  472. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +4 -2
  473. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +52 -38
  474. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +9 -4
  475. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +18 -12
  476. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +1 -0
  477. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +1 -0
  478. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +1 -0
  479. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +2 -1
  480. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +77 -67
  481. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +1 -0
  482. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvPackageFilterDetail.fixtures.json +1 -0
  483. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +2 -2
  484. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +4 -2
  485. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +1 -1
  486. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +7 -5
  487. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +6 -3
  488. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
  489. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +3 -2
  490. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +3 -1
  491. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +2 -2
  492. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +3 -1
  493. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +3 -1
  494. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +4 -4
  495. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +11 -11
  496. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +15 -5
  497. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
  498. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +13 -3
  499. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +3 -1
  500. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +17 -13
  501. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +12 -7
  502. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +64 -7
  503. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +52 -21
  504. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +30 -16
  505. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +7 -7
  506. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +5 -3
  507. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +4 -2
  508. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +6 -3
  509. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +2 -1
  510. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +6 -6
  511. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +35 -4
  512. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  513. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetail.test.js +197 -0
  514. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetails.fixtures.json +82 -0
  515. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +3 -7
  516. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +2 -2
  517. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +6 -5
  518. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +3 -1
  519. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +15 -7
  520. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -4
  521. data/webpack/scenes/ContentViews/Table/ContentViewVersionCell.js +6 -4
  522. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +14 -3
  523. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +3 -0
  524. data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -0
  525. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +89 -2
  526. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +85 -14
  527. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
  528. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +20 -6
  529. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +4 -1
  530. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +11 -2
  531. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +27 -7
  532. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +2 -2
  533. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +6 -2
  534. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +4 -1
  535. data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +4 -2
  536. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +7 -6
  537. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +2 -2
  538. data/webpack/scenes/ContentViews/components/contentViewIcon.scss +16 -3
  539. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +6 -1
  540. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +3 -3
  541. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +2 -1
  542. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +5 -3
  543. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +3 -2
  544. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -1
  545. data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +1 -1
  546. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +1 -1
  547. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepositoryContent.test.js.snap +1 -1
  548. data/webpack/scenes/RedHatRepositories/index.scss +1 -1
  549. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +27 -7
  550. data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +51 -2
  551. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +2 -2
  552. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +14 -9
  553. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationForm.scss +1 -1
  554. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CustomCdnTypeForm.js +2 -2
  555. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +6 -6
  556. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +2 -1
  557. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CustomCdnTypeForm.test.js +2 -1
  558. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/ExportSyncForm.test.js +2 -1
  559. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/NetworkSyncForm.test.js +2 -1
  560. metadata +122 -41
  561. data/app/models/katello/yum_metadata_file.rb +0 -22
  562. data/app/services/katello/pulp3/yum_metadata_file.rb +0 -20
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
2
+ import { renderWithRedux, patientlyWaitFor, fireEvent, act } from 'react-testing-lib-wrapper';
3
3
  import * as hooks from 'foremanReact/components/PF4/TableIndexPage/Table/TableHooks';
4
4
  import { nockInstance, assertNockRequest, mockForemanAutocomplete } from '../../../../../test-utils/nockWrapper';
5
5
  import { foremanApi } from '../../../../../services/api';
@@ -79,7 +79,8 @@ test('Can call API for packages and show on screen on page load', async (done) =
79
79
  await patientlyWaitFor(() => expect(getAllByText(firstPackage.name)[0]).toBeInTheDocument());
80
80
  // Assert request was made and completed, see helper function
81
81
  assertNockRequest(autocompleteScope);
82
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
82
+ assertNockRequest(scope);
83
+ act(done); // Pass jest callback to confirm test is done
83
84
  });
84
85
 
85
86
  test('Can handle no packages being present', async (done) => {
@@ -105,7 +106,8 @@ test('Can handle no packages being present', async (done) => {
105
106
  await patientlyWaitFor(() => expect(queryByText('This host does not have any packages.')).toBeInTheDocument());
106
107
  // Assert request was made and completed, see helper function
107
108
  assertNockRequest(autocompleteScope);
108
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
109
+ assertNockRequest(scope);
110
+ act(done); // Pass jest callback to confirm test is done
109
111
  });
110
112
 
111
113
  test('Can filter by package status', async (done) => {
@@ -145,7 +147,8 @@ test('Can filter by package status', async (done) => {
145
147
 
146
148
  assertNockRequest(autocompleteScope);
147
149
  assertNockRequest(scope);
148
- assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
150
+ assertNockRequest(scope2);
151
+ act(done); // Pass jest callback to confirm test is done
149
152
  });
150
153
 
151
154
  test('Can upgrade a package via remote execution', async (done) => {
@@ -191,17 +194,20 @@ test('Can upgrade a package via remote execution', async (done) => {
191
194
  expect(getByText('coreutils')).toBeInTheDocument();
192
195
  });
193
196
 
194
- const kebabDropdown = getByLabelText('Actions');
197
+ const kebabDropdown = getByLabelText('Kebab toggle');
195
198
  kebabDropdown.click();
196
199
 
200
+ await patientlyWaitFor(() => expect(getByText('Upgrade via remote execution')).toBeInTheDocument());
197
201
  const rexAction = getByText('Upgrade via remote execution');
198
- await patientlyWaitFor(() => expect(rexAction).toBeInTheDocument());
199
- fireEvent.click(rexAction);
202
+ await act(async () => {
203
+ fireEvent.click(rexAction);
204
+ });
200
205
 
201
206
  assertNockRequest(autocompleteScope);
202
207
  assertNockRequest(scope);
203
208
  assertNockRequest(statusScope);
204
209
  assertNockRequest(upgradeScope, done);
210
+ act(done);
205
211
  });
206
212
 
207
213
  test('Can upgrade a package via customized remote execution', async (done) => {
@@ -235,7 +241,7 @@ test('Can upgrade a package via customized remote execution', async (done) => {
235
241
  expect(getByText('coreutils')).toBeInTheDocument();
236
242
  });
237
243
 
238
- const kebabDropdown = getByLabelText('Actions');
244
+ const kebabDropdown = getByLabelText('Kebab toggle');
239
245
  kebabDropdown.click();
240
246
 
241
247
  const rexAction = getByText('Upgrade via customized remote execution');
@@ -247,12 +253,14 @@ test('Can upgrade a package via customized remote execution', async (done) => {
247
253
  'href',
248
254
  `/job_invocations/new?feature=${feature}&search=name%20%5E%20(${hostname})&inputs%5Bpackage%5D=${packageName}`,
249
255
  );
250
-
251
- fireEvent.click(rexAction);
256
+ await act(async () => {
257
+ fireEvent.click(rexAction);
258
+ });
252
259
 
253
260
  assertNockRequest(autocompleteScope);
254
261
  assertNockRequest(scope);
255
262
  assertNockRequest(statusScope, done);
263
+ act(done);
256
264
  });
257
265
 
258
266
  test('Can remove a package via remote execution', async (done) => {
@@ -283,13 +291,14 @@ test('Can remove a package via remote execution', async (done) => {
283
291
 
284
292
  await patientlyWaitFor(() => expect(getAllByText(firstPackage.name)[0]).toBeInTheDocument());
285
293
 
286
- const kebabDropdown = getByLabelText('Actions');
287
- kebabDropdown.click();
294
+ const kebabDropdown = getByLabelText('Kebab toggle');
295
+ fireEvent.click(kebabDropdown);
296
+ await patientlyWaitFor(() => expect(getByText('Remove')).toBeInTheDocument());
288
297
 
289
298
  const rexAction = getByText('Remove');
290
- await patientlyWaitFor(() => expect(rexAction).toBeInTheDocument());
291
- fireEvent.click(rexAction);
292
-
299
+ await act(async () => {
300
+ fireEvent.click(rexAction);
301
+ });
293
302
  assertNockRequest(autocompleteScope);
294
303
  assertNockRequest(scope);
295
304
  assertNockRequest(removeScope, done);
@@ -336,11 +345,13 @@ test('Can bulk remove a package via remote execution', async (done) => {
336
345
 
337
346
  const rexAction = getByText('Remove');
338
347
  await patientlyWaitFor(() => expect(rexAction).toBeInTheDocument());
339
- fireEvent.click(rexAction);
340
-
348
+ await act(async () => {
349
+ fireEvent.click(rexAction);
350
+ });
341
351
  assertNockRequest(autocompleteScope);
342
352
  assertNockRequest(scope);
343
353
  assertNockRequest(removeScope, done);
354
+ act(done);
344
355
  });
345
356
 
346
357
  test('Can bulk upgrade via remote execution', async (done) => {
@@ -381,14 +392,16 @@ test('Can bulk upgrade via remote execution', async (done) => {
381
392
 
382
393
  const upgradeDropdown = getAllByRole('button', { name: 'Select' })[1];
383
394
  fireEvent.click(upgradeDropdown);
384
-
385
395
  const rexAction = getByLabelText('bulk_upgrade_rex');
386
396
  expect(rexAction).toBeInTheDocument();
387
- fireEvent.click(rexAction);
397
+ await act(async () => {
398
+ fireEvent.click(rexAction);
399
+ });
388
400
 
389
401
  assertNockRequest(autocompleteScope);
390
402
  assertNockRequest(scope);
391
- assertNockRequest(upgradeScope, done);
403
+ assertNockRequest(upgradeScope);
404
+ act(done);
392
405
  });
393
406
 
394
407
  test('Can bulk upgrade via customized remote execution', async (done) => {
@@ -427,7 +440,8 @@ test('Can bulk upgrade via customized remote execution', async (done) => {
427
440
  expect(rexAction).toHaveAttribute('href', job);
428
441
 
429
442
  assertNockRequest(autocompleteScope);
430
- assertNockRequest(scope, done);
443
+ assertNockRequest(scope);
444
+ act(done);
431
445
  });
432
446
 
433
447
  test('Upgrade is disabled when there are non-upgradable packages selected', async (done) => {
@@ -457,7 +471,8 @@ test('Upgrade is disabled when there are non-upgradable packages selected', asyn
457
471
  expect(upgradeDropdown).toHaveAttribute('disabled');
458
472
 
459
473
  assertNockRequest(autocompleteScope);
460
- assertNockRequest(scope, done);
474
+ assertNockRequest(scope);
475
+ act(done);
461
476
  });
462
477
 
463
478
  test('Remove is disabled when in select all mode', async (done) => {
@@ -483,7 +498,8 @@ test('Remove is disabled when in select all mode', async (done) => {
483
498
  expect(removeButton).toHaveAttribute('aria-disabled', 'true');
484
499
 
485
500
  assertNockRequest(autocompleteScope);
486
- assertNockRequest(scope, done);
501
+ assertNockRequest(scope);
502
+ act(done);
487
503
  });
488
504
 
489
505
  test('Sets initial search query from url params', async (done) => {
@@ -504,6 +520,7 @@ test('Sets initial search query from url params', async (done) => {
504
520
  expect(queryByText(secondPackage.name)).not.toBeInTheDocument();
505
521
 
506
522
  assertNockRequest(autocompleteScope);
507
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
523
+ assertNockRequest(scope);
524
+ act(done); // Pass jest callback to confirm test is done
508
525
  });
509
526
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { renderWithRedux, patientlyWaitFor, within, fireEvent } from 'react-testing-lib-wrapper';
2
+ import { renderWithRedux, patientlyWaitFor, within, fireEvent, act } from 'react-testing-lib-wrapper';
3
3
  import { nockInstance, assertNockRequest, mockAutocomplete } from '../../../../../test-utils/nockWrapper';
4
4
  import katelloApi, { foremanApi } from '../../../../../services/api';
5
5
  import { REPOSITORY_SETS_KEY } from '../RepositorySetsTab/RepositorySetsConstants';
@@ -83,7 +83,8 @@ test('Can call API for repository sets and show basic table', async (done) => {
83
83
  // Assert that the repository sets are now showing on the screen, but wait for them to appear.
84
84
  await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
85
85
  assertNockRequest(autocompleteScope);
86
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
86
+ assertNockRequest(scope);
87
+ done(); // Pass jest callback to confirm test is done
87
88
  });
88
89
 
89
90
  test('Can handle no repository sets being present', async (done) => {
@@ -108,7 +109,8 @@ test('Can handle no repository sets being present', async (done) => {
108
109
  await patientlyWaitFor(() => expect(queryByText('No repository sets to show.')).toBeInTheDocument());
109
110
  // Assert request was made and completed, see helper function
110
111
  assertNockRequest(autocompleteScope);
111
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
112
+ assertNockRequest(scope);
113
+ done(); // Pass jest callback to confirm test is done
112
114
  });
113
115
 
114
116
  test('Toggle Group shows if it\'s not the default content view or library enviroment', async (done) => {
@@ -127,7 +129,8 @@ test('Toggle Group shows if it\'s not the default content view or library enviro
127
129
  await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
128
130
  expect(queryByLabelText('Limit to environment')).toBeInTheDocument();
129
131
  assertNockRequest(autocompleteScope);
130
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
132
+ assertNockRequest(scope);
133
+ done(); // Pass jest callback to confirm test is done
131
134
  });
132
135
 
133
136
  test('Toggle Group shows if it\'s the default content view but non-library environment', async (done) => {
@@ -151,7 +154,8 @@ test('Toggle Group shows if it\'s the default content view but non-library envir
151
154
  await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
152
155
  expect(queryByLabelText('Limit to environment')).toBeInTheDocument();
153
156
  assertNockRequest(autocompleteScope);
154
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
157
+ assertNockRequest(scope);
158
+ done(); // Pass jest callback to confirm test is done
155
159
  });
156
160
 
157
161
  test('Toggle Group shows if it\'s the library environment but a non-default content view', async (done) => {
@@ -174,7 +178,8 @@ test('Toggle Group shows if it\'s the library environment but a non-default cont
174
178
  await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
175
179
  expect(queryByLabelText('Limit to environment')).toBeInTheDocument();
176
180
  assertNockRequest(autocompleteScope);
177
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
181
+ assertNockRequest(scope);
182
+ done(); // Pass jest callback to confirm test is done
178
183
  });
179
184
 
180
185
  test('Toggle Group does not show if it\'s the library environment and default content view', async (done) => {
@@ -199,7 +204,8 @@ test('Toggle Group does not show if it\'s the library environment and default co
199
204
  await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
200
205
  expect(queryByLabelText('Limit to environment')).not.toBeInTheDocument();
201
206
  assertNockRequest(autocompleteScope);
202
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
207
+ assertNockRequest(scope);
208
+ done(); // Pass jest callback to confirm test is done
203
209
  });
204
210
 
205
211
  test('Can toggle with the Toggle Group ', async (done) => {
@@ -221,7 +227,8 @@ test('Can toggle with the Toggle Group ', async (done) => {
221
227
  expect(queryByLabelText('Limit to environment')).toHaveAttribute('aria-pressed', 'true');
222
228
  expect(queryByLabelText('No limit')).toHaveAttribute('aria-pressed', 'false');
223
229
  assertNockRequest(autocompleteScope);
224
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
230
+ assertNockRequest(scope);
231
+ done(); // Pass jest callback to confirm test is done
225
232
  });
226
233
 
227
234
  test('Can override to disabled', async (done) => {
@@ -244,9 +251,10 @@ test('Can override to disabled', async (done) => {
244
251
  expect(getAllByText('Enabled')).toHaveLength(2);
245
252
  expect(getAllByText('Disabled')).toHaveLength(1);
246
253
  // Find the first action menu and click it
247
- const actionMenu = getAllByLabelText('Actions')[0].closest('button');
248
- fireEvent.click(actionMenu);
249
-
254
+ const actionMenu = getAllByLabelText('Kebab toggle')[0].closest('button');
255
+ await act(async () => {
256
+ fireEvent.click(actionMenu);
257
+ });
250
258
  const overrideMenuItem = getByText('Override to disabled');
251
259
  expect(overrideMenuItem).toBeInTheDocument();
252
260
  fireEvent.click(overrideMenuItem);
@@ -259,7 +267,8 @@ test('Can override to disabled', async (done) => {
259
267
 
260
268
  assertNockRequest(autocompleteScope);
261
269
  assertNockRequest(scope);
262
- assertNockRequest(contentOverrideScope, done); // Pass jest callback to confirm test is done
270
+ assertNockRequest(contentOverrideScope);
271
+ done(); // Pass jest callback to confirm test is done
263
272
  });
264
273
 
265
274
  test('Can override to enabled', async (done) => {
@@ -284,8 +293,10 @@ test('Can override to enabled', async (done) => {
284
293
  expect(getAllByText('Enabled')).toHaveLength(2);
285
294
  expect(getAllByText('Disabled')).toHaveLength(1);
286
295
  // The second item is overridden to disabled; we're going to override to enabled
287
- const actionMenu = getAllByLabelText('Actions')[1].closest('button');
288
- fireEvent.click(actionMenu);
296
+ const actionMenu = getAllByLabelText('Kebab toggle')[1].closest('button');
297
+ await act(async () => {
298
+ fireEvent.click(actionMenu);
299
+ });
289
300
 
290
301
  const overrideMenuItem = getByText('Override to enabled');
291
302
  expect(overrideMenuItem).toBeInTheDocument();
@@ -298,7 +309,8 @@ test('Can override to enabled', async (done) => {
298
309
 
299
310
  assertNockRequest(autocompleteScope);
300
311
  assertNockRequest(scope);
301
- assertNockRequest(contentOverrideScope, done); // Pass jest callback to confirm test is done
312
+ assertNockRequest(contentOverrideScope);
313
+ done(); // Pass jest callback to confirm test is done
302
314
  });
303
315
 
304
316
  test('Can reset to default', async (done) => {
@@ -323,8 +335,10 @@ test('Can reset to default', async (done) => {
323
335
  expect(getAllByText('Disabled')).toHaveLength(1);
324
336
 
325
337
  // The second item is overridden to disabled but would normally be enabled; we're going to reset
326
- const actionMenu = getAllByLabelText('Actions')[1].closest('button');
327
- fireEvent.click(actionMenu);
338
+ const actionMenu = getAllByLabelText('Kebab toggle')[1].closest('button');
339
+ await act(async () => {
340
+ fireEvent.click(actionMenu);
341
+ });
328
342
 
329
343
  const overrideMenuItem = getByText('Reset to default');
330
344
  expect(overrideMenuItem).toBeInTheDocument();
@@ -337,7 +351,8 @@ test('Can reset to default', async (done) => {
337
351
 
338
352
  assertNockRequest(autocompleteScope);
339
353
  assertNockRequest(scope);
340
- assertNockRequest(contentOverrideScope, done); // Pass jest callback to confirm test is done
354
+ assertNockRequest(contentOverrideScope);
355
+ done(); // Pass jest callback to confirm test is done
341
356
  });
342
357
 
343
358
  test('Can override in bulk', async (done) => {
@@ -358,14 +373,17 @@ test('Can override in bulk', async (done) => {
358
373
  getByLabelText('Select row 0').click();
359
374
  getByLabelText('Select row 1').click();
360
375
  const actionMenu = getByLabelText('bulk_actions');
361
- actionMenu.click();
376
+ await act(async () => {
377
+ fireEvent.click(actionMenu);
378
+ });
362
379
  const resetToDefault = queryByText('Reset to default');
363
380
  expect(resetToDefault).toBeInTheDocument();
364
381
  resetToDefault.click();
365
382
 
366
383
  assertNockRequest(autocompleteScope);
367
384
  assertNockRequest(scope);
368
- assertNockRequest(contentOverrideScope, done); // Pass jest callback to confirm test is done});
385
+ assertNockRequest(contentOverrideScope);
386
+ done(); // Pass jest callback to confirm test is done});
369
387
  });
370
388
  test('Can override in bulk when limited to environment', async (done) => {
371
389
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
@@ -391,14 +409,17 @@ test('Can override in bulk when limited to environment', async (done) => {
391
409
  await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
392
410
  getByLabelText('Select all').click();
393
411
  const actionMenu = getByLabelText('bulk_actions');
394
- actionMenu.click();
412
+ await act(async () => {
413
+ fireEvent.click(actionMenu);
414
+ });
395
415
  const resetToDefault = queryByText('Reset to default');
396
416
  expect(resetToDefault).toBeInTheDocument();
397
417
  resetToDefault.click();
398
418
 
399
419
  assertNockRequest(autocompleteScope);
400
420
  assertNockRequest(scope);
401
- assertNockRequest(contentOverrideScope, done);
421
+ assertNockRequest(contentOverrideScope);
422
+ done();
402
423
  });
403
424
 
404
425
  test('Can filter by status', async (done) => {
@@ -422,7 +443,9 @@ test('Can filter by status', async (done) => {
422
443
  const statusContainer = queryByLabelText('select Status container', { ignore: 'th' });
423
444
  const statusDropdown = within(statusContainer).queryByText('Status');
424
445
  expect(statusDropdown).toBeInTheDocument();
425
- fireEvent.click(statusDropdown);
446
+ await act(async () => {
447
+ fireEvent.click(statusDropdown);
448
+ });
426
449
  const overridden = getByRole('option', { name: 'select Overridden' });
427
450
  fireEvent.click(overridden);
428
451
  await patientlyWaitFor(() => {
@@ -430,7 +453,8 @@ test('Can filter by status', async (done) => {
430
453
  });
431
454
  assertNockRequest(autocompleteScope);
432
455
  assertNockRequest(scope);
433
- assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
456
+ assertNockRequest(scope2);
457
+ done(); // Pass jest callback to confirm test is done
434
458
  });
435
459
 
436
460
  test('Can display restrictions as labels', async (done) => {
@@ -448,5 +472,6 @@ test('Can display restrictions as labels', async (done) => {
448
472
  expect(secondRepoSet.archRestricted).not.toBeNull();
449
473
  expect(getByText(secondRepoSet.archRestricted)).toBeInTheDocument();
450
474
  assertNockRequest(autocompleteScope);
451
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
475
+ assertNockRequest(scope);
476
+ done(); // Pass jest callback to confirm test is done
452
477
  });
@@ -49,7 +49,7 @@ const renderOptions = isTracerInstalled => ({ // sets initial Redux state
49
49
  },
50
50
  });
51
51
 
52
- const actionMenuToTheRightOf = node => node.nextElementSibling.firstElementChild.firstElementChild;
52
+ const actionMenuToTheRightOf = node => node.nextElementSibling.firstElementChild;
53
53
 
54
54
  const hostTraces = foremanApi.getApiUrl('/hosts/1/traces');
55
55
  const autocompleteUrl = '/hosts/1/traces/auto_complete_search';
@@ -80,7 +80,8 @@ describe('With tracer installed', () => {
80
80
  await patientlyWaitFor(() => expect(queryByText(firstTrace.application)).toBeInTheDocument());
81
81
  // Assert request was made and completed, see helper function
82
82
  assertNockRequest(autocompleteScope);
83
- assertNockRequest(scope, done);
83
+ assertNockRequest(scope);
84
+ done();
84
85
  });
85
86
 
86
87
  test('Can handle no traces being present', async (done) => {
@@ -99,7 +100,8 @@ describe('With tracer installed', () => {
99
100
  await patientlyWaitFor(() => expect(queryByText('No applications to restart')).toBeInTheDocument());
100
101
  // Assert request was made and completed, see helper function
101
102
  assertNockRequest(autocompleteScope);
102
- assertNockRequest(scope, done);
103
+ assertNockRequest(scope);
104
+ done();
103
105
  });
104
106
 
105
107
  test('Can bulk restart traces via Restart App button', async (done) => {
@@ -137,7 +139,8 @@ describe('With tracer installed', () => {
137
139
 
138
140
  assertNockRequest(autocompleteScope);
139
141
  assertNockRequest(resolveTracesScope);
140
- assertNockRequest(scope, done);
142
+ assertNockRequest(scope);
143
+ done();
141
144
  });
142
145
 
143
146
  test('Warns you when one of the selected traces requires reboot', async (done) => {
@@ -167,7 +170,8 @@ describe('With tracer installed', () => {
167
170
  expect(queryByText('At least one of the selected items requires the host to reboot')).toBeInTheDocument();
168
171
  });
169
172
  assertNockRequest(autocompleteScope);
170
- assertNockRequest(scope, done);
173
+ assertNockRequest(scope);
174
+ done();
171
175
  });
172
176
 
173
177
  test('Warns about reboot when using select all', async (done) => {
@@ -197,7 +201,8 @@ describe('With tracer installed', () => {
197
201
  expect(queryByText('At least one of the selected items requires the host to reboot')).toBeInTheDocument();
198
202
  });
199
203
  assertNockRequest(autocompleteScope);
200
- assertNockRequest(scope, done);
204
+ assertNockRequest(scope);
205
+ done();
201
206
  });
202
207
 
203
208
  test('Can bulk restart traces via remote execution', async (done) => {
@@ -227,14 +232,18 @@ describe('With tracer installed', () => {
227
232
  fireEvent.click(traceCheckbox);
228
233
  expect(traceCheckbox.checked).toEqual(true);
229
234
  const actionMenu = getByLabelText('bulk_actions');
230
- actionMenu.click();
235
+
236
+ await act(async () => {
237
+ actionMenu.click();
238
+ });
231
239
  const viaRexAction = queryByText('Restart via remote execution');
232
240
  expect(viaRexAction).toBeInTheDocument();
233
241
  viaRexAction.click();
234
242
 
235
243
  assertNockRequest(autocompleteScope);
236
244
  assertNockRequest(resolveTracesScope);
237
- assertNockRequest(scope, done);
245
+ assertNockRequest(scope);
246
+ done();
238
247
  });
239
248
 
240
249
  test('Can select all, exclude and bulk restart traces via remote execution', async (done) => {
@@ -268,17 +277,23 @@ describe('With tracer installed', () => {
268
277
 
269
278
 
270
279
  const selectAllCheckbox = getByLabelText('Select all');
271
- fireEvent.click(selectAllCheckbox);
280
+
281
+ await act(async () => {
282
+ fireEvent.click(selectAllCheckbox);
283
+ });
272
284
  expect(traceCheckbox.checked).toEqual(true);
273
285
 
274
286
  fireEvent.click(getByLabelText('Select row 0')); // de select
275
287
  fireEvent.click(getByLabelText('Select row 2')); // de select
276
288
 
277
- fireEvent.click(getByText('Reboot host'));
289
+ await act(async () => {
290
+ fireEvent.click(getByText('Reboot host'));
291
+ });
278
292
 
279
293
  assertNockRequest(autocompleteScope);
280
294
  assertNockRequest(resolveTracesScope);
281
- assertNockRequest(scope, done);
295
+ assertNockRequest(scope);
296
+ done();
282
297
  });
283
298
 
284
299
  test('Can restart a single trace via remote execution', async (done) => {
@@ -301,20 +316,23 @@ describe('With tracer installed', () => {
301
316
  await patientlyWaitFor(() => {
302
317
  const traceNameNode = getByText(firstTrace.helper);
303
318
  traceActionMenu = actionMenuToTheRightOf(traceNameNode);
304
- expect(traceActionMenu).toHaveAttribute('aria-label', 'Actions');
319
+ expect(traceActionMenu).toHaveAttribute('aria-label', 'Kebab toggle');
320
+ });
321
+ await act(async () => {
322
+ traceActionMenu.click();
305
323
  });
306
- traceActionMenu.click();
307
-
308
324
  let viaRexAction;
309
325
  await patientlyWaitFor(() => {
310
326
  viaRexAction = getByText('Restart via remote execution');
311
327
  expect(viaRexAction).toBeInTheDocument();
312
328
  });
313
- viaRexAction.click();
314
-
329
+ await act(async () => {
330
+ viaRexAction.click();
331
+ });
315
332
  assertNockRequest(autocompleteScope);
316
333
  assertNockRequest(resolveTracesScope);
317
- assertNockRequest(scope, done);
334
+ assertNockRequest(scope);
335
+ done();
318
336
  });
319
337
 
320
338
  test('Can restart a single trace via customized remote execution', async (done) => {
@@ -334,10 +352,11 @@ describe('With tracer installed', () => {
334
352
  await patientlyWaitFor(() => {
335
353
  const traceNameNode = getByText(firstTrace.helper);
336
354
  traceActionMenu = actionMenuToTheRightOf(traceNameNode);
337
- expect(traceActionMenu).toHaveAttribute('aria-label', 'Actions');
355
+ expect(traceActionMenu).toHaveAttribute('aria-label', 'Kebab toggle');
356
+ });
357
+ await act(async () => {
358
+ fireEvent.click(traceActionMenu);
338
359
  });
339
- fireEvent.click(traceActionMenu);
340
-
341
360
  let viaCustomizedRexAction;
342
361
  await patientlyWaitFor(() => {
343
362
  viaCustomizedRexAction = getByText('Restart via customized remote execution');
@@ -349,7 +368,8 @@ describe('With tracer installed', () => {
349
368
  );
350
369
 
351
370
  assertNockRequest(autocompleteScope);
352
- assertNockRequest(scope, done);
371
+ assertNockRequest(scope);
372
+ done();
353
373
  });
354
374
 
355
375
  test('Can bulk restart traces via customized remote execution', async (done) => {
@@ -372,7 +392,9 @@ describe('With tracer installed', () => {
372
392
  expect(traceCheckbox.checked).toEqual(true);
373
393
 
374
394
  const actionMenu = getByLabelText('bulk_actions');
375
- fireEvent.click(actionMenu);
395
+ await act(async () => {
396
+ fireEvent.click(actionMenu);
397
+ });
376
398
  const viaCustomizedRexAction = queryByText('Restart via customized remote execution');
377
399
 
378
400
  expect(viaCustomizedRexAction).toBeInTheDocument();
@@ -382,7 +404,8 @@ describe('With tracer installed', () => {
382
404
  );
383
405
 
384
406
  assertNockRequest(autocompleteScope);
385
- assertNockRequest(scope, done);
407
+ assertNockRequest(scope);
408
+ done();
386
409
  });
387
410
 
388
411
  describe('Remote execution URL helper logic', () => {
@@ -410,7 +433,8 @@ describe('With tracer installed', () => {
410
433
  expect(traceCheckbox.disabled).toEqual(true);
411
434
 
412
435
  assertNockRequest(autocompleteScope);
413
- assertNockRequest(scope, done);
436
+ assertNockRequest(scope);
437
+ done();
414
438
  });
415
439
  });
416
440
  });
@@ -453,7 +477,8 @@ describe('Without tracer installed', () => {
453
477
  fireEvent.click(enableTracesModalButton);
454
478
  expect(queryByText('via remote execution')).not.toBeInTheDocument();
455
479
 
456
- assertNockRequest(jobInvocationScope, done);
480
+ assertNockRequest(jobInvocationScope);
481
+ done();
457
482
  });
458
483
 
459
484
  test('Detects if tracer package is not available to install', async () => {
@@ -24,3 +24,6 @@ export const hasRequiredPermissions = (requiredPermissions = [], userPermissions
24
24
 
25
25
  export const missingRequiredPermissions = (requiredPermissions = [], userPermissions) =>
26
26
  !hasRequiredPermissions(requiredPermissions, userPermissions);
27
+
28
+ export const hostIsImageMode = ({ hostDetails }) =>
29
+ hostDetails?.content_facet_attributes?.bootc_booted_image;
@@ -1,8 +1,22 @@
1
1
  import React, { useContext, useState } from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
3
  import { FormattedMessage } from 'react-intl';
4
- import { TreeView, Button, Text, TextContent, TextVariants, Flex, FlexItem, Dropdown, DropdownItem, DropdownToggle } from '@patternfly/react-core';
5
- import { useWizardContext } from '@patternfly/react-core/next';
4
+ import {
5
+ TreeView,
6
+ Button,
7
+ Text,
8
+ TextContent,
9
+ TextVariants,
10
+ Flex,
11
+ FlexItem,
12
+ useWizardContext,
13
+ } from '@patternfly/react-core';
14
+ import {
15
+ Dropdown,
16
+ DropdownItem,
17
+ DropdownToggle,
18
+ } from '@patternfly/react-core/deprecated';
19
+
6
20
  import { CaretDownIcon } from '@patternfly/react-icons';
7
21
  import { BulkErrataWizardContext } from './BulkErrataWizard';
8
22
 
@@ -1,7 +1,11 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
- import { Button } from '@patternfly/react-core';
4
- import { WizardFooterWrapper, useWizardContext } from '@patternfly/react-core/next';
3
+ import {
4
+ Button,
5
+ WizardFooterWrapper,
6
+ useWizardContext,
7
+ } from '@patternfly/react-core';
8
+
5
9
  import { BulkErrataWizardContext } from './BulkErrataWizard';
6
10
  import { dropdownOptions } from './04_Review';
7
11
  import { errataInstallUrl } from '../../../HostDetails/Tabs/customizedRexUrlHelpers';
@@ -1,5 +1,9 @@
1
1
  import React, { useState, createContext, useContext } from 'react';
2
- import { Wizard, WizardHeader, WizardStep } from '@patternfly/react-core/next';
2
+ import {
3
+ Wizard,
4
+ WizardHeader,
5
+ WizardStep,
6
+ } from '@patternfly/react-core';
3
7
  import { translate as __ } from 'foremanReact/common/I18n';
4
8
  import { useForemanModal } from 'foremanReact/components/ForemanModal/ForemanModalHooks';
5
9
  import { useBulkSelect } from 'foremanReact/components/PF4/TableIndexPage/Table/TableHooks';
@@ -1,8 +1,22 @@
1
1
  import React, { useContext, useState } from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
3
  import { FormattedMessage } from 'react-intl';
4
- import { TreeView, Button, Text, TextContent, TextVariants, Flex, FlexItem, Dropdown, DropdownItem, DropdownToggle } from '@patternfly/react-core';
5
- import { useWizardContext } from '@patternfly/react-core/next';
4
+ import {
5
+ TreeView,
6
+ Button,
7
+ Text,
8
+ TextContent,
9
+ TextVariants,
10
+ Flex,
11
+ FlexItem,
12
+ useWizardContext, /* data-codemods */
13
+ } from '@patternfly/react-core';
14
+ import {
15
+ Dropdown,
16
+ DropdownItem,
17
+ DropdownToggle,
18
+ } from '@patternfly/react-core/deprecated';
19
+
6
20
  import { CaretDownIcon } from '@patternfly/react-icons';
7
21
  import { BulkPackagesWizardContext, UPGRADE_ALL, INSTALL, REMOVE, UPGRADE } from './BulkPackagesWizard';
8
22