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
@@ -2,7 +2,19 @@ import React, { useState } from 'react';
2
2
  import { useDispatch } from 'react-redux';
3
3
  import PropTypes from 'prop-types';
4
4
  import { translate as __ } from 'foremanReact/common/I18n';
5
- import { ActionGroup, Button, Form, FormGroup, Modal, ModalVariant, TextArea, TextInput } from '@patternfly/react-core';
5
+ import {
6
+ ActionGroup,
7
+ Button,
8
+ Form,
9
+ FormGroup,
10
+ Modal,
11
+ ModalVariant,
12
+ TextArea,
13
+ TextInput,
14
+ FormHelperText,
15
+ HelperText,
16
+ HelperTextItem,
17
+ } from '@patternfly/react-core';
6
18
  import { editACS, getACSDetails } from '../../ACSActions';
7
19
  import { areSubPathsValid, isValidUrl } from '../../helpers';
8
20
 
@@ -63,8 +75,6 @@ const ACSEditURLPaths = ({ onClose, acsId, acsDetails }) => {
63
75
  label={__('Base URL')}
64
76
  type="string"
65
77
  fieldId="acs_base_url"
66
- helperTextInvalid={helperTextInvalid}
67
- validated={urlValidated}
68
78
  isRequired
69
79
  >
70
80
  <TextInput
@@ -77,25 +87,41 @@ const ACSEditURLPaths = ({ onClose, acsId, acsDetails }) => {
77
87
  placeholder={baseURLplaceholder}
78
88
  value={acsUrl}
79
89
  validated={urlValidated}
80
- onChange={value => setAcsUrl(value)}
90
+ onChange={(_event, value) => setAcsUrl(value)}
81
91
  />
92
+ {urlValidated === 'error' && (
93
+ <FormHelperText>
94
+ <HelperText>
95
+ <HelperTextItem variant="error">
96
+ {helperTextInvalid}
97
+ </HelperTextItem>
98
+ </HelperText>
99
+ </FormHelperText>
100
+ )}
82
101
  </FormGroup>
83
102
  <FormGroup
84
103
  label={__('Subpaths')}
85
104
  type="string"
86
105
  fieldId="acs_subpaths"
87
- helperTextInvalid={__('Comma-separated list of subpaths. All subpaths must have a slash at the end and none at the front.')}
88
- validated={subPathValidated}
89
106
  >
90
107
  <TextArea
91
108
  placeholder="test/repo1/, test/repo2/,"
92
109
  value={acsSubpath}
93
110
  validated={subPathValidated}
94
- onChange={value => setAcsSubpath(value)}
111
+ onChange={(_event, value) => setAcsSubpath(value)}
95
112
  name="acs_subpath_field"
96
113
  id="acs_subpath_field"
97
114
  aria-label="acs_subpath_field"
98
115
  />
116
+ {subPathValidated === 'error' && (
117
+ <FormHelperText>
118
+ <HelperText>
119
+ <HelperTextItem variant="error">
120
+ {__('Comma-separated list of subpaths. All subpaths must have a slash at the end and none at the front.')}
121
+ </HelperTextItem>
122
+ </HelperText>
123
+ </FormHelperText>
124
+ )}
99
125
  </FormGroup>
100
126
  <ActionGroup>
101
127
  <Button
@@ -44,7 +44,8 @@ test('Can show custom ACS details expandable sections with edit buttons', async
44
44
  expect(queryByText('Credentials')).toBeInTheDocument();
45
45
  expect(getByLabelText('edit-credentials-pencil-edit')).toBeInTheDocument();
46
46
  });
47
- assertNockRequest(acsDetailsScope, done);
47
+ assertNockRequest(acsDetailsScope);
48
+ done();
48
49
  act(done);
49
50
  });
50
51
 
@@ -89,7 +90,8 @@ test('Can open and close edit ACS details modal', async (done) => {
89
90
  await patientlyWaitFor(() => {
90
91
  expect(queryByLabelText('edit_acs_details')).not.toBeInTheDocument();
91
92
  });
92
- assertNockRequest(acsDetailsScope, done);
93
+ assertNockRequest(acsDetailsScope);
94
+ done();
93
95
  act(done);
94
96
  });
