katello 4.16.3 → 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 (509) 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 +77 -263
  4. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +77 -263
  5. data/app/assets/javascripts/katello/locale/ca/katello.js +77 -263
  6. data/app/assets/javascripts/katello/locale/cs/katello.js +77 -263
  7. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +77 -263
  8. data/app/assets/javascripts/katello/locale/de/katello.js +87 -273
  9. data/app/assets/javascripts/katello/locale/de_AT/katello.js +77 -263
  10. data/app/assets/javascripts/katello/locale/de_DE/katello.js +77 -263
  11. data/app/assets/javascripts/katello/locale/el/katello.js +77 -263
  12. data/app/assets/javascripts/katello/locale/en/katello.js +77 -263
  13. data/app/assets/javascripts/katello/locale/en_GB/katello.js +77 -263
  14. data/app/assets/javascripts/katello/locale/en_US/katello.js +77 -263
  15. data/app/assets/javascripts/katello/locale/es/katello.js +242 -428
  16. data/app/assets/javascripts/katello/locale/et_EE/katello.js +77 -263
  17. data/app/assets/javascripts/katello/locale/fr/katello.js +900 -1086
  18. data/app/assets/javascripts/katello/locale/gl/katello.js +77 -263
  19. data/app/assets/javascripts/katello/locale/gu/katello.js +77 -263
  20. data/app/assets/javascripts/katello/locale/he_IL/katello.js +77 -263
  21. data/app/assets/javascripts/katello/locale/hi/katello.js +77 -263
  22. data/app/assets/javascripts/katello/locale/id/katello.js +77 -263
  23. data/app/assets/javascripts/katello/locale/it/katello.js +78 -264
  24. data/app/assets/javascripts/katello/locale/ja/katello.js +628 -814
  25. data/app/assets/javascripts/katello/locale/ka/katello.js +474 -660
  26. data/app/assets/javascripts/katello/locale/kn/katello.js +77 -263
  27. data/app/assets/javascripts/katello/locale/ko/katello.js +2129 -2314
  28. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +77 -263
  29. data/app/assets/javascripts/katello/locale/mr/katello.js +77 -263
  30. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +77 -263
  31. data/app/assets/javascripts/katello/locale/or/katello.js +77 -263
  32. data/app/assets/javascripts/katello/locale/pa/katello.js +77 -263
  33. data/app/assets/javascripts/katello/locale/pl/katello.js +77 -263
  34. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +77 -263
  35. data/app/assets/javascripts/katello/locale/pt/katello.js +77 -263
  36. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +255 -441
  37. data/app/assets/javascripts/katello/locale/ro/katello.js +77 -263
  38. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +77 -263
  39. data/app/assets/javascripts/katello/locale/ru/katello.js +78 -264
  40. data/app/assets/javascripts/katello/locale/sl/katello.js +77 -263
  41. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +77 -263
  42. data/app/assets/javascripts/katello/locale/ta/katello.js +77 -263
  43. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +77 -263
  44. data/app/assets/javascripts/katello/locale/te/katello.js +77 -263
  45. data/app/assets/javascripts/katello/locale/tr/katello.js +77 -263
  46. data/app/assets/javascripts/katello/locale/vi/katello.js +77 -263
  47. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +77 -263
  48. data/app/assets/javascripts/katello/locale/zh/katello.js +77 -263
  49. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +632 -818
  50. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +78 -264
  51. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +19 -5
  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/20240924161240_katello_recreate_evr_constructs.rb +0 -20
  112. data/db/migrate/20241022122325_add_rolling_to_katello_content_views.rb +5 -0
  113. data/db/migrate/20241025151105_remove_pulp3_migrated_hrefs_from_content_tables.rb +1 -1
  114. data/db/migrate/20250215143303_drop_katello_yum_metadata_file.rb +5 -0
  115. data/db/migrate/20250409120843_fix_file_download_policy.rb +11 -0
  116. data/db/migrate/20250410155300_change_ansible_templates_category.rb +22 -0
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +0 -6
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +0 -6
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +0 -6
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +0 -6
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +0 -6
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +0 -6
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +0 -6
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +0 -6
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +0 -6
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +0 -6
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +0 -6
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +0 -6
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +0 -6
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +0 -6
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +0 -6
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +0 -6
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +0 -6
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +0 -6
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +0 -6
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +0 -6
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +0 -6
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +0 -6
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +0 -6
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +0 -6
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +0 -6
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +0 -6
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +0 -6
  144. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +0 -6
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +0 -6
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +0 -6
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +0 -6
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +0 -6
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +0 -6
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +0 -6
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +0 -6
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +0 -6
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +0 -6
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +0 -6
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +0 -6
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +0 -6
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +0 -6
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +0 -6
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +0 -6
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +0 -6
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +0 -6
  162. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +0 -6
  163. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +3 -0
  164. data/lib/katello/engine.rb +9 -1
  165. data/lib/katello/repository_types/python.rb +1 -1
  166. data/lib/katello/tasks/repository.rake +1 -1
  167. data/lib/katello/version.rb +1 -1
  168. data/locale/action_names.rb +3 -0
  169. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  170. data/locale/bn/katello.po +77 -263
  171. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  172. data/locale/bn_IN/katello.po +77 -263
  173. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  174. data/locale/ca/katello.po +77 -263
  175. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  176. data/locale/cs/katello.po +77 -263
  177. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  178. data/locale/cs_CZ/katello.po +77 -263
  179. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  180. data/locale/de/katello.po +91 -277
  181. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  182. data/locale/de_AT/katello.po +77 -263
  183. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  184. data/locale/de_DE/katello.po +77 -263
  185. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  186. data/locale/el/katello.po +77 -263
  187. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  188. data/locale/en/katello.po +77 -263
  189. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  190. data/locale/en_GB/katello.po +77 -263
  191. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  192. data/locale/en_US/katello.po +77 -263
  193. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  194. data/locale/es/katello.po +245 -432
  195. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  196. data/locale/et_EE/katello.po +77 -263
  197. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  198. data/locale/fr/katello.po +906 -1092
  199. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  200. data/locale/gl/katello.po +77 -263
  201. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  202. data/locale/gu/katello.po +77 -263
  203. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  204. data/locale/he_IL/katello.po +77 -263
  205. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  206. data/locale/hi/katello.po +77 -263
  207. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  208. data/locale/id/katello.po +77 -263
  209. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  210. data/locale/it/katello.po +78 -264
  211. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  212. data/locale/ja/katello.po +634 -822
  213. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  214. data/locale/ka/katello.po +474 -662
  215. data/locale/katello.pot +1194 -1472
  216. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  217. data/locale/kn/katello.po +77 -263
  218. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  219. data/locale/ko/katello.po +2125 -2324
  220. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  221. data/locale/ml_IN/katello.po +77 -263
  222. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  223. data/locale/mr/katello.po +77 -263
  224. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  225. data/locale/nl_NL/katello.po +77 -263
  226. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  227. data/locale/or/katello.po +77 -263
  228. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  229. data/locale/pa/katello.po +77 -263
  230. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  231. data/locale/pl/katello.po +77 -263
  232. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  233. data/locale/pl_PL/katello.po +77 -263
  234. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  235. data/locale/pt/katello.po +77 -263
  236. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  237. data/locale/pt_BR/katello.po +258 -445
  238. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  239. data/locale/ro/katello.po +77 -263
  240. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  241. data/locale/ro_RO/katello.po +77 -263
  242. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  243. data/locale/ru/katello.po +78 -264
  244. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  245. data/locale/sl/katello.po +77 -263
  246. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  247. data/locale/sv_SE/katello.po +77 -263
  248. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  249. data/locale/ta/katello.po +77 -263
  250. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  251. data/locale/ta_IN/katello.po +77 -263
  252. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  253. data/locale/te/katello.po +77 -263
  254. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  255. data/locale/tr/katello.po +77 -263
  256. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  257. data/locale/vi/katello.po +77 -263
  258. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  259. data/locale/vi_VN/katello.po +77 -263
  260. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  261. data/locale/zh/katello.po +77 -263
  262. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  263. data/locale/zh_CN/katello.po +632 -824
  264. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  265. data/locale/zh_TW/katello.po +78 -264
  266. data/webpack/ForemanColumnExtensions/index.js +12 -4
  267. data/webpack/components/ActivationKeysSearch/index.js +6 -7
  268. data/webpack/components/Bookmark/AddBookmarkModal.js +3 -3
  269. data/webpack/components/Bookmark/Bookmark.scss +3 -3
  270. data/webpack/components/Bookmark/index.js +7 -2
  271. data/webpack/components/EditableSwitch.js +1 -1
  272. data/webpack/components/EditableTextInput/EditableTextInput.js +1 -1
  273. data/webpack/components/EditableTextInput/editableTextInput.scss +1 -1
  274. data/webpack/components/Errata/index.js +1 -24
  275. data/webpack/components/Loading.js +10 -6
  276. data/webpack/components/Packages/index.js +2 -1
  277. data/webpack/components/SelectAllCheckbox/index.js +7 -3
  278. data/webpack/components/SelectableDropdown/SelectableDropdown.js +21 -3
  279. data/webpack/components/Table/EmptyStateMessage.js +12 -14
  280. data/webpack/components/Table/MainTable.js +8 -7
  281. data/webpack/components/Table/MainTable.scss +4 -4
  282. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +4 -1
  283. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +1 -1
  284. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +9 -6
  285. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +2 -1
  286. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +4 -1
  287. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +23 -6
  288. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +1 -1
  289. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +5 -3
  290. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.scss +3 -3
  291. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +1 -1
  292. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +25 -10
  293. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +5 -2
  294. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +2 -2
  295. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +5 -4
  296. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +6 -3
  297. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +19 -12
  298. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +1 -1
  299. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +1 -4
  300. data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +1 -4
  301. data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +1 -4
  302. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/HwPropertiesCard.test.js +63 -0
  303. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/ImageModeCard.test.js +73 -0
  304. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/InstalledProductsCard.test.js +45 -0
  305. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +12 -2
  306. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.scss +1 -1
  307. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.js +10 -13
  308. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.scss +1 -1
  309. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +46 -21
  310. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.scss +1 -1
  311. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +15 -7
  312. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +13 -3
  313. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.scss +1 -1
  314. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +34 -20
  315. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.scss +1 -1
  316. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +8 -6
  317. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +5 -3
  318. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.scss +1 -1
  319. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +12 -13
  320. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +16 -6
  321. data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsInstallModal.test.js +10 -5
  322. data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsTab.test.js +48 -22
  323. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +123 -47
  324. data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +14 -7
  325. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +10 -5
  326. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +41 -24
  327. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +50 -25
  328. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +50 -25
  329. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +3 -0
  330. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_Review.js +16 -2
  331. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_ReviewFooter.js +6 -2
  332. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +5 -1
  333. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_Review.js +16 -2
  334. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_ReviewFooter.js +6 -2
  335. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +15 -2
  336. data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +1 -1
  337. data/webpack/components/extensions/Hosts/BulkActions/__tests__/bulkChangeHostCVModal.test.js +2 -1
  338. data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +1 -1
  339. data/webpack/components/extensions/Hosts/ImageModeHostAlert.js +14 -0
  340. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +14 -17
  341. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -1
  342. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -1
  343. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +38 -49
  344. data/webpack/containers/Application/overrides.scss +7 -7
  345. data/webpack/ouia_id_check.js +15 -11
  346. data/webpack/redux/actions/RedHatRepositories/helpers.js +0 -2
  347. data/webpack/scenes/ActivationKeys/Details/__tests__/activationKeyDetails.test.js +12 -6
  348. data/webpack/scenes/ActivationKeys/Details/components/DeleteMenu.js +12 -2
  349. data/webpack/scenes/ActivationKeys/Details/components/EditModal.js +3 -3
  350. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +3 -1
  351. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +3 -1
  352. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +12 -6
  353. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +1 -1
  354. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +22 -7
  355. data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +2 -2
  356. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +1 -1
  357. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +6 -3
  358. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +25 -15
  359. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -6
  360. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +2 -2
  361. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +1 -1
  362. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +33 -7
  363. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +10 -5
  364. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +4 -2
  365. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +10 -8
  366. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +4 -2
  367. data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +5 -5
  368. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +8 -4
  369. data/webpack/scenes/Content/__tests__/contentTable.test.js +4 -2
  370. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -1
  371. data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +1 -0
  372. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +2 -1
  373. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +86 -31
  374. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.scss +10 -2
  375. data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -0
  376. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +10 -4
  377. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +3 -1
  378. data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +6 -6
  379. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +7 -2
  380. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +7 -2
  381. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +3 -3
  382. data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +1 -1
  383. data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +2 -1
  384. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +3 -2
  385. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +10 -8
  386. data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +2 -1
  387. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +16 -5
  388. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +19 -5
  389. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
  390. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +11 -2
  391. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/compositeCVDetails.fixtures.json +2 -1
  392. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +69 -27
  393. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/publishedContentViewDetails.fixtures.json +2 -1
  394. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +22 -29
  395. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +6 -2
  396. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +20 -7
  397. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +4 -2
  398. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +5 -2
  399. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +3 -1
  400. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +1 -1
  401. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +4 -2
  402. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +13 -1
  403. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +23 -7
  404. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +23 -5
  405. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +15 -3
  406. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +15 -3
  407. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -1
  408. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +6 -4
  409. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +11 -1
  410. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +4 -2
  411. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/matchContentModal.scss +1 -1
  412. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +2 -2
  413. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +4 -4
  414. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +18 -12
  415. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +7 -11
  416. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +81 -70
  417. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +1 -0
  418. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +4 -2
  419. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +52 -38
  420. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +9 -4
  421. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +18 -12
  422. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +1 -0
  423. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +1 -0
  424. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +1 -0
  425. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +2 -1
  426. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +77 -67
  427. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +1 -0
  428. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvPackageFilterDetail.fixtures.json +1 -0
  429. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +2 -2
  430. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +4 -2
  431. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +1 -1
  432. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +7 -5
  433. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +6 -3
  434. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
  435. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +3 -2
  436. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +3 -1
  437. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +2 -2
  438. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +3 -1
  439. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +3 -1
  440. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +4 -4
  441. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +11 -11
  442. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +15 -5
  443. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
  444. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +13 -3
  445. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +3 -1
  446. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +17 -13
  447. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +12 -7
  448. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +64 -7
  449. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +52 -21
  450. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +30 -16
  451. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +7 -7
  452. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +5 -3
  453. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +4 -2
  454. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +6 -3
  455. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +2 -1
  456. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +6 -6
  457. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +35 -4
  458. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  459. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetail.test.js +197 -0
  460. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetails.fixtures.json +82 -0
  461. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +3 -7
  462. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +2 -2
  463. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +6 -5
  464. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +3 -1
  465. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +15 -7
  466. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -4
  467. data/webpack/scenes/ContentViews/Table/ContentViewVersionCell.js +6 -4
  468. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +14 -3
  469. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +3 -0
  470. data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -0
  471. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +89 -2
  472. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +85 -14
  473. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
  474. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +20 -6
  475. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +4 -1
  476. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +11 -2
  477. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +27 -7
  478. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +2 -2
  479. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +6 -2
  480. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +4 -1
  481. data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +4 -2
  482. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +7 -6
  483. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +2 -2
  484. data/webpack/scenes/ContentViews/components/contentViewIcon.scss +16 -3
  485. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +6 -1
  486. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +3 -3
  487. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +2 -1
  488. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +5 -3
  489. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +3 -2
  490. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -1
  491. data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +1 -1
  492. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +1 -1
  493. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepositoryContent.test.js.snap +1 -1
  494. data/webpack/scenes/RedHatRepositories/index.scss +1 -1
  495. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +27 -7
  496. data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +51 -2
  497. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +2 -2
  498. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +14 -9
  499. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationForm.scss +1 -1
  500. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CustomCdnTypeForm.js +2 -2
  501. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +6 -6
  502. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +2 -1
  503. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CustomCdnTypeForm.test.js +2 -1
  504. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/ExportSyncForm.test.js +2 -1
  505. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/NetworkSyncForm.test.js +2 -1
  506. metadata +72 -53
  507. data/app/models/katello/yum_metadata_file.rb +0 -22
  508. data/app/services/katello/pulp3/yum_metadata_file.rb +0 -20
  509. data/db/migrate/20250714190050_add_missing_rpms_evr_index.rb +0 -14
@@ -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
  });