katello 4.3.0.rc4 → 4.4.0.rc2

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 (458) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/vendor.js +0 -1
  3. data/app/controllers/katello/api/v2/api_controller.rb +13 -4
  4. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +4 -1
  5. data/app/controllers/katello/api/v2/content_views_controller.rb +46 -0
  6. data/app/controllers/katello/api/v2/host_packages_controller.rb +21 -1
  7. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +30 -1
  8. data/app/controllers/katello/api/v2/organizations_controller.rb +10 -6
  9. data/app/controllers/katello/api/v2/packages_controller.rb +4 -0
  10. data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +10 -1
  11. data/app/controllers/katello/api/v2/repositories_controller.rb +42 -14
  12. data/app/controllers/katello/api/v2/repository_sets_controller.rb +7 -0
  13. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +3 -0
  14. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +32 -0
  15. data/app/controllers/katello/remote_execution_controller.rb +5 -4
  16. data/app/graphql/types/host_collection.rb +18 -0
  17. data/app/helpers/katello/content_source_helper.rb +43 -0
  18. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +4 -0
  19. data/app/lib/actions/katello/cdn_configuration/update.rb +5 -7
  20. data/app/lib/actions/katello/content_view/publish.rb +5 -0
  21. data/app/lib/actions/katello/content_view_version/incremental_update.rb +17 -3
  22. data/app/lib/actions/katello/repository/discover.rb +1 -14
  23. data/app/lib/actions/katello/repository/errata_mail.rb +4 -5
  24. data/app/lib/actions/katello/repository/filtered_index_content.rb +1 -1
  25. data/app/lib/actions/katello/repository/sync.rb +2 -2
  26. data/app/lib/actions/pulp3/abstract.rb +1 -1
  27. data/app/lib/actions/pulp3/abstract_async_task.rb +1 -1
  28. data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +14 -4
  29. data/app/lib/actions/pulp3/content_view_version/create_import_history.rb +1 -2
  30. data/app/lib/actions/pulp3/content_view_version/import.rb +7 -0
  31. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +7 -5
  32. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
  33. data/app/lib/actions/pulp3/repository/reclaim_space.rb +3 -10
  34. data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -0
  35. data/app/lib/katello/concerns/base_template_scope_extensions.rb +11 -0
  36. data/app/lib/katello/errors.rb +3 -3
  37. data/app/lib/katello/logging.rb +6 -1
  38. data/app/lib/katello/repo_discovery.rb +27 -19
  39. data/app/lib/katello/resources/cdn/katello_cdn.rb +41 -3
  40. data/app/lib/katello/resources/cdn.rb +4 -2
  41. data/app/lib/katello/util/deduplication_migrator.rb +105 -0
  42. data/app/lib/katello/util/pulpcore_content_filters.rb +2 -1
  43. data/app/models/katello/candlepin/repository_mapper.rb +3 -2
  44. data/app/models/katello/cdn_configuration.rb +38 -6
  45. data/app/models/katello/concerns/audit_comment_extensions.rb +17 -0
  46. data/app/models/katello/concerns/host_managed_extensions.rb +34 -2
  47. data/app/models/katello/concerns/organization_extensions.rb +5 -1
  48. data/app/models/katello/concerns/pulp_database_unit.rb +59 -173
  49. data/app/models/katello/concerns/remote_execution_proxy_selector_extensions.rb +11 -0
  50. data/app/models/katello/concerns/smart_proxy_extensions.rb +2 -1
  51. data/app/models/katello/content_view.rb +4 -4
  52. data/app/models/katello/content_view_filter.rb +1 -1
  53. data/app/models/katello/content_view_history.rb +1 -1
  54. data/app/models/katello/content_view_version.rb +6 -2
  55. data/app/models/katello/content_view_version_export_history.rb +3 -2
  56. data/app/models/katello/content_view_version_import_history.rb +4 -4
  57. data/app/models/katello/deb.rb +1 -3
  58. data/app/models/katello/docker_meta_tag.rb +1 -1
  59. data/app/models/katello/erratum.rb +0 -15
  60. data/app/models/katello/glue/provider.rb +1 -1
  61. data/app/models/katello/glue/pulp/repos.rb +3 -1
  62. data/app/models/katello/host/content_facet.rb +2 -27
  63. data/app/models/katello/host/info_provider.rb +9 -0
  64. data/app/models/katello/host/subscription_facet.rb +2 -2
  65. data/app/models/katello/host_available_module_stream.rb +10 -0
  66. data/app/models/katello/hostgroup/content_facet.rb +2 -2
  67. data/app/models/katello/installed_package.rb +1 -0
  68. data/app/models/katello/product.rb +1 -1
  69. data/app/models/katello/product_content.rb +2 -2
  70. data/app/models/katello/repository.rb +13 -12
  71. data/app/models/katello/root_repository.rb +65 -16
  72. data/app/models/katello/rpm.rb +8 -2
  73. data/app/models/setting/content.rb +15 -5
  74. data/app/services/cert/rhsm_client.rb +1 -5
  75. data/app/services/katello/component_view_presenter.rb +1 -1
  76. data/app/services/katello/content_unit_indexer.rb +166 -0
  77. data/app/services/katello/organization_creator.rb +23 -8
  78. data/app/services/katello/pulp/repository/docker.rb +1 -1
  79. data/app/services/katello/pulp/repository/yum.rb +0 -54
  80. data/app/services/katello/pulp/repository.rb +0 -6
  81. data/app/services/katello/pulp3/ansible_collection.rb +26 -10
  82. data/app/services/katello/pulp3/api/apt.rb +7 -0
  83. data/app/services/katello/pulp3/api/yum.rb +4 -0
  84. data/app/services/katello/pulp3/content_view_version/import.rb +11 -2
  85. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +1 -1
  86. data/app/services/katello/pulp3/deb.rb +10 -9
  87. data/app/services/katello/pulp3/docker_manifest.rb +6 -5
  88. data/app/services/katello/pulp3/docker_manifest_list.rb +23 -6
  89. data/app/services/katello/pulp3/docker_tag.rb +16 -7
  90. data/app/services/katello/pulp3/erratum.rb +51 -56
  91. data/app/services/katello/pulp3/file_unit.rb +9 -6
  92. data/app/services/katello/pulp3/generic_content_unit.rb +11 -12
  93. data/app/services/katello/pulp3/module_stream.rb +76 -30
  94. data/app/services/katello/pulp3/package_group.rb +5 -5
  95. data/app/services/katello/pulp3/pulp_content_unit.rb +19 -11
  96. data/app/services/katello/pulp3/repository/apt.rb +5 -3
  97. data/app/services/katello/pulp3/repository/docker.rb +14 -7
  98. data/app/services/katello/pulp3/repository/generic.rb +1 -1
  99. data/app/services/katello/pulp3/repository/yum.rb +23 -16
  100. data/app/services/katello/pulp3/repository.rb +31 -10
  101. data/app/services/katello/pulp3/repository_mirror.rb +18 -4
  102. data/app/services/katello/pulp3/rpm.rb +13 -13
  103. data/app/services/katello/pulp3/srpm.rb +10 -9
  104. data/app/services/katello/registration_manager.rb +1 -1
  105. data/app/services/katello/repository_type.rb +15 -4
  106. data/app/services/katello/repository_type_manager.rb +1 -1
  107. data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +1 -1
  108. data/app/services/katello/upstream_connection_checker.rb +2 -2
  109. data/app/views/foreman/job_templates/change_content_source.erb +1 -31
  110. data/app/views/foreman/job_templates/install_errata.erb +6 -9
  111. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +26 -0
  112. data/app/views/foreman/job_templates/install_packages_by_search_query.erb +19 -0
  113. data/app/views/foreman/job_templates/remove_packages_by_search_query.erb +19 -0
  114. data/app/views/foreman/job_templates/update_packages_by_search_query.erb +19 -0
  115. data/app/views/katello/api/v2/cdn_configurations/show.json.rabl +1 -1
  116. data/app/views/katello/api/v2/content_views/base.json.rabl +8 -4
  117. data/app/views/katello/api/v2/environments/show.json.rabl +9 -0
  118. data/app/views/katello/api/v2/host_module_streams/base.json.rabl +1 -0
  119. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
  120. data/app/views/katello/api/v2/repositories/show.json.rabl +3 -1
  121. data/app/views/katello/layouts/react.html.erb +0 -1
  122. data/app/views/katello/sync_management/_repo.html.erb +36 -25
  123. data/config/initializers/monkeys.rb +0 -1
  124. data/config/routes/api/v2.rb +1 -0
  125. data/config/routes/overrides.rb +3 -0
  126. data/config/routes.rb +2 -0
  127. data/db/migrate/20150930183738_migrate_content_hosts.rb +1 -1
  128. data/db/migrate/20180612164926_add_content_org_id.rb +2 -2
  129. data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +2 -0
  130. data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +11 -2
  131. data/db/migrate/20211201154845_add_unique_indexes.rb +20 -0
  132. data/db/migrate/20211202172358_add_repository_mirroring_policy.rb +26 -0
  133. data/db/migrate/20211208034230_add_content_view_and_lifecycle_environment.rb +6 -0
  134. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +144 -0
  135. data/db/migrate/20220110223754_update_disconnected_settings.rb +20 -0
  136. data/db/migrate/20220120163252_fix_docker_download_policy.rb +11 -0
  137. data/db/migrate/20220124191056_add_type_to_cdn_configuration.rb +22 -0
  138. data/db/migrate/20220127120843_fix_debian_download_policy.rb +11 -0
  139. data/db/migrate/20220204171908_rename_docker_tags_whitelist_and_add_exclude_tags.rb +8 -0
  140. data/db/migrate/20220207140355_change_deb_attributes_size_limit.rb +7 -0
  141. data/db/migrate/20220209205137_expand_sync_timeout_settings.rb +23 -0
  142. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  143. data/engines/bastion/app/views/bastion/layouts/application.html.erb +0 -1
  144. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +0 -1
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.controller.js +1 -1
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-products.controller.js +1 -1
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-repositories.controller.js +1 -1
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +1 -1
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment.html +26 -1
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +10 -3
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +212 -152
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +1 -0
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +29 -10
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +2 -3
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +8 -3
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +49 -35
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/mirroring-policy.service.js +30 -0
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +29 -6
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +48 -23
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery.controller.js +5 -4
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +4 -3
  162. data/lib/katello/engine.rb +4 -0
  163. data/lib/katello/permission_creator.rb +1 -1
  164. data/lib/katello/permissions/host_permissions.rb +3 -1
  165. data/lib/katello/plugin.rb +9 -1
  166. data/lib/katello/repository_types/deb.rb +0 -1
  167. data/lib/katello/repository_types/docker.rb +4 -4
  168. data/lib/katello/repository_types/file.rb +0 -1
  169. data/lib/katello/repository_types/ostree.rb +4 -6
  170. data/lib/katello/repository_types/python.rb +5 -1
  171. data/lib/katello/repository_types/yum.rb +2 -9
  172. data/lib/katello/tasks/content_view_import_only.rake +34 -0
  173. data/lib/katello/tasks/import_applicability.rake +1 -1
  174. data/lib/katello/tasks/jenkins.rake +0 -2
  175. data/lib/katello/tasks/repository.rake +4 -1
  176. data/lib/katello/tasks/upgrades/4.4/publish_import_cvvs.rake +17 -0
  177. data/lib/katello/version.rb +1 -1
  178. data/locale/action_names.rb +8 -7
  179. data/locale/bn/katello.po +1402 -650
  180. data/locale/cs/katello.po +1217 -96
  181. data/locale/de/katello.po +2359 -1347
  182. data/locale/en/katello.po +1216 -94
  183. data/locale/es/katello.po +2201 -1172
  184. data/locale/fr/katello.po +2601 -1615
  185. data/locale/gu/katello.po +1564 -814
  186. data/locale/hi/katello.po +1563 -810
  187. data/locale/it/katello.po +1311 -282
  188. data/locale/ja/katello.po +2534 -1518
  189. data/locale/katello.pot +3430 -1326
  190. data/locale/kn/katello.po +1564 -812
  191. data/locale/ko/katello.po +1441 -409
  192. data/locale/mr/katello.po +1564 -776
  193. data/locale/or/katello.po +1565 -813
  194. data/locale/pa/katello.po +1559 -792
  195. data/locale/pt/katello.po +1314 -277
  196. data/locale/pt_BR/katello.po +2226 -1181
  197. data/locale/ru/katello.po +1587 -563
  198. data/locale/ta/katello.po +1373 -619
  199. data/locale/te/katello.po +1564 -810
  200. data/locale/zh_CN/katello.po +2936 -1890
  201. data/locale/zh_TW/katello.po +1508 -606
  202. data/webpack/__mocks__/foremanReact/{redux/actions/toasts.js → components/ToastsList/index.js} +3 -2
  203. data/webpack/components/ActionableDetail.js +35 -21
  204. data/webpack/components/Content/Details/ContentDetails.js +1 -1
  205. data/webpack/components/Content/Details/__tests__/ContentDetailInfo.test.js +0 -2
  206. data/webpack/components/Content/Details/__tests__/ContentDetailRepositories.test.js +0 -2
  207. data/webpack/components/Content/Details/__tests__/ContentDetails.test.js +0 -2
  208. data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +1 -1
  209. data/webpack/components/Content/__tests__/ContentPage.test.js +0 -2
  210. data/webpack/components/Content/__tests__/ContentTable.test.js +0 -2
  211. data/webpack/components/EditableSwitch.js +8 -2
  212. data/webpack/components/EditableTextInput/EditableTextInput.js +44 -86
  213. data/webpack/components/EditableTextInput/__tests__/editableTextInput.test.js +3 -3
  214. data/webpack/components/Errata/index.js +95 -29
  215. data/webpack/components/ErratumTypeLabel.js +16 -16
  216. data/webpack/components/MultiSelect/index.js +2 -2
  217. data/webpack/components/Packages/index.js +1 -1
  218. data/webpack/components/RoutedTabs/index.js +2 -1
  219. data/webpack/components/Search/Search.js +5 -2
  220. data/webpack/components/Search/__tests__/search.test.js +2 -3
  221. data/webpack/components/Select/Select.js +1 -1
  222. data/webpack/components/SelectOrg/SelectOrgReducer.js +15 -15
  223. data/webpack/components/SelectOrg/SetOrganization.js +2 -2
  224. data/webpack/components/Table/PageControls.js +3 -6
  225. data/webpack/components/Table/TableHooks.js +47 -7
  226. data/webpack/components/Table/TableWrapper.js +25 -7
  227. data/webpack/components/TypeAhead/TypeAhead.js +5 -1
  228. data/webpack/components/TypeAhead/helpers/commonPropTypes.js +1 -1
  229. data/webpack/components/TypeAhead/helpers/helpers.js +14 -14
  230. data/webpack/components/TypeAhead/pf3Search/TypeAheadSearch.js +1 -1
  231. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +4 -1
  232. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +2 -1
  233. data/webpack/components/WithOrganization/withOrganization.js +3 -3
  234. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +1 -1
  235. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +108 -0
  236. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +56 -0
  237. data/webpack/components/extensions/HostDetails/HostDetailsActions.js +2 -0
  238. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesActions.js +49 -2
  239. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesConstants.js +14 -1
  240. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +6 -4
  241. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +1 -0
  242. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +1 -0
  243. data/webpack/components/extensions/HostDetails/Tabs/{ErrataTab.js → ErrataTab/ErrataTab.js} +86 -75
  244. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.scss +11 -0
  245. data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionContents.js → ErrataTab/ErratumExpansionContents.js} +3 -3
  246. data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionDetail.js → ErrataTab/ErratumExpansionDetail.js} +0 -0
  247. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataActions.js +3 -3
  248. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataConstants.js +11 -0
  249. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataSelectors.js +0 -0
  250. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsActions.js +16 -0
  251. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsConstants.js +3 -0
  252. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsSelectors.js +19 -0
  253. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +241 -0
  254. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/moduleStreamsTab.test.js +108 -0
  255. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/modules.fixtures.json +34 -0
  256. data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.js +279 -0
  257. data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.scss +3 -0
  258. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.js +357 -64
  259. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.scss +3 -7
  260. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +103 -4
  261. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +6 -1
  262. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +45 -42
  263. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.scss +3 -3
  264. data/webpack/components/extensions/HostDetails/Tabs/{EnableTracerEmptyState.js → TracesTab/EnableTracerEmptyState.js} +0 -0
  265. data/webpack/components/extensions/HostDetails/Tabs/{EnableTracerModal.js → TracesTab/EnableTracerModal.js} +3 -2
  266. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesActions.js → TracesTab/HostTracesActions.js} +2 -2
  267. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesConstants.js → TracesTab/HostTracesConstants.js} +0 -0
  268. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesSelectors.js → TracesTab/HostTracesSelectors.js} +0 -0
  269. data/webpack/components/extensions/HostDetails/Tabs/{TracesTab.js → TracesTab/TracesTab.js} +66 -61
  270. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.scss +11 -0
  271. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +17 -18
  272. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +385 -0
  273. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packages.fixtures.json +1 -1
  274. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +312 -11
  275. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +2 -2
  276. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +26 -30
  277. data/webpack/components/extensions/HostDetails/Tabs/__tests__/yumInstallablePackages.fixtures.json +72 -0
  278. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +25 -5
  279. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesActions.js +18 -0
  280. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesConstants.js +3 -0
  281. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesSelectors.js +16 -0
  282. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +19 -0
  283. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +4 -0
  284. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
  285. data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +1 -1
  286. data/webpack/components/extensions/about/SystemStatuses.js +1 -1
  287. data/webpack/components/extensions/about/SystemStatusesReducer.js +10 -10
  288. data/webpack/components/pf3Table/components/Table.js +4 -5
  289. data/webpack/components/pf3Table/components/Table.test.js +0 -3
  290. data/webpack/components/pf3Table/components/TableBody.js +2 -2
  291. data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +9 -8
  292. data/webpack/containers/Application/config.js +6 -1
  293. data/webpack/containers/Application/overrides.scss +56 -7
  294. data/webpack/global_index.js +4 -1
  295. data/webpack/global_test_setup.js +1 -1
  296. data/webpack/index.js +7 -0
  297. data/webpack/redux/OrganizationProducts/OrganizationProductsReducer.js +15 -15
  298. data/webpack/redux/reducers/RedHatRepositories/enabled.js +43 -43
  299. data/webpack/redux/reducers/RedHatRepositories/repositorySetRepositories.js +43 -43
  300. data/webpack/redux/reducers/RedHatRepositories/sets.js +31 -31
  301. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +26 -26
  302. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +19 -19
  303. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -2
  304. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -2
  305. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -2
  306. data/webpack/scenes/Content/ContentConfig.js +55 -5
  307. data/webpack/scenes/Content/ContentPage.js +5 -5
  308. data/webpack/scenes/Content/Details/ContentDetails.js +23 -21
  309. data/webpack/scenes/Content/Details/ContentInfo.js +2 -2
  310. data/webpack/scenes/Content/Details/ContentRepositories.js +1 -1
  311. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +4 -4
  312. data/webpack/scenes/Content/Table/ContentTable.js +2 -2
  313. data/webpack/scenes/Content/__tests__/contentTable.test.js +3 -3
  314. data/webpack/scenes/ContentViews/ContentViewsConstants.js +5 -4
  315. data/webpack/scenes/ContentViews/ContentViewsPage.js +17 -13
  316. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -1
  317. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +3 -2
  318. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +2 -2
  319. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +6 -6
  320. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +22 -11
  321. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +31 -18
  322. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +1 -1
  323. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +2 -2
  324. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +22 -28
  325. data/webpack/scenes/ContentViews/Details/ContentViewDetailReducer.js +8 -8
  326. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +5 -5
  327. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +32 -30
  328. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +9 -4
  329. data/webpack/scenes/ContentViews/Details/DetailsContainer.js +14 -17
  330. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +3 -0
  331. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +1 -1
  332. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +8 -8
  333. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +4 -4
  334. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +6 -6
  335. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +16 -9
  336. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +46 -46
  337. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +17 -17
  338. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +17 -17
  339. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +4 -4
  340. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +2 -2
  341. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +17 -11
  342. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +1 -1
  343. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +2 -2
  344. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +17 -17
  345. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +2 -3
  346. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +2 -9
  347. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +3 -5
  348. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +2 -10
  349. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +2 -3
  350. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +2 -3
  351. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +2 -2
  352. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +1 -1
  353. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +24 -3
  354. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +11 -5
  355. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +28 -28
  356. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +1 -1
  357. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +18 -18
  358. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +3 -3
  359. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +3 -3
  360. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -6
  361. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
  362. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -1
  363. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +31 -35
  364. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +9 -8
  365. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +5 -2
  366. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +39 -40
  367. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +46 -34
  368. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +66 -49
  369. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +5 -5
  370. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +3 -3
  371. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +5 -3
  372. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +2 -2
  373. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +5 -5
  374. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +3 -3
  375. data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +1 -1
  376. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +1 -1
  377. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +18 -18
  378. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +10 -10
  379. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +2 -2
  380. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +8 -8
  381. data/webpack/scenes/Hosts/ChangeContentSource/actions.js +43 -0
  382. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +87 -0
  383. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +90 -0
  384. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +43 -0
  385. data/webpack/scenes/Hosts/ChangeContentSource/constants.js +3 -0
  386. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +27 -0
  387. data/webpack/scenes/Hosts/ChangeContentSource/index.js +126 -0
  388. data/webpack/scenes/Hosts/ChangeContentSource/selectors.js +42 -0
  389. data/webpack/scenes/Hosts/ChangeContentSource/styles.scss +11 -0
  390. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetailsReducer.js +18 -18
  391. data/webpack/scenes/ModuleStreams/Details/Profiles/__tests__/ModuleStreamDetailProfiles.test.js +0 -1
  392. data/webpack/scenes/ModuleStreams/Details/__tests__/ModuleStreamDetails.test.js +0 -2
  393. data/webpack/scenes/ModuleStreams/ModuleStreamsReducer.js +26 -26
  394. data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamPage.test.js +0 -2
  395. data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamsTable.test.js +0 -2
  396. data/webpack/scenes/Organizations/OrganizationActions.js +5 -1
  397. data/webpack/scenes/Organizations/OrganizationReducer.js +8 -8
  398. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +31 -1
  399. data/webpack/scenes/RedHatRepositories/__tests__/RedHatRepositoriesPage.test.js +16 -0
  400. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +11 -2
  401. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +4 -4
  402. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -1
  403. data/webpack/scenes/RedHatRepositories/helpers.js +5 -5
  404. data/webpack/scenes/RedHatRepositories/index.js +11 -3
  405. data/webpack/scenes/Settings/SettingsReducer.js +14 -14
  406. data/webpack/scenes/Settings/Tables/TableReducer.js +23 -23
  407. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailInfo.js +2 -2
  408. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProductContent.js +15 -15
  409. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProducts.js +1 -1
  410. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailReducer.js +34 -34
  411. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +13 -13
  412. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/AirGappedTypeForm.js +81 -0
  413. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +13 -0
  414. data/webpack/scenes/Subscriptions/Manifest/{CdnConfigurationForm.scss → CdnConfigurationTab/CdnConfigurationForm.scss} +0 -0
  415. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +106 -0
  416. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/UpstreamServerTypeForm.js +259 -0
  417. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/AirGappedTypeForm.test.js +44 -0
  418. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +67 -0
  419. data/webpack/scenes/Subscriptions/Manifest/{__tests__/CdnConfigurationForm.test.js → CdnConfigurationTab/__tests__/UpstreamServerTypeForm.test.js} +46 -17
  420. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +97 -0
  421. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +11 -6
  422. data/webpack/scenes/Subscriptions/Manifest/ManifestHistoryReducer.js +16 -16
  423. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +149 -149
  424. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsReducer.js +41 -41
  425. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/UpstreamSubscriptionsPage.test.js +0 -1
  426. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +0 -1
  427. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +3 -2
  428. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +4 -0
  429. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +9 -0
  430. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/DeleteDialog.js +6 -6
  431. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +12 -12
  432. data/webpack/scenes/Tasks/TaskActions.js +1 -1
  433. data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap +3 -2
  434. data/webpack/services/api/testHelpers.js +5 -3
  435. data/webpack/services/index.js +36 -36
  436. data/webpack/utils/helpers.js +11 -8
  437. metadata +98 -60
  438. data/app/services/katello/pulp/deb.rb +0 -55
  439. data/app/services/katello/pulp/distribution.rb +0 -7
  440. data/app/services/katello/pulp/docker_blob.rb +0 -7
  441. data/app/services/katello/pulp/docker_manifest.rb +0 -13
  442. data/app/services/katello/pulp/docker_manifest_list.rb +0 -14
  443. data/app/services/katello/pulp/docker_tag.rb +0 -14
  444. data/app/services/katello/pulp/erratum.rb +0 -129
  445. data/app/services/katello/pulp/file_unit.rb +0 -21
  446. data/app/services/katello/pulp/module_stream.rb +0 -39
  447. data/app/services/katello/pulp/package_category.rb +0 -7
  448. data/app/services/katello/pulp/package_group.rb +0 -20
  449. data/app/services/katello/pulp/pulp_content_unit.rb +0 -156
  450. data/app/services/katello/pulp/rpm.rb +0 -57
  451. data/app/services/katello/pulp/srpm.rb +0 -29
  452. data/app/services/katello/pulp/yum_metadata_file.rb +0 -30
  453. data/lib/monkeys/pulp3_13_checksumfix.rb +0 -17
  454. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +0 -2
  455. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +0 -2
  456. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.scss +0 -16
  457. data/webpack/components/extensions/HostDetails/Tabs/TracesTab.scss +0 -12
  458. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationForm.js +0 -185