95
97
 
@@ -138,7 +140,8 @@ test('Can edit ACS details in the edit modal', async (done) => {
138
140
  });
139
141
  assertNockRequest(acsDetailsScope);
140
142
  assertNockRequest(acsEditScope);
141
- assertNockRequest(acsDetailsScope, done);
143
+ assertNockRequest(acsDetailsScope);
144
+ done();
142
145
  act(done);
143
146
  });
144
147
 
@@ -175,7 +178,8 @@ test('Can show simplified ACS details expandable sections with edit buttons', as
175
178
  expect(queryByText('Credentials')).not.toBeInTheDocument();
176
179
  expect(queryByText('URL and subpaths')).not.toBeInTheDocument();
177
180
  });
178
- assertNockRequest(acsDetailsScope, done);
181
+ assertNockRequest(acsDetailsScope);
182
+ done();
179
183
  act(done);
180
184
  });
181
185
 
@@ -240,6 +244,7 @@ test('Can edit products in a simplified ACS details edit modal', async (done) =>
240
244
  assertNockRequest(acsDetailsScope);
241
245
  assertNockRequest(productsScope);
242
246
  assertNockRequest(acsEditScope);
243
- assertNockRequest(acsDetailsScope, done);
247
+ assertNockRequest(acsDetailsScope);
248
+ done();
244
249
  act(done);
245
250
  });
@@ -36,7 +36,8 @@ test('Can call API and show ACS details expandable sections on page load', async
36
36
  expect(queryByText('URL and subpaths')).toBeInTheDocument();
37
37
  expect(queryByText('Credentials')).toBeInTheDocument();
38
38
  });
39
- assertNockRequest(acsDetailsScope, done);
39
+ assertNockRequest(acsDetailsScope);
40
+ done();
40
41
  act(done);
41
42
  });
42
43
 
@@ -104,6 +105,7 @@ test('Can expand expandable sections on details page', async (done) => {
104
105
  expect(queryByText('true')).not.toBeInTheDocument();
105
106
  });
106
107
 
107
- assertNockRequest(acsDetailsScope, done);
108
+ assertNockRequest(acsDetailsScope);
109
+ done();
108
110
  act(done);
109
111
  });
