katello 4.16.1 → 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 (557) 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/helpers/rolling_cv_repos.rb +25 -0
  61. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +6 -1
  62. data/app/lib/actions/katello/content_view/add_rolling_repo_clone.rb +39 -0
  63. data/app/lib/actions/katello/content_view/create.rb +3 -0
  64. data/app/lib/actions/katello/content_view/refresh_rolling_repo.rb +40 -0
  65. data/app/lib/actions/katello/content_view/remove.rb +8 -4
  66. data/app/lib/actions/katello/content_view/remove_rolling_repo_clone.rb +28 -0
  67. data/app/lib/actions/katello/content_view/update.rb +8 -0
  68. data/app/lib/actions/katello/repository/check_matching_content.rb +1 -8
  69. data/app/lib/actions/katello/repository/import_upload.rb +5 -0
  70. data/app/lib/actions/katello/repository/sync.rb +8 -4
  71. data/app/lib/actions/katello/repository/upload_files.rb +7 -1
  72. data/app/lib/actions/pulp3/orchestration/orphan_cleanup/remove_orphans.rb +3 -2
  73. data/app/lib/actions/pulp3/orphan_cleanup/delete_orphan_repository_versions.rb +8 -1
  74. data/app/lib/katello/errors.rb +8 -0
  75. data/app/lib/katello/validators/container_image_name_validator.rb +3 -2
  76. data/app/models/katello/authorization/repository.rb +11 -1
  77. data/app/models/katello/concerns/host_managed_extensions.rb +2 -2
  78. data/app/models/katello/concerns/pulp_database_unit.rb +12 -42
  79. data/app/models/katello/concerns/smart_proxy_extensions.rb +8 -0
  80. data/app/models/katello/content_view.rb +14 -1
  81. data/app/models/katello/content_view_component.rb +4 -0
  82. data/app/models/katello/content_view_environment.rb +1 -0
  83. data/app/models/katello/content_view_version.rb +3 -2
  84. data/app/models/katello/host/content_facet.rb +18 -5
  85. data/app/models/katello/product_content.rb +3 -1
  86. data/app/models/katello/repository.rb +3 -3
  87. data/app/services/katello/content_unit_indexer.rb +1 -1
  88. data/app/services/katello/pulp3/api/content_guard.rb +1 -1
  89. data/app/services/katello/pulp3/api/core.rb +6 -0
  90. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +58 -1
  91. data/app/services/katello/pulp3/smart_proxy_repository.rb +67 -3
  92. data/app/services/katello/smart_proxy_helper.rb +6 -1
  93. data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +15 -1
  94. data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +15 -1
  95. data/app/views/foreman/job_templates/install_group_-_katello_ansible_default.erb +15 -2
  96. data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb +21 -2
  97. data/app/views/foreman/job_templates/remove_group_-_katello_ansible_default.erb +15 -1
  98. data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb +20 -1
  99. data/app/views/foreman/job_templates/update_group_-_katello_ansible_default.erb +15 -2
  100. data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +17 -1
  101. data/app/views/katello/api/v2/activation_keys/base.json.rabl +1 -0
  102. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +2 -1
  103. data/app/views/katello/api/v2/content_facet/base.json.rabl +2 -0
  104. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +12 -0
  105. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  106. data/app/views/katello/api/v2/environments/show.json.rabl +14 -0
  107. data/app/views/katello/api/v2/hosts/base.json.rabl +1 -0
  108. data/app/views/katello/api/v2/organizations/show.json.rabl +2 -0
  109. data/app/views/katello/api/v2/repositories/base.json.rabl +2 -1
  110. data/db/migrate/20190930192813_add_pulp3_hrefs_to_content_types.rb +1 -1
  111. data/db/migrate/20241022122325_add_rolling_to_katello_content_views.rb +5 -0
  112. data/db/migrate/20241025151105_remove_pulp3_migrated_hrefs_from_content_tables.rb +1 -1
  113. data/db/migrate/20250215143303_drop_katello_yum_metadata_file.rb +5 -0
  114. data/db/migrate/20250409120843_fix_file_download_policy.rb +11 -0
  115. data/db/migrate/20250410155300_change_ansible_templates_category.rb +22 -0
  116. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -0
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +90 -31
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +90 -31
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +90 -31
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +90 -31
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +93 -60
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +90 -31
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +90 -31
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +90 -31
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +94 -35
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +90 -31
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +93 -40
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +90 -31
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +254 -192
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +90 -31
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +90 -31
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +90 -31
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +90 -31
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +90 -31
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +90 -35
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +113 -52
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +93 -34
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +90 -31
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +101 -40
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +90 -31
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +90 -31
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +90 -31
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +90 -31
  144. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +90 -31
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +90 -31
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +90 -31
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +90 -31
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +93 -40
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +90 -31
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +90 -31
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +91 -34
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +90 -31
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +90 -31
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +90 -31
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +90 -31
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +90 -31
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +90 -31
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +90 -31
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +90 -31
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +90 -31
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +99 -40
  162. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +92 -33
  163. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +14 -14
  164. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +3 -0
  165. data/lib/katello/engine.rb +9 -1
  166. data/lib/katello/repository_types/python.rb +1 -1
  167. data/lib/katello/tasks/repository.rake +1 -1
  168. data/lib/katello/version.rb +1 -1
  169. data/locale/action_names.rb +186 -0
  170. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  171. data/locale/bn/katello.po +82 -31
  172. data/locale/bn/katello.po.time_stamp +0 -0
  173. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  174. data/locale/bn_IN/katello.po +82 -31
  175. data/locale/bn_IN/katello.po.time_stamp +0 -0
  176. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  177. data/locale/ca/katello.po +82 -31
  178. data/locale/ca/katello.po.time_stamp +0 -0
  179. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  180. data/locale/cs/katello.po +82 -31
  181. data/locale/cs/katello.po.time_stamp +0 -0
  182. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  183. data/locale/cs_CZ/katello.po +83 -32
  184. data/locale/cs_CZ/katello.po.time_stamp +0 -0
  185. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  186. data/locale/de/katello.po +82 -31
  187. data/locale/de/katello.po.time_stamp +0 -0
  188. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  189. data/locale/de_AT/katello.po +82 -31
  190. data/locale/de_AT/katello.po.time_stamp +0 -0
  191. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  192. data/locale/de_DE/katello.po +82 -31
  193. data/locale/de_DE/katello.po.time_stamp +0 -0
  194. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  195. data/locale/el/katello.po +82 -31
  196. data/locale/el/katello.po.time_stamp +0 -0
  197. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  198. data/locale/en/katello.po +82 -31
  199. data/locale/en/katello.po.time_stamp +0 -0
  200. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  201. data/locale/en_GB/katello.po +84 -33
  202. data/locale/en_GB/katello.po.time_stamp +0 -0
  203. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  204. data/locale/en_US/katello.po +82 -31
  205. data/locale/en_US/katello.po.time_stamp +0 -0
  206. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  207. data/locale/es/katello.po +82 -31
  208. data/locale/es/katello.po.time_stamp +0 -0
  209. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  210. data/locale/et_EE/katello.po +82 -31
  211. data/locale/et_EE/katello.po.time_stamp +0 -0
  212. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  213. data/locale/fr/katello.po +83 -32
  214. data/locale/fr/katello.po.time_stamp +0 -0
  215. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  216. data/locale/gl/katello.po +82 -31
  217. data/locale/gl/katello.po.time_stamp +0 -0
  218. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  219. data/locale/gu/katello.po +84 -33
  220. data/locale/gu/katello.po.time_stamp +0 -0
  221. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  222. data/locale/he_IL/katello.po +82 -31
  223. data/locale/he_IL/katello.po.time_stamp +0 -0
  224. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  225. data/locale/hi/katello.po +82 -31
  226. data/locale/hi/katello.po.time_stamp +0 -0
  227. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  228. data/locale/id/katello.po +82 -31
  229. data/locale/id/katello.po.time_stamp +0 -0
  230. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  231. data/locale/it/katello.po +85 -34
  232. data/locale/it/katello.po.time_stamp +0 -0
  233. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  234. data/locale/ja/katello.po +83 -32
  235. data/locale/ja/katello.po.time_stamp +0 -0
  236. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  237. data/locale/ka/katello.po +82 -31
  238. data/locale/ka/katello.po.time_stamp +0 -0
  239. data/locale/katello.pot +1232 -1140
  240. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  241. data/locale/kn/katello.po +82 -31
  242. data/locale/kn/katello.po.time_stamp +0 -0
  243. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  244. data/locale/ko/katello.po +82 -31
  245. data/locale/ko/katello.po.time_stamp +0 -0
  246. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  247. data/locale/ml_IN/katello.po +82 -31
  248. data/locale/ml_IN/katello.po.time_stamp +0 -0
  249. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  250. data/locale/mr/katello.po +82 -31
  251. data/locale/mr/katello.po.time_stamp +0 -0
  252. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  253. data/locale/nl_NL/katello.po +82 -31
  254. data/locale/nl_NL/katello.po.time_stamp +0 -0
  255. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  256. data/locale/or/katello.po +82 -31
  257. data/locale/or/katello.po.time_stamp +0 -0
  258. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  259. data/locale/pa/katello.po +82 -31
  260. data/locale/pa/katello.po.time_stamp +0 -0
  261. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  262. data/locale/pl/katello.po +84 -33
  263. data/locale/pl/katello.po.time_stamp +0 -0
  264. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  265. data/locale/pl_PL/katello.po +82 -31
  266. data/locale/pl_PL/katello.po.time_stamp +0 -0
  267. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  268. data/locale/pt/katello.po +82 -31
  269. data/locale/pt/katello.po.time_stamp +0 -0
  270. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  271. data/locale/pt_BR/katello.po +82 -31
  272. data/locale/pt_BR/katello.po.time_stamp +0 -0
  273. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  274. data/locale/ro/katello.po +82 -31
  275. data/locale/ro/katello.po.time_stamp +0 -0
  276. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  277. data/locale/ro_RO/katello.po +82 -31
  278. data/locale/ro_RO/katello.po.time_stamp +0 -0
  279. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  280. data/locale/ru/katello.po +85 -34
  281. data/locale/ru/katello.po.time_stamp +0 -0
  282. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  283. data/locale/sl/katello.po +82 -31
  284. data/locale/sl/katello.po.time_stamp +0 -0
  285. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  286. data/locale/sv_SE/katello.po +84 -33
  287. data/locale/sv_SE/katello.po.time_stamp +0 -0
  288. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  289. data/locale/ta/katello.po +82 -31
  290. data/locale/ta/katello.po.time_stamp +0 -0
  291. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  292. data/locale/ta_IN/katello.po +82 -31
  293. data/locale/ta_IN/katello.po.time_stamp +0 -0
  294. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  295. data/locale/te/katello.po +82 -31
  296. data/locale/te/katello.po.time_stamp +0 -0
  297. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  298. data/locale/tr/katello.po +82 -31
  299. data/locale/tr/katello.po.time_stamp +0 -0
  300. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  301. data/locale/vi/katello.po +82 -31
  302. data/locale/vi/katello.po.time_stamp +0 -0
  303. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  304. data/locale/vi_VN/katello.po +82 -31
  305. data/locale/vi_VN/katello.po.time_stamp +0 -0
  306. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  307. data/locale/zh/katello.po +82 -31
  308. data/locale/zh/katello.po.time_stamp +0 -0
  309. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  310. data/locale/zh_CN/katello.po +83 -32
  311. data/locale/zh_CN/katello.po.time_stamp +0 -0
  312. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  313. data/locale/zh_TW/katello.po +85 -34
  314. data/locale/zh_TW/katello.po.time_stamp +0 -0
  315. data/webpack/ForemanColumnExtensions/index.js +12 -4
  316. data/webpack/components/ActivationKeysSearch/index.js +6 -7
  317. data/webpack/components/Bookmark/AddBookmarkModal.js +3 -3
  318. data/webpack/components/Bookmark/Bookmark.scss +3 -3
  319. data/webpack/components/Bookmark/index.js +7 -2
  320. data/webpack/components/EditableSwitch.js +1 -1
  321. data/webpack/components/EditableTextInput/EditableTextInput.js +1 -1
  322. data/webpack/components/EditableTextInput/editableTextInput.scss +1 -1
  323. data/webpack/components/Errata/index.js +1 -24
  324. data/webpack/components/Loading.js +10 -6
  325. data/webpack/components/Packages/index.js +2 -1
  326. data/webpack/components/SelectAllCheckbox/index.js +7 -3
  327. data/webpack/components/SelectableDropdown/SelectableDropdown.js +21 -3
  328. data/webpack/components/Table/EmptyStateMessage.js +12 -14
  329. data/webpack/components/Table/MainTable.js +8 -7
  330. data/webpack/components/Table/MainTable.scss +4 -4
  331. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +4 -1
  332. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +1 -1
  333. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +9 -6
  334. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +2 -1
  335. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +4 -1
  336. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +23 -6
  337. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +1 -1
  338. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +5 -3
  339. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.scss +3 -3
  340. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +1 -1
  341. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +25 -10
  342. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +5 -2
  343. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +2 -2
  344. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +5 -4
  345. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +6 -3
  346. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +19 -12
  347. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +1 -1
  348. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +1 -4
  349. data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +1 -4
  350. data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +1 -4
  351. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/HwPropertiesCard.test.js +63 -0
  352. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/ImageModeCard.test.js +73 -0
  353. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/InstalledProductsCard.test.js +45 -0
  354. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +12 -2
  355. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.scss +1 -1
  356. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.js +10 -13
  357. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.scss +1 -1
  358. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +46 -21
  359. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.scss +1 -1
  360. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +15 -7
  361. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +13 -3
  362. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.scss +1 -1
  363. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +34 -20
  364. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.scss +1 -1
  365. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +8 -6
  366. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +5 -3
  367. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.scss +1 -1
  368. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +12 -13
  369. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +16 -6
  370. data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsInstallModal.test.js +10 -5
  371. data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsTab.test.js +48 -22
  372. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +123 -47
  373. data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +14 -7
  374. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +10 -5
  375. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +41 -24
  376. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +50 -25
  377. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +50 -25
  378. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +3 -0
  379. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_Review.js +16 -2
  380. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_ReviewFooter.js +6 -2
  381. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +5 -1
  382. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_Review.js +16 -2
  383. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_ReviewFooter.js +6 -2
  384. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +15 -2
  385. data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +1 -1
  386. data/webpack/components/extensions/Hosts/BulkActions/__tests__/bulkChangeHostCVModal.test.js +2 -1
  387. data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +1 -1
  388. data/webpack/components/extensions/Hosts/ImageModeHostAlert.js +14 -0
  389. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +14 -17
  390. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -1
  391. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -1
  392. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +38 -49
  393. data/webpack/containers/Application/overrides.scss +7 -7
  394. data/webpack/ouia_id_check.js +15 -11
  395. data/webpack/redux/actions/RedHatRepositories/helpers.js +0 -2
  396. data/webpack/scenes/ActivationKeys/Details/__tests__/activationKeyDetails.test.js +12 -6
  397. data/webpack/scenes/ActivationKeys/Details/components/DeleteMenu.js +12 -2
  398. data/webpack/scenes/ActivationKeys/Details/components/EditModal.js +3 -3
  399. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +3 -1
  400. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +3 -1
  401. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +12 -6
  402. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +1 -1
  403. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +22 -7
  404. data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +2 -2
  405. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +1 -1
  406. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +6 -3
  407. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +25 -15
  408. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -6
  409. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +2 -2
  410. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +1 -1
  411. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +33 -7
  412. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +10 -5
  413. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +4 -2
  414. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +10 -8
  415. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +4 -2
  416. data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +5 -5
  417. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +8 -4
  418. data/webpack/scenes/Content/__tests__/contentTable.test.js +4 -2
  419. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -1
  420. data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +1 -0
  421. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +2 -1
  422. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +86 -31
  423. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.scss +10 -2
  424. data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -0
  425. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +10 -4
  426. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +3 -1
  427. data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +6 -6
  428. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +7 -2
  429. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +7 -2
  430. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +3 -3
  431. data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +1 -1
  432. data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +2 -1
  433. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +3 -2
  434. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +10 -8
  435. data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +2 -1
  436. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +16 -5
  437. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +19 -5
  438. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
  439. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +11 -2
  440. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/compositeCVDetails.fixtures.json +2 -1
  441. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +69 -27
  442. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/publishedContentViewDetails.fixtures.json +2 -1
  443. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +22 -29
  444. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +6 -2
  445. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +20 -7
  446. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +4 -2
  447. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +5 -2
  448. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +3 -1
  449. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +1 -1
  450. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +4 -2
  451. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +13 -1
  452. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +23 -7
  453. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +23 -5
  454. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +15 -3
  455. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +15 -3
  456. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -1
  457. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +6 -4
  458. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +11 -1
  459. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +4 -2
  460. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/matchContentModal.scss +1 -1
  461. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +2 -2
  462. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +4 -4
  463. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +18 -12
  464. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +7 -11
  465. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +81 -70
  466. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +1 -0
  467. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +4 -2
  468. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +52 -38
  469. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +9 -4
  470. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +18 -12
  471. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +1 -0
  472. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +1 -0
  473. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +1 -0
  474. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +2 -1
  475. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +77 -67
  476. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +1 -0
  477. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvPackageFilterDetail.fixtures.json +1 -0
  478. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +2 -2
  479. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +4 -2
  480. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +1 -1
  481. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +7 -5
  482. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +6 -3
  483. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
  484. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +3 -2
  485. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +3 -1
  486. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +2 -2
  487. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +3 -1
  488. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +3 -1
  489. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +4 -4
  490. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +11 -11
  491. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +15 -5
  492. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
  493. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +13 -3
  494. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +3 -1
  495. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +17 -13
  496. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +12 -7
  497. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +64 -7
  498. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +52 -21
  499. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +30 -16
  500. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +7 -7
  501. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +5 -3
  502. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +4 -2
  503. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +6 -3
  504. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +2 -1
  505. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +6 -6
  506. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +35 -4
  507. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  508. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetail.test.js +197 -0
  509. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetails.fixtures.json +82 -0
  510. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +3 -7
  511. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +2 -2
  512. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +6 -5
  513. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +3 -1
  514. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +15 -7
  515. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -4
  516. data/webpack/scenes/ContentViews/Table/ContentViewVersionCell.js +6 -4
  517. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +14 -3
  518. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +3 -0
  519. data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -0
  520. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +89 -2
  521. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +85 -14
  522. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
  523. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +20 -6
  524. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +4 -1
  525. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +11 -2
  526. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +27 -7
  527. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +2 -2
  528. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +6 -2
  529. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +4 -1
  530. data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +4 -2
  531. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +7 -6
  532. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +2 -2
  533. data/webpack/scenes/ContentViews/components/contentViewIcon.scss +16 -3
  534. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +6 -1
  535. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +3 -3
  536. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +2 -1
  537. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +5 -3
  538. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +3 -2
  539. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -1
  540. data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +1 -1
  541. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +1 -1
  542. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepositoryContent.test.js.snap +1 -1
  543. data/webpack/scenes/RedHatRepositories/index.scss +1 -1
  544. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +27 -7
  545. data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +51 -2
  546. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +2 -2
  547. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +14 -9
  548. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationForm.scss +1 -1
  549. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CustomCdnTypeForm.js +2 -2
  550. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +6 -6
  551. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +2 -1
  552. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CustomCdnTypeForm.test.js +2 -1
  553. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/ExportSyncForm.test.js +2 -1
  554. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/NetworkSyncForm.test.js +2 -1
  555. metadata +125 -53
  556. data/app/models/katello/yum_metadata_file.rb +0 -22
  557. data/app/services/katello/pulp3/yum_metadata_file.rb +0 -20