@@ -14,7 +14,7 @@ import DeleteManifestModalText from './DeleteManifestModalText';
14
14
  import { MANAGE_MANIFEST_MODAL_ID, DELETE_MANIFEST_MODAL_ID } from './ManifestConstants';
15
15
  import { CONTENT_CREDENTIAL_CERT_TYPE } from '../../ContentCredentials/ContentCredentialConstants';
16
16
  import SimpleContentAccess from './SimpleContentAccess';
17
- import CdnConfigurationForm from './CdnConfigurationForm';
17
+ import CdnConfigurationForm from './CdnConfigurationTab';
18
18
 
19
19
  import './ManageManifestModal.scss';
20
20
 
@@ -52,6 +52,10 @@ class ManageManifestModal extends Component {
52
52
  }
53
53
  };
54
54
 
55
+ reloadOrganization = () => {
56
+ this.props.loadOrganization();
57
+ }
58
+
55
59
  uploadManifest = (fileList) => {
56
60
  if (fileList.length > 0) {
57
61
  this.props.upload(fileList[0]);
@@ -155,7 +159,7 @@ class ManageManifestModal extends Component {
155
159
  simpleContentAccessEligible={simpleContentAccessEligible}
156
160
  />
157
161
  </Row>
158
- }
162
+ }
159
163
  <Row>
160
164
  <Col sm={5}>
161
165
  <strong>{__('Subscription Allocation')}</strong>
@@ -172,7 +176,7 @@ class ManageManifestModal extends Component {
172
176
  >
173
177
  <div>{__('Import New Manifest')}</div>
174
178
  </ControlLabel>
175
- }
179
+ }
176
180
  </Col>