@@ -15,9 +15,6 @@ import {
15
15
  DrawerHead,
16
16
  DrawerPanelContent,
17
17
  DrawerPanelBody,
18
- Dropdown,
19
- DropdownItem,
20
- KebabToggle,
21
18
  Text,
22
19
  TextContent,
23
20
  TextList,
@@ -26,6 +23,11 @@ import {
26
23
  TextListVariants,
27
24
  TextVariants,
28
25
  } from '@patternfly/react-core';
26
+ import {
27
+ Dropdown,
28
+ DropdownItem,
29
+ KebabToggle,
30
+ } from '@patternfly/react-core/deprecated';
29
31
  import { TableVariant, Tbody, Td, Th, Thead, Tr, ActionsColumn } from '@patternfly/react-table';
30
32
  import { useSelectionSet } from 'foremanReact/components/PF4/TableIndexPage/Table/TableHooks';
31
33
  import { useTableSort } from 'foremanReact/components/PF4/Helpers/useTableSort';
@@ -148,7 +150,7 @@ const ACSTable = () => {
148
150
  const isSingleSelected = rowId => (Number(rowId) === Number(acsId) ||
149
151
  Number(rowId) === Number(expandedId));
150
152
  const customStyle = {
151
- borderLeft: '5px solid var(--pf-global--primary-color--100)',
153
+ borderLeft: '5px solid var(--pf-v5-global--primary-color--100)',
152
154
  };
153
155
 
154
156
  const PanelContent = () => {
@@ -196,14 +198,14 @@ const ACSTable = () => {
196
198
  ouiaId="refresh-acs"
197
199
  onClick={() => onRefresh(acs?.id)}
198
200
  variant="secondary"
199
- isSmall
201
+ size="sm"
200
202
  aria-label="refresh_acs"
201
203
  >
202
204
  {__('Refresh source')}
203
205
  </Button>
204
206
  <Dropdown
205
207
  style={{ paddingRight: '0px' }}
206
- toggle={<KebabToggle aria-label="details_actions" onToggle={setDetailsKebabOpen} style={{ paddingRight: '0px' }} />}
208
+ toggle={<KebabToggle aria-label="details_actions" onToggle={(_event, val) => setDetailsKebabOpen(val)} style={{ paddingRight: '0px' }} />}
207
209
  isOpen={detailsKebabOpen}
208
210
  ouiaId="acs-details-actions"
209
211
  isPlain
@@ -344,7 +346,7 @@ const ACSTable = () => {
344
346
  </Button>}
345
347
  {renderActionButtons && (canEdit || canDelete) &&
346
348
  <Dropdown
347
- toggle={<KebabToggle aria-label="bulk_actions" onToggle={setKebabOpen} />}
349
+ toggle={<KebabToggle aria-label="bulk_actions" onToggle={(_event, val) => setKebabOpen(val)} />}
348
350
  isOpen={kebabOpen}
349
351
  ouiaId="acs-bulk-actions"
350
352
  isPlain
@@ -430,7 +432,7 @@ const ACSTable = () => {
430
432
  id={id}
431
433
  aria-label={`Select ACS ${id}`}
432
434
  isChecked={isSelected(id)}
433
- onChange={selected => selectOne(selected, id)}
435
+ onChange={(_event, selected) => selectOne(selected, id)}
434
436
  />
435
437
  </Td>
436
438
  <Td>
@@ -30,7 +30,8 @@ test('Can call API and show ACS on page load', async (done) => {
30
30
  // Assert that the ACS name is now showing on the screen, but wait for it to appear.
31
31
  await patientlyWaitFor(() => expect(getByText(firstAcs.name)).toBeInTheDocument());
32
32
  assertNockRequest(autocompleteScope);
33
- assertNockRequest(scope, done);
33
+ assertNockRequest(scope);
34
+ done();
34
35
  act(done);
35
36
  });
36
37
 
@@ -56,6 +57,7 @@ test('Can handle no ACS being present', async (done) => {
56
57
  expect(queryByText(firstAcs.name)).toBeNull();
57
58
  expect(queryByLabelText('Select all')).not.toBeInTheDocument();
58
59
  await patientlyWaitFor(() => expect(queryByText("You currently don't have any alternate content sources.")).toBeInTheDocument());
59
- assertNockRequest(scope, done);
60
+ assertNockRequest(scope);
61
+ done();
60
62
  act(done);
61
63
  });
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { TableComposable, Thead, Th, Tbody, Tr, Td, ExpandableRowContent } from '@patternfly/react-table';
2
+ import { Table, Thead, Th, Tbody, Tr, Td, ExpandableRowContent } from '@patternfly/react-table';
3
3
  import TableIndexPage from 'foremanReact/components/PF4/TableIndexPage/TableIndexPage';
4
4
  import {
5
5
  useSetParamsAndApiAndSearch,
@@ -114,7 +114,7 @@ const BootedContainerImagesPage = () => {
114
114
  controller="/katello/api/v2/host_bootc_images"
115
115
  >
116
116
  <>
117
- <TableComposable variant="compact" ouiaId="booted-containers-table" isStriped>
117
+ <Table variant="compact" ouiaId="booted-containers-table" isStriped>
118
118
  <Thead>
119
119
  <Tr ouiaId="table-header">
120
120
  <>
@@ -201,7 +201,7 @@ const BootedContainerImagesPage = () => {
201
201
  <Td />
202
202
  <Td colSpan={3}>
203
203
  <ExpandableRowContent>
204
- <TableComposable variant="compact" isStriped ouiaId={`table-composable-expanded-${rowIndex}`}>
204
+ <Table variant="compact" isStriped ouiaId={`table-composable-expanded-${rowIndex}`}>
205
205
  <Thead>
206
206
  <Tr ouiaId={`table-row-inner-expandable-${rowIndex}`}>
207
207
  <Th width={55}>{__('Image digest')}</Th>
@@ -218,14 +218,14 @@ const BootedContainerImagesPage = () => {
218
218
  </Tr>
219
219
  ))}
220
220
  </Tbody>
221
- </TableComposable>
221
+ </Table>
222
222
  </ExpandableRowContent>
223
223
  </Td>
224
224
  </Tr> : null}
225
225
  </Tbody>
226
226
  );
227
227
  })}
228
- </TableComposable>
228
+ </Table>
229
229
  {results.length > 0 && !errorMessage &&
230
230
  <Pagination
231
231
  key="table-bottom-pagination"
@@ -50,7 +50,8 @@ test('Can call API for Python package details and show details tab on page load'
50
50
  expect(getByLabelText('content_breadcrumb_content')).toHaveTextContent(name);
51
51
  });
52
52
 
53
- assertNockRequest(pythonPackagesScope, done);
53
+ assertNockRequest(pythonPackagesScope);
54
+ done();
54
55
  });