@@ -1,7 +1,7 @@
1
1
  import React, { useContext, useState } from 'react';
2
2
  import useDeepCompareEffect from 'use-deep-compare-effect';
3
- import { Alert, Checkbox, EmptyState, EmptyStateVariant, Title, EmptyStateBody, AlertActionCloseButton } from '@patternfly/react-core';
4
- import { TableVariant, TableComposable, Thead, Tbody, Tr, Th, Td } from '@patternfly/react-table';
3
+ import { Alert, Checkbox, EmptyState, EmptyStateVariant, EmptyStateBody, AlertActionCloseButton, EmptyStateHeader } from '@patternfly/react-core';
4
+ import { TableVariant, Table /* data-codemods */, Thead, Tbody, Tr, Th, Td } from '@patternfly/react-table';
5
5
  import { translate as __ } from 'foremanReact/common/I18n';
6
6
  import DeleteContext from '../DeleteContext';
7
7
 
@@ -25,9 +25,15 @@ const CVEnvironmentSelectionForm = () => {
25
25
 
26
26
  // Based on env selected for removal, decide if we need to reassign hosts and activation keys.
27
27
  useDeepCompareEffect(() => {
28
- const selectedEnv = versionEnvironments.filter(env => selectedEnvSet.has(env.id));
29
- setAffectedActivationKeys(!!(selectedEnv.filter(env => env.activation_key_count > 0).length));
30
- setAffectedHosts(!!(selectedEnv.filter(env => env.host_count > 0).length));
28
+ const selectedEnvironments = versionEnvironments.filter(env => selectedEnvSet.has(env.id));
29
+
30
+ const needsHostReassignment = selectedEnvironments.some(env =>
31
+ (env.host_count || 0) > (env.multi_env_host_count || 0));
32
+ setAffectedHosts(needsHostReassignment);
33
+
34
+ const needsAKReassignment = selectedEnvironments.some(env =>
35
+ (env.activation_key_count || 0) > (env.multi_env_ak_count || 0));
36
+ setAffectedActivationKeys(needsAKReassignment);
31
37
  }, [setAffectedActivationKeys, setAffectedHosts,
32
38
  versionEnvironments, selectedEnvSet, selectedEnvSet.size]);
33
39
 
@@ -73,12 +79,12 @@ const CVEnvironmentSelectionForm = () => {
73
79
  id="delete_version"
74
80
  label={__('Delete version')}
75
81
  isChecked={removeDeletionFlow}
76
- onChange={checked => setRemoveDeletionFlow(checked)}
82
+ onChange={(_event, checked) => setRemoveDeletionFlow(checked)}
77
83
  style={{ margin: 0 }}
78
84
  />
79
85
  </Alert>)}