177
181
  <Col sm={7} className="manifest-actions">
178
182
  <Spinner loading={actionInProgress} />
@@ -184,7 +188,7 @@ class ManageManifestModal extends Component {
184
188
  disabled={actionInProgress}
185
189
  onChange={e => this.uploadManifest(e.target.files)}
186
190
  />
187
- }
191
+ }
188
192
  <div id="manifest-actions-row">
189
193
  {canImportManifest &&
190
194
  <TooltipButton
@@ -196,7 +200,7 @@ class ManageManifestModal extends Component {
196
200
  disabled={!isManifestImported ||
197
201
  actionInProgress || disableManifestActions}
198
202
  />
199
- }
203
+ }
200
204
  {canDeleteManifest &&
201
205
  <React.Fragment>
202
206
  <TooltipButton
@@ -209,7 +213,7 @@ class ManageManifestModal extends Component {
209
213
  tooltipPlacement="top"
210
214
  />
211
215
  </React.Fragment>
212
- }
216
+ }
213
217
  </div>
214
218
  <ForemanModal title={__('Confirm delete manifest')} id={DELETE_MANIFEST_MODAL_ID}>
215
219
  <DeleteManifestModalText />
@@ -247,6 +251,7 @@ class ManageManifestModal extends Component {
247
251
  <CdnConfigurationForm
248
252
  cdnConfiguration={organization.cdn_configuration}
249
253
  contentCredentials={contentCredentials}
254
+ onUpdate={this.reloadOrganization}
250
255
  />
251
256
  </Grid>
252
257
  </Tab>
@@ -10,25 +10,25 @@ const initialState = Immutable({ loading: true, results: [] });
10
10
 
11
11
  export default (state = initialState, action) => {
12
12
  switch (action.type) {
13
- case MANIFEST_HISTORY_REQUEST:
14
- return state.set('loading', true);
13
+ case MANIFEST_HISTORY_REQUEST:
14
+ return state.set('loading', true);
15
15
 
16
- case MANIFEST_HISTORY_SUCCESS: {
17
- const results = action.response;
16
+ case MANIFEST_HISTORY_SUCCESS: {
17
+ const results = action.response;
18
18
 
19
- return state.merge({
20
- results,
21
- loading: false,
22
- });
23
- }
19
+ return state.merge({
20
+ results,
21
+ loading: false,
22
+ });
23
+ }
24
24
 
25
- case MANIFEST_HISTORY_FAILURE:
26
- return state.merge({
27
- error: action.payload.message,
28
- loading: false,
29
- });
25
+ case MANIFEST_HISTORY_FAILURE:
26
+ return state.merge({
27
+ error: action.payload.message,
28
+ loading: false,
29
+ });
30
30
 
31
- default:
32
- return state;
31
+ default:
32
+ return state;
33
33
  }
34
34
  };
@@ -69,160 +69,160 @@ const initialState = Immutable({
69
69
 
70
70
  export default (state = initialState, action) => {
71
71
  switch (action.type) {
72
- case SIMPLE_CONTENT_ACCESS_ELIGIBLE_SUCCESS:
73
- return state.set('simpleContentAccessEligible', action.response.simple_content_access_eligible);
74
- case PING_UPSTREAM_SUBSCRIPTIONS_SUCCESS:
75
- return state.set('hasUpstreamConnection', true);
76
- case PING_UPSTREAM_SUBSCRIPTIONS_FAILURE:
77
- return state.set('hasUpstreamConnection', false);
78
- case SUBSCRIPTIONS_REQUEST:
79
- return state.set('loading', true);
80
- case SUBSCRIPTIONS_COLUMNS_REQUEST:
81
- return state
82
- .set('tableColumns', action.payload.tableColumns);
83
- case UPDATE_SUBSCRIPTION_COLUMNS:
84
- return state
85
- .set('selectedTableColumns', action.payload.enabledColumns);
86
- case SUBSCRIPTIONS_SUCCESS: {
87
- const {
88
- page,
89
- per_page, // eslint-disable-line camelcase
90
- subtotal,
91
- results,
92
- can_import_manifest, // eslint-disable-line camelcase
93
- can_delete_manifest, // eslint-disable-line camelcase
94
- can_manage_subscription_allocations, // eslint-disable-line camelcase
95
- can_edit_organizations, // eslint-disable-line camelcase
96
- } = action.response;
97
-
98
- return state.merge({
99
- results,
100
- activePermissions: {
101
- can_import_manifest,
102
- can_delete_manifest,
103
- can_manage_subscription_allocations,
104
- can_edit_organizations,
105
- },
106
- loading: false,
107
- searchIsActive: !!action.search,
108
- search: action.search,
109
- pagination: {
110
- page: Number(page),
111
- // eslint-disable-next-line camelcase
112
- perPage: Number(per_page || state.pagination.perPage),
113
- },
114
- itemCount: Number(subtotal),
115
- });
116
- }
72
+ case SIMPLE_CONTENT_ACCESS_ELIGIBLE_SUCCESS:
73
+ return state.set('simpleContentAccessEligible', action.response.simple_content_access_eligible);
74
+ case PING_UPSTREAM_SUBSCRIPTIONS_SUCCESS:
75
+ return state.set('hasUpstreamConnection', true);
76
+ case PING_UPSTREAM_SUBSCRIPTIONS_FAILURE:
77
+ return state.set('hasUpstreamConnection', false);
78
+ case SUBSCRIPTIONS_REQUEST:
79
+ return state.set('loading', true);
80
+ case SUBSCRIPTIONS_COLUMNS_REQUEST:
81
+ return state
82
+ .set('tableColumns', action.payload.tableColumns);
83
+ case UPDATE_SUBSCRIPTION_COLUMNS:
84
+ return state
85
+ .set('selectedTableColumns', action.payload.enabledColumns);
86
+ case SUBSCRIPTIONS_SUCCESS: {
87
+ const {
88
+ page,
89
+ per_page, // eslint-disable-line camelcase
90
+ subtotal,
91
+ results,
92
+ can_import_manifest, // eslint-disable-line camelcase
93
+ can_delete_manifest, // eslint-disable-line camelcase
94
+ can_manage_subscription_allocations, // eslint-disable-line camelcase
95
+ can_edit_organizations, // eslint-disable-line camelcase
96
+ } = action.response;
97
+
98
+ return state.merge({
99
+ results,
100
+ activePermissions: {
101
+ can_import_manifest,
102
+ can_delete_manifest,
103
+ can_manage_subscription_allocations,
104
+ can_edit_organizations,
105
+ },
106
+ loading: false,
107
+ searchIsActive: !!action.search,
108
+ search: action.search,
109
+ pagination: {
110
+ page: Number(page),
111
+ // eslint-disable-next-line camelcase
112
+ perPage: Number(per_page || state.pagination.perPage),
113
+ },
114
+ itemCount: Number(subtotal),
115
+ });
116
+ }
117
117
 
118
- case SUBSCRIPTIONS_FAILURE:
119
- return state
120
- .set('loading', false)
121
- .set('results', [])
122
- .set('itemCount', 0)
123
- .set(
124
- 'missingPermissions',
125
- get(action, ['payload', 'messages', 0, 'missing_permissions']),
126
- );
127
-
128
- case SUBSCRIPTIONS_QUANTITIES_REQUEST:
129
- return state.merge({
130
- quantitiesLoading: true,
131
- availableQuantities: null,
132
- });
133
-
134
- case SUBSCRIPTIONS_QUANTITIES_SUCCESS: {
135
- return state.merge({
136
- quantitiesLoading: false,
137
- availableQuantities: action.payload,
138
- });
139
- }
118
+ case SUBSCRIPTIONS_FAILURE:
119
+ return state
120
+ .set('loading', false)
121
+ .set('results', [])
122
+ .set('itemCount', 0)
123
+ .set(
124
+ 'missingPermissions',
125
+ get(action, ['payload', 'messages', 0, 'missing_permissions']),
126
+ );
127
+
128
+ case SUBSCRIPTIONS_QUANTITIES_REQUEST:
129
+ return state.merge({
130
+ quantitiesLoading: true,
131
+ availableQuantities: null,
132
+ });
133
+
134
+ case SUBSCRIPTIONS_QUANTITIES_SUCCESS: {
135
+ return state.merge({
136
+ quantitiesLoading: false,
137
+ availableQuantities: action.payload,
138
+ });
139
+ }
140
140
 
141
- case SUBSCRIPTIONS_QUANTITIES_FAILURE: {
142
- return state.merge({
143
- quantitiesLoading: false,
144
- availableQuantities: {},
145
- });
146
- }
141
+ case SUBSCRIPTIONS_QUANTITIES_FAILURE: {
142
+ return state.merge({
143
+ quantitiesLoading: false,
144
+ availableQuantities: {},
145
+ });
146
+ }
147
147
 
148
- case SUBSCRIPTIONS_TASK_SEARCH_SUCCESS: {
149
- if (!state.task) {
150
- const tasks = action.response.results;
151
- if (tasks.length > 0) {
152
- return state
153
- .set('task', tasks[0]); // this will be the oldest pending task
154
- }
148
+ case SUBSCRIPTIONS_TASK_SEARCH_SUCCESS: {
149
+ if (!state.task) {
150
+ const tasks = action.response.results;
151
+ if (tasks.length > 0) {
152
+ return state
153
+ .set('task', tasks[0]); // this will be the oldest pending task
155
154
  }
156
-
157
- return state;
158
155
  }
159
156
 
160
- case DELETE_MANIFEST_SUCCESS:
161
- return state.merge({
162
- task: action.response,
163
- hasUpstreamConnection: false,
164
- manifestActionStarted: false,
165
- });
166
-
167
- case SUBSCRIPTIONS_POLL_TASK_SUCCESS:
168
- return state
169
- .set('task', action.response);
170
-
171
- case UPDATE_QUANTITY_SUCCESS:
172
- case UPLOAD_MANIFEST_SUCCESS:
173
- case REFRESH_MANIFEST_SUCCESS:
174
- case ENABLE_SIMPLE_CONTENT_ACCESS_SUCCESS:
175
- case DISABLE_SIMPLE_CONTENT_ACCESS_SUCCESS:
176
- return state
177
- .set('task', action.response)
178
- .set('manifestActionStarted', false);
179
-
180
- case ENABLE_SIMPLE_CONTENT_ACCESS_REQUEST:
181
- case DISABLE_SIMPLE_CONTENT_ACCESS_REQUEST:
182
- case REFRESH_MANIFEST_REQUEST:
183
- case UPLOAD_MANIFEST_REQUEST:
184
- case DELETE_MANIFEST_REQUEST:
185
- case UPDATE_QUANTITY_REQUEST:
186
- case DELETE_SUBSCRIPTIONS_REQUEST:
187
- return state
188
- .set('manifestActionStarted', true);
189
-
190
- case ENABLE_SIMPLE_CONTENT_ACCESS_FAILURE:
191
- case DISABLE_SIMPLE_CONTENT_ACCESS_FAILURE:
192
- case REFRESH_MANIFEST_FAILURE:
193
- case UPLOAD_MANIFEST_FAILURE:
194
- case DELETE_MANIFEST_FAILURE:
195
- case DELETE_SUBSCRIPTIONS_FAILURE:
196
- case UPDATE_QUANTITY_FAILURE:
197
- return state
198
- .set('manifestActionStarted', false);
199
-
200
- case DELETE_SUBSCRIPTIONS_SUCCESS:
201
- return state
202
- .set('task', action.response)
203
- .set('manifestActionStarted', false)
204
- .set('deleteButtonDisabled', true);
205
-
206
- case SUBSCRIPTIONS_RESET_TASKS:
207
- case SUBSCRIPTIONS_TASK_SEARCH_FAILURE:
208
- case SUBSCRIPTIONS_POLL_TASK_FAILURE:
209
- return state
210
- .set('task', null);
211
-
212
- case SUBSCRIPTIONS_UPDATE_SEARCH_QUERY:
213
- return state.set('searchQuery', action.payload);
214
-
215
- case SUBSCRIPTIONS_OPEN_DELETE_MODAL:
216
- return state.set('deleteModalOpened', true);
217
- case SUBSCRIPTIONS_CLOSE_DELETE_MODAL:
218
- return state.set('deleteModalOpened', false);
219
-
220
- case SUBSCRIPTIONS_DISABLE_DELETE_BUTTON:
221
- return state.set('deleteButtonDisabled', true);
222
- case SUBSCRIPTIONS_ENABLE_DELETE_BUTTON:
223
- return state.set('deleteButtonDisabled', false);
224
-
225
- default:
226
- return state;
157
+ return state;
158
+ }
159
+
160
+ case DELETE_MANIFEST_SUCCESS:
161
+ return state.merge({
162
+ task: action.response,
163
+ hasUpstreamConnection: false,
164
+ manifestActionStarted: false,
165
+ });
166
+
167
+ case SUBSCRIPTIONS_POLL_TASK_SUCCESS:
168
+ return state
169
+ .set('task', action.response);
170
+
171
+ case UPDATE_QUANTITY_SUCCESS:
172
+ case UPLOAD_MANIFEST_SUCCESS:
173
+ case REFRESH_MANIFEST_SUCCESS:
174
+ case ENABLE_SIMPLE_CONTENT_ACCESS_SUCCESS:
175
+ case DISABLE_SIMPLE_CONTENT_ACCESS_SUCCESS:
176
+ return state
177
+ .set('task', action.response)
178
+ .set('manifestActionStarted', false);
179
+
180
+ case ENABLE_SIMPLE_CONTENT_ACCESS_REQUEST:
181
+ case DISABLE_SIMPLE_CONTENT_ACCESS_REQUEST:
182
+ case REFRESH_MANIFEST_REQUEST:
183
+ case UPLOAD_MANIFEST_REQUEST:
184
+ case DELETE_MANIFEST_REQUEST:
185
+ case UPDATE_QUANTITY_REQUEST:
186
+ case DELETE_SUBSCRIPTIONS_REQUEST:
187
+ return state
188
+ .set('manifestActionStarted', true);
189
+
190
+ case ENABLE_SIMPLE_CONTENT_ACCESS_FAILURE:
191
+ case DISABLE_SIMPLE_CONTENT_ACCESS_FAILURE:
192
+ case REFRESH_MANIFEST_FAILURE:
193
+ case UPLOAD_MANIFEST_FAILURE:
194
+ case DELETE_MANIFEST_FAILURE:
195
+ case DELETE_SUBSCRIPTIONS_FAILURE:
196
+ case UPDATE_QUANTITY_FAILURE:
197
+ return state
198
+ .set('manifestActionStarted', false);
199
+
200
+ case DELETE_SUBSCRIPTIONS_SUCCESS:
201
+ return state
202
+ .set('task', action.response)
203
+ .set('manifestActionStarted', false)
204
+ .set('deleteButtonDisabled', true);
205
+
206
+ case SUBSCRIPTIONS_RESET_TASKS:
207
+ case SUBSCRIPTIONS_TASK_SEARCH_FAILURE:
208
+ case SUBSCRIPTIONS_POLL_TASK_FAILURE:
209
+ return state
210
+ .set('task', null);
211
+
212
+ case SUBSCRIPTIONS_UPDATE_SEARCH_QUERY:
213
+ return state.set('searchQuery', action.payload);
214
+
215
+ case SUBSCRIPTIONS_OPEN_DELETE_MODAL:
216
+ return state.set('deleteModalOpened', true);
217
+ case SUBSCRIPTIONS_CLOSE_DELETE_MODAL:
218
+ return state.set('deleteModalOpened', false);
219
+
220
+ case SUBSCRIPTIONS_DISABLE_DELETE_BUTTON:
221
+ return state.set('deleteButtonDisabled', true);
222
+ case SUBSCRIPTIONS_ENABLE_DELETE_BUTTON:
223
+ return state.set('deleteButtonDisabled', false);
224
+
225
+ default:
226
+ return state;
227
227
  }
228
228
  };
@@ -13,46 +13,46 @@ const initialState = initialApiState;
13
13
 
14
14
  export default (state = initialState, action) => {
15
15
  switch (action.type) {
16
- case UPSTREAM_SUBSCRIPTIONS_REQUEST:
17
- return state.set('loading', true);
18
-
19
- case UPSTREAM_SUBSCRIPTIONS_SUCCESS: {
20
- const {
21
- page, per_page, total, results, // eslint-disable-line camelcase
22
-
23
- } = action.response;
24
-
25
- return state.merge({
26
- results,
27
- loading: false,
28
- searchIsActive: !!action.search,
29
- search: action.search,
30
- pagination: {
31
- page: Number(page),
32
- // eslint-disable-next-line camelcase
33
- perPage: Number(per_page || state.pagination.perPage),
34
- },
35
- itemCount: Number(total),
36
- });
37
- }
38
-
39
- case UPSTREAM_SUBSCRIPTIONS_FAILURE:
40
- return state.merge({
41
- error: action.payload.message,
42
- loading: false,
43
- });
44
-
45
- case SAVE_UPSTREAM_SUBSCRIPTIONS_REQUEST:
46
- return state.set('loading', true);
47
-
48
- case SAVE_UPSTREAM_SUBSCRIPTIONS_SUCCESS:
49
- return state.set('task', action.response).set('loading', false);
50
-
51
- case SAVE_UPSTREAM_SUBSCRIPTIONS_FAILURE: {
52
- return state.set('error', action.payload.message).set('loading', false);
53
- }
54
-
55
- default:
56
- return state;
16
+ case UPSTREAM_SUBSCRIPTIONS_REQUEST:
17
+ return state.set('loading', true);
18
+
19
+ case UPSTREAM_SUBSCRIPTIONS_SUCCESS: {
20
+ const {
21
+ page, per_page, total, results, // eslint-disable-line camelcase
22
+
23
+ } = action.response;
24
+
25
+ return state.merge({
26
+ results,
27
+ loading: false,
28
+ searchIsActive: !!action.search,
29
+ search: action.search,
30
+ pagination: {
31
+ page: Number(page),
32
+ // eslint-disable-next-line camelcase
33
+ perPage: Number(per_page || state.pagination.perPage),
34
+ },
35
+ itemCount: Number(total),
36
+ });
37
+ }
38
+
39
+ case UPSTREAM_SUBSCRIPTIONS_FAILURE:
40
+ return state.merge({
41
+ error: action.payload.message,
42
+ loading: false,
43
+ });
44
+
45
+ case SAVE_UPSTREAM_SUBSCRIPTIONS_REQUEST:
46
+ return state.set('loading', true);
47
+
48
+ case SAVE_UPSTREAM_SUBSCRIPTIONS_SUCCESS:
49
+ return state.set('task', action.response).set('loading', false);
50
+
51
+ case SAVE_UPSTREAM_SUBSCRIPTIONS_FAILURE: {
52
+ return state.set('error', action.payload.message).set('loading', false);
53
+ }
54
+
55
+ default:
56
+ return state;
57
57
  }
58
58
  };
@@ -6,7 +6,6 @@ import { successState } from './upstreamSubscriptions.fixtures';
6
6
  import { loadUpstreamSubscriptions, saveUpstreamSubscriptions } from '../UpstreamSubscriptionsActions';
7
7
 
8
8
  jest.mock('foremanReact/components/BreadcrumbBar');
9
- jest.mock('foremanReact/components/Pagination/PaginationWrapper');
10
9
 
11
10
  describe('upstream subscriptions page', () => {
12
11
  let shallowWrapper;
@@ -9,7 +9,6 @@ import { checkSimpleContentAccessEligible } from '../Manifest/ManifestActions';
9
9
  import { createColumns, updateColumns } from '../../../scenes/Settings/Tables/TableActions';
10
10
 
11
11
  jest.mock('foremanReact/components/PermissionDenied');
12
- jest.mock('foremanReact/components/Pagination/PaginationWrapper', () => (<div>Pagination Mock</div>));
13
12
  jest.mock('foremanReact/components/ForemanModal', () => (<div>ForemanModal Mock</div>));
14
13
 
15
14
  const loadTables = () => new Promise((resolve) => {
@@ -43,7 +43,8 @@ Array [
43
43
  },
44
44
  Object {
45
45
  "payload": Object {
46
- "message": Object {
46
+ "key": "addToast",
47
+ "toast": Object {
47
48
  "link": Object {
48
49
  "children": "Go to task page",
49
50
  "href": "/foreman_tasks/tasks/eb1b6271-8a69-4d98-84fc-bea06ddcc166/",
@@ -53,7 +54,7 @@ Array [
53
54
  "type": "pending",
54
55
  },
55
56
  },
56
- "type": "TOASTS_ADD",
57
+ "type": "toasts/addToast",
57
58
  },
58
59
  Object {
59
60
  "type": "SUBSCRIPTIONS_RESET_TASKS",
@@ -8,6 +8,10 @@ import { successState, loadingState, emptyState, groupedSubscriptions } from '..
8
8
  import { loadSubscriptions, updateQuantity } from '../../../SubscriptionActions';
9
9
 
10
10
  jest.useFakeTimers();
11
+ jest.mock('foremanReact/components/Pagination', () => ({
12
+ __esModule: true,
13
+ default: () => <div>MockPagination</div>,
14
+ }));
11
15
 
12
16
  const tableColumns = [
13
17
  'id',
@@ -141,6 +141,9 @@ exports[`subscriptions table should disable checkboxes for custom subscriptions
141
141
  </tr>
142
142
  </tbody>
143
143
  </table>
144
+ <div>
145
+ MockPagination
146
+ </div>
144
147
  </div>
145
148
  `;
146
149
 
@@ -306,6 +309,9 @@ exports[`subscriptions table should render a table 1`] = `
306
309
  </tr>
307
310
  </tbody>
308
311
  </table>
312
+ <div>
313
+ MockPagination
314
+ </div>
309
315
  </div>
310
316
  `;
311
317
 
@@ -405,5 +411,8 @@ exports[`subscriptions table should render subscription name without hyperlink f
405
411
  </tr>
406
412
  </tbody>
407
413
  </table>
414
+ <div>
415
+ MockPagination
416
+ </div>
408
417
  </div>
409
418
  `;
@@ -13,15 +13,15 @@ const DeleteDialog = ({
13
13
  // eslint-disable-next-line react/no-danger
14
14
  <p dangerouslySetInnerHTML={{
15
15
  __html: sprintf(
16
- __(`Are you sure you want to delete %(entitlementCount)s
16
+ __(`Are you sure you want to delete %(entitlementCount)s
17
17
  subscription(s)? This action will remove the subscription(s) and
18
18
  refresh your manifest. All systems using these subscription(s) will
19
19
  lose them and also may lose access to updates and Errata.`),
20
- {
21
- entitlementCount: `<b>${selectedRows.length}</b>`,
22
- },
23
- ),
24
- }}
20
+ {
21
+ entitlementCount: `<b>${selectedRows.length}</b>`,
22
+ },
23
+ ),
24
+ }}
25
25
  />
26
26
  }
27
27
  primaryActionButtonContent={__('Delete')}