55
56
 
56
57
  test('Can call API for Python package repository details and show repositories tab', async (done) => {
@@ -80,7 +81,8 @@ test('Can call API for Python package repository details and show repositories t
80
81
  });
81
82
 
82
83
  assertNockRequest(autocompleteScope);
83
- assertNockRequest(pythonPackageRepositoryDetailsScope, done);
84
+ assertNockRequest(pythonPackageRepositoryDetailsScope);
85
+ done();
84
86
  });
85
87
 
86
88
  test('Can call API for Ansible collection details and show details tab on page load', async (done) => {
@@ -109,7 +111,8 @@ test('Can call API for Ansible collection details and show details tab on page l
109
111
  expect(getByLabelText('content_breadcrumb_content')).toHaveTextContent(name);
110
112
  });
111
113
 
112
- assertNockRequest(ansibleCollectionsScope, done);
114
+ assertNockRequest(ansibleCollectionsScope);
115
+ done();
113
116
  });
114
117
 
115
118
  test('Can call API for Ansible collection repository details and show repositories tab', async (done) => {
@@ -139,5 +142,6 @@ test('Can call API for Ansible collection repository details and show repositori
139
142
  });
140
143
 
141
144
  assertNockRequest(autocompleteScope);
142
- assertNockRequest(ansibleCollectionRepositoryDetailsScope, done);
145
+ assertNockRequest(ansibleCollectionRepositoryDetailsScope);
146
+ done();
143
147
  });
@@ -40,7 +40,8 @@ test('Can call API for Python Packages and show table on page load', async (done
40
40
 
41
41
  assertNockRequest(autocompleteScope);
42
42
  assertNockRequest(contentTypesScope);
43
- assertNockRequest(pythonPackagesScope, done);
43
+ assertNockRequest(pythonPackagesScope);
44
+ done();
44
45
  });
45
46
 
46
47
  test('Can call API for Ansible collections and show table on page load', async (done) => {
@@ -71,5 +72,6 @@ test('Can call API for Ansible collections and show table on page load', async (
71
72
  expect(getAllByText(firstPackage.checksum)[0]).toBeInTheDocument();
72
73
  });
73
74
  assertNockRequest(autocompleteScope);
74
- assertNockRequest(ansibleCollections, done);
75
+ assertNockRequest(ansibleCollections);
76
+ done();
75
77
  });
@@ -55,7 +55,7 @@ const CopyContentViewForm = ({ cvId, setModalOpen }) => {
55
55
  ouiaId="input_name"
56
56
  name="name"
57
57
  value={name}
58
- onChange={setName}
58
+ onChange={(_event, val) => setName(val)}
59
59
  />
60
60
  </FormGroup>
61
61
  <ActionGroup>
@@ -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": 0,
@@ -35,5 +35,6 @@ test('Can copy content view from form', async (done) => {
35
35
  expect(setModalOpen).toBeCalled();
36
36
  });
37
37
 
38
- assertNockRequest(copyscope, done);
38
+ assertNockRequest(copyscope);
39
+ done();
39
40
  });
@@ -4,13 +4,37 @@ import { STATUS } from 'foremanReact/constants';
4
4
  import { translate as __ } from 'foremanReact/common/I18n';
5
5
  import PropTypes from 'prop-types';
6
6
  import { useDispatch, useSelector } from 'react-redux';