80
86
  {(versionEnvironments.length !== 0) &&
81
- <TableComposable ouiaId="version-delete-env-table" variant={TableVariant.compact}>
87
+ <Table ouiaId="version-delete-env-table" variant={TableVariant.compact}>
82
88
  <Thead>
83
89
  <Tr ouiaId="version-delete-env-table-header">
84
90
  <Td
@@ -86,7 +92,7 @@ const CVEnvironmentSelectionForm = () => {
86
92
  rowIndex: 0,
87
93
  onSelect: onSelectAll,
88
94
  isSelected: areAllSelected() || deleteFlow || removeDeletionFlow,
89
- disable: deleteFlow || removeDeletionFlow,
95
+ isDisabled: deleteFlow || removeDeletionFlow,
90
96
  }}
91
97
  />
92
98
  {columnHeaders.map(col =>
@@ -106,7 +112,7 @@ const CVEnvironmentSelectionForm = () => {
106
112
  rowIndex,
107
113
  onSelect: (event, isSelected) => onSelect(event, isSelected, id),
108
114
  isSelected: selectedEnvSet.has(id) || deleteFlow || removeDeletionFlow,
109
- disable: deleteFlow || removeDeletionFlow,
115
+ isDisabled: deleteFlow || removeDeletionFlow,
110
116
  }}
111
117
  />
112
118
  <Td>
@@ -118,12 +124,10 @@ const CVEnvironmentSelectionForm = () => {
118
124
  ))
