katello 4.9.2 → 4.10.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (276) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -7
  3. data/app/assets/javascripts/katello/locale/bn/katello.js +8967 -1
  4. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +8967 -0
  5. data/app/assets/javascripts/katello/locale/ca/katello.js +8967 -0
  6. data/app/assets/javascripts/katello/locale/cs/katello.js +8967 -1
  7. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +8969 -0
  8. data/app/assets/javascripts/katello/locale/de/katello.js +8991 -1
  9. data/app/assets/javascripts/katello/locale/de_AT/katello.js +8966 -0
  10. data/app/assets/javascripts/katello/locale/de_DE/katello.js +8967 -0
  11. data/app/assets/javascripts/katello/locale/el/katello.js +8967 -0
  12. data/app/assets/javascripts/katello/locale/en/katello.js +8967 -1
  13. data/app/assets/javascripts/katello/locale/en_GB/katello.js +8967 -0
  14. data/app/assets/javascripts/katello/locale/en_US/katello.js +8966 -0
  15. data/app/assets/javascripts/katello/locale/es/katello.js +8984 -1
  16. data/app/assets/javascripts/katello/locale/et_EE/katello.js +8966 -0
  17. data/app/assets/javascripts/katello/locale/fr/katello.js +9008 -1
  18. data/app/assets/javascripts/katello/locale/gl/katello.js +8967 -0
  19. data/app/assets/javascripts/katello/locale/gu/katello.js +8967 -1
  20. data/app/assets/javascripts/katello/locale/he_IL/katello.js +8967 -0
  21. data/app/assets/javascripts/katello/locale/hi/katello.js +8967 -1
  22. data/app/assets/javascripts/katello/locale/id/katello.js +8966 -0
  23. data/app/assets/javascripts/katello/locale/it/katello.js +8974 -1
  24. data/app/assets/javascripts/katello/locale/ja/katello.js +9004 -1
  25. data/app/assets/javascripts/katello/locale/ka/katello.js +8976 -1
  26. data/app/assets/javascripts/katello/locale/kn/katello.js +8967 -1
  27. data/app/assets/javascripts/katello/locale/ko/katello.js +8972 -1
  28. data/app/assets/javascripts/katello/locale/locale/katello.js +3070 -1
  29. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +8966 -0
  30. data/app/assets/javascripts/katello/locale/mr/katello.js +8967 -1
  31. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +8967 -0
  32. data/app/assets/javascripts/katello/locale/or/katello.js +8967 -1
  33. data/app/assets/javascripts/katello/locale/pa/katello.js +8967 -1
  34. data/app/assets/javascripts/katello/locale/pl/katello.js +8967 -0
  35. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +8966 -0
  36. data/app/assets/javascripts/katello/locale/pt/katello.js +8967 -1
  37. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +8984 -1
  38. data/app/assets/javascripts/katello/locale/ro/katello.js +8966 -0
  39. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +8966 -0
  40. data/app/assets/javascripts/katello/locale/ru/katello.js +8973 -1
  41. data/app/assets/javascripts/katello/locale/sl/katello.js +8967 -0
  42. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +8967 -0
  43. data/app/assets/javascripts/katello/locale/ta/katello.js +8967 -1
  44. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +8967 -0
  45. data/app/assets/javascripts/katello/locale/te/katello.js +8967 -1
  46. data/app/assets/javascripts/katello/locale/tr/katello.js +8967 -0
  47. data/app/assets/javascripts/katello/locale/vi/katello.js +8966 -0
  48. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +8966 -0
  49. data/app/assets/javascripts/katello/locale/zh/katello.js +8966 -0
  50. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +9004 -1
  51. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +8972 -1
  52. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
  53. data/app/controllers/katello/api/v2/alternate_content_sources_bulk_actions_controller.rb +22 -1
  54. data/app/controllers/katello/api/v2/api_controller.rb +0 -15
  55. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +13 -4
  56. data/app/controllers/katello/api/v2/host_errata_controller.rb +0 -12
  57. data/app/controllers/katello/api/v2/host_packages_controller.rb +0 -55
  58. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +0 -77
  59. data/app/controllers/katello/api/v2/organizations_controller.rb +2 -1
  60. data/app/controllers/katello/api/v2/repositories_controller.rb +6 -10
  61. data/app/controllers/katello/api/v2/sync_controller.rb +0 -1
  62. data/app/controllers/katello/concerns/api/api_controller.rb +0 -10
  63. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +1 -1
  64. data/app/lib/actions/katello/alternate_content_source/update.rb +1 -1
  65. data/app/lib/actions/katello/content_view/capsule_sync.rb +1 -1
  66. data/app/lib/actions/katello/content_view/incremental_updates.rb +3 -9
  67. data/app/lib/actions/katello/content_view_version/republish_repositories.rb +8 -2
  68. data/app/lib/actions/katello/repository/capsule_sync.rb +1 -1
  69. data/app/lib/actions/katello/repository/update_metadata_sync.rb +1 -1
  70. data/app/lib/katello/concerns/base_template_scope_extensions.rb +4 -9
  71. data/app/lib/katello/resources/cdn.rb +4 -0
  72. data/app/lib/katello/validators/alternate_content_source_products_validator.rb +1 -1
  73. data/app/models/katello/cdn_configuration.rb +4 -0
  74. data/app/models/katello/concerns/host_managed_extensions.rb +2 -1
  75. data/app/models/katello/content_view.rb +5 -1
  76. data/app/models/katello/content_view_component.rb +1 -1
  77. data/app/models/katello/content_view_version.rb +4 -0
  78. data/app/models/katello/host/content_facet.rb +4 -5
  79. data/app/models/katello/ping.rb +0 -19
  80. data/app/models/katello/repository.rb +5 -1
  81. data/app/models/katello/root_repository.rb +2 -8
  82. data/app/services/katello/applicability/applicable_content_helper.rb +2 -2
  83. data/app/services/katello/registration_manager.rb +2 -12
  84. data/app/views/foreman/job_templates/configure_host_for_new_content_source.erb +25 -0
  85. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
  86. data/app/views/katello/api/v2/content_facet/show.json.rabl +0 -12
  87. data/app/views/katello/api/v2/content_view_components/show.json.rabl +4 -1
  88. data/app/views/katello/api/v2/content_views/base.json.rabl +6 -2
  89. data/app/views/katello/api/v2/repositories/show.json.rabl +0 -1
  90. data/config/initializers/monkeys.rb +1 -0
  91. data/config/katello.yaml.example +0 -4
  92. data/config/routes/api/v2.rb +3 -0
  93. data/config/routes/overrides.rb +0 -11
  94. data/db/migrate/20230609155411_add_custom_cdn_auth_enabled_to_katello_cdn_configurations.rb +5 -0
  95. data/db/migrate/20230710190626_remove_relative_path_limit.rb +5 -0
  96. data/db/migrate/20230717150442_change_change_content_source_job_template_name.rb +20 -0
  97. data/db/migrate/20230828143236_remove_katello_agent_dispatch_history.rb +15 -0
  98. data/db/seeds.d/111-upgrade_tasks.rb +1 -2
  99. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -1
  100. data/engines/bastion_katello/README.md +2 -1
  101. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.controller.js +4 -2
  102. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html +2 -2
  103. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/views/activation-keys.html +8 -3
  104. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +3 -44
  105. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-module-streams-modal.controller.js +0 -1
  106. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-packages-modal.controller.js +1 -65
  107. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +1 -3
  108. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-packages-modal.html +1 -6
  109. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-applicable.controller.js +1 -1
  110. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +1 -16
  111. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +0 -1
  112. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-actions.controller.js +0 -1
  113. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-applicable.controller.js +2 -11
  114. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +0 -2
  115. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +1 -39
  116. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-applicable.html +2 -2
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -2
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +2 -3
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +4 -5
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +1 -1
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +2 -4
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +2 -4
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +0 -1
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +0 -14
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +0 -4
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +1 -2
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-content-views.controller.js +2 -1
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-content-views.html +1 -1
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +235 -521
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-packages.html +13 -2
  131. data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -3
  132. data/lib/katello/engine.rb +0 -18
  133. data/lib/katello/permission_creator.rb +1 -1
  134. data/lib/katello/plugin.rb +0 -25
  135. data/lib/katello/version.rb +1 -1
  136. data/lib/monkeys/remove_hidden_distribution.rb +383 -0
  137. data/locale/action_names.rb +3 -1
  138. data/locale/bn/katello.po +130 -39
  139. data/locale/bn_IN/katello.po +130 -39
  140. data/locale/ca/katello.po +130 -39
  141. data/locale/cs/katello.po +130 -39
  142. data/locale/cs_CZ/katello.po +130 -39
  143. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  144. data/locale/de/katello.po +134 -43
  145. data/locale/de_AT/katello.po +130 -39
  146. data/locale/de_DE/katello.po +130 -39
  147. data/locale/el/katello.po +130 -39
  148. data/locale/en/katello.po +130 -39
  149. data/locale/en_GB/katello.po +130 -39
  150. data/locale/en_US/katello.po +130 -39
  151. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  152. data/locale/es/katello.po +133 -42
  153. data/locale/et_EE/katello.po +130 -39
  154. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  155. data/locale/fr/katello.po +138 -47
  156. data/locale/gl/katello.po +130 -39
  157. data/locale/gu/katello.po +130 -39
  158. data/locale/he_IL/katello.po +130 -39
  159. data/locale/hi/katello.po +130 -39
  160. data/locale/id/katello.po +130 -39
  161. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  162. data/locale/it/katello.po +131 -40
  163. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  164. data/locale/ja/katello.po +138 -47
  165. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  166. data/locale/ka/katello.po +131 -40
  167. data/locale/katello.pot +805 -642
  168. data/locale/kn/katello.po +130 -39
  169. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  170. data/locale/ko/katello.po +131 -40
  171. data/locale/ml_IN/katello.po +130 -39
  172. data/locale/mr/katello.po +130 -39
  173. data/locale/nl_NL/katello.po +130 -39
  174. data/locale/or/katello.po +130 -39
  175. data/locale/pa/katello.po +130 -39
  176. data/locale/pl/katello.po +130 -39
  177. data/locale/pl_PL/katello.po +130 -39
  178. data/locale/pt/katello.po +130 -39
  179. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  180. data/locale/pt_BR/katello.po +133 -42
  181. data/locale/ro/katello.po +130 -39
  182. data/locale/ro_RO/katello.po +130 -39
  183. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  184. data/locale/ru/katello.po +131 -40
  185. data/locale/sl/katello.po +130 -39
  186. data/locale/sv_SE/katello.po +130 -39
  187. data/locale/ta/katello.po +130 -39
  188. data/locale/ta_IN/katello.po +130 -39
  189. data/locale/te/katello.po +130 -39
  190. data/locale/tr/katello.po +130 -39
  191. data/locale/vi/katello.po +130 -39
  192. data/locale/vi_VN/katello.po +130 -39
  193. data/locale/zh/katello.po +130 -39
  194. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  195. data/locale/zh_CN/katello.po +138 -47
  196. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  197. data/locale/zh_TW/katello.po +131 -40
  198. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +0 -5
  199. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +9 -3
  200. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +7 -58
  201. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataActions.js +2 -11
  202. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesActions.js +1 -40
  203. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesConstants.js +0 -3
  204. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +5 -40
  205. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +6 -65
  206. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +5 -4
  207. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +0 -212
  208. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +2 -157
  209. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +0 -20
  210. data/webpack/containers/Application/config.js +5 -0
  211. data/webpack/scenes/ActivationKeys/Details/ActivationKeyActions.js +31 -0
  212. data/webpack/scenes/ActivationKeys/Details/ActivationKeyConstants.js +3 -0
  213. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.js +127 -0
  214. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.scss +37 -0
  215. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetailsSelectors.js +16 -0
  216. data/webpack/scenes/ActivationKeys/Details/__tests__/activationKeyDetails.test.js +117 -0
  217. data/webpack/scenes/ActivationKeys/Details/components/DeleteMenu.js +77 -0
  218. data/webpack/scenes/ActivationKeys/Details/components/DeleteModal.js +63 -0
  219. data/webpack/scenes/ActivationKeys/Details/components/EditModal.js +199 -0
  220. data/webpack/scenes/ActivationKeys/Details/index.js +3 -0
  221. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +10 -5
  222. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +8 -3
  223. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +8 -3
  224. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +2 -2
  225. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +1 -1
  226. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +37 -29
  227. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +53 -37
  228. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +7 -0
  229. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.fixtures.json +15 -6
  230. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +6 -5
  231. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/publishedContentViewDetails.fixtures.json +43 -197
  232. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +1 -1
  233. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +1 -1
  234. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +2 -2
  235. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +0 -98
  236. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +103 -1
  237. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsLatestEnvironment.fixtures.json +634 -0
  238. data/webpack/scenes/ContentViews/components/ContentViewSelect/helpers.js +1 -1
  239. data/webpack/scenes/Hosts/ChangeContentSource/actions.js +14 -12
  240. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +45 -6
  241. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +42 -7
  242. data/webpack/scenes/Hosts/ChangeContentSource/index.js +37 -10
  243. data/webpack/scenes/Hosts/ChangeContentSource/styles.scss +5 -0
  244. data/webpack/scenes/RedHatRepositories/index.scss +1 -1
  245. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +2 -2
  246. metadata +85 -81
  247. data/app/lib/actions/katello/agent/dispatch_history_presenter.rb +0 -64
  248. data/app/lib/actions/katello/agent_action.rb +0 -120
  249. data/app/lib/actions/katello/bulk_agent_action.rb +0 -37
  250. data/app/lib/actions/katello/host/erratum/applicable_errata_install.rb +0 -44
  251. data/app/lib/actions/katello/host/erratum/install.rb +0 -38
  252. data/app/lib/actions/katello/host/package/install.rb +0 -34
  253. data/app/lib/actions/katello/host/package/remove.rb +0 -48
  254. data/app/lib/actions/katello/host/package/update.rb +0 -42
  255. data/app/lib/actions/katello/host/package_group/install.rb +0 -30
  256. data/app/lib/actions/katello/host/package_group/remove.rb +0 -30
  257. data/app/lib/katello/agent/base_message.rb +0 -41
  258. data/app/lib/katello/agent/client_message_handler.rb +0 -69
  259. data/app/lib/katello/agent/connection.rb +0 -38
  260. data/app/lib/katello/agent/install_errata_message.rb +0 -25
  261. data/app/lib/katello/agent/install_package_group_message.rb +0 -25
  262. data/app/lib/katello/agent/install_package_message.rb +0 -28
  263. data/app/lib/katello/agent/remove_package_group_message.rb +0 -25
  264. data/app/lib/katello/agent/remove_package_message.rb +0 -28
  265. data/app/lib/katello/agent/update_package_message.rb +0 -33
  266. data/app/lib/katello/event_daemon/services/agent_event_receiver.rb +0 -59
  267. data/app/lib/katello/qpid/connection.rb +0 -149
  268. data/app/lib/katello/util/default_enablement_migrator.rb +0 -183
  269. data/app/models/katello/agent/dispatch_history.rb +0 -19
  270. data/app/models/katello/events/delete_host_agent_queue.rb +0 -19
  271. data/app/services/katello/agent/dispatcher.rb +0 -60
  272. data/app/views/foreman/job_templates/change_content_source.erb +0 -18
  273. data/app/views/katello/api/v2/sync/index.json.rabl +0 -1
  274. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +0 -8
  275. data/lib/katello/tasks/upgrades/4.9/update_custom_products_enablement.rake +0 -13
  276. data/webpack/components/extensions/HostDetails/common/KatelloAgentDeprecationAlert.js +0 -23