7
- import { Form, FormGroup, TextInput, TextArea, Checkbox, ActionGroup, Button, Tile, Grid, GridItem } from '@patternfly/react-core';
7
+ import {
8
+ Form,
9
+ FormGroup,
10
+ TextInput,
11
+ TextArea,
12
+ Checkbox,
13
+ ActionGroup,
14
+ Button,
15
+ Tile,
16
+ Grid,
17
+ GridItem,
18
+ FormHelperText,
19
+ HelperText,
20
+ HelperTextItem,
21
+ } from '@patternfly/react-core';
8
22
  import { createContentView } from '../ContentViewsActions';
9
- import { selectCreateContentViews, selectCreateContentViewStatus, selectCreateContentViewError } from './ContentViewCreateSelectors';
23
+ import {
24
+ selectCreateContentViews,
25
+ selectCreateContentViewStatus,
26
+ selectCreateContentViewError,
27
+ } from './ContentViewCreateSelectors';
10
28
  import { LabelDependencies, LabelAutoPublish } from './ContentViewFormComponents';
11
29
  import ContentViewIcon from '../components/ContentViewIcon';
12
30
  import './CreateContentViewForm.scss';
13
31
 
32
+ export const contentViewDescriptions = {
33
+ CV: __('Contains repositories. Versions are published and optionally filtered.'),
34
+ CCV: __('Contains content views. You must choose the version to use for each content view.'),
35
+ RCV: __('Contains repositories. Always serves the latest synced content, without the need to publish versions.'),
36
+ };
37
+
14
38
  const CreateContentViewForm = ({ setModalOpen }) => {
15
39
  const dispatch = useDispatch();
16
40
  const [name, setName] = useState('');
@@ -18,6 +42,7 @@ const CreateContentViewForm = ({ setModalOpen }) => {
18
42
  const [description, setDescription] = useState('');
19
43
  const [composite, setComposite] = useState(false);
20
44
  const [component, setComponent] = useState(true);
45
+ const [rolling, setRolling] = useState(false);
21
46
  const [autoPublish, setAutoPublish] = useState(false);
22
47
  const [dependencies, setDependencies] = useState(false);
23
48
  const [redirect, setRedirect] = useState(false);
@@ -56,24 +81,27 @@ const CreateContentViewForm = ({ setModalOpen }) => {
56
81
  label,
57
82
  description,
58
83
  composite,
59
- solve_dependencies: dependencies,
84
+ rolling,
85
+ solve_dependencies: (dependencies && !(rolling || composite)),
60
86
  auto_publish: (autoPublish && composite),
61
87
  }));
62
88
  };
63
89
 
64
- useEffect(
65
- () => {
66
- setLabel(name.replace(/[^A-Za-z0-9_-]/g, '_'));
67
- },
68
- [name],
69
- );
90
+ useEffect(() => {
91
+ setLabel(name.replace(/[^A-Za-z0-9_-]/g, '_'));
92
+ }, [name]);
70
93
 
71
94
  if (redirect) {
72
95
  const { id } = response;
73
- if (composite) { window.location.assign(`/content_views/${id}#/contentviews`); } else { window.location.assign(`/content_views/${id}#/repositories`); }
96
+ if (composite) {
97
+ window.location.assign(`/content_views/${id}#/contentviews`);
98
+ } else {
99
+ window.location.assign(`/content_views/${id}#/repositories`);
100
+ }
74
101
  }
75
102
 
76
- const submitDisabled = !name?.length || !label?.length || saving || redirect || labelValidated === 'error';
103
+ const submitDisabled =
104
+ !name?.length || !label?.length || saving || redirect || labelValidated === 'error';
77
105
 