119
125
  }
120
126
  </Tbody>
121
- </TableComposable>}
127
+ </Table>}
122
128
  {(versionEnvironments.length === 0) &&
123
129
  <EmptyState variant={EmptyStateVariant.xs}>
124
- <Title headingLevel="h4" size="md" ouiaId="not-promoted-title">
125
- {__('This version has not been promoted to any environments.')}
126
- </Title>
130
+ <EmptyStateHeader titleText={<>{__('This version has not been promoted to any environments.')}</>} headingLevel="h4" />
127
131
  <EmptyStateBody>
128
132
  {versionEnvironmentsEmptyInfo}
129
133
  </EmptyStateBody>
@@ -1,7 +1,12 @@
1
1
  import React, { useState, useContext } from 'react';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
3
  import useDeepCompareEffect from 'use-deep-compare-effect';
4
- import { ExpandableSection, SelectOption, Alert, AlertActionCloseButton } from '@patternfly/react-core';
4
+ import {
5
+ ExpandableSection, Alert, AlertActionCloseButton,
6
+ } from '@patternfly/react-core';
7
+ import {
8
+ SelectOption,
9
+ } from '@patternfly/react-core/deprecated';
5
10
  import { STATUS } from 'foremanReact/constants';
6
11
  import { translate as __ } from 'foremanReact/common/I18n';
7
12
  import EnvironmentPaths from '../../../../components/EnvironmentPaths/EnvironmentPaths';
@@ -75,7 +80,7 @@ const CVReassignActivationKeysForm = () => {
75
80
  contentViewsInEnvError, selectedEnvForAK, setSelectedCVForAK, setSelectedCVNameForAK,
76
81
  cvInEnvLoading, selectedCVForAK, cvId, versionEnvironments, selectedEnvSet]);
77
82
 
