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
@@ -250,9 +250,9 @@ test('Can open Promote Modal', async (done) => {
250
250
  expect(getByText(`Version ${firstVersion.version}`)).toBeInTheDocument();
251
251
  });
252
252
  // Expand Row Action
253
- expect(getAllByLabelText('Actions')[1]).toHaveAttribute('aria-expanded', 'false');
254
- fireEvent.click(getAllByLabelText('Actions')[1]);
255
- expect(getAllByLabelText('Actions')[1]).toHaveAttribute('aria-expanded', 'true');
253
+ expect(getAllByLabelText('Kebab toggle')[1]).toHaveAttribute('aria-expanded', 'false');
254
+ fireEvent.click(getAllByLabelText('Kebab toggle')[1]);
255
+ expect(getAllByLabelText('Kebab toggle')[1]).toHaveAttribute('aria-expanded', 'true');
256
256
  fireEvent.click(getByText('Promote'));
257
257
  await patientlyWaitFor(() => {
258
258
  expect(getByText('Select a lifecycle environment from the available promotion paths to promote new version.')).toBeInTheDocument();
@@ -340,9 +340,9 @@ test('Can open Promote Modal and show out of path warnings', async (done) => {
340
340
  expect(getByText(`Version ${firstVersion.version}`)).toBeInTheDocument();
341
341
  });
342
342
  // Expand Row Action
343
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'false');
344
- fireEvent.click(getAllByLabelText('Actions')[0]);
345
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'true');
343
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
344
+ fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
345
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
346
346
  fireEvent.click(getByText('Promote'));
347
347
  await patientlyWaitFor(() => {
348
348
  expect(getByText('Select a lifecycle environment from the available promotion paths to promote new version.')).toBeInTheDocument();
@@ -44,7 +44,8 @@ test('Can call API and show details on page load', async (done) => {
44
44
  expect(queryByLabelText('Generated')).not.toBeInTheDocument();
45
45
  });
46
46
 
47
- assertNockRequest(scope, done);
47
+ assertNockRequest(scope);
48
+ done();
48
49
  });
49
50
 