78
106
  return (
79
107
  <Form
@@ -92,15 +120,13 @@ const CreateContentViewForm = ({ setModalOpen }) => {
92
120
  ouiaId="input_name"
93
121
  name="name"
94
122
  value={name}
95
- onChange={value => setName(value)}
123
+ onChange={(_event, value) => setName(value)}
96
124
  />
97
125
  </FormGroup>
98
126
  <FormGroup
99
127
  label={__('Label')}
100
128
  isRequired
101
129
  fieldId="label"
102
- helperTextInvalid="Must be Ascii alphanumeric, '_' or '-'"
103
- validated={labelValidated}
104
130
  >
105
131
  <TextInput
106
132
  isRequired
@@ -111,8 +137,17 @@ const CreateContentViewForm = ({ setModalOpen }) => {
111
137
  name="label"
112
138
  value={label}
113
139
  validated={labelValidated}
114
- onChange={handleLabelChange}
140
+ onChange={(_event, newLabel) => handleLabelChange(newLabel, _event)}
115
141
  />
142
+ {labelValidated === 'error' && (
143
+ <FormHelperText>
144
+ <HelperText>
145
+ <HelperTextItem variant="error">
146
+ {__("Must be Ascii alphanumeric, '_' or '-'")}
147
+ </HelperTextItem>
148
+ </HelperText>
149
+ </FormHelperText>
150
+ )}
116
151
  </FormGroup>
117
152
  <FormGroup label={__('Description')} fieldId="description">
118
153
  <TextArea
@@ -122,42 +157,56 @@ const CreateContentViewForm = ({ setModalOpen }) => {
122
157
  name="description"
123
158
  aria-label="input_description"
124
159
  value={description}
125
- onChange={value => setDescription(value)}
160
+ onChange={(_event, value) => setDescription(value)}
126
161
  />
127
162
  </FormGroup>
128
163
  <FormGroup isInline fieldId="type" label={__('Type')}>
129
164
  <Grid hasGutter>
130
- <GridItem span={6}>
165
+ <GridItem span={4}>
131
166
  <Tile
132
167
  style={{ height: '100%' }}
133
168
  isStacked
134
169
  aria-label="component_tile"
135
- icon={<ContentViewIcon composite={false} />}
170
+ icon={<ContentViewIcon composite={false} rolling={false} />}
136
171
  id="component"
137
172
  title={__('Content view')}
138
- onClick={() => { setComponent(true); setComposite(false); }}
173
+ onClick={() => { setComponent(true); setComposite(false); setRolling(false); }}
139
174
  isSelected={component}
140
175
  >
141
- {__('Single content view consisting of e.g. repositories')}
176
+ {contentViewDescriptions.CV}
142
177
  </Tile>
143
178
  </GridItem>
144
- <GridItem span={6}>
179
+ <GridItem span={4}>
145
180
  <Tile
146
181
  style={{ height: '100%' }}
147
182
  isStacked
148
183
  aria-label="composite_tile"
149
- icon={<ContentViewIcon composite />}
184
+ icon={<ContentViewIcon composite rolling={false} />}
150
185
  id="composite"
151
186
  title={__('Composite content view')}
152
- onClick={() => { setComposite(true); setComponent(false); }}
187
+ onClick={() => { setComposite(true); setComponent(false); setRolling(false); }}
153
188
  isSelected={composite}
154
189
  >
155
- {__('Consisting of multiple content views')}
190
+ {contentViewDescriptions.CCV}
191
+ </Tile>
192
+ </GridItem>
193
+ <GridItem span={4}>
194
+ <Tile
195
+ style={{ height: '100%' }}
196
+ isStacked
197
+ aria-label="rolling_tile"
198
+ icon={<ContentViewIcon composite={false} rolling />}
199
+ id="rolling"
200
+ title={__('Rolling content view')}
201
+ onClick={() => { setComposite(false); setComponent(false); setRolling(true); }}
202
+ isSelected={rolling}
203
+ >
204
+ {contentViewDescriptions.RCV}
156
205
  </Tile>
157
206
  </GridItem>
158
207
  </Grid>
159
208
  </FormGroup>
160
- {!composite &&
209
+ {!composite && !rolling && (
161
210
  <FormGroup isInline fieldId="dependencies">
162
211
  <Checkbox
163
212
  id="dependencies"
@@ -165,10 +214,11 @@ const CreateContentViewForm = ({ setModalOpen }) => {
165
214
  name="dependencies"
166
215
  label={LabelDependencies()}
167
216
  isChecked={dependencies}
168
- onChange={checked => setDependencies(checked)}
217
+ onChange={(_event, checked) => setDependencies(checked)}
169
218
  />
170
- </FormGroup>}
171
- {composite &&
219
+ </FormGroup>
220
+ )}
221
+ {composite && (
172
222
  <FormGroup isInline fieldId="autoPublish">
173
223
  <Checkbox
174
224
  id="autoPublish"
@@ -176,9 +226,10 @@ const CreateContentViewForm = ({ setModalOpen }) => {
176
226
  name="autoPublish"
177
227
  label={LabelAutoPublish()}
178
228
  isChecked={autoPublish}
179
- onChange={checked => setAutoPublish(checked)}
229
+ onChange={(_event, checked) => setAutoPublish(checked)}
180
230
  />
181
- </FormGroup>}
231
+ </FormGroup>
232
+ )}
182
233
  <ActionGroup>
183
234
  <Button
184
235
  ouiaId="create-content-view-form-submit"
@@ -190,7 +241,11 @@ const CreateContentViewForm = ({ setModalOpen }) => {
190
241
  >
191
242
  {__('Create content view')}
192
243
  </Button>
193
- <Button ouiaId="create-content-view-form-cancel" variant="link" onClick={() => setModalOpen(false)}>
244
+ <Button
245
+ ouiaId="create-content-view-form-cancel"
246
+ variant="link"
247
+ onClick={() => setModalOpen(false)}
248
+ >
194
249
  {__('Cancel')}
195
250
  </Button>
196
251
  </ActionGroup>
@@ -1,9 +1,17 @@
1
1
  #create-content-view-form {
2
- .pf-c-tile__title {
2
+ .pf-v5-c-tile__title {
3
3
  font-size: 16px;
4
4
  }
5
5
 
6
- .pf-c-tile__icon {
6
+ .pf-v5-c-tile__icon {
7
7
  min-height: 38px;
8
8
  }
9
+
10
+ .pf-v5-c-check__label {
11
+ margin-top: 4px;
12
+ }
13
+
14
+ .foreman-spaced-icon {
15
+ margin: 0;
16
+ }
9
17
  }
@@ -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": 0,
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
2
+ import { renderWithRedux, patientlyWaitFor, fireEvent, act } from 'react-testing-lib-wrapper';
3
3
 
4
4
  import { nockInstance, assertNockRequest } from '../../../../test-utils/nockWrapper';
5
5
  import api from '../../../../services/api';
@@ -22,6 +22,7 @@ const createDetails = {
22
22
  label: '1232123',
23
23
  description: '',
24
24
  composite: false,
25
+ rolling: false,
25
26
  solve_dependencies: false,
26
27
  auto_publish: false,
27
28
  };
@@ -43,7 +44,8 @@ test('Can save content view from form', async (done) => {
43
44
 
44
45
  getByLabelText('create_content_view').click();
45
46
 
46
- assertNockRequest(createscope, done);
47
+ assertNockRequest(createscope);
48
+ done();
47
49
  });
48
50
 
49
51
  test('Form closes itself upon save', async (done) => {
@@ -65,7 +67,8 @@ test('Form closes itself upon save', async (done) => {
65
67
  expect(window.location.assign).toHaveBeenCalled();
66
68
  });
67
69
 
68
- assertNockRequest(createscope, done);
70
+ assertNockRequest(createscope);
71
+ done();
69
72
  });
70
73
 
71
74
  test('Displays dependent fields correctly', () => {
@@ -75,6 +78,7 @@ test('Displays dependent fields correctly', () => {
75
78
  expect(getByText('Label')).toBeInTheDocument();
76
79
  expect(getByText('Composite content view')).toBeInTheDocument();
77
80
  expect(getByText('Content view')).toBeInTheDocument();
81
+ expect(getByText('Rolling content view')).toBeInTheDocument();
78
82
  expect(getByText('Solve dependencies')).toBeInTheDocument();
79
83
  expect(queryByText('Auto publish')).not.toBeInTheDocument();
80
84
 
@@ -97,6 +101,8 @@ test('Validates label field', () => {
97
101
  const { getByText, getByLabelText } = renderWithRedux(form);
98
102
  expect(getByText('Label')).toBeInTheDocument();
99
103
 
100
- fireEvent.change(getByLabelText('input_label'), { target: { value: '123 2123' } });
104
+ act(() => {
105
+ fireEvent.change(getByLabelText('input_label'), { target: { value: '123 2123' } });
106
+ });
101
107
  expect(getByText('Must be Ascii alphanumeric, \'_\' or \'-\'')).toBeInTheDocument();
102
108
  });