78
- const multiCVWarning = activationKeysResponse?.results?.some?.(key =>
83
+ const multiCVInfo = activationKeysResponse?.results?.some?.(key =>
79
84
  key.multi_content_view_environment);
80
85
 
81
86
  const fetchSelectedCVName = (id) => {
@@ -112,12 +117,12 @@ const CVReassignActivationKeysForm = () => {
112
117
 
113
118
  return (
114
119
  <>
115
- {!alertDismissed && multiCVWarning && (
120
+ {!alertDismissed && multiCVInfo && (
116
121
  <Alert
117
- ouiaId="multi-cv-warning-alert"
118
- variant="warning"
122
+ ouiaId="multi-cv-info-alert"
123
+ variant="info"
119
124
  isInline
120
- title={__('Warning')}
125
+ title={__('Multi-environment activation key(s) affected')}
121
126
  actionClose={<AlertActionCloseButton onClose={() => setAlertDismissed(true)} />}
122
127
  >
123
128
  <p>{multiCVRemovalInfo}</p>
@@ -145,7 +150,7 @@ const CVReassignActivationKeysForm = () => {
145
150
  toggleText={showActivationKeys ?
146
151
  'Hide activation keys' :
147
152
  'Show activation keys'}
148
- onToggle={expanded => setShowActivationKeys(expanded)}
153
+ onToggle={(_event, expanded) => setShowActivationKeys(expanded)}
149
154
  isExpanded={showActivationKeys}
150
155
  >
151
156
  <AffectedActivationKeys
@@ -1,9 +1,11 @@
1
1
  import React, { useState, useContext } from 'react';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
3
  import useDeepCompareEffect from 'use-deep-compare-effect';
4
- import { ExpandableSection, SelectOption, Alert, AlertActionCloseButton } from '@patternfly/react-core';
4
+ import { ExpandableSection, Alert, AlertActionCloseButton } from '@patternfly/react-core';
5
+ import { SelectOption } from '@patternfly/react-core/deprecated';
5
6
  import { STATUS } from 'foremanReact/constants';
6
7
  import { translate as __ } from 'foremanReact/common/I18n';
8
+ import { FormattedMessage } from 'react-intl';
7
9
  import EnvironmentPaths from '../../../../components/EnvironmentPaths/EnvironmentPaths';
8
10
  import getContentViews from '../../../../ContentViewsActions';
9
11
  import { selectContentViewError, selectContentViews, selectContentViewStatus } from '../../../../ContentViewSelectors';
@@ -12,6 +14,7 @@ import AffectedHosts from '../affectedHosts';
12
14
  import DeleteContext from '../DeleteContext';
13
15
  import ContentViewSelect from '../../../../components/ContentViewSelect/ContentViewSelect';
14
16
  import { getCVPlaceholderText, shouldDisableCVSelect } from '../../../../components/ContentViewSelect/helpers';
17
+ import { selectEnvironmentPaths } from '../../../../components/EnvironmentPaths/EnvironmentPathSelectors';
15
18
 
16
19
  const CVReassignHostsForm = () => {
17
20
  const dispatch = useDispatch();
@@ -28,8 +31,40 @@ const CVReassignHostsForm = () => {
28
31
  } = useContext(DeleteContext);
29
32
  const [alertDismissed, setAlertDismissed] = useState(false);
30
33
  const hostResponse = useSelector(selectCVHosts);
34
+ const environmentPathResponse = useSelector(state => selectEnvironmentPaths(state));
31
35
 
32
- const multiCVWarning = hostResponse?.results?.some?.(host =>
36
+ const contentSourceIds = new Set((hostResponse?.results || [])
37
+ .map(host => host.content_facet_attributes?.content_source_id)
38
+ .filter(id => id));
39
+
40
+ const lifecycleEnvironments = environmentPathResponse?.results?.map(path =>
41
+ path.environments).flat() || [];
42
+
43
+ const enabledLifecycleEnvironmentIds = new Set();
44
+
45
+ if (lifecycleEnvironments) {
46
+ lifecycleEnvironments.forEach((env) => {
47
+ if (env.capsules) {
48
+ env.capsules.forEach((capsule) => {
49
+ if (contentSourceIds.has(capsule.id) && capsule.lifecycle_environments) {
50
+ capsule.lifecycle_environments.forEach((le) => {
51
+ enabledLifecycleEnvironmentIds.add(le.id);
52
+ });
53
+ }
54
+ });
55
+ }
56
+ });
57
+ }
58
+
59
+ const disabledEnvs = enabledLifecycleEnvironmentIds.size
60
+ ? lifecycleEnvironments.filter(env => !enabledLifecycleEnvironmentIds.has(env.id))
61
+ : [];
62
+
63
+ const showAlert = disabledEnvs.length > 0;
64
+
65
+ const affectedHostIds = (hostResponse?.results || []).map(host => host.id).join(',');
66
+
67
+ const multiCVInfo = hostResponse?.results?.some?.(host =>
33
68
  host.content_facet_attributes?.multi_content_view_environment);
34
69
 
35
70
  const multiCVRemovalInfo = __('This content view version is used in one or more multi-environment hosts. The version will simply be removed from the multi-environment hosts. The content view and lifecycle environment you select here will only apply to single-environment hosts. See hammer activation-key --help for more details.');
@@ -111,23 +146,45 @@ const CVReassignHostsForm = () => {
111
146
 
112
147
  return (
113
148
  <>
114
- {!alertDismissed && multiCVWarning && (
149
+ {!alertDismissed && multiCVInfo && (
115
150
  <Alert
116
- ouiaId="multi-cv-warning-alert"
117
- variant="warning"
151
+ ouiaId="multi-cv-info-alert"
152
+ variant="info"
118
153
  isInline
119
- title={__('Warning')}
154
+ title={__('Multi-environment host(s) affected')}
120
155
  actionClose={<AlertActionCloseButton onClose={() => setAlertDismissed(true)} />}
121
156
  >
122
157
  <p>{multiCVRemovalInfo}</p>
123
158
  </Alert>
124
159
  )}
160
+ {showAlert && (
161
+ <Alert
162
+ variant="info"
163
+ ouiaId="disabled-environments-alert"
164
+ isInline
165
+ title={__('Some environments are disabled because they are not associated with all of the affected hosts\' content sources.')}
166
+ style={{ marginBottom: '1rem' }}
167
+ >
168
+ <FormattedMessage
169
+ id="hosts.changeContentSourcePrompt"
170
+ defaultMessage="To enable them, add the environment to the hosts' content sources, or {link}."
171
+ values={{
172
+ link: (
173
+ <a href={`/change_host_content_source?search=id ^ (${affectedHostIds})`}>
174
+ {__('assign a new content source to the hosts')}
175
+ </a>
176
+ ),
177
+ }}
178
+ />
179
+ </Alert>
180
+ )}
125
181
  <EnvironmentPaths
126
182
  userCheckedItems={selectedEnvForHost}
127
183
  setUserCheckedItems={setSelectedEnvForHost}
128
184
  publishing={false}
129
185
  headerText={__('Select lifecycle environment')}
130
186
  multiSelect={false}
187
+ enabledLifecycleEnvironmentIds={enabledLifecycleEnvironmentIds}
131
188
  />
132
189
  <ContentViewSelect
133
190
  onClear={onClear}
@@ -146,7 +203,7 @@ const CVReassignHostsForm = () => {
146
203
  </ContentViewSelect>
147
204
  <ExpandableSection
148
205
  toggleText={showHosts ? 'Hide hosts' : 'Show hosts'}
149
- onToggle={expanded => setShowHosts(expanded)}
206
+ onToggle={(_event, expanded) => setShowHosts(expanded)}
150
207
  isExpanded={showHosts}
151
208
  >
152
209
  <AffectedHosts
@@ -1,24 +1,24 @@
1
1
  import React, { useContext, useState } from 'react';
2
2
  import { useSelector } from 'react-redux';
3
- import { Alert, Flex, FlexItem, Label, AlertActionCloseButton } from '@patternfly/react-core';
3
+ import { Alert, Flex, FlexItem, Label, AlertActionCloseButton, ExpandableSection } from '@patternfly/react-core';
4
4
  import { ExclamationTriangleIcon } from '@patternfly/react-icons';
5
5
  import { FormattedMessage } from 'react-intl';
6
6
  import { translate as __ } from 'foremanReact/common/I18n';
7
- import { selectCVActivationKeys, selectCVHosts, selectCVVersions } from '../../../ContentViewDetailSelectors';
7
+ import { selectCVVersions } from '../../../ContentViewDetailSelectors';
8
8
  import DeleteContext from '../DeleteContext';
9
9
  import WizardHeader from '../../../../components/WizardHeader';
10
+ import AffectedHosts from '../affectedHosts';
11
+ import AffectedActivationKeys from '../affectedActivationKeys';
10
12
 
11
13
  const CVVersionRemoveReview = () => {
12
14
  const [alertDismissed, setAlertDismissed] = useState(false);
15
+ const [showHosts, setShowHosts] = useState(false);
16
+ const [showAKs, setShowAKs] = useState(false);
13
17
  const {
14
- cvId, versionIdToRemove, versionNameToRemove, selectedEnvSet,
18
+ cvId, versionEnvironments, versionIdToRemove, versionNameToRemove, selectedEnvSet,
15
19
  selectedEnvForAK, selectedCVNameForAK, selectedCVNameForHosts,
16
- selectedEnvForHost, affectedActivationKeys, affectedHosts, deleteFlow, removeDeletionFlow,
20
+ selectedEnvForHost, deleteFlow, removeDeletionFlow,
17
21
  } = useContext(DeleteContext);
18
- const activationKeysResponse = useSelector(state => selectCVActivationKeys(state, cvId));
19
- const hostsResponse = useSelector(state => selectCVHosts(state, cvId));
20
- const { results: hostResponse = [] } = hostsResponse || {};
21
- const { results: akResponse = [] } = activationKeysResponse || {};
22
22
  const cvVersions = useSelector(state => selectCVVersions(state, cvId));
23
23
  const versionDeleteInfo = __(`Version ${versionNameToRemove} will be deleted from all environments. It will no longer be available for promotion.`);
24
24
  const removalNotice = __(`Version ${versionNameToRemove} will be removed from the environments listed below, and will remain available for later promotion. ` +
@@ -29,16 +29,19 @@ const CVVersionRemoveReview = () => {
29
29
  .flatMap(cv => cv.content_view_environments || [])
30
30
  .filter(env => selectedEnvSet.has(env.environment_id));
31
31
 
32
- const multiCVHosts = hostResponse?.filter(host =>
33
- host.content_facet_attributes?.multi_content_view_environment) || [];
34
- const multiCVHostsCount = multiCVHosts.length;
32
+ const selectedEnvs = versionEnvironments.filter(env => selectedEnvSet.has(env.id));
35
33
 
36
- const singleCVHostsCount = (hostResponse?.length || 0) - multiCVHostsCount;
34
+ const hostCount = selectedEnvs.reduce((sum, env) =>
35
+ sum + (env.host_count || 0), 0);
36
+ const multiCVHostsCount = selectedEnvs.reduce((sum, env) =>
37
+ sum + (env.multi_env_host_count || 0), 0);
38
+ const singleCVHostsCount = hostCount - multiCVHostsCount;
37
39
 
38
- const multiCVActivationKeys = akResponse.filter(key => key.multi_content_view_environment);
39
- const multiCVActivationKeysCount = multiCVActivationKeys.length;
40
-
41
- const singleCVActivationKeysCount = akResponse.length - multiCVActivationKeysCount;
40
+ const akCount = selectedEnvs.reduce((sum, env) =>
41
+ sum + (env.activation_key_count || 0), 0);
42
+ const multiCVActivationKeysCount = selectedEnvs.reduce((sum, env) =>
43
+ sum + (env.multi_env_ak_count || 0), 0);
44
+ const singleCVActivationKeysCount = akCount - multiCVActivationKeysCount;
42
45
 
43
46
  return (
44
47
  <>
@@ -63,10 +66,10 @@ const CVVersionRemoveReview = () => {
63
66
  </Flex>
64
67
  <Flex>
65
68
  {selectedCVE?.map(({ environment_name: name, environment_id: id }) =>
66
- <FlexItem key={name}><Label isTruncated color="purple" href={`/lifecycle_environments/${id}`}>{name}</Label></FlexItem>)}
69
+ <FlexItem key={name}><Label color="purple" href={`/lifecycle_environments/${id}`}>{name}</Label></FlexItem>)}
67
70
  </Flex>
68
71
  </>}
69
- {affectedHosts &&
72
+ {hostCount > 0 &&
70
73
  <>
71
74
  <h3>{__('Content hosts')}</h3>
72
75
  {singleCVHostsCount > 0 && (
@@ -82,7 +85,7 @@ const CVVersionRemoveReview = () => {
82
85
  plural: __('hosts'),
83
86
  cvName: selectedCVNameForHosts,
84
87
  envName: selectedEnvForHost[0] && (
85
- <Label isTruncated color="purple" href={`/lifecycle_environments/${selectedEnvForHost[0].id}`}>
88
+ <Label color="purple" href={`/lifecycle_environments/${selectedEnvForHost[0].id}`}>
86
89
  {selectedEnvForHost[0].name}
87
90
  </Label>
88
91
  ),
@@ -121,8 +124,22 @@ const CVVersionRemoveReview = () => {
121
124
  </FlexItem>
122
125
  </Flex>
123
126
  )}
127
+ <ExpandableSection
128
+ toggleText={showHosts ? 'Hide hosts' : 'Show hosts'}
129
+ onToggle={() => setShowHosts(prev => !prev)}
130
+ isExpanded={showHosts}
131
+ >
132
+ <AffectedHosts
133
+ {...{
134
+ cvId,
135
+ versionEnvironments,
136
+ selectedEnvSet,
137
+ }}
138
+ deleteCV={false}
139
+ />
140
+ </ExpandableSection>
124
141
  </>}
125
- {affectedActivationKeys &&
142
+ {akCount > 0 &&
126
143
  <>
127
144
  <h3>{__('Activation keys')}</h3>
128
145
  {singleCVActivationKeysCount > 0 && (
@@ -138,7 +155,7 @@ const CVVersionRemoveReview = () => {
138
155
  plural: __('activation keys'),
139
156
  cvName: selectedCVNameForAK,
140
157
  envName: selectedEnvForAK[0] && (
141
- <Label isTruncated color="purple" href={`/lifecycle_environments/${selectedEnvForAK[0].id}`}>
158
+ <Label color="purple" href={`/lifecycle_environments/${selectedEnvForAK[0].id}`}>
142
159
  {selectedEnvForAK[0].name}
143
160
  </Label>
144
161
  ),
@@ -177,6 +194,20 @@ const CVVersionRemoveReview = () => {
177
194
  </FlexItem>
178
195
  </Flex>
179
196
  )}
197
+ <ExpandableSection
198
+ toggleText={showAKs ? 'Hide activation keys' : 'Show activation keys'}
199
+ onToggle={() => setShowAKs(prev => !prev)}
200
+ isExpanded={showAKs}
201
+ >
202
+ <AffectedActivationKeys
203
+ {...{
204
+ cvId,
205
+ versionEnvironments,
206
+ selectedEnvSet,
207
+ }}
208
+ deleteCV={false}
209
+ />
210
+ </ExpandableSection>
180
211
  </>}
181
212
  </>
182
213
  );
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
3
- import { nockInstance, assertNockRequest, mockAutocomplete, mockForemanAutocomplete } from '../../../../../../test-utils/nockWrapper';
3
+ import { nockInstance, assertNockRequest, mockAutocomplete } from '../../../../../../test-utils/nockWrapper';
4
4
  import api, { foremanApi } from '../../../../../../services/api';
5
5
  import CONTENT_VIEWS_KEY from '../../../../ContentViewsConstants';
6
6
  import ContentViewVersions from '../../ContentViewVersions';
@@ -61,7 +61,8 @@ test('Can call API and show versions on page load', async (done) => {
61
61
  expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
62
62
  });
63
63
  assertNockRequest(autocompleteScope);
64
- assertNockRequest(scope, done);
64
+ assertNockRequest(scope);
65
+ done();
65
66
  });
66
67
 
67
68
  test('Can open Remove wizard and remove version from simple environment', async (done) => {
@@ -97,9 +98,9 @@ test('Can open Remove wizard and remove version from simple environment', async
97
98
  expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
98
99
  });
99
100
  // Expand Row Action
100
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'false');
101
- fireEvent.click(getAllByLabelText('Actions')[0]);
102
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'true');
101
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
102
+ fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
103
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
103
104
  fireEvent.click(getByText('Remove from environments'));
104
105
  await patientlyWaitFor(() => {
105
106
  expect(getByText('Remove Version')).toBeInTheDocument();
@@ -115,13 +116,18 @@ test('Can open Remove wizard and remove version from simple environment', async
115
116
  assertNockRequest(scope);
116
117
  assertNockRequest(autocompleteScope);
117
118
  assertNockRequest(envPathRemovalScope);
118
- assertNockRequest(versionRemovalScope, done);
119
+ assertNockRequest(versionRemovalScope);
120
+ done();
119
121
  });
120
122
 
121
123
  test('Can open Remove wizard and remove version from environment with hosts', async (done) => {
122
124
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
123
125
  const hostAutocompleteUrl = '/hosts/auto_complete_search';
124
- const hostAutocompleteScope = mockForemanAutocomplete(nockInstance, hostAutocompleteUrl);
126
+ const hostAutocompleteScope = nockInstance
127
+ .get(foremanApi.getApiUrl(hostAutocompleteUrl))
128
+ .query(true)
129
+ .times(2)
130
+ .reply(200, []);
125
131
 
126
132
  const scope = nockInstance
127
133
  .get(cvVersions)
@@ -136,6 +142,7 @@ test('Can open Remove wizard and remove version from environment with hosts', as
136
142
  const hostScope = nockInstance
137
143
  .get(hostURL)
138
144
  .query(true)
145
+ .times(2)
139
146
  .reply(200, affectedHostData);
140
147
 
141
148
  const cVDropDownOptionsScope = nockInstance
@@ -166,9 +173,9 @@ test('Can open Remove wizard and remove version from environment with hosts', as
166
173
  expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
167
174
  });
168
175
  // Expand Row Action
169
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'false');
170
- fireEvent.click(getAllByLabelText('Actions')[0]);
171
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'true');
176
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
177
+ fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
178
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
172
179
  fireEvent.click(getByText('Remove from environments'));
173
180
  await patientlyWaitFor(() => {
174
181
  expect(getByText('Remove Version')).toBeInTheDocument();
@@ -202,13 +209,18 @@ test('Can open Remove wizard and remove version from environment with hosts', as
202
209
  assertNockRequest(hostScope);
203
210
  assertNockRequest(cVDropDownOptionsScope);
204
211
  assertNockRequest(envPathRemovalScope);
205
- assertNockRequest(versionRemovalScope, done);
212
+ assertNockRequest(versionRemovalScope);
213
+ done();
206
214
  });
207
215
 
208
216
  test('Can open Remove wizard and remove version from environment with activation keys', async (done) => {
209
217
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
210
218
  const akAutocompleteUrl = '/activation_keys/auto_complete_search';
211
- const akAutocompleteScope = mockAutocomplete(nockInstance, akAutocompleteUrl);
219
+ const akAutocompleteScope = nockInstance
220
+ .get(api.getApiUrl(akAutocompleteUrl))
221
+ .query(true)
222
+ .times(2)
223
+ .reply(200, []);
212
224
 
213
225
  const scope = nockInstance
214
226
  .get(cvVersions)
@@ -223,6 +235,7 @@ test('Can open Remove wizard and remove version from environment with activation
223
235
  const activationKeysScope = nockInstance
224
236
  .get(activationKeyURL)
225
237
  .query(true)
238
+ .times(2)
226
239
  .reply(200, affectedActivationKeysData);
227
240
 
228
241
  const cVDropDownOptionsScope = nockInstance
@@ -253,9 +266,9 @@ test('Can open Remove wizard and remove version from environment with activation
253
266
  expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
254
267
  });
255
268
  // Expand Row Action
256
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'false');
257
- fireEvent.click(getAllByLabelText('Actions')[0]);
258
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'true');
269
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
270
+ fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
271
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
259
272
  fireEvent.click(getByText('Remove from environments'));
260
273
  await patientlyWaitFor(() => {
261
274
  expect(getByText('Remove Version')).toBeInTheDocument();
@@ -290,5 +303,6 @@ test('Can open Remove wizard and remove version from environment with activation
290
303
  assertNockRequest(activationKeysScope);
291
304
  assertNockRequest(cVDropDownOptionsScope);
292
305
  assertNockRequest(envPathRemovalScope);
293
- assertNockRequest(versionRemovalScope, done);
306
+ assertNockRequest(versionRemovalScope);
307
+ done();
294
308
  });
@@ -1,13 +1,13 @@
1
1
  .content-view-header-content {
2
2
  padding-top: 24px;
3
3
 
4
- .pf-c-content {
4
+ .pf-v5-c-content {
5
5
  dl {
6
6
  margin: 0;
7
7
  }
8
8
  }
9
9
 
10
- .pf-l-flex {
10
+ .pf-v5-l-flex {
11
11
  padding-top: 24px;
12
12
  }
13
13
  }
@@ -17,30 +17,30 @@
17
17
  margin-top: 24px;
18
18
  display: flex;
19
19
 
20
- .pf-c-tabs.pf-m-vertical {
20
+ .pf-v5-c-tabs.pf-m-vertical {
21
21
  max-width: 230px;
22
22
  border-right: 1px solid #d2d2d2;
23
23
 
24
- .pf-c-tabs__item {
24
+ .pf-v5-c-tabs__item {
25
25
  margin-top: 0;
26
26
 
27
27
  button {
28
28
  align-items: center;
29
29
 
30
- .pf-c-label__content {
30
+ .pf-v5-c-label__content {
31
31
  &::before {
32
32
  border: none;
33
33
  }
34
34
  }
35
35
  }
36
36
 
37
- &.pf-m-current .pf-c-label__content {
37
+ &.pf-m-current .pf-v5-c-label__content {
38
38
  font-weight: bold;
39
39
  }
40
40
  }
41
41
  }
42
42
 
43
- .pf-l-grid.pf-m-gutter {
43
+ .pf-v5-l-grid.pf-m-gutter {
44
44
  display: initial;
45
45
  width: 100%;
46
46
  }
@@ -11,11 +11,13 @@ import {
11
11
  Label,
12
12
  Flex,
13
13
  FlexItem,
14
+ } from '@patternfly/react-core';
15
+ import {
14
16
  Dropdown,
15
17
  DropdownItem,
16
18
  KebabToggle,
17
19
  DropdownPosition,
18
- } from '@patternfly/react-core';
20
+ } from '@patternfly/react-core/deprecated';
19
21
  import { useHistory } from 'react-router-dom';
20
22
  import { translate as __ } from 'foremanReact/common/I18n';
21
23
  import { hasPermission } from '../../../helpers';
@@ -131,7 +133,7 @@ const ContentViewVersionDetailsHeader = ({
131
133
  style={{ width: 'inherit' }}
132
134
  position={DropdownPosition.right}
133
135
  toggle={
134
- <KebabToggle onToggle={setDropdownOpen} id="toggle-dropdown" />
136
+ <KebabToggle onToggle={(_event, val) => setDropdownOpen(val)} id="toggle-dropdown" />
135
137
  }
136
138
  isOpen={dropdownOpen}
137
139
  dropdownItems={dropDownItems}
@@ -153,7 +155,7 @@ const ContentViewVersionDetailsHeader = ({
153
155
  <Flex>
154
156
  {environments?.map(({ name, id: envId }) => (
155
157
  <FlexItem key={name}>
156
- <Label isTruncated color="purple" href={`/lifecycle_environments/${envId}`}>{name}</Label>
158
+ <Label color="purple" href={`/lifecycle_environments/${envId}`}>{name}</Label>
157
159
  </FlexItem>))}
158
160
  </Flex>
159
161
  </GridItem>
@@ -9,10 +9,12 @@ import {
9
9
  } from 'react-redux';
10
10
  import {
11
11
  Grid,
12
+ } from '@patternfly/react-core';
13
+ import {
12
14
  Select,
13
15
  SelectOption,
14
16
  SelectVariant,
15
- } from '@patternfly/react-core';
17
+ } from '@patternfly/react-core/deprecated';
16
18
  import {
17
19
  TableVariant,
18
20
  Tbody,
@@ -94,7 +96,7 @@ const ContentViewVersionDetailsTable = ({
94
96
  actionButtons={
95
97
  repoType &&
96
98
  <Select
97
- onToggle={setOpen}
99
+ onToggle={(_event, val) => setOpen(val)}
98
100
  isOpen={open}
99
101
  ouiaId="repo-type-selector"
100
102
  variant={SelectVariant.single}
@@ -108,7 +108,8 @@ test('Can show versions details - Components Tab', async (done) => {
108
108
 
109
109
  assertNockRequest(scope);
110
110
  assertNockRequest(scope);
111
- assertNockRequest(componentScope, done);
111
+ assertNockRequest(componentScope);
112
+ done();
112
113
  });
113
114
 
114
115
  const testConfig = [
@@ -255,7 +256,8 @@ testConfig.forEach(({
255
256
  assertNockRequest(autocompleteScope);
256
257
  assertNockRequest(scope);
257
258
  assertNockRequest(tabScope);
258
- assertNockRequest(scope, done);
259
+ assertNockRequest(scope);
260
+ done();
259
261
  }));
260
262
 
261
263
  test('Can change repository selector', async (done) => {
@@ -317,5 +319,6 @@ test('Can change repository selector', async (done) => {
317
319
  assertNockRequest(autocompleteScope);
318
320
  assertNockRequest(scope);
319
321
  assertNockRequest(tabScope);
320
- assertNockRequest(scope, done);
322
+ assertNockRequest(scope);
323
+ done();
321
324
  });
@@ -59,6 +59,7 @@ test('Can show versions detail header', async (done) => {
59
59
  await patientlyWaitFor(() => {
60
60
  expect(getByText(`Version ${version}`)).toBeInTheDocument();
61
61
  });
62
- assertNockRequest(scope, done);
62
+ assertNockRequest(scope);
63
+ done();
63
64
  act(done);// Need to tell the test to stahp!
64
65
  });