@@ -1,7 +1,7 @@
1
1
  import { API_OPERATIONS, get, put } from 'foremanReact/redux/API';
2
2
  import { foremanApi } from '../../../../../services/api';
3
- import { HOST_ERRATA_KEY, HOST_ERRATA_APPLICABILITY_KEY, HOST_ERRATA_APPLY_KEY } from './HostErrataConstants';
4
- import { errorToast, renderTaskStartedToast } from '../../../../../scenes/Tasks/helpers';
3
+ import { HOST_ERRATA_KEY, HOST_ERRATA_APPLICABILITY_KEY } from './HostErrataConstants';
4
+ import { errorToast } from '../../../../../scenes/Tasks/helpers';
5
5
 
6
6
  export const getInstallableErrata = (hostId, params) => get({
7
7
  type: API_OPERATIONS.GET,
@@ -30,12 +30,3 @@ export const regenerateApplicability = (hostId, params) => put({
30
30
  params,
31
31
  });
32
32
 
33
- export const applyViaKatelloAgent = (hostId, params) => put({
34
- type: API_OPERATIONS.PUT,
35
- key: HOST_ERRATA_APPLY_KEY,
36
- url: foremanApi.getApiUrl(`/hosts/${hostId}/errata/apply`),
37
- handleSuccess: response => renderTaskStartedToast(response.data),
38
- errorToast: error => errorToast(error),
39
- params,
40
- });
41
-
@@ -1,11 +1,7 @@
1
- import { API_OPERATIONS, get, put } from 'foremanReact/redux/API';
2
- import { errorToast, renderTaskStartedToast } from '../../../../../scenes/Tasks/helpers';
1
+ import { API_OPERATIONS, get } from 'foremanReact/redux/API';
3
2
  import { foremanApi } from '../../../../../services/api';
4
3
  import {
5
- HOST_PACKAGES_INSTALL_KEY,
6
4
  HOST_PACKAGES_KEY,
7
- HOST_PACKAGES_REMOVE_KEY,
8
- HOST_PACKAGES_UPGRADE_KEY,
9
5
  } from './HostPackagesConstants';
10
6
 
11
7
  export const getInstalledPackagesWithLatest = (hostId, params) => get({
@@ -15,38 +11,3 @@ export const getInstalledPackagesWithLatest = (hostId, params) => get({
15
11
  params,
16
12
  });
17
13
  export default getInstalledPackagesWithLatest;
18
-
19
- export const installPackageViaKatelloAgent = (hostId, params) => put({
20
- type: API_OPERATIONS.PUT,
21
- key: HOST_PACKAGES_INSTALL_KEY,
22
- url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/install`),
23
- handleSuccess: ({ data }) => renderTaskStartedToast(data),
24
- errorToast: error => errorToast(error),
25
- params,
26
- });
27
-
28
- export const removePackageViaKatelloAgent = (hostId, params) => put({
29
- type: API_OPERATIONS.PUT,
30
- key: HOST_PACKAGES_REMOVE_KEY,
31
- url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/remove`),
32
- handleSuccess: ({ data }) => renderTaskStartedToast(data),
33
- errorToast: error => errorToast(error),
34
- params,
35
- });
36
-
37
- export const upgradePackageViaKatelloAgent = (hostId, params) => put({
38
- type: API_OPERATIONS.PUT,
39
- key: HOST_PACKAGES_UPGRADE_KEY,
40
- url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/upgrade`),
41
- handleSuccess: ({ data }) => renderTaskStartedToast(data),
42
- errorToast: error => errorToast(error),
43
- params,
44
- });
45
-
46
- export const upgradeAllViaKatelloAgent = hostId => put({
47
- type: API_OPERATIONS.PUT,
48
- key: HOST_PACKAGES_UPGRADE_KEY,
49
- url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/upgrade_all`),
50
- handleSuccess: ({ data }) => renderTaskStartedToast(data),
51
- errorToast: error => errorToast(error),
52
- });
@@ -1,7 +1,4 @@
1
1
  export const HOST_PACKAGES_KEY = 'HOST_PACKAGES';
2
- export const HOST_PACKAGES_INSTALL_KEY = 'HOST_PACKAGES_KATELLO_AGENT_INSTALL';
3
- export const HOST_PACKAGES_REMOVE_KEY = 'HOST_PACKAGES_REMOVE';
4
- export const HOST_PACKAGES_UPGRADE_KEY = 'HOST_PACKAGES_UPGRADE';
5
2
  export const PACKAGES_SEARCH_QUERY = 'Packages search query';
6
3
  export const SELECTED_UPDATE_VERSIONS = 'Selected update versions';
7
4
 
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from 'react';
2
2
  import { Modal, Button, Dropdown, DropdownItem, DropdownToggle, DropdownDirection, DropdownToggleAction } from '@patternfly/react-core';
3
3
  import { CaretDownIcon, CaretUpIcon } from '@patternfly/react-icons';
4
- import { useSelector, useDispatch } from 'react-redux';
4
+ import { useSelector } from 'react-redux';
5
5
  import { FormattedMessage } from 'react-intl';
6
6
  import { Thead, Th, Tbody, Tr, Td, TableVariant } from '@patternfly/react-table';
7
7
  import { noop } from 'foremanReact/common/helpers';
@@ -17,12 +17,10 @@ import { getHostYumInstallablePackages } from './YumInstallablePackagesActions';
17
17
  import './PackageInstallModal.scss';
18
18
  import { katelloPackageInstallBySearchUrl, katelloPackageInstallUrl } from '../customizedRexUrlHelpers';
19
19
  import hostIdNotReady from '../../HostDetailsActions';
20
- import { installPackageViaKatelloAgent } from './HostPackagesActions';
21
20
 
22
21
  const InstallDropdown = ({
23
- isDisabled, installViaRex, installViaKatelloAgent,
24
- bulkCustomizedRexUrl, showKatelloAgent,
25
- disableInstallViaKatelloAgent,
22
+ isDisabled, installViaRex,
23
+ bulkCustomizedRexUrl,
26
24
  }) => {
27
25
  const [isActionOpen, setIsActionOpen] = useState(false);
28
26
  const onActionSelect = () => {
@@ -33,15 +31,6 @@ const InstallDropdown = ({
33
31
  };
34
32
 
35
33
  const dropdownItems = [
36
- <DropdownItem
37
- key="install-k-agent"
38
- ouiaId="install-k-agent"
39
- component="button"
40
- onClick={installViaKatelloAgent}
41
- isDisabled={disableInstallViaKatelloAgent}
42
- >
43
- {__('Install via katello-agent')}
44
- </DropdownItem>,
45
34
  <DropdownItem key="install-rex" ouiaId="install-rex" component="button" onClick={installViaRex}>
46
35
  {__('Install via remote execution')}
47
36
  </DropdownItem>,
@@ -56,9 +45,6 @@ const InstallDropdown = ({
56
45
  </DropdownItem>,
57
46
  ];
58
47
 
59
- if (!showKatelloAgent) dropdownItems.shift();
60
- const defaultRemoteAction = showKatelloAgent ? installViaKatelloAgent : installViaRex;
61
-
62
48
  return (
63
49
  <Dropdown
64
50
  ouiaId="action-dropdown"
@@ -69,7 +55,7 @@ const InstallDropdown = ({
69
55
  ouiaId="install-action-toggle"
70
56
  isDisabled={isDisabled}
71
57
  splitButtonItems={[
72
- <DropdownToggleAction key="install" onClick={defaultRemoteAction}>
58
+ <DropdownToggleAction key="install" onClick={installViaRex}>
73
59
  Install
74
60
  </DropdownToggleAction>,
75
61
  ]}
@@ -88,23 +74,17 @@ const InstallDropdown = ({
88
74
  InstallDropdown.propTypes = {
89
75
  isDisabled: PropTypes.bool,
90
76
  installViaRex: PropTypes.func,
91
- installViaKatelloAgent: PropTypes.func,
92
77
  bulkCustomizedRexUrl: PropTypes.string,
93
- showKatelloAgent: PropTypes.bool,
94
- disableInstallViaKatelloAgent: PropTypes.bool,
95
78
  };
96
79
 
97
80
  InstallDropdown.defaultProps = {
98
81
  isDisabled: false,
99
82
  installViaRex: noop,
100
- installViaKatelloAgent: noop,
101
83
  bulkCustomizedRexUrl: '',
102
- showKatelloAgent: false,
103
- disableInstallViaKatelloAgent: false,
104
84
  };
105
85
 
106
86
  const PackageInstallModal = ({
107
- isOpen, closeModal, hostId, hostName, showKatelloAgent, triggerPackageInstall,
87
+ isOpen, closeModal, hostId, hostName, triggerPackageInstall,
108
88
  }) => {
109
89
  const emptyContentTitle = __('No packages available to install');
110
90
  const emptyContentBody = __('No packages available to install on this host. Please check the host\'s content view and lifecycle environment.');
@@ -114,7 +94,6 @@ const PackageInstallModal = ({
114
94
  const response =
115
95
  useSelector(state => selectAPIResponse(state, HOST_YUM_INSTALLABLE_PACKAGES_KEY));
116
96
  const status = useSelector(state => selectHostYumInstallablePackagesStatus(state));
117
- const dispatch = useDispatch();
118
97
  const { results, ...metadata } = response;
119
98
  const [suppressFirstFetch, setSuppressFirstFetch] = useState(false);
120
99
 
@@ -150,12 +129,6 @@ const PackageInstallModal = ({
150
129
  closeModal();
151
130
  };
152
131
 
153
- const installViaKatelloAgent = () => {
154
- dispatch(installPackageViaKatelloAgent(hostId, { packages: selectedPackageNames() }));
155
- selectNone();
156
- closeModal();
157
- };
158
-
159
132
  const handleModalClose = () => {
160
133
  setSuppressFirstFetch(true);
161
134
  closeModal();
@@ -173,10 +146,7 @@ const PackageInstallModal = ({
173
146
  key="install"
174
147
  isDisabled={!selectedCount}
175
148
  installViaRex={installViaRex}
176
- installViaKatelloAgent={installViaKatelloAgent}
177
149
  bulkCustomizedRexUrl={enableSimpleRexUrl ? simpleBulkCustomizedRexUrl : bulkCustomizedRexUrl}
178
- showKatelloAgent={showKatelloAgent}
179
- disableInstallViaKatelloAgent={selectedResults.length === 0}
180
150
  />,
181
151
  <Button key="cancel" ouiaId="cancel-button" variant="link" onClick={handleModalClose}>
182
152
  Cancel
@@ -274,12 +244,7 @@ PackageInstallModal.propTypes = {
274
244
  closeModal: PropTypes.func.isRequired,
275
245
  hostId: PropTypes.number.isRequired,
276
246
  hostName: PropTypes.string.isRequired,
277
- showKatelloAgent: PropTypes.bool,
278
247
  triggerPackageInstall: PropTypes.func.isRequired,
279
248
  };
280
249
 
281
- PackageInstallModal.defaultProps = {
282
- showKatelloAgent: false,
283
- };
284
-
285
250
  export default PackageInstallModal;
@@ -1,5 +1,5 @@
1
1
  import React, { useCallback, useState, useRef } from 'react';
2
- import { useSelector, useDispatch } from 'react-redux';
2
+ import { useSelector } from 'react-redux';
3
3
  import {
4
4
  ActionList,
5
5
  ActionListItem,
@@ -28,9 +28,6 @@ import { useBulkSelect, useTableSort, useUrlParams, useSet } from '../../../../.
28
28
  import PackagesStatus from '../../../../../components/Packages';
29
29
  import {
30
30
  getInstalledPackagesWithLatest,
31
- removePackageViaKatelloAgent,
32
- upgradeAllViaKatelloAgent,
33
- upgradePackageViaKatelloAgent,
34
31
  } from './HostPackagesActions';
35
32
  import { selectHostPackagesStatus } from './HostPackagesSelectors';
36
33
  import {
@@ -41,17 +38,13 @@ import { katelloPackageUpdateUrl, packagesUpdateUrl } from '../customizedRexUrlH
41
38
  import './PackagesTab.scss';
42
39
  import hostIdNotReady, { getHostDetails } from '../../HostDetailsActions';
43
40
  import PackageInstallModal from './PackageInstallModal';
44
- import { defaultRemoteActionMethod,
45
- hasRequiredPermissions as can,
41
+ import { hasRequiredPermissions as can,
46
42
  missingRequiredPermissions as cannot,
47
- KATELLO_AGENT,
48
43
  userPermissionsFromHostDetails } from '../../hostDetailsHelpers';
49
44
  import SortableColumnHeaders from '../../../../Table/components/SortableColumnHeaders';
50
45
  import { useRexJobPolling } from '../RemoteExecutionHooks';
51
- import KatelloAgentDeprecationAlert from '../../common/KatelloAgentDeprecationAlert';
52
46
 
53
47
  const invokeRexJobs = ['create_job_invocations'];
54
- const doKatelloAgentActions = ['edit_hosts'];
55
48
  const createBookmarks = ['create_bookmarks'];
56
49
 
57
50
  const UpdateVersionsSelect = ({
@@ -126,7 +119,6 @@ export const PackagesTab = () => {
126
119
  } = hostDetails;
127
120
 
128
121
  const { searchParam, status: statusParam } = useUrlParams();
129
- const dispatch = useDispatch();
130
122
  const PACKAGE_STATUS = __('Status');
131
123
  const [packageStatusSelected, setPackageStatusSelected] = useState(statusParam ?? PACKAGE_STATUS);
132
124
  const activeFilters = [packageStatusSelected];
@@ -135,10 +127,7 @@ export const PackagesTab = () => {
135
127
  const toggleBulkAction = () => setIsBulkActionOpen(prev => !prev);
136
128
  const [isModalOpen, setIsModalOpen] = useState(false);
137
129
  const closeModal = () => setIsModalOpen(false);
138
- const showKatelloAgent = (defaultRemoteActionMethod({ hostDetails }) === KATELLO_AGENT);
139
- const showActions = showKatelloAgent ?
140
- can(doKatelloAgentActions, userPermissionsFromHostDetails({ hostDetails })) :
141
- can(invokeRexJobs, userPermissionsFromHostDetails({ hostDetails }));
130
+ const showActions = can(invokeRexJobs, userPermissionsFromHostDetails({ hostDetails }));
142
131
 
143
132
  const [isActionOpen, setIsActionOpen] = useState(false);
144
133
  const onActionSelect = () => {
@@ -295,11 +284,6 @@ export const PackagesTab = () => {
295
284
 
296
285
  const removePackageViaRemoteExecution = packageName => triggerPackageRemove(packageName);
297
286
 
298
- const removeViaKatelloAgent = (packageName) => {
299
- dispatch(removePackageViaKatelloAgent(hostId, { packages: [packageName] }));
300
- selectNone();
301
- };
302
-
303
287
  const removePackagesViaRemoteExecution = () => {
304
288
  const selected = fetchBulkParams();
305
289
  setIsBulkActionOpen(false);
@@ -307,32 +291,9 @@ export const PackagesTab = () => {
307
291
  triggerBulkPackageRemove(selected);
308
292
  };
309
293
 
310
- const selectedPackageNames = () => selectedResults.map(({ name }) => name);
311
- const selectedUpgradableVersions = () => selectedResults.map(({ name, upgradable_versions: v }) =>
312
- selectedNewVersions.current[name] || v[0]);
313
-
314
- const removePackagesViaKatelloAgent = () => {
315
- dispatch(removePackageViaKatelloAgent(hostId, { packages: selectedPackageNames() }));
316
- selectNone();
317
- };
318
-
319
- const defaultRemoteAction = defaultRemoteActionMethod({ hostDetails });
320
-
321
- const removeBulk = () => {
322
- if (defaultRemoteAction === KATELLO_AGENT) {
323
- removePackagesViaKatelloAgent();
324
- } else {
325
- removePackagesViaRemoteExecution();
326
- }
327
- };
294
+ const removeBulk = () => removePackagesViaRemoteExecution();
328
295
 
329
- const handlePackageRemove = (packageName) => {
330
- if (defaultRemoteAction === KATELLO_AGENT) {
331
- removeViaKatelloAgent(packageName);
332
- } else {
333
- removePackageViaRemoteExecution(packageName);
334
- }
335
- };
296
+ const handlePackageRemove = packageName => removePackageViaRemoteExecution(packageName);
336
297
 
337
298
  const upgradeViaRemoteExecution = ({ packageName, upgradableVersions }) => (
338
299
  triggerPackageUpgrade({ packageName, upgradableVersions })
@@ -345,22 +306,7 @@ export const PackagesTab = () => {
345
306
  triggerBulkPackageUpgrade(selected);
346
307
  };
347
308
 
348
- const upgradeBulkViaKatelloAgent = () => {
349
- if (areAllRowsSelected()) {
350
- dispatch(upgradeAllViaKatelloAgent(hostId));
351
- } else {
352
- dispatch(upgradePackageViaKatelloAgent(hostId, { packages: selectedUpgradableVersions() }));
353
- }
354
- selectNone();
355
- };
356
-
357
- const upgradeBulk = () => {
358
- if (defaultRemoteAction === KATELLO_AGENT) {
359
- upgradeBulkViaKatelloAgent();
360
- } else {
361
- upgradeBulkViaRemoteExecution();
362
- }
363
- };
309
+ const upgradeBulk = () => upgradeBulkViaRemoteExecution();
364
310
 
365
311
  const upgradeViaCustomizedRemoteExecution = selectedCount ?
366
312
  packagesUpdateUrl({
@@ -375,7 +321,6 @@ export const PackagesTab = () => {
375
321
  selectedResults.every(item => item.upgradable_versions?.length > 0);
376
322
  const disableUpgrade = () => selectedCount === 0 ||
377
323
  (selectAllMode && packageStatusSelected !== 'Upgradable') ||
378
- (defaultRemoteAction === KATELLO_AGENT && selectAllMode && !areAllRowsSelected()) ||
379
324
  (!selectAllMode && !allUpgradable());
380
325
 
381
326
  const readOnlyBookmarks =
@@ -492,9 +437,6 @@ export const PackagesTab = () => {
492
437
  return (
493
438
  <div>
494
439
  <div id="packages-tab">
495
- {showKatelloAgent && (
496
- <KatelloAgentDeprecationAlert />
497
- )}
498
440
  <TableWrapper
499
441
  {...{
500
442
  metadata,
@@ -638,7 +580,6 @@ export const PackagesTab = () => {
638
580
  hostId={hostId}
639
581
  key={hostId}
640
582
  hostName={hostname}
641
- showKatelloAgent={showKatelloAgent}
642
583
  triggerPackageInstall={triggerPackageInstall}
643
584
  />
644
585
  }
@@ -64,9 +64,11 @@ import { selectRepositorySetsStatus } from './RepositorySetsSelectors';
64
64
  import './RepositorySetsTab.scss';
65
65
  import SortableColumnHeaders from '../../../../Table/components/SortableColumnHeaders';
66
66
  import SelectableDropdown from '../../../../SelectableDropdown';
67
- import { hasRequiredPermissions as can,
67
+ import {
68
+ hasRequiredPermissions as can,
68
69
  missingRequiredPermissions as cannot,
69
- userPermissionsFromHostDetails } from '../../hostDetailsHelpers';
70
+ userPermissionsFromHostDetails,
71
+ } from '../../hostDetailsHelpers';
70
72
 
71
73
  const viewRepoSets = [
72
74
  'view_hosts', 'view_activation_keys', 'view_products',
@@ -397,7 +399,7 @@ const RepositorySetsTab = () => {
397
399
  });
398
400
 
399
401
  const readOnlyBookmarks =
400
- cannot(createBookmarks, userPermissionsFromHostDetails({ hostDetails }));
402
+ cannot(createBookmarks, userPermissionsFromHostDetails({ hostDetails }));
401
403
 
402
404
  const dropdownItems = [
403
405
  <DropdownItem
@@ -604,7 +606,6 @@ const RepositorySetsTab = () => {
604
606
  pfSortParams={pfSortParams}
605
607
  columnsToSortParams={COLUMNS_TO_SORT_PARAMS}
606
608
  />
607
- <Th />
608
609
  <Th key="action-menu" />
609
610
  </Tr>
610
611
  </Thead>
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import { isEqual } from 'lodash';
3
2
  import { renderWithRedux, patientlyWaitFor, within, fireEvent } from 'react-testing-lib-wrapper';
4
3
  import { nockInstance, assertNockRequest, mockForemanAutocomplete } from '../../../../../test-utils/nockWrapper';
5
4
  import { foremanApi } from '../../../../../services/api';
@@ -101,7 +100,6 @@ const baseQueryWithSort = {
101
100
  const defaultQuery = { ...baseQueryWithSort, search: '' };
102
101
  const page2Query = { ...baseQueryWithSort, page: 2 };
103
102
  const jobInvocations = foremanApi.getApiUrl('/job_invocations');
104
- const applyByKatelloAgentUrl = foremanApi.getApiUrl('/hosts/1/errata/apply');
105
103
 
106
104
  let firstErrata;
107
105
  let thirdErrata;
@@ -839,173 +837,6 @@ test('Can filter by severity', async (done) => {
839
837
  assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
840
838
  });
841
839
 
842
- test('apply button chooses katello agent if enabled', async (done) => {
843
- const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
844
- const mockErrata = makeMockErrata({});
845
- const options = renderOptions({
846
- ...cfWithErrataTotal(mockErrata.total),
847
- katelloAgentInstalled: true,
848
- katelloAgentEnabled: true,
849
- });
850
-
851
- const scope = nockInstance
852
- .get(hostErrata)
853
- .query(defaultQuery)
854
- .reply(200, mockErrata);
855
-
856
- const resolveErrataScope = nockInstance
857
- .put(applyByKatelloAgentUrl)
858
- .reply(201, mockResolveErrataTask);
859
-
860
- const { getAllByText, getByLabelText, queryByText } = renderWithRedux(
861
- <ErrataTab />,
862
- options,
863
- );
864
- // Assert that the errata are now showing on the screen, but wait for them to appear.
865
- await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
866
-
867
- getByLabelText('Select row 0').click();
868
- getByLabelText('Select row 1').click();
869
-
870
- const viaAction = queryByText('Apply');
871
- expect(viaAction).toBeInTheDocument();
872
- viaAction.click();
873
-
874
- assertNockRequest(autocompleteScope);
875
- assertNockRequest(resolveErrataScope);
876
- assertNockRequest(scope, done);
877
- });
878
-
879
- test('Can bulk apply via katello agent', async (done) => {
880
- const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
881
- const mockErrata = makeMockErrata({});
882
- const { results } = mockErrata;
883
- const options = renderOptions({
884
- ...cfWithErrataTotal(mockErrata.total),
885
- katelloAgentInstalled: true,
886
- katelloAgentEnabled: true,
887
- });
888
-
889
- const scope = nockInstance
890
- .get(hostErrata)
891
- .query(defaultQuery)
892
- .reply(200, mockErrata);
893
-
894
- const postBody = ({ search }) => {
895
- const [firstResult, secondResult] = results;
896
- return isEqual(search, `errata_id ^ (${firstResult.errata_id},${secondResult.errata_id})`);
897
- };
898
- const resolveErrataScope = nockInstance
899
- .put(applyByKatelloAgentUrl, postBody)
900
- .reply(201, mockResolveErrataTask);
901
-
902
- const { getAllByText, getByLabelText, queryByText } = renderWithRedux(
903
- <ErrataTab />,
904
- options,
905
- );
906
- // Assert that the errata are now showing on the screen, but wait for them to appear.
907
- await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
908
-
909
- getByLabelText('Select row 0').click();
910
- getByLabelText('Select row 1').click();
911
-
912
- const actionMenu = getByLabelText('expand_errata_toggle');
913
- actionMenu.click();
914
- const viaAction = queryByText('Apply via Katello agent');
915
- expect(viaAction).toBeInTheDocument();
916
- viaAction.click();
917
-
918
- assertNockRequest(autocompleteScope);
919
- assertNockRequest(resolveErrataScope);
920
- assertNockRequest(scope, done);
921
- });
922
-
923
- test('Can select all, exclude and bulk apply via katello agent', async (done) => {
924
- // This is the same test as above,
925
- // but using the table action bar instead of the Apply button
926
- const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
927
- const mockErrata = makeMockErrata({});
928
- const { results } = mockErrata;
929
- const options = renderOptions({
930
- ...cfWithErrataTotal(mockErrata.total),
931
- katelloAgentInstalled: true,
932
- katelloAgentEnabled: true,
933
- });
934
-
935
- const scope = nockInstance
936
- .get(hostErrata)
937
- .query(defaultQuery)
938
- .reply(200, mockErrata);
939
-
940
- const postBody = ({ search }) => {
941
- const [firstResult] = results;
942
- return isEqual(search, `errata_id !^ (${firstResult.errata_id})`);
943
- };
944
-
945
- const resolveErrataScope = nockInstance
946
- .put(applyByKatelloAgentUrl, postBody)
947
- .reply(201, mockResolveErrataTask);
948
-
949
- const { getAllByText, getByLabelText, queryByText } = renderWithRedux(
950
- <ErrataTab />,
951
- options,
952
- );
953
- // Assert that the errata are now showing on the screen, but wait for them to appear.
954
- await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
955
- const selectAllCheckbox = getByLabelText('Select all');
956
- selectAllCheckbox.click();
957
-
958
- getByLabelText('Select row 0').click(); // deselect
959
-
960
- const actionMenu = getByLabelText('expand_errata_toggle');
961
- actionMenu.click();
962
- const viaAction = queryByText('Apply via Katello agent');
963
- expect(viaAction).toBeInTheDocument();
964
- viaAction.click();
965
-
966
- assertNockRequest(autocompleteScope);
967
- assertNockRequest(resolveErrataScope);
968
- assertNockRequest(scope, done);
969
- });
970
-
971
- test('Apply button chooses remote execution', async (done) => {
972
- const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
973
- const mockErrata = makeMockErrata({});
974
- const options = renderOptions({
975
- ...cfWithErrataTotal(mockErrata.total),
976
- katelloAgentInstalled: true,
977
- katelloAgentEnabled: true,
978
- remoteExecutionByDefault: true,
979
- });
980
-
981
- const scope = nockInstance
982
- .get(hostErrata)
983
- .query(defaultQuery)
984
- .reply(200, mockErrata);
985
-
986
- const resolveErrataScope = nockInstance
987
- .post(jobInvocations)
988
- .reply(201, mockResolveErrataTask);
989
-
990
- const { getAllByText, getByLabelText, queryByText } = renderWithRedux(
991
- <ErrataTab />,
992
- options,
993
- );
994
- // Assert that the errata are now showing on the screen, but wait for them to appear.
995
- await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
996
-
997
- getByLabelText('Select row 0').click();
998
- getByLabelText('Select row 1').click();
999
-
1000
- const viaAction = queryByText('Apply');
1001
- expect(viaAction).toBeInTheDocument();
1002
- viaAction.click();
1003
-
1004
- assertNockRequest(autocompleteScope);
1005
- assertNockRequest(resolveErrataScope);
1006
- assertNockRequest(scope, done);
1007
- });
1008
-
1009
840
  test('Can bulk apply via remote execution', async (done) => {
1010
841
  const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
1011
842
  const mockErrata = makeMockErrata({});
@@ -1121,49 +952,6 @@ test('Can apply errata in bulk via customized remote execution', async (done) =>
1121
952
  assertNockRequest(scope, done);
1122
953
  });
1123
954
 
1124
- test('Can apply a single erratum to the host via katello agent', async (done) => {
1125
- const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
1126
- const mockErrata = makeMockErrata({});
1127
- const { results } = mockErrata;
1128
- const options = renderOptions({
1129
- ...cfWithErrataTotal(mockErrata.total),
1130
- katelloAgentInstalled: true,
1131
- katelloAgentEnabled: true,
1132
- });
1133
-
1134
- const scope = nockInstance
1135
- .get(hostErrata)
1136
- .query(defaultQuery)
1137
- .reply(200, mockErrata);
1138
-
1139
- const postBody = ({ errata_ids: errataIds }) => isEqual(errataIds, [results[0].errata_id]);
1140
-
1141
- const resolveErrataScope = nockInstance
1142
- .put(applyByKatelloAgentUrl, postBody)
1143
- .reply(201, mockResolveErrataTask);
1144
-
1145
- const { getAllByText, getByLabelText, getByText } = renderWithRedux(
1146
- <ErrataTab />,
1147
- options,
1148
- );
1149
-
1150
- await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
1151
- const erratumActionMenu = within(getByLabelText('Select row 0').closest('tr')).getByLabelText('Actions');
1152
- expect(erratumActionMenu).toHaveAttribute('aria-label', 'Actions');
1153
- erratumActionMenu.click();
1154
-
1155
- let viaAction;
1156
- await patientlyWaitFor(() => {
1157
- viaAction = getByText('Apply via Katello agent');
1158
- expect(viaAction).toBeInTheDocument();
1159
- });
1160
- viaAction.click();
1161
-
1162
- assertNockRequest(autocompleteScope);
1163
- assertNockRequest(resolveErrataScope);
1164
- assertNockRequest(scope, done);
1165
- });
1166
-
1167
955
  test('Can apply a single erratum to the host via remote execution', async (done) => {
1168
956
  const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
1169
957
  const mockErrata = makeMockErrata({});