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
@@ -49,7 +49,7 @@ const renderOptions = isTracerInstalled => ({ // sets initial Redux state
49
49
  },
50
50
  });
51
51
 
52
- const actionMenuToTheRightOf = node => node.nextElementSibling.firstElementChild.firstElementChild;
52
+ const actionMenuToTheRightOf = node => node.nextElementSibling.firstElementChild;
53
53
 
54
54
  const hostTraces = foremanApi.getApiUrl('/hosts/1/traces');
55
55
  const autocompleteUrl = '/hosts/1/traces/auto_complete_search';
@@ -80,7 +80,8 @@ describe('With tracer installed', () => {
80
80
  await patientlyWaitFor(() => expect(queryByText(firstTrace.application)).toBeInTheDocument());
81
81
  // Assert request was made and completed, see helper function
82
82
  assertNockRequest(autocompleteScope);
83
- assertNockRequest(scope, done);
83
+ assertNockRequest(scope);
84
+ done();
84
85
  });
85
86
 
86
87
  test('Can handle no traces being present', async (done) => {
@@ -99,7 +100,8 @@ describe('With tracer installed', () => {
99
100
  await patientlyWaitFor(() => expect(queryByText('No applications to restart')).toBeInTheDocument());
100
101
  // Assert request was made and completed, see helper function
101
102
  assertNockRequest(autocompleteScope);
102
- assertNockRequest(scope, done);
103
+ assertNockRequest(scope);
104
+ done();
103
105
  });
104
106
 
105
107
  test('Can bulk restart traces via Restart App button', async (done) => {
@@ -137,7 +139,8 @@ describe('With tracer installed', () => {
137
139
 
138
140
  assertNockRequest(autocompleteScope);
139
141
  assertNockRequest(resolveTracesScope);
140
- assertNockRequest(scope, done);
142
+ assertNockRequest(scope);
143
+ done();
141
144
  });
142
145
 
143
146
  test('Warns you when one of the selected traces requires reboot', async (done) => {
@@ -167,7 +170,8 @@ describe('With tracer installed', () => {
167
170
  expect(queryByText('At least one of the selected items requires the host to reboot')).toBeInTheDocument();
168
171
  });
169
172
  assertNockRequest(autocompleteScope);
170
- assertNockRequest(scope, done);
173
+ assertNockRequest(scope);
174
+ done();
171
175
  });
172
176
 
173
177
  test('Warns about reboot when using select all', async (done) => {
@@ -197,7 +201,8 @@ describe('With tracer installed', () => {
197
201
  expect(queryByText('At least one of the selected items requires the host to reboot')).toBeInTheDocument();
198
202
  });
199
203
  assertNockRequest(autocompleteScope);
200
- assertNockRequest(scope, done);
204
+ assertNockRequest(scope);
205
+ done();
201
206
  });
202
207
 
203
208
  test('Can bulk restart traces via remote execution', async (done) => {
@@ -227,14 +232,18 @@ describe('With tracer installed', () => {
227
232
  fireEvent.click(traceCheckbox);
228
233
  expect(traceCheckbox.checked).toEqual(true);
229
234
  const actionMenu = getByLabelText('bulk_actions');
230
- actionMenu.click();
235
+
236
+ await act(async () => {
237
+ actionMenu.click();
238
+ });
231
239
  const viaRexAction = queryByText('Restart via remote execution');
232
240
  expect(viaRexAction).toBeInTheDocument();
233
241
  viaRexAction.click();
234
242
 
235
243
  assertNockRequest(autocompleteScope);
236
244
  assertNockRequest(resolveTracesScope);
237
- assertNockRequest(scope, done);
245
+ assertNockRequest(scope);
246
+ done();
238
247
  });
239
248
 
240
249
  test('Can select all, exclude and bulk restart traces via remote execution', async (done) => {
@@ -268,17 +277,23 @@ describe('With tracer installed', () => {
268
277
 
269
278
 
270
279
  const selectAllCheckbox = getByLabelText('Select all');
271
- fireEvent.click(selectAllCheckbox);
280
+
281
+ await act(async () => {
282
+ fireEvent.click(selectAllCheckbox);
283
+ });
272
284
  expect(traceCheckbox.checked).toEqual(true);
273
285
 
274
286
  fireEvent.click(getByLabelText('Select row 0')); // de select
275
287
  fireEvent.click(getByLabelText('Select row 2')); // de select
276
288
 
277
- fireEvent.click(getByText('Reboot host'));
289
+ await act(async () => {
290
+ fireEvent.click(getByText('Reboot host'));
291
+ });
278
292
 
279
293
  assertNockRequest(autocompleteScope);
280
294
  assertNockRequest(resolveTracesScope);
281
- assertNockRequest(scope, done);
295
+ assertNockRequest(scope);
296
+ done();
282
297
  });
283
298
 
284
299
  test('Can restart a single trace via remote execution', async (done) => {
@@ -301,20 +316,23 @@ describe('With tracer installed', () => {
301
316
  await patientlyWaitFor(() => {
302
317
  const traceNameNode = getByText(firstTrace.helper);
303
318
  traceActionMenu = actionMenuToTheRightOf(traceNameNode);
304
- expect(traceActionMenu).toHaveAttribute('aria-label', 'Actions');
319
+ expect(traceActionMenu).toHaveAttribute('aria-label', 'Kebab toggle');
320
+ });
321
+ await act(async () => {
322
+ traceActionMenu.click();
305
323
  });
306
- traceActionMenu.click();
307
-
308
324
  let viaRexAction;
309
325
  await patientlyWaitFor(() => {
310
326
  viaRexAction = getByText('Restart via remote execution');
311
327
  expect(viaRexAction).toBeInTheDocument();
312
328
  });
313
- viaRexAction.click();
314
-
329
+ await act(async () => {
330
+ viaRexAction.click();
331
+ });
315
332
  assertNockRequest(autocompleteScope);
316
333
  assertNockRequest(resolveTracesScope);
317
- assertNockRequest(scope, done);
334
+ assertNockRequest(scope);
335
+ done();
318
336
  });
319
337
 
320
338
  test('Can restart a single trace via customized remote execution', async (done) => {
@@ -334,10 +352,11 @@ describe('With tracer installed', () => {
334
352
  await patientlyWaitFor(() => {
335
353
  const traceNameNode = getByText(firstTrace.helper);
336
354
  traceActionMenu = actionMenuToTheRightOf(traceNameNode);
337
- expect(traceActionMenu).toHaveAttribute('aria-label', 'Actions');
355
+ expect(traceActionMenu).toHaveAttribute('aria-label', 'Kebab toggle');
356
+ });
357
+ await act(async () => {
358
+ fireEvent.click(traceActionMenu);
338
359
  });
339
- fireEvent.click(traceActionMenu);
340
-
341
360
  let viaCustomizedRexAction;
342
361
  await patientlyWaitFor(() => {
343
362
  viaCustomizedRexAction = getByText('Restart via customized remote execution');
@@ -349,7 +368,8 @@ describe('With tracer installed', () => {
349
368
  );
350
369
 
351
370
  assertNockRequest(autocompleteScope);
352
- assertNockRequest(scope, done);
371
+ assertNockRequest(scope);
372
+ done();
353
373
  });
354
374
 
355
375
  test('Can bulk restart traces via customized remote execution', async (done) => {
@@ -372,7 +392,9 @@ describe('With tracer installed', () => {
372
392
  expect(traceCheckbox.checked).toEqual(true);
373
393
 
374
394
  const actionMenu = getByLabelText('bulk_actions');
375
- fireEvent.click(actionMenu);
395
+ await act(async () => {
396
+ fireEvent.click(actionMenu);
397
+ });
376
398
  const viaCustomizedRexAction = queryByText('Restart via customized remote execution');
377
399
 
378
400
  expect(viaCustomizedRexAction).toBeInTheDocument();
@@ -382,7 +404,8 @@ describe('With tracer installed', () => {
382
404
  );
383
405
 
384
406
  assertNockRequest(autocompleteScope);
385
- assertNockRequest(scope, done);
407
+ assertNockRequest(scope);
408
+ done();
386
409
  });
387
410
 
388
411
  describe('Remote execution URL helper logic', () => {
@@ -410,7 +433,8 @@ describe('With tracer installed', () => {
410
433
  expect(traceCheckbox.disabled).toEqual(true);
411
434
 
412
435
  assertNockRequest(autocompleteScope);
413
- assertNockRequest(scope, done);
436
+ assertNockRequest(scope);
437
+ done();
414
438
  });
415
439
  });
416
440
  });
@@ -453,7 +477,8 @@ describe('Without tracer installed', () => {
453
477
  fireEvent.click(enableTracesModalButton);
454
478
  expect(queryByText('via remote execution')).not.toBeInTheDocument();
455
479
 
456
- assertNockRequest(jobInvocationScope, done);
480
+ assertNockRequest(jobInvocationScope);
481
+ done();
457
482
  });
458
483
 
459
484
  test('Detects if tracer package is not available to install', async () => {
@@ -24,3 +24,6 @@ export const hasRequiredPermissions = (requiredPermissions = [], userPermissions
24
24
 
25
25
  export const missingRequiredPermissions = (requiredPermissions = [], userPermissions) =>
26
26
  !hasRequiredPermissions(requiredPermissions, userPermissions);
27
+
28
+ export const hostIsImageMode = ({ hostDetails }) =>
29
+ hostDetails?.content_facet_attributes?.bootc_booted_image;
@@ -1,8 +1,22 @@
1
1
  import React, { useContext, useState } from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
3
  import { FormattedMessage } from 'react-intl';
4
- import { TreeView, Button, Text, TextContent, TextVariants, Flex, FlexItem, Dropdown, DropdownItem, DropdownToggle } from '@patternfly/react-core';
5
- import { useWizardContext } from '@patternfly/react-core/next';
4
+ import {
5
+ TreeView,
6
+ Button,
7
+ Text,
8
+ TextContent,
9
+ TextVariants,
10
+ Flex,
11
+ FlexItem,
12
+ useWizardContext,
13
+ } from '@patternfly/react-core';
14
+ import {
15
+ Dropdown,
16
+ DropdownItem,
17
+ DropdownToggle,
18
+ } from '@patternfly/react-core/deprecated';
19
+
6
20
  import { CaretDownIcon } from '@patternfly/react-icons';
7
21
  import { BulkErrataWizardContext } from './BulkErrataWizard';
8
22
 
@@ -1,7 +1,11 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
- import { Button } from '@patternfly/react-core';
4
- import { WizardFooterWrapper, useWizardContext } from '@patternfly/react-core/next';
3
+ import {
4
+ Button,
5
+ WizardFooterWrapper,
6
+ useWizardContext,
7
+ } from '@patternfly/react-core';
8
+
5
9
  import { BulkErrataWizardContext } from './BulkErrataWizard';
6
10
  import { dropdownOptions } from './04_Review';
7
11
  import { errataInstallUrl } from '../../../HostDetails/Tabs/customizedRexUrlHelpers';
@@ -1,5 +1,9 @@
1
1
  import React, { useState, createContext, useContext } from 'react';
2
- import { Wizard, WizardHeader, WizardStep } from '@patternfly/react-core/next';
2
+ import {
3
+ Wizard,
4
+ WizardHeader,
5
+ WizardStep,
6
+ } from '@patternfly/react-core';
3
7
  import { translate as __ } from 'foremanReact/common/I18n';
4
8
  import { useForemanModal } from 'foremanReact/components/ForemanModal/ForemanModalHooks';
5
9
  import { useBulkSelect } from 'foremanReact/components/PF4/TableIndexPage/Table/TableHooks';
@@ -1,8 +1,22 @@
1
1
  import React, { useContext, useState } from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
3
  import { FormattedMessage } from 'react-intl';
4
- import { TreeView, Button, Text, TextContent, TextVariants, Flex, FlexItem, Dropdown, DropdownItem, DropdownToggle } from '@patternfly/react-core';
5
- import { useWizardContext } from '@patternfly/react-core/next';
4
+ import {
5
+ TreeView,
6
+ Button,
7
+ Text,
8
+ TextContent,
9
+ TextVariants,
10
+ Flex,
11
+ FlexItem,
12
+ useWizardContext, /* data-codemods */
13
+ } from '@patternfly/react-core';
14
+ import {
15
+ Dropdown,
16
+ DropdownItem,
17
+ DropdownToggle,
18
+ } from '@patternfly/react-core/deprecated';
19
+
6
20
  import { CaretDownIcon } from '@patternfly/react-icons';
7
21
  import { BulkPackagesWizardContext, UPGRADE_ALL, INSTALL, REMOVE, UPGRADE } from './BulkPackagesWizard';
8
22
 
@@ -1,7 +1,11 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
- import { Button } from '@patternfly/react-core';
4
- import { WizardFooterWrapper, useWizardContext } from '@patternfly/react-core/next';
3
+ import {
4
+ Button,
5
+ WizardFooterWrapper,
6
+ useWizardContext,
7
+ } from '@patternfly/react-core';
8
+
5
9
  import { BulkPackagesWizardContext, INSTALL, UPGRADE, UPGRADE_ALL, REMOVE } from './BulkPackagesWizard';
6
10
  import { dropdownOptions } from './04_Review';
7
11
  import { katelloPackageInstallBySearchUrl, packagesUpdateUrl, katelloPackageRemoveBySearchUrl } from '../../../HostDetails/Tabs/customizedRexUrlHelpers';
@@ -1,6 +1,15 @@
1
1
  import React, { useState, createContext, useContext } from 'react';
2
- import { Radio, Text, TextVariants, TextContent, Alert } from '@patternfly/react-core';
3
- import { Wizard, WizardHeader, WizardStep } from '@patternfly/react-core/next';
2
+ import {
3
+ Radio,
4
+ Text,
5
+ TextVariants,
6
+ TextContent,
7
+ Alert,
8
+ Wizard,
9
+ WizardHeader,
10
+ WizardStep,
11
+ } from '@patternfly/react-core';
12
+
4
13
  import { translate as __ } from 'foremanReact/common/I18n';
5
14
  import { useForemanModal } from 'foremanReact/components/ForemanModal/ForemanModalHooks';
6
15
  import { useBulkSelect } from 'foremanReact/components/PF4/TableIndexPage/Table/TableHooks';
@@ -191,6 +200,7 @@ const BulkPackagesWizard = () => {
191
200
  label={__('Upgrade all packages')}
192
201
  id="r1-upgrade-all-packages"
193
202
  ouiaId="r1-upgrade-all-packages"
203
+ style={{ marginTop: '0rem' }}
194
204
  />
195
205
  <Radio
196
206
  isChecked={selectedAction === UPGRADE}
@@ -199,6 +209,7 @@ const BulkPackagesWizard = () => {
199
209
  label={__('Upgrade packages')}
200
210
  id="r2-upgrade-packages"
201
211
  ouiaId="r2-upgrade-packages"
212
+ style={{ marginTop: '0rem' }}
202
213
  />
203
214
  <Radio
204
215
  isChecked={selectedAction === INSTALL}
@@ -207,6 +218,7 @@ const BulkPackagesWizard = () => {
207
218
  label={__('Install packages')}
208
219
  id="r3-install-packages"
209
220
  ouiaId="r3-install-packages"
221
+ style={{ marginTop: '0rem' }}
210
222
  />
211
223
  <Radio
212
224
  isChecked={selectedAction === REMOVE}
@@ -215,6 +227,7 @@ const BulkPackagesWizard = () => {
215
227
  label={__('Remove packages')}
216
228
  id="r4-remove-packages"
217
229
  ouiaId="r4-remove-packages"
230
+ style={{ marginTop: '0rem' }}
218
231
  />
219
232
  </div>
220
233
  </WizardStep>
@@ -105,7 +105,7 @@ const HostReview = ({
105
105
  {__('Review hosts')}
106
106
  </Text>
107
107
  <Text ouiaId="mpw-step-3-content" component={TextVariants.p}>
108
- {__('Review and optionally exclude hosts from your selection.')}
108
+ {__('Review and optionally exclude hosts from your selection. Note that package actions on any image mode hosts will be transient and lost on the next reboot.')}
109
109
  </Text>
110
110
  </TextContent>
111
111
  {selectedCount === 0 && hasInteracted && (
@@ -128,6 +128,7 @@ test('Select an env > call CV API > select a CV > Save button is enabled', async
128
128
  expect(saveButton).toBeInTheDocument();
129
129
  expect(saveButton).toHaveAttribute('aria-disabled', 'false');
130
130
 
131
- assertNockRequest(contentViewsScope, done);
131
+ assertNockRequest(contentViewsScope);
132
+ done();
132
133
  act(done);
133
134
  });
@@ -47,7 +47,7 @@ FontAwesomeImageModeIcon.propTypes = {
47
47
  };
48
48
 
49
49
  FontAwesomeImageModeIcon.defaultProps = {
50
- fill: 'var(--pf-global--palette--black-600)',
50
+ fill: 'var(--pf-v5-global--palette--black-600)',
51
51
  margin: '-2px',
52
52
  title: __('Image mode'),
53
53
  };
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import {
3
+ Alert,
4
+ } from '@patternfly/react-core';
5
+
6
+ import { translate as __ } from 'foremanReact/common/I18n';
7
+
8
+ const ImageModeHostAlert = () => (
9
+ <Alert style={{ alignItems: 'center' }} className="margin-16-24" title={__('Package actions will be transient')} variant="info" ouiaId="image-mode-alert-info">
10
+ <p>{__('Any updates to image mode host(s) will be lost on the next reboot.')}</p>
11
+ </Alert>
12
+ );
13
+
14
+ export default ImageModeHostAlert;
@@ -3,21 +3,6 @@
3
3
  exports[`ActivationKeys renders 1`] = `
4
4
  <FormGroup
5
5
  fieldId="activation_keys_field"
6
- helperText="From host group: "
7
- helperTextInvalid={
8
- <a
9
- href="/activation_keys/new"
10
- >
11
- Create new activation key
12
- </a>
13
- }
14
- helperTextInvalidIcon={
15
- <ExclamationCircleIcon
16
- color="currentColor"
17
- noVerticalAlign={false}
18
- size="sm"
19
- />
20
- }
21
6
  isRequired={true}
22
7
  label="Activation Keys"
23
8
  labelIcon={
@@ -26,7 +11,6 @@ exports[`ActivationKeys renders 1`] = `
26
11
  />
27
12
  }
28
13
  onFocus={[Function]}
29
- validated="error"
30
14
  >
31
15
  <Select
32
16
  aria-describedby=""
@@ -70,7 +54,6 @@ exports[`ActivationKeys renders 1`] = `
70
54
  ouiaSafe={true}
71
55
  placeholderText="No Activation keys to select"
72
56
  position="left"
73
- removeFindDomNode={false}
74
57
  removeSelectionAriaLabel="Remove"
75
58
  selections={Array []}
76
59
  shouldResetOnSelect={true}
@@ -85,5 +68,19 @@ exports[`ActivationKeys renders 1`] = `
85
68
  width=""
86
69
  zIndex={9999}
87
70
  />
71
+ <FormHelperText>
72
+ <HelperText>
73
+ <HelperTextItem
74
+ icon={<ExclamationCircleIcon />}
75
+ variant="error"
76
+ >
77
+ <a
78
+ href="/activation_keys/new"
79
+ >
80
+ Create new activation key
81
+ </a>
82
+ </HelperTextItem>
83
+ </HelperText>
84
+ </FormHelperText>
88
85
  </FormGroup>
89
86
  `;
@@ -6,10 +6,10 @@ exports[`Force renders 1`] = `
6
6
  >
7
7
  <Checkbox
8
8
  className=""
9
- component="div"
10
9
  id="reg_katello_force"
11
10
  isChecked={false}
12
11
  isDisabled={false}
12
+ isLabelWrapped={false}
13
13
  isRequired={false}
14
14
  isValid={true}
15
15
  label={
@@ -6,10 +6,10 @@ exports[`IgnoreSubmanErrors renders 1`] = `
6
6
  >
7
7
  <Checkbox
8
8
  className=""
9
- component="div"
10
9
  id="reg_katello_ignore"
11
10
  isChecked={false}
12
11
  isDisabled={false}
12
+ isLabelWrapped={false}
13
13
  isRequired={false}
14
14
  isValid={true}
15
15
  label={
@@ -1,21 +1,14 @@
1
1
  /* eslint-disable max-len, react/forbid-prop-types */
2
2
  import React, { useState, useEffect } from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import {
5
- FormGroup,
6
- Select,
7
- SelectOption,
8
- SelectVariant,
9
- } from '@patternfly/react-core';
4
+ import { FormGroup, FormHelperText, HelperText, HelperTextItem } from '@patternfly/react-core';
5
+ import { Select, SelectOption, SelectVariant } from '@patternfly/react-core/deprecated';
10
6
 
11
7
  import LabelIcon from 'foremanReact/components/common/LabelIcon';
12
8
  import { ExclamationCircleIcon } from '@patternfly/react-icons';
13
9
  import { sprintf, translate as __ } from 'foremanReact/common/I18n';
14
10
 
15
- import {
16
- validateAKField,
17
- akHasValidValue,
18
- } from '../RegistrationCommandsPageHelpers';
11
+ import { validateAKField, akHasValidValue } from '../RegistrationCommandsPageHelpers';
19
12
 
20
13
  const ActivationKeys = ({
21
14
  activationKeys,
@@ -34,11 +27,7 @@ const ActivationKeys = ({
34
27
  onChange({ activationKeys: keys });
35
28
  handleInvalidField(
36
29
  'Activation Keys',
37
- akHasValidValue(
38
- hostGroupId,
39
- pluginValues?.activationKeys,
40
- hostGroupActivationKeys,
41
- ),
30
+ akHasValidValue(hostGroupId, pluginValues?.activationKeys, hostGroupActivationKeys),
42
31
  );
43
32
  };
44
33
 
@@ -54,41 +43,24 @@ const ActivationKeys = ({
54
43
  useEffect(() => {
55
44
  handleInvalidField(
56
45
  'Activation Keys',
57
- akHasValidValue(
58
- hostGroupId,
59
- pluginValues?.activationKeys,
60
- hostGroupActivationKeys,
61
- ),
46
+ akHasValidValue(hostGroupId, pluginValues?.activationKeys, hostGroupActivationKeys),
62
47
  );
63
48
  }, [handleInvalidField, hostGroupId, hostGroupActivationKeys, pluginValues]);
64
49
 
50
+ const isError =
51
+ validateAKField(
52
+ hasInteraction,
53
+ hostGroupId,
54
+ activationKeys,
55
+ pluginValues?.activationKeys,
56
+ hostGroupActivationKeys,
57
+ ) === 'error';
65
58
  return (
66
59
  <FormGroup
67
60
  onFocus={() => setHasInteraction(true)}
68
61
  label={__('Activation Keys')}
69
62
  fieldId="activation_keys_field"
70
- helperText={
71
- hostGroupActivationKeys &&
72
- sprintf('From host group: %s', hostGroupActivationKeys)
73
- }
74
- helperTextInvalid={
75
- activationKeys?.length === 0 ? (
76
- <a href="/activation_keys/new">{__('Create new activation key')}</a>
77
- ) : (
78
- __('No Activation Keys selected')
79
- )
80
- }
81
- helperTextInvalidIcon={<ExclamationCircleIcon />}
82
- labelIcon={
83
- <LabelIcon text={__('Activation key(s) to use during registration')} />
84
- }
85
- validated={validateAKField(
86
- hasInteraction,
87
- hostGroupId,
88
- activationKeys,
89
- pluginValues?.activationKeys,
90
- hostGroupActivationKeys,
91
- )}
63
+ labelIcon={<LabelIcon text={__('Activation key(s) to use during registration')} />}
92
64
  isRequired
93
65
  >
94
66
  <Select
@@ -116,9 +88,7 @@ const ActivationKeys = ({
116
88
  id="activation_keys_field"
117
89
  className="without_select2"
118
90
  isDisabled={isLoading || activationKeys?.length === 0}
119
- placeholderText={
120
- activationKeys?.length === 0 ? __('No Activation keys to select') : ''
121
- }
91
+ placeholderText={activationKeys?.length === 0 ? __('No Activation keys to select') : ''}
122
92
  >
123
93
  {activationKeys &&
124
94
  activationKeys.map(ack => (
@@ -129,6 +99,28 @@ const ActivationKeys = ({
129
99
  />
130
100
  ))}
131
101
  </Select>
102
+ {isError && (
103
+ <FormHelperText>
104
+ <HelperText>
105
+ <HelperTextItem variant="error" icon={<ExclamationCircleIcon />}>
106
+ {activationKeys?.length === 0 ? (
107
+ <a href="/activation_keys/new">{__('Create new activation key')}</a>
108
+ ) : (
109
+ __('No Activation Keys selected')
110
+ )}
111
+ </HelperTextItem>
112
+ </HelperText>
113
+ </FormHelperText>
114
+ )}
115
+ {!isError && hostGroupActivationKeys && (
116
+ <FormHelperText>
117
+ <HelperText>
118
+ <HelperTextItem>
119
+ {sprintf('From host group: %s', hostGroupActivationKeys)}
120
+ </HelperTextItem>
121
+ </HelperText>
122
+ </FormHelperText>
123
+ )}
132
124
  </FormGroup>
133
125
  );
134
126
  };
@@ -136,10 +128,7 @@ const ActivationKeys = ({
136
128
  ActivationKeys.propTypes = {
137
129
  activationKeys: PropTypes.array,
138
130
  selectedKeys: PropTypes.array,
139
- hostGroupActivationKeys: PropTypes.oneOfType([
140
- PropTypes.string,
141
- PropTypes.array,
142
- ]),
131
+ hostGroupActivationKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
143
132
  hostGroupId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
144
133
  pluginValues: PropTypes.shape({
145
134
  activationKeys: PropTypes.array,
@@ -122,7 +122,7 @@ html .pagination-pf-pagesize.btn-group {
122
122
  }
123
123
 
124
124
  // Modal sizing fix
125
- .pf-l-bullseye .pf-c-modal-box {
125
+ .pf-v5-l-bullseye .pf-v5-c-modal-box {
126
126
  margin-top: 76px;
127
127
  max-height: calc(100vh - 76px);
128
128
 
@@ -137,11 +137,11 @@ html .pagination-pf-pagesize.btn-group {
137
137
  margin: 0 8px;
138
138
 
139
139
  svg {
140
- color: var(--pf-global--Color--200)
140
+ color: var(--pf-v5-global--Color--200)
141
141
  }
142
142
 
143
143
  svg:hover {
144
- color: var(--pf-global--Color--100)
144
+ color: var(--pf-v5-global--Color--100)
145
145
  }
146
146
  }
147
147
 
@@ -168,24 +168,24 @@ html .pagination-pf-pagesize.btn-group {
168
168
 
169
169
  .primary-detail-border {
170
170
  border-top: 0.2px;
171
- border-top-color: var(--pf-c-table--BorderColor);
171
+ border-top-color: var(--pf-v5-c-table--BorderColor);
172
172
  border-top-style: inset;
173
173
  }
174
174
 
175
175
  .primary-detail-stack-items-border {
176
176
  border-bottom: 0.2px;
177
- border-bottom-color: var(--pf-c-table--BorderColor);
177
+ border-bottom-color: var(--pf-v5-c-table--BorderColor);
178
178
  border-bottom-style: inset;
179
179
  }
180
180
 
181
181
  .border-left {
182
182
  border-left: 0.2px;
183
- border-left-color: var(--pf-c-table--BorderColor);
183
+ border-left-color: var(--pf-v5-c-table--BorderColor);
184
184
  border-left-style: inset;
185
185
  }
186
186
 
187
187
  .border-right {
188
188
  border-right: 0.2px;
189
- border-right-color: var(--pf-c-table--BorderColor);
189
+ border-right-color: var(--pf-v5-c-table--BorderColor);
190
190
  border-right-style: inset;
191
191
  }