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
@@ -53,6 +53,7 @@ const buildExpandableRows = (contentViews) => {
53
53
  id,
54
54
  name,
55
55
  composite,
56
+ rolling,
56
57
  next_version: nextVersion,
57
58
  version_count: versionCount,
58
59
  description,
@@ -74,6 +75,7 @@ const buildExpandableRows = (contentViews) => {
74
75
  cvName: name,
75
76
  cvVersionCount: versionCount,
76
77
  cvComposite: composite,
78
+ cvRolling: rolling,
77
79
  cvNextVersion: nextVersion,
78
80
  latestVersionEnvironments,
79
81
  latestVersionId,
@@ -94,6 +96,7 @@ const buildExpandableRows = (contentViews) => {
94
96
  cvId={id}
95
97
  cvName={name}
96
98
  cvComposite={composite}
99
+ cvRolling={rolling}
97
100
  {...{
98
101
  activationKeys, hosts, relatedCVCount, relatedCompositeCVs,
99
102
  }}
@@ -1,6 +1,7 @@
1
1
  const buildContentView = id => ({
2
2
  id,
3
3
  composite: false,
4
+ rolling: false,
4
5
  name: `contentView${id}`,
5
6
  environments: [],
6
7
  repositories: [],
@@ -1,6 +1,6 @@
1
1
  {
2
- "total": 2,
3
- "subtotal": 2,
2
+ "total": 3,
3
+ "subtotal": 3,
4
4
  "page": 1,
5
5
  "per_page": 20,
6
6
  "error": null,
@@ -14,6 +14,7 @@
14
14
  "results": [
15
15
  {
16
16
  "composite": false,
17
+ "rolling": false,
17
18
  "component_ids": [],
18
19
  "default": false,
19
20
  "version_count": 1,
@@ -107,6 +108,7 @@
107
108
  },
108
109
  {
109
110
  "composite": true,
111
+ "rolling": false,
110
112
  "component_ids": [
111
113
  27,
112
114
  28
@@ -251,6 +253,91 @@
251
253
  ]
252
254
  }
253
255
  ]
256
+ },
257
+ {
258
+ "composite": false,
259
+ "rolling": true,
260
+ "component_ids": [],
261
+ "default": false,
262
+ "version_count": 1,
263
+ "latest_version": "1.0",
264
+ "latest_version_id": 14,
265
+ "latest_version_environments": [
266
+ {
267
+ "id": 1,
268
+ "name": "Library",
269
+ "label": "Library"
270
+ }
271
+ ],
272
+ "auto_publish": false,
273
+ "solve_dependencies": false,
274
+ "repository_ids": [
275
+ 1
276
+ ],
277
+ "id": 3,
278
+ "name": "cv_rolling",
279
+ "label": "cv_rolling",
280
+ "description": "I am a rolling CV",
281
+ "organization_id": 1,
282
+ "organization": {
283
+ "name": "Default Organization",
284
+ "label": "Default_Organization",
285
+ "id": 1
286
+ },
287
+ "created_at": "2020-03-19 15:08:59 UTC",
288
+ "updated_at": "2020-03-19 15:09:11 UTC",
289
+ "environments": [
290
+ {
291
+ "id": 8,
292
+ "name": "Library",
293
+ "label": "Library",
294
+ "permissions": {
295
+ "readable": true
296
+ }
297
+ }
298
+ ],
299
+ "repositories": [
300
+ {
301
+ "id": 3,
302
+ "name": "zoo3",
303
+ "label": "zoo3",
304
+ "content_type": "yum"
305
+ }
306
+ ],
307
+ "versions": [
308
+ {
309
+ "id": 3,
310
+ "version": "1.0",
311
+ "published": "2020-03-19 15:09:11 UTC",
312
+ "environment_ids": [
313
+ 1
314
+ ]
315
+ }
316
+ ],
317
+ "components": [],
318
+ "content_view_components": [],
319
+ "activation_keys": [
320
+ {
321
+ "id": 3,
322
+ "name": "test_ack_key_roll"
323
+ }
324
+ ],
325
+ "hosts": [
326
+ {
327
+ "id": 3,
328
+ "name": "katello-client3.samir.example.com"
329
+ }
330
+ ],
331
+ "last_task": {},
332
+ "next_version": "2.0",
333
+ "last_published": "2020-03-19 15:09:11 UTC",
334
+ "permissions": {
335
+ "view_content_views": true,
336
+ "edit_content_views": true,
337
+ "destroy_content_views": true,
338
+ "publish_content_views": true,
339
+ "promote_or_remove_content_views": true
340
+ }
254
341
  }
255
342
  ],
256
343
  "composite": 1,
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable no-useless-escape */
2
2
  import React from 'react';
3
- import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
3
+ import { renderWithRedux, patientlyWaitFor, fireEvent, act } from 'react-testing-lib-wrapper';
4
4
 
5
5
  import CONTENT_VIEWS_KEY from '../ContentViewsConstants';
6
6
  import ContentViewsPage from '../../ContentViews';
@@ -43,7 +43,8 @@ test('Can call API for CVs and show on screen on page load', async (done) => {
43
43
  });
44
44
 
45
45
  assertNockRequest(autocompleteScope);
46
- assertNockRequest(scope, done);
46
+ assertNockRequest(scope);
47
+ act(done);
47
48
  });
48
49
 
49
50
  test('Can show last task and link to it', async (done) => {
@@ -53,7 +54,8 @@ test('Can show last task and link to it', async (done) => {
53
54
  .query(true)
54
55
  .reply(200, cvIndexData);
55
56
 
56
- const { getByText, queryByText } = renderWithRedux(<ContentViewsPage />, renderOptions);
57
+ const { getByText, queryByText, queryAllByText } =
58
+ renderWithRedux(<ContentViewsPage />, renderOptions);
57
59
 
58
60
  expect(queryByText(firstCV.name)).toBeNull();
59
61
 
@@ -63,11 +65,12 @@ test('Can show last task and link to it', async (done) => {
63
65
  expect(getByText('3 days ago').closest('a'))
64
66
  .toHaveAttribute('href', '/foreman_tasks/tasks/54088dac-b990-491c-a891-1d7d1a3f5161/');
65
67
  // If no task is found display empty text N/A
66
- expect(queryByText('N/A')).toBeTruthy();
68
+ expect(queryAllByText('N/A')).toBeTruthy();
67
69
  });
68
70
 
69
71
  assertNockRequest(autocompleteScope);
70
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
72
+ assertNockRequest(scope);
73
+ act(done); // Pass jest callback to confirm test is done
71
74
  });
72
75
 
73
76
  test('Can show latest version and link to it', async (done) => {
@@ -88,18 +91,23 @@ test('Can show latest version and link to it', async (done) => {
88
91
  await patientlyWaitFor(() => {
89
92
  expect(queryByText(firstCV.name)).toBeTruthy();
90
93
  // Displays link to the latest version
91
- expect(getByText('Version 1.0').closest('a'))
94
+ expect(queryAllByText('Version 1.0')[0].closest('a'))
92
95
  .toHaveAttribute('href', '/content_views/2/versions/11/');
96
+ // We do not expect 'Version 1.0' for the rolling CV fixture
97
+ expect(queryAllByText('Version 1.0')).toHaveLength(1);
93
98
  // If no task is found display empty text Not yet published if latest version is null
94
99
  expect(queryAllByText('Not yet published')[0]).toBeTruthy();
95
100
  // Able to display Environment labels with link to the environment
96
- expect(getByText('Library').closest('a'))
101
+ expect(queryAllByText('Library')[0].closest('a'))
97
102
  .toHaveAttribute('href', '/lifecycle_environments/1');
98
103
  expect(getByText('dev').closest('a'))
99
104
  .toHaveAttribute('href', '/lifecycle_environments/2');
105
+ expect(queryAllByText('Library')[1].closest('a'))
106
+ .toHaveAttribute('href', '/lifecycle_environments/1');
100
107
  });
101
108
  assertNockRequest(autocompleteScope);
102
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
109
+ assertNockRequest(scope);
110
+ act(done); // Pass jest callback to confirm test is done
103
111
  });
104
112
 
105
113
  test('Can expand cv and show activation keys and hosts', async (done) => {
@@ -134,12 +142,68 @@ test('Can expand cv and show activation keys and hosts', async (done) => {
134
142
  // Displays hosts link with count
135
143
  expect(queryByLabelText('host_link_2')).toHaveAttribute('href', '/new/hosts?search=content_view_id%3D2');
136
144
  expect(queryByLabelText('host_link_2').textContent).toEqual('1');
145
+ // Content views can be part of a composite content view
146
+ expect(queryByText(/Related composite content views:/)).toBeVisible();
147
+ });
148
+
149
+ getAllByLabelText('Details')[0].click();
150
+ // Collapse content for first CV
151
+ await patientlyWaitFor(() => {
152
+ // Details should disappear
153
+ expect(queryByText(/Related composite content views:/)).not.toBeVisible();
137
154
  });
138
155
 
156
+ // Expand content for rolling CV
157
+ await patientlyWaitFor(() => {
158
+ getAllByLabelText('Details')[2].click();
159
+ expect(queryByLabelText('host_link_3').textContent).toEqual('1');
160
+ // Rolling content views cannot be part of composite content views
161
+ expect(queryByText(/Related composite content views:/)).not.toBeVisible();
162
+ });
139
163
  assertNockRequest(autocompleteScope);
140
164
  assertNockRequest(scope, done); // Pass jest callback to confirm test is done
141
165
  });
142
166
 
167
+ test('Can show the correct options in CV kebap menu', async (done) => {
168
+ const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
169
+ const scope = nockInstance
170
+ .get(cvIndexPath)
171
+ .query(true)
172
+ .reply(200, cvIndexData);
173
+
174
+ const { getAllByLabelText, queryByText } = renderWithRedux(<ContentViewsPage />, renderOptions);
175
+
176
+ await patientlyWaitFor(() => expect(getAllByLabelText('Kebab toggle')[0]).toBeInTheDocument());
177
+ await act(async () => {
178
+ getAllByLabelText('Kebab toggle')[0].click();
179
+ });
180
+ await patientlyWaitFor(async () => {
181
+ // open kebap menu of content view, should contain all available action options
182
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
183
+ expect(queryByText('Publish')).toBeVisible();
184
+ expect(queryByText('Promote')).toBeVisible();
185
+ expect(queryByText('Copy')).toBeVisible();
186
+ expect(queryByText('Delete')).toBeVisible();
187
+
188
+ // open kebap menu of rolling content view, should only show 'Delete' action
189
+ });
190
+ await act(async () => {
191
+ getAllByLabelText('Kebab toggle')[2].click();
192
+ });
193
+ await patientlyWaitFor(async () => {
194
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
195
+ expect(getAllByLabelText('Kebab toggle')[2]).toHaveAttribute('aria-expanded', 'true');
196
+ expect(queryByText('Publish')).toBeNull();
197
+ expect(queryByText('Promote')).toBeNull();
198
+ expect(queryByText('Copy')).toBeNull();
199
+ expect(queryByText('Delete')).toBeVisible();
200
+ });
201
+
202
+ assertNockRequest(autocompleteScope);
203
+ assertNockRequest(scope);
204
+ act(done); // Pass jest callback to confirm test is done
205
+ });
206
+
143
207
  test('Can handle no Content Views being present', async (done) => {
144
208
  const noResults = {
145
209
  total: 0,
@@ -158,7 +222,8 @@ test('Can handle no Content Views being present', async (done) => {
158
222
 
159
223
  expect(queryByText(firstCV.name)).toBeNull();
160
224
  await patientlyWaitFor(() => expect(queryByText('You currently have no content views to display')).toBeInTheDocument());
161
- assertNockRequest(scope, done);
225
+ assertNockRequest(scope);
226
+ act(done);
162
227
  });
163
228
 
164
229
  test('Can handle errored response', async (done) => {
@@ -171,7 +236,8 @@ test('Can handle errored response', async (done) => {
171
236
 
172
237
  expect(queryByText(firstCV.name)).toBeNull();
173
238
  await patientlyWaitFor(() => expect(queryByText(/Something went wrong! Please check server logs!/i)).toBeInTheDocument());
174
- assertNockRequest(scope, done);
239
+ assertNockRequest(scope);
240
+ act(done);
175
241
  });
176
242
 
177
243
  test('Can handle unpublished Content Views', async (done) => {
@@ -188,7 +254,8 @@ test('Can handle unpublished Content Views', async (done) => {
188
254
 
189
255
  await patientlyWaitFor(() => expect(getAllByText(/not yet published/i).length).toBeGreaterThan(0));
190
256
  assertNockRequest(autocompleteScope);
191
- assertNockRequest(scope, done);
257
+ assertNockRequest(scope);
258
+ act(done);
192
259
  });
193
260
 
194
261
  test('Can handle pagination', async (done) => {
@@ -232,7 +299,8 @@ test('Can handle pagination', async (done) => {
232
299
  });
233
300
  assertNockRequest(autocompleteScope);
234
301
  assertNockRequest(firstPageScope);
235
- assertNockRequest(secondPageScope, done); // Only pass jest callback to the last API request
302
+ assertNockRequest(secondPageScope);
303
+ act(done); // Only pass jest callback to the last API request
236
304
  });
237
305
 
238
306
  test('Can search for specific Content View', async (done) => {
@@ -289,7 +357,8 @@ test('Can search for specific Content View', async (done) => {
289
357
 
290
358
  assertNockRequest(autocompleteScope);
291
359
  assertNockRequest(initialScope);
292
- assertNockRequest(withSearchScope, done);
360
+ assertNockRequest(withSearchScope);
361
+ act(done);
293
362
  });
294
363
 
295
364
  test('Nothing is shown for empty search', async (done) => {
@@ -322,7 +391,8 @@ test('Nothing is shown for empty search', async (done) => {
322
391
 
323
392
  assertNockRequest(autocompleteScope);
324
393
  assertNockRequest(initialScope);
325
- assertNockRequest(withSearchScope, done);
394
+ assertNockRequest(withSearchScope);
395
+ act(done);
326
396
  });
327
397
 
328
398
  test('Displays Create Content View and opens modal with Form', async () => {
@@ -358,6 +428,7 @@ test('Displays Create Content View and opens modal with Form', async () => {
358
428
  expect(getByText('Name')).toBeInTheDocument();
359
429
  expect(getByText('Label')).toBeInTheDocument();
360
430
  expect(getByText('Composite content view')).toBeInTheDocument();
431
+ expect(getByText('Rolling content view')).toBeInTheDocument();
361
432
  expect(getByText('Content view')).toBeInTheDocument();
362
433
  expect(getByText('Solve dependencies')).toBeInTheDocument();
363
434
  expect(queryByText('Auto publish')).not.toBeInTheDocument();
@@ -9,9 +9,10 @@
9
9
  },
10
10
  "name": "mock_details",
11
11
  "composite": false,
12
+ "rolling": false,
12
13
  "next_version": "1.0",
13
14
  "id": "5",
14
15
  "version_count": 0,
15
16
  "filtered": true,
16
17
  "duplicate_repositories_to_publish": []
17
- }
18
+ }
@@ -1,25 +1,37 @@
1
1
  import React from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
3
  import PropTypes from 'prop-types';
4
- import { Tooltip } from '@patternfly/react-core';
5
- import { EnterpriseIcon, RegistryIcon } from '@patternfly/react-icons';
4
+ import { Tooltip, Icon } from '@patternfly/react-core';
5
+ import { EnterpriseIcon, RegistryIcon, SyncAltIcon } from '@patternfly/react-icons';
6
6
  import './contentViewIcon.scss';
7
7
 
8
8
  const ContentViewIcon = ({
9
- composite, count, description, style, ...toolTipProps
9
+ composite, rolling, count, description, style, ...toolTipProps
10
10
  }) => {
11
11
  const props = {
12
- className: composite ? 'svg-icon-composite' : 'svg-icon-component',
12
+ className: 'svg-icon-component',
13
13
  };
14
+ let content = __('Content view');
15
+ let icon = <Icon size="sm"><EnterpriseIcon {...props} /></Icon>;
16
+ if (composite) {
17
+ props.className = 'svg-icon-composite';
18
+ content = __('Composite content view');
19
+ icon = <Icon size="md"><RegistryIcon {...props} /></Icon>;
20
+ } else if (rolling) {
21
+ props.className = 'svg-icon-rolling';
22
+ content = __('Rolling content view');
23
+ icon = <Icon size="sm"><SyncAltIcon {...props} /></Icon>;
24
+ }
25
+
14
26
  const cvIcon = (
15
27
  <Tooltip
16
28
  position="auto"
17
29
  enableFlip
18
30
  entryDelay={400}
19
- content={composite ? __('Composite content view') : __('Content view')}
31
+ content={content}
20
32
  {...toolTipProps}
21
33
  >
22
- {composite ? <RegistryIcon size="md" {...props} /> : <EnterpriseIcon size="sm" {...props} />}
34
+ {icon}
23
35
  </Tooltip>
24
36
  );
25
37
  return (
@@ -33,6 +45,7 @@ const ContentViewIcon = ({
33
45
 
34
46
  ContentViewIcon.propTypes = {
35
47
  composite: PropTypes.bool,
48
+ rolling: PropTypes.bool,
36
49
  count: PropTypes.node,
37
50
  description: PropTypes.node,
38
51
  style: PropTypes.shape({}),
@@ -40,6 +53,7 @@ ContentViewIcon.propTypes = {
40
53
 
41
54
  ContentViewIcon.defaultProps = {
42
55
  composite: false,
56
+ rolling: false,
43
57
  count: null,
44
58
  description: null,
45
59
  style: {},
@@ -1,6 +1,9 @@
1
1
  import React from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
- import { Select, SelectVariant } from '@patternfly/react-core';
3
+ import {
4
+ Select,
5
+ SelectVariant,
6
+ } from '@patternfly/react-core/deprecated';
4
7
  import PropTypes from 'prop-types';
5
8
 
6
9
  const ContentViewSelect = ({
@@ -1,6 +1,11 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { Flex, SelectOption } from '@patternfly/react-core';
3
+ import {
4
+ Flex,
5
+ } from '@patternfly/react-core';
6
+ import {
7
+ SelectOption,
8
+ } from '@patternfly/react-core/deprecated';
4
9
  import { FormattedMessage } from 'react-intl';
5
10
  import { translate as __ } from 'foremanReact/common/I18n';
6
11
  import {
@@ -15,7 +20,7 @@ export const ContentViewDescription = ({ cv, versionNumber }) => {
15
20
  fontWeight: 400,
16
21
  color: pfDescriptionColor.value,
17
22
  };
18
- if (cv.default) return <span style={descriptionStyle}>{__('Library')}</span>;
23
+ if (cv.rolling || cv.default) return <span style={descriptionStyle}>{__('Library')}</span>;
19
24
  return (
20
25
  <span style={descriptionStyle}>
21
26
  <FormattedMessage
@@ -29,6 +34,7 @@ export const ContentViewDescription = ({ cv, versionNumber }) => {
29
34
 
30
35
  ContentViewDescription.propTypes = {
31
36
  cv: PropTypes.shape({
37
+ rolling: PropTypes.bool.isRequired,
32
38
  default: PropTypes.bool.isRequired,
33
39
  id: PropTypes.number.isRequired,
34
40
  latest_version: PropTypes.string.isRequired,
@@ -56,6 +62,7 @@ const ContentViewSelectOption = ({ cv, env, value }) => (
56
62
  >
57
63
  <ContentViewIcon
58
64
  composite={cv.composite}
65
+ rolling={cv.rolling || cv.default}
59
66
  size="sm"
60
67
  />
61
68
  <Flex
@@ -78,6 +85,8 @@ ContentViewSelectOption.propTypes = {
78
85
  id: PropTypes.number.isRequired,
79
86
  name: PropTypes.string.isRequired,
80
87
  composite: PropTypes.bool.isRequired,
88
+ rolling: PropTypes.bool.isRequired,
89
+ default: PropTypes.bool.isRequired,
81
90
  }).isRequired,
82
91
  env: PropTypes.shape({
83
92
  id: PropTypes.number.isRequired,
@@ -5,14 +5,16 @@ import { Grid, GridItem, Flex, FlexItem, Tooltip } from '@patternfly/react-core'
5
5
  import { InProgressIcon, OutlinedQuestionCircleIcon } from '@patternfly/react-icons';
6
6
  import ContentViewIcon from './ContentViewIcon';
7
7
  import { selectOrganizationState } from '../../Organizations/OrganizationSelectors';
8
+ import { contentViewDescriptions } from '../Create/CreateContentViewForm';
8
9
 
9
10
  const ContentViewsCounter = () => {
10
11
  const organization = useSelector(selectOrganizationState);
11
12
  const {
12
13
  composite_content_views_count: composite,
13
14
  content_view_components_count: component,
15
+ rolling_content_views_count: rolling,
14
16
  } = organization;
15
- if (composite || component) {
17
+ if (composite || component || rolling) {
16
18
  return (
17
19
  <Grid>
18
20
  <GridItem span={12}>
@@ -21,6 +23,7 @@ const ContentViewsCounter = () => {
21
23
  <FlexItem spacer={{ default: 'spacerXs' }}>
22
24
  <ContentViewIcon
23
25
  composite={false}
26
+ rolling={false}
24
27
  description={__('Content views')}
25
28
  count={(component || component === 0) ? component : <InProgressIcon />}
26
29
  />
@@ -28,9 +31,7 @@ const ContentViewsCounter = () => {
28
31
  <FlexItem>
29
32
  <Tooltip
30
33
  position="top"
31
- content={
32
- __('Consists of repositories')
33
- }
34
+ content={contentViewDescriptions.CV}
34
35
  >
35
36
  <OutlinedQuestionCircleIcon />
36
37
  </Tooltip>
@@ -51,9 +52,28 @@ const ContentViewsCounter = () => {
51
52
  <FlexItem>
52
53
  <Tooltip
53
54
  position="top"
54
- content={
55
- __('Consists of content views')
56
- }
55
+ content={contentViewDescriptions.CCV}
56
+ >
57
+ <OutlinedQuestionCircleIcon />
58
+ </Tooltip>
59
+ </FlexItem>
60
+ </Flex>
61
+ </b>
62
+ </GridItem>
63
+ <GridItem span={12}>
64
+ <b>
65
+ <Flex>
66
+ <FlexItem spacer={{ default: 'spacerXs' }}>
67
+ <ContentViewIcon
68
+ rolling
69
+ description={__('Rolling content views')}
70
+ count={(rolling || rolling === 0) ? rolling : <InProgressIcon />}
71
+ />
72
+ </FlexItem>
73
+ <FlexItem>
74
+ <Tooltip
75
+ position="top"
76
+ content={contentViewDescriptions.RCV}
57
77
  >
58
78
  <OutlinedQuestionCircleIcon />
59
79
  </Tooltip>
@@ -11,7 +11,7 @@ const EnvironmentLabels = (environments) => {
11
11
  <React.Fragment key={env.id} style={{ marginBottom: '5px' }}>
12
12
  <Label
13
13
  color={labelColor}
14
- isTruncated
14
+
15
15
  >{env.name}
16
16
  </Label>
17
17
  </React.Fragment>
@@ -19,7 +19,7 @@ const EnvironmentLabels = (environments) => {
19
19
  default:
20
20
  return (
21
21
  <React.Fragment>
22
- <Label color={labelColor} isTruncated>
22
+ <Label color={labelColor} >
23
23
  {name}
24
24
  </Label>
25
25
  </React.Fragment>
@@ -11,7 +11,7 @@ import Loading from '../../../../components/Loading';
11
11
 
12
12
  const EnvironmentPaths = ({
13
13
  userCheckedItems, setUserCheckedItems, promotedEnvironments,
14
- publishing, headerText, multiSelect, isDisabled,
14
+ publishing, headerText, multiSelect, isDisabled, enabledLifecycleEnvironmentIds,
15
15
  }) => {
16
16
  const environmentPathResponse = useSelector(selectEnvironmentPaths);
17
17
  const environmentPathStatus = useSelector(selectEnvironmentPathsStatus);
@@ -55,6 +55,8 @@ const EnvironmentPaths = ({
55
55
  envCheckedInList(env, promotedEnvironments)}
56
56
  isDisabled={isDisabled || (publishing && env.library)
57
57
  || env?.content_source?.environment_is_associated === false
58
+ || (enabledLifecycleEnvironmentIds &&
59
+ !enabledLifecycleEnvironmentIds.has(env.id))
58
60
  || envCheckedInList(env, promotedEnvironments)}
59
61
  className="env-path__labels-with-pointer"
60
62
  key={`${env.id}${index}`}
@@ -62,7 +64,7 @@ const EnvironmentPaths = ({
62
64
  ouiaId={`${env.id}${index}`}
63
65
  label={<EnvironmentLabels environments={env} isDisabled={isDisabled} />}
64
66
  aria-label={env.label}
65
- onChange={checked => oncheckedChange(checked, env)}
67
+ onChange={(e, checked) => oncheckedChange(checked, env)}
66
68
  />))}
67
69
  </FormGroup>
68
70
  <hr />
@@ -84,6 +86,7 @@ EnvironmentPaths.propTypes = {
84
86
  headerText: PropTypes.string,
85
87
  multiSelect: PropTypes.bool,
86
88
  isDisabled: PropTypes.bool,
89
+ enabledLifecycleEnvironmentIds: PropTypes.instanceOf(Set),
87
90
  };
88
91
 
89
92
  EnvironmentPaths.defaultProps = {
@@ -92,5 +95,6 @@ EnvironmentPaths.defaultProps = {
92
95
  headerText: __('Select a lifecycle environment from the available promotion paths to promote new version.'),
93
96
  multiSelect: true,
94
97
  isDisabled: false,
98
+ enabledLifecycleEnvironmentIds: null,
95
99
  };
96
100
  export default EnvironmentPaths;
@@ -1,7 +1,10 @@
1
1
  .env-path {
2
- .pf-c-form__group {
2
+ .pf-v5-c-form__group {
3
3
  margin: 20px 0;
4
4
  }
5
+ .pf-v5-c-check__label, .pf-v5-c-radio__label {
6
+ margin: 0;
7
+ }
5
8
 
6
9
  .env-path__labels-with-pointer {
7
10
  &:not(:last-child):after {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
- import { Tooltip } from '@patternfly/react-core';
3
+ import { Tooltip, Icon } from '@patternfly/react-core';
4
4
  import { FilterIcon } from '@patternfly/react-icons';
5
5
 
6
6
  const FiltersAppliedIcon = () => (
@@ -10,7 +10,9 @@ const FiltersAppliedIcon = () => (
10
10
  entryDelay={400}
11
11
  content={__('Filters were applied to this version.')}
12
12
  >
13
- <FilterIcon size="sm" style={{ color: '#0081db', margin: '0 9px' }} />
13
+ <Icon size="sm">
14
+ <FilterIcon style={{ color: '#0081db', marginLeft: '9px' }} />
15
+ </Icon>
14
16
  </Tooltip>
15
17
  );
16
18
 
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
3
  import PropTypes from 'prop-types';
4
- import { Tooltip } from '@patternfly/react-core';
4
+ import { Tooltip, Icon } from '@patternfly/react-core';
5
5
  import { ArrowCircleUpIcon } from '@patternfly/react-icons';
6
6
  import './NeedsPublishIcon.scss';
7
7
 
@@ -24,11 +24,12 @@ const NeedsPublishIcon = ({ composite, determinate }) => (
24
24
  entryDelay={400}
25
25
  content={tooltipContent(composite, determinate)}
26
26
  >
27
- <ArrowCircleUpIcon
28
- id={determinate ? 'determinate-needs-publish' : 'indeterminate-needs-publish'}
29
- size="sm"
30
- className={determinate ? 'determinate-needs-publish' : 'indeterminate-needs-publish'}
31
- />
27
+ <Icon size="sm">
28
+ <ArrowCircleUpIcon
29
+ id={determinate ? 'determinate-needs-publish' : 'indeterminate-needs-publish'}
30
+ className={determinate ? 'determinate-needs-publish' : 'indeterminate-needs-publish'}
31
+ />
32
+ </Icon>
32
33
  </Tooltip>
33
34
  );
34
35