50
51
  test('Can edit text details such as name', async (done) => {
@@ -82,10 +83,38 @@ test('Can edit text details such as name', async (done) => {
82
83
 
83
84
  assertNockRequest(getscope);
84
85
  assertNockRequest(updatescope);
85
- assertNockRequest(afterUpdateScope, done);
86
+ assertNockRequest(afterUpdateScope);
87
+ done();
86
88
  act(done);
87
89
  });
88
90
 
91
+ test('Page contains CV type', async (done) => {
92
+ const getscope = nockInstance
93
+ .get(cvDetailsPath)
94
+ .query(true)
95
+ .reply(200, cvDetailData);
96
+
97
+ const { queryByText } = renderWithRedux(
98
+ withCVRoute(<ContentViewDetails />),
99
+ renderOptions,
100
+ );
101
+
102
+ // Wait for page to load
103
+ await patientlyWaitFor(() => {
104
+ expect(queryByText('Content view')).toBeInTheDocument();
105
+ expect(queryByText('Rolling content view')).not.toBeInTheDocument();
106
+ expect(queryByText('Composite content view')).not.toBeInTheDocument();
107
+ expect(queryByText('Versions')).toBeInTheDocument();
108
+ expect(queryByText('Filters')).toBeInTheDocument();
109
+ expect(queryByText('History')).toBeInTheDocument();
110
+ expect(queryByText('Repositories')).toBeInTheDocument();
111
+ });
112
+
113
+ assertNockRequest(getscope);
114
+ act(done);
115
+ });
116
+
117
+
89
118
  test('Can edit boolean details such as solve dependencies', async (done) => {
90
119
  const updatedCVDetails = { ...cvDetailData, solve_dependencies: true };
91
120
  const getscope = nockInstance
@@ -116,7 +145,8 @@ test('Can edit boolean details such as solve dependencies', async (done) => {
116
145
 
117
146
  assertNockRequest(getscope);
118
147
  assertNockRequest(updatescope);
119
- assertNockRequest(afterUpdateScope, done);
148
+ assertNockRequest(afterUpdateScope);
149
+ done();
120
150
  act(done);
121
151
  });
122
152
 
@@ -159,5 +189,6 @@ test('Can show import_only and generated when true', async (done) => {
159
189
  expect(getByLabelText('generated_by_export_switch')).toBeInTheDocument();
160
190
  });
161
191
 
162
- assertNockRequest(scope, done);
192
+ assertNockRequest(scope);
193
+ done();
163
194
  });
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "content_host_count": 0,
3
3
  "composite": false,
4
+ "rolling": false,
4
5
  "component_ids": [],
5
6
  "default": false,
6
7
  "version_count": 5,
@@ -0,0 +1,197 @@
1
+ import React from 'react';
2
+ import { Route } from 'react-router-dom';
3
+ import { renderWithRedux, patientlyWaitFor, fireEvent, act } from 'react-testing-lib-wrapper';
4
+ import { nockInstance, assertNockRequest } from '../../../../test-utils/nockWrapper';
5
+ import api from '../../../../services/api';
6
+ import ContentViewDetails from '../ContentViewDetails';
7
+ import CONTENT_VIEWS_KEY from '../../ContentViewsConstants';
8
+ import cvDetailData from './contentViewRollingDetails.fixtures.json';
9
+
10
+
11
+ const withCVRoute = component => <Route path="/content_views/:id([0-9]+)">{component}</Route>;
12
+
13
+ const renderOptions = {
14
+ apiNamespace: `${CONTENT_VIEWS_KEY}_1`,
15
+ routerParams: {
16
+ initialEntries: [{ pathname: '/content_views/1', hash: '#/details' }],
17
+ initialIndex: 1,
18
+ },
19
+ };
20
+
21
+ const cvDetailsPath = api.getApiUrl('/content_views/1');
22
+
23
+ test('Can call API and show details on page load', async (done) => {
24
+ const { label, name, description } = cvDetailData;
25
+
26
+ const scope = nockInstance
27
+ .get(cvDetailsPath)
28
+ .query(true)
29
+ .reply(200, cvDetailData);
30
+
31
+ const { getByLabelText, queryByLabelText } = renderWithRedux(
32
+ withCVRoute(<ContentViewDetails />),
33
+ renderOptions,
34
+ );
35
+
36
+ await patientlyWaitFor(() => {
37
+ expect(getByLabelText('name text value')).toHaveTextContent(name);
38
+ expect(getByLabelText('label text value')).toHaveTextContent(label);
39
+ expect(getByLabelText('description text value')).toHaveTextContent(description);
40
+ expect(getByLabelText('a_cv_index')).toBeInTheDocument();
41
+ expect(getByLabelText(`b_${name}`)).toBeInTheDocument();
42
+ expect(getByLabelText('c_details')).toBeInTheDocument();
43
+ expect(queryByLabelText('Import only')).not.toBeInTheDocument();
44
+ expect(queryByLabelText('Generated')).not.toBeInTheDocument();
45
+ });
46
+
47
+ assertNockRequest(scope, done);
48
+ });
49
+
50
+ test('Can edit text details such as name', async (done) => {
51
+ const newName = 'agoodrollingname';
52
+ const updatedCVDetails = { ...cvDetailData, name: newName };
53
+ const getscope = nockInstance
54
+ .get(cvDetailsPath)
55
+ .query(true)
56
+ .reply(200, cvDetailData);
57
+ const updatescope = nockInstance
58
+ .put(cvDetailsPath, { include_permissions: true, name: newName })
59
+ .reply(200, updatedCVDetails);
60
+ const afterUpdateScope = nockInstance
61
+ .get(cvDetailsPath)
62
+ .query(true)
63
+ .reply(200, updatedCVDetails);
64
+
65
+ const { getByLabelText } = renderWithRedux(
66
+ withCVRoute(<ContentViewDetails />),
67
+ renderOptions,
68
+ );
69
+
70
+ const editLabel = 'edit name';
71
+ // Wait for page to load and confirm edit button is present, then click to edit
72
+ await patientlyWaitFor(() => {
73
+ expect(getByLabelText(editLabel)).toBeInTheDocument();
74
+ });
75
+ getByLabelText(editLabel).click();
76
+
77
+
78
+ const inputLabel = /name text input/;
79
+ await patientlyWaitFor(() => { expect(getByLabelText(inputLabel)).toBeInTheDocument(); });
80
+ fireEvent.change(getByLabelText(inputLabel), { target: { value: newName } });
81
+ getByLabelText('submit name').click();
82
+
83
+ // Make sure new name is showing after update
84
+ await patientlyWaitFor(() => {
85
+ expect(getByLabelText('name text value')).toHaveTextContent(newName); assertNockRequest(getscope);
86
+ assertNockRequest(updatescope);
87
+ assertNockRequest(afterUpdateScope, done);
88
+ act(done);
89
+ });
90
+ });
91
+
92
+ test('Page contains Rolling CV type', async (done) => {
93
+ const getscope = nockInstance
94
+ .get(cvDetailsPath)
95
+ .query(true)
96
+ .reply(200, cvDetailData);
97
+
98
+ const { queryByText, queryByLabelText } = renderWithRedux(
99
+ withCVRoute(<ContentViewDetails />),
100
+ renderOptions,
101
+ );
102
+
103
+ // Wait for page to load
104
+ await patientlyWaitFor(() => {
105
+ expect(queryByText('Content view')).not.toBeInTheDocument();
106
+ expect(queryByText('Rolling content view')).toBeInTheDocument();
107
+ expect(queryByText('Composite content view')).not.toBeInTheDocument();
108
+ expect(queryByText('Versions')).not.toBeInTheDocument();
109
+ expect(queryByText('Filters')).not.toBeInTheDocument();
110
+ expect(queryByText('History')).not.toBeInTheDocument();
111
+ expect(queryByText('Repositories')).toBeInTheDocument();
112
+ });
113
+
114
+ // expand actions button
115
+ queryByLabelText('Actions').click();
116
+ // we expect a delete action, but no copy action
117
+ await patientlyWaitFor(() => {
118
+ expect(queryByText('Delete')).toBeVisible();
119
+ expect(queryByText('Copy')).not.toBeInTheDocument();
120
+ });
121
+
122
+ assertNockRequest(getscope);
123
+ act(done);
124
+ });
125
+
126
+ test('Page does not containt boolean details such as solve dependencies', async (done) => {
127
+ const updatedCVDetails = { ...cvDetailData };
128
+ const getscope = nockInstance
129
+ .get(cvDetailsPath)
130
+ .query(true)
131
+ .reply(200, cvDetailData);
132
+ const updatescope = nockInstance
133
+ .put(cvDetailsPath, { include_permissions: false, solve_dependencies: false })
134
+ .reply(200, updatedCVDetails);
135
+ const afterUpdateScope = nockInstance
136
+ .get(cvDetailsPath)
137
+ .query(true)
138
+ .reply(200, updatedCVDetails);
139
+
140
+ const { queryByLabelText } = renderWithRedux(
141
+ withCVRoute(<ContentViewDetails />),
142
+ renderOptions,
143
+ );
144
+
145
+ const checkboxLabel = /solve_dependencies switch/;
146
+ await patientlyWaitFor(() => expect(queryByLabelText(checkboxLabel)).not.toBeInTheDocument());
147
+
148
+ const disabledImportLabel = /import_only_switch/;
149
+ expect(queryByLabelText(disabledImportLabel)).not.toBeInTheDocument();
150
+
151
+ assertNockRequest(getscope);
152
+ assertNockRequest(updatescope);
153
+ assertNockRequest(afterUpdateScope, done);
154
+ act(done);
155
+ });
156
+
157
+ test('Can link to view tasks', async () => {
158
+ const scope = nockInstance
159
+ .get(cvDetailsPath)
160
+ .query(true)
161
+ .reply(200, cvDetailData);
162
+
163
+ const { getByText } = renderWithRedux(
164
+ withCVRoute(<ContentViewDetails />),
165
+ renderOptions,
166
+ );
167
+
168
+ await patientlyWaitFor(() => {
169
+ expect(getByText(/view tasks/i).closest('a'))
170
+ .toHaveAttribute('href', '/foreman_tasks/tasks?search=resource_type%3D+Katello%3A%3AContentView+resource_id%3D1');
171
+ });
172
+
173
+ assertNockRequest(scope);
174
+ });
175
+
176
+ test('Can show import_only and generated when true', async (done) => {
177
+ const updatedCVDetails = { ...cvDetailData };
178
+ updatedCVDetails.generated_for = 'Library';
179
+ updatedCVDetails.import_only = true;
180
+
181
+ const scope = nockInstance
182
+ .get(cvDetailsPath)
183
+ .query(true)
184
+ .reply(200, updatedCVDetails);
185
+
186
+ const { getByLabelText } = renderWithRedux(
187
+ withCVRoute(<ContentViewDetails />),
188
+ renderOptions,
189
+ );
190
+
191
+ await patientlyWaitFor(() => {
192
+ expect(getByLabelText('import_only_switch')).toBeInTheDocument();
193
+ expect(getByLabelText('generated_by_export_switch')).toBeInTheDocument();
194
+ });
195
+
196
+ assertNockRequest(scope, done);
197
+ });
@@ -0,0 +1,82 @@
1
+ {
2
+ "content_host_count": 0,
3
+ "composite": false,
4
+ "rolling": true,
5
+ "component_ids": [],
6
+ "default": false,
7
+ "version_count": 1,
8
+ "latest_version": "1.0",
9
+ "auto_publish": false,
10
+ "solve_dependencies": false,
11
+ "needs_publish": false,
12
+ "generated_for": "none",
13
+ "repository_ids": [
14
+ 58,
15
+ 62,
16
+ 64
17
+ ],
18
+ "id": 1,
19
+ "name": "Andura",
20
+ "label": "AnduraLabel",
21
+ "description": "a cool CV",
22
+ "organization_id": 8,
23
+ "organization": {
24
+ "name": "Enterprise",
25
+ "label": "Enterprise",
26
+ "id": 8
27
+ },
28
+ "created_at": "2020-05-15 11:50:50 -0400",
29
+ "updated_at": "2020-07-01 09:51:48 -0400",
30
+ "environments": [
31
+ {
32
+ "id": 19,
33
+ "name": "Library",
34
+ "label": "Library",
35
+ "permissions": {
36
+ "readable": true
37
+ }
38
+ }
39
+ ],
40
+ "repositories": [
41
+ {
42
+ "id": 58,
43
+ "name": "Wishing Well Cluster",
44
+ "label": "Wishing_Well_Cluster",
45
+ "content_type": "yum"
46
+ },
47
+ {
48
+ "id": 62,
49
+ "name": "Palomar 12",
50
+ "label": "Palomar_12",
51
+ "content_type": "yum"
52
+ },
53
+ {
54
+ "id": 64,
55
+ "name": "Hodge 301",
56
+ "label": "Hodge_301",
57
+ "content_type": "yum"
58
+ }
59
+ ],
60
+ "versions": [
61
+ {
62
+ "id": 956,
63
+ "version": "1.0",
64
+ "published": "2020-05-15 16:40:03 -0400",
65
+ "environment_ids": []
66
+ }
67
+ ],
68
+ "components": [],
69
+ "filtered": true,
70
+ "content_view_components": [],
71
+ "activation_keys": [],
72
+ "next_version": "2.0",
73
+ "last_published": "2020-05-15 16:41:36 -0400",
74
+ "permissions": {
75
+ "view_content_views": true,
76
+ "edit_content_views": true,
77
+ "destroy_content_views": true,
78
+ "publish_content_views": true,
79
+ "promote_or_remove_content_views": true
80
+ },
81
+ "duplicate_repositories_to_publish": []
82
+ }
@@ -7,8 +7,7 @@ import { useHistory } from 'react-router-dom';
7
7
  import {
8
8
  Bullseye, Button, Grid, GridItem,
9
9
  Progress, ProgressSize, ProgressMeasureLocation,
10
- ProgressVariant, EmptyState, EmptyStateIcon, EmptyStateVariant,
11
- Title,
10
+ ProgressVariant, EmptyState, EmptyStateIcon, EmptyStateVariant, EmptyStateHeader,
12
11
  } from '@patternfly/react-core';
13
12
  import { ExternalLinkAltIcon, InProgressIcon } from '@patternfly/react-icons';
14
13
  import { translate as __ } from 'foremanReact/common/I18n';
@@ -101,11 +100,8 @@ const CVPublishFinish = ({
101
100
 
102
101
  return (
103
102
  <>
104
- <EmptyState style={{ marginTop: '10px' }} variant={EmptyStateVariant.large}>
105
- <EmptyStateIcon icon={InProgressIcon} />
106
- <Title headingLevel="h2" size="lg" ouiaId="publish-cv-title">
107
- {__('Publishing content view')}
108
- </Title>
103
+ <EmptyState style={{ marginTop: '10px' }} variant={EmptyStateVariant.lg}>
104
+ <EmptyStateHeader titleText={<>{__('Publishing content view')}</>} icon={<EmptyStateIcon icon={InProgressIcon} />} headingLevel="h2" />
109
105
  </EmptyState>
110
106
  <Grid hasGutter>
111
107
  <GridItem span={12} rowSpan={19}>
@@ -105,7 +105,7 @@ const CVPublishForm = ({
105
105
  aria-label="input_description"
106
106
  name="description"
107
107
  value={description}
108
- onChange={setDescription}
108
+ onChange={(e, v) => setDescription(v)}
109
109
  />
110
110
  </FormGroup>
111
111
  <FormGroup label={__('Promote')} fieldId="promote">
@@ -114,7 +114,7 @@ const CVPublishForm = ({
114
114
  ouiaId="promote-switch"
115
115
  aria-label="promote-switch"
116
116
  isChecked={promote}
117
- onChange={checkPromote}
117
+ onChange={(_event, checked) => checkPromote(checked)}
118
118
  />
119
119
  </FormGroup>
120
120
  </Form>
@@ -4,7 +4,7 @@ import { Link } from 'react-router-dom';
4
4
  import { useSelector } from 'react-redux';
5
5
  import PropTypes from 'prop-types';
6
6
  import {
7
- TableComposable, Thead, Tbody, Tr, Th,
7
+ Table /* data-codemods */, Thead, Tbody, Tr, Th,
8
8
  Td,
9
9
  } from '@patternfly/react-table';
10
10
  import { EnterpriseIcon, RegistryIcon } from '@patternfly/react-icons';
@@ -20,7 +20,7 @@ import { truncate } from '../../../utils/helpers';
20
20
 
21
21
  const CVPublishReview = ({
22
22
  details: {
23
- id, name, composite, next_version: nextVersion,
23
+ id, name, composite, rolling, next_version: nextVersion,
24
24
  },
25
25
  userCheckedItems,
26
26
  }) => {
@@ -67,7 +67,7 @@ const CVPublishReview = ({
67
67
  </>
68
68
  }
69
69
  />
70
- <TableComposable ouiaId="cv-publish-review-table" aria-label="Review Table">
70
+ <Table ouiaId="cv-publish-review-table" aria-label="Review Table">
71
71
  <Thead>
72
72
  <Tr ouiaId="cv-publish-review-table-headers">
73
73
  <Th>{__('Content view name')}</Th>
@@ -79,7 +79,7 @@ const CVPublishReview = ({
79
79
  <Tbody>
80
80
  <Tr ouiaId="cv-publish-review-table-row">
81
81
  <Td>
82
- <><ContentViewIcon composite={composite} description={truncate(name)} /><InactiveText text={__('Newly published')} /></>
82
+ <><ContentViewIcon composite={composite} rolling={rolling} description={truncate(name)} /><InactiveText text={__('Newly published')} /></>
83
83
  </Td>
84
84
  <Td>
85
85
  {__('Version')} {nextVersion}
@@ -93,7 +93,7 @@ const CVPublishReview = ({
93
93
  }
94
94
  </Tr>
95
95
  </Tbody>
96
- </TableComposable>
96
+ </Table>
97
97
  </>
98
98
  );
99
99
  };
@@ -107,6 +107,7 @@ CVPublishReview.propTypes = {
107
107
  ]).isRequired,
108
108
  name: PropTypes.string.isRequired,
109
109
  composite: PropTypes.bool.isRequired,
110
+ rolling: PropTypes.bool.isRequired,
110
111
  next_version: PropTypes.oneOfType([
111
112
  PropTypes.number,
112
113
  PropTypes.string,
@@ -2,7 +2,9 @@ import React, { useEffect, useState, useMemo, useCallback } from 'react';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
3
  import PropTypes from 'prop-types';
4
4
  import { STATUS } from 'foremanReact/constants';
5
- import { Wizard } from '@patternfly/react-core';
5
+ import {
6
+ Wizard,
7
+ } from '@patternfly/react-core/deprecated';
6
8
  import { translate as __ } from 'foremanReact/common/I18n';
7
9
  import CVPublishForm from './CVPublishForm';
8
10
  import CVPublishFinish from './CVPublishFinish';
@@ -38,7 +38,8 @@ test('Can call API and show Wizard', async (done) => {
38
38
  });
39
39
 
40
40
  assertNockRequest(scope);
41
- assertNockRequest(filterScope, done);
41
+ assertNockRequest(filterScope);
42
+ done();
42
43
  });
43
44
 
44
45
  test('Can show wizard with duplicate repository warning for composite CV', async (done) => {
@@ -80,7 +81,8 @@ test('Can show wizard with duplicate repository warning for composite CV', async
80
81
  });
81
82
 
82
83
  assertNockRequest(scope);
83
- assertNockRequest(filterScope, done);
84
+ assertNockRequest(filterScope);
85
+ done();
84
86
  });
85
87
 
86
88
  test('Can show wizard without duplicate repository warning for composite CV', async (done) => {
@@ -107,7 +109,8 @@ test('Can show wizard without duplicate repository warning for composite CV', as
107
109
  });
108
110
 
109
111
  assertNockRequest(scope);
110
- assertNockRequest(filterScope, done);
112
+ assertNockRequest(filterScope);
113
+ done();
111
114
  });
112
115
 
113
116
  test('Can show Wizard and show environment paths', async (done) => {
@@ -138,7 +141,8 @@ test('Can show Wizard and show environment paths', async (done) => {
138
141
  });
139
142
  useSelectorMock.mockClear();
140
143
  assertNockRequest(scope);
141
- assertNockRequest(filterScope, done);
144
+ assertNockRequest(filterScope);
145
+ done();
142
146
  });
143
147
 
144
148
  test('Can show and hide force promotion alert', async (done) => {
@@ -187,6 +191,7 @@ test('Can show and hide force promotion alert', async (done) => {
187
191
 
188
192
  // uncheck outOfOrderEnv
189
193
  fireEvent.click(getByLabelText(outOfOrderEnv));
194
+
190
195
  fireEvent.click(getByLabelText(outOfOrderEnv2));
191
196
  expect(queryByText('Force promotion')).not.toBeInTheDocument();
192
197
 
@@ -196,7 +201,8 @@ test('Can show and hide force promotion alert', async (done) => {
196
201
 
197
202
  useSelectorMock.mockClear();
198
203
  assertNockRequest(scope);
199
- assertNockRequest(filterScope, done);
204
+ assertNockRequest(filterScope);
205
+ done();
200
206
  });
201
207
 
202
208
  test('Can show Wizard form and move to review', async (done) => {
@@ -228,7 +234,8 @@ test('Can show Wizard form and move to review', async (done) => {
228
234
  });
229
235
  useSelectorMock.mockClear();
230
236
  assertNockRequest(scope);
231
- assertNockRequest(filterScope, done);
237
+ assertNockRequest(filterScope);
238
+ done();
232
239
  });
233
240
 
234
241
  test('Can move to Finish step and publish CV', async (done) => {
@@ -261,6 +268,7 @@ test('Can move to Finish step and publish CV', async (done) => {
261
268
 
262
269
  assertNockRequest(scope);
263
270
  assertNockRequest(filterScope);
264
- assertNockRequest(publishScope, done);
271
+ assertNockRequest(publishScope);
272
+ done();
265
273
  act(done); // stop listening for nocks
266
274
  });
@@ -1,15 +1,15 @@
1
1
  #content-view-publish-wizard {
2
- .pf-c-switch {
3
- --pf-c-switch__input--focus__toggle--OutlineWidth: 0;
2
+ .pf-v5-c-switch {
3
+ --pf-v5-c-switch__input--focus__toggle--OutlineWidth: 0;
4
4
  }
5
5
 
6
- .pf-c-wizard__main-body {
6
+ .pf-v5-c-wizard__main-body {
7
7
  display: flex;
8
8
  grid-gap: 16px;
9
9
  flex-direction: column;
10
10
  }
11
11
 
12
- .pf-c-content h4 {
12
+ .pf-v5-c-content h4 {
13
13
  margin-top: 0px;
14
14
  }
15
15
  }
@@ -5,12 +5,13 @@ import { urlBuilder } from 'foremanReact/common/urlHelpers';
5
5
  import ComponentEnvironments from '../Details/ComponentContentViews/ComponentEnvironments';
6
6
 
7
7
  const ContentViewVersionCell = ({
8
- id, latestVersion, latestVersionId, latestVersionEnvironments,
8
+ id, latestVersion, latestVersionId, latestVersionEnvironments, rolling,
9
9
  }) => (
10
10
  <Flex grow={{ default: 'grow' }}>
11
- <FlexItem>
12
- <a href={urlBuilder(`content_views/${id}/versions/${latestVersionId}`, '')}>{`Version ${latestVersion}`}</a>
13
- </FlexItem>
11
+ { !rolling &&
12
+ <FlexItem>
13
+ <a href={urlBuilder(`content_views/${id}/versions/${latestVersionId}`, '')}>{`Version ${latestVersion}`}</a>
14
+ </FlexItem>}
14
15
  <FlexItem>
15
16
  <ComponentEnvironments environments={latestVersionEnvironments} />
16
17
  </FlexItem>
@@ -22,6 +23,7 @@ ContentViewVersionCell.propTypes = {
22
23
  latestVersion: PropTypes.string.isRequired,
23
24
  latestVersionId: PropTypes.number,
24
25
  latestVersionEnvironments: PropTypes.instanceOf(Array),
26
+ rolling: PropTypes.bool.isRequired,
25
27
  };
26
28
 
27
29
  ContentViewVersionCell.defaultProps = {
@@ -114,6 +114,14 @@ const ContentViewTable = () => {
114
114
  onClick: () => openDeleteModal(cvInfo),
115
115
  };
116
116
 
117
+ if (cvInfo.rolling) {
118
+ return [
119
+ ...[],
120
+ ...[],
121
+ ...[],
122
+ ...(hasPermission(permissions, 'destroy_content_views') ? [deleteAction] : []),
123
+ ];
124
+ }
117
125
  return [
118
126
  ...(hasPermission(permissions, 'publish_content_views') ? [publishAction] : []),
119
127
  ...(hasPermission(permissions, 'promote_or_remove_content_views') ? [promoteAction] : []),
@@ -222,7 +230,7 @@ const ContentViewTable = () => {
222
230
  >
223
231
  <Thead>
224
232
  <Tr ouiaId="cvTableHeaderRow">
225
- <Th key="expand-carat" />
233
+ <Th key="expand-carat" aria-label="expand table header" />
226
234
  {columnHeaders.map(col => (
227
235
  <Th
228
236
  key={col}
@@ -231,13 +239,14 @@ const ContentViewTable = () => {
231
239
  {col}
232
240
  </Th>
233
241
  ))}
234
- <Th key="action-menu" />
242
+ <Th key="action-menu" aria-label="action menu table header" />
235
243
  </Tr>
236
244
  </Thead>
237
245
  {
238
246
  results?.map((cvInfo, rowIndex) => {
239
247
  const {
240
248
  composite,
249
+ rolling,
241
250
  name,
242
251
  id: cvId,
243
252
  last_published: lastPublished,
@@ -265,7 +274,7 @@ const ContentViewTable = () => {
265
274
  expandedTableRows.onToggle(isOpen, cvId),
266
275
  }}
267
276
  />
268
- <Td><ContentViewIcon position="right" composite={composite} /></Td>
277
+ <Td><ContentViewIcon position="right" composite={composite} rolling={rolling} /></Td>
269
278
  <Td><Link to={`${urlBuilder('content_views', '')}${cvId}`}>{truncate(name)}</Link></Td>
270
279
  <Td>{lastPublished ? <LongDateTime date={lastPublished} showRelativeTimeTooltip /> : <InactiveText text={__('Not yet published')} />}</Td>
271
280
  <Td><LastSync startedAt={startedAt} lastSync={lastTask} lastSyncWords={lastSyncWords} emptyMessage="N/A" /></Td>
@@ -275,6 +284,7 @@ const ContentViewTable = () => {
275
284
  latestVersion,
276
285
  latestVersionId: cvLatestVersionId,
277
286
  latestVersionEnvironments: cvLatestVersionEnvironments,
287
+ rolling,
278
288
  }}
279
289
  /> :
280
290
  <InactiveText style={{ marginTop: '0.5em', marginBottom: '0.5em' }} text={__('Not yet published')} />}
@@ -293,6 +303,7 @@ const ContentViewTable = () => {
293
303
  cvId={cvId}
294
304
  cvName={name}
295
305
  cvComposite={composite}
306
+ cvRolling={rolling}
296
307
  {...{
297
308
  activationKeys, hosts, relatedCVCount, relatedCompositeCVs,
298
309
  }}