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
@@ -0,0 +1,18 @@
1
+ import { API_OPERATIONS, get } from 'foremanReact/redux/API';
2
+ import katelloApi from '../../../../services/api';
3
+ import { HOST_YUM_INSTALLABLE_PACKAGES_KEY } from './YumInstallablePackagesConstants';
4
+
5
+ export const getHostYumInstallablePackages = (hostId, params) => get({
6
+ type: API_OPERATIONS.GET,
7
+ key: HOST_YUM_INSTALLABLE_PACKAGES_KEY,
8
+ url: katelloApi.getApiUrl('/packages'),
9
+ params: {
10
+ ...params,
11
+ host_id: hostId,
12
+ packages_restrict_not_installed: true,
13
+ packages_restrict_applicable: false,
14
+ packages_restrict_latest: true,
15
+ },
16
+ });
17
+ export default getHostYumInstallablePackages;
18
+
@@ -0,0 +1,3 @@
1
+ export const HOST_YUM_INSTALLABLE_PACKAGES_KEY = 'HOST_YUM_INSTALLABLE_PACKAGES';
2
+ export const PACKAGE_SEARCH_QUERY = 'Package search query';
3
+ export default HOST_YUM_INSTALLABLE_PACKAGES_KEY;
@@ -0,0 +1,16 @@
1
+ import {
2
+ selectAPIStatus,
3
+ selectAPIError,
4
+ selectAPIResponse,
5
+ } from 'foremanReact/redux/API/APISelectors';
6
+ import { STATUS } from 'foremanReact/constants';
7
+ import { HOST_YUM_INSTALLABLE_PACKAGES_KEY } from './YumInstallablePackagesConstants';
8
+
9
+ export const selectHostYumInstallablePackages = state =>
10
+ selectAPIResponse(state, HOST_YUM_INSTALLABLE_PACKAGES_KEY) || {};
11
+
12
+ export const selectHostYumInstallablePackagesStatus = state =>
13
+ selectAPIStatus(state, HOST_YUM_INSTALLABLE_PACKAGES_KEY) || STATUS.PENDING;
14
+
15
+ export const selectHostYumInstallablePackagesError = state =>
16
+ selectAPIError(state, HOST_YUM_INSTALLABLE_PACKAGES_KEY);
@@ -0,0 +1,19 @@
1
+ import { propsToCamelCase } from 'foremanReact/common/helpers';
2
+
3
+ export const REMOTE_EXECUTION = 'remoteExecution';
4
+ export const KATELLO_AGENT = 'katelloAgent';
5
+
6
+ const defaultRemoteActionMethod = ({ hostDetails }) => {
7
+ const {
8
+ content_facet_attributes: contentFacetAttributes,
9
+ } = hostDetails;
10
+ const contentFacet = propsToCamelCase(contentFacetAttributes ?? {});
11
+ const katelloAgentAvailable = (contentFacet.katelloAgentInstalled &&
12
+ contentFacet.katelloAgentEnabled);
13
+ if (contentFacet.remoteExecutionByDefault || !katelloAgentAvailable) {
14
+ return REMOTE_EXECUTION;
15
+ }
16
+ return KATELLO_AGENT;
17
+ };
18
+
19
+ export default defaultRemoteActionMethod;
@@ -29,12 +29,16 @@ exports[`ActivationKeys renders 1`] = `
29
29
  favorites={Array []}
30
30
  favoritesLabel="Favorites"
31
31
  hasInlineFilter={false}
32
+ hasPlaceholderStyle={false}
32
33
  id="reg_katello_ak"
33
34
  inlineFilterPlaceholderText={null}
35
+ inputAutoComplete="off"
34
36
  inputIdPrefix=""
35
37
  isCreatable={false}
38
+ isCreateSelectOptionObject={false}
36
39
  isDisabled={true}
37
40
  isGrouped={false}
41
+ isInputFilterPersisted={false}
38
42
  isInputValuePersisted={false}
39
43
  isOpen={false}
40
44
  isPlain={false}
@@ -81,7 +81,7 @@ ActivationKeys.propTypes = {
81
81
  selectedKeys: PropTypes.array,
82
82
  hostGroupActivationKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
83
83
  hostGroupId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
84
- pluginValues: PropTypes.object,
84
+ pluginValues: PropTypes.objectOf(PropTypes.shape({})),
85
85
  onChange: PropTypes.func.isRequired,
86
86
  handleInvalidField: PropTypes.func.isRequired,
87
87
  isLoading: PropTypes.bool,
@@ -31,7 +31,7 @@ const LifecycleEnvironment = ({
31
31
  />
32
32
  {lifecycleEnvironments.map(lce => (
33
33
  <FormSelectOption key={lce.id} value={lce.id} label={lce.name} />
34
- ))}
34
+ ))}
35
35
  </FormSelect>
36
36
  </FormGroup>
37
37
  );
@@ -31,7 +31,7 @@ class SystemStatuses extends Component {
31
31
  <td>{value.status.toUpperCase()}</td>
32
32
  <td> {value.message}</td>
33
33
  </tr>
34
- ))}
34
+ ))}
35
35
  </tbody>
36
36
  </table>
37
37
  </LoadingState>
@@ -12,15 +12,15 @@ const initialState = Immutable({
12
12
 
13
13
  export default (state = initialState, action) => {
14
14
  switch (action.type) {
15
- case SYSTEM_STATUSES_REQUEST:
16
- return state.set('loaderStatus', 'PENDING');
17
- case SYSTEM_STATUSES_SUCCESS:
18
- return state
19
- .set('services', action.payload.services)
20
- .set('loaderStatus', 'RESOLVED');
21
- case SYSTEM_STATUSES_FAILURE:
22
- return state.set('loaderStatus', 'ERROR');
23
- default:
24
- return state;
15
+ case SYSTEM_STATUSES_REQUEST:
16
+ return state.set('loaderStatus', 'PENDING');
17
+ case SYSTEM_STATUSES_SUCCESS:
18
+ return state
19
+ .set('services', action.payload.services)
20
+ .set('loaderStatus', 'RESOLVED');
21
+ case SYSTEM_STATUSES_FAILURE:
22
+ return state.set('loaderStatus', 'ERROR');
23
+ default:
24
+ return state;
25
25
  }
26
26
  };
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import { Table as PfTable } from 'patternfly-react';
4
4
  import { noop } from 'foremanReact/common/helpers';
5
5
  import EmptyState from 'foremanReact/components/common/EmptyState';
6
- import Pagination from 'foremanReact/components/Pagination/PaginationWrapper';
6
+ import Pagination from 'foremanReact/components/Pagination';
7
7
 
8
8
  import TableBody from './TableBody';
9
9
 
@@ -43,10 +43,9 @@ const Table = ({
43
43
  </PfTable.PfProvider>
44
44
  {shouldRenderPagination && (
45
45
  <Pagination
46
- viewType="table"
47
46
  itemCount={itemCount}
48
- pagination={pagination}
49
47
  onChange={onPaginationChange}
48
+ {...pagination}
50
49
  />
51
50
  )}
52
51
  </div>
@@ -54,8 +53,8 @@ const Table = ({
54
53
  };
55
54
 
56
55
  Table.propTypes = {
57
- columns: PropTypes.arrayOf(PropTypes.object).isRequired,
58
- rows: PropTypes.arrayOf(PropTypes.object).isRequired,
56
+ columns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
57
+ rows: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
59
58
  emptyState: PropTypes.object, // eslint-disable-line react/forbid-prop-types
60
59
  pagination: PropTypes.object, // eslint-disable-line react/forbid-prop-types
61
60
  bodyMessage: PropTypes.node,
@@ -1,10 +1,7 @@
1
1
  import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
2
-
3
2
  import Table from './Table';
4
3
  import { columnsFixtures, rowsFixtures } from './TableFixtures';
5
4
 
6
- jest.mock('foremanReact/components/Pagination/PaginationWrapper');
7
-
8
5
  const fixtures = {
9
6
  'renders Table with emptyState': {
10
7
  columns: columnsFixtures,
@@ -15,8 +15,8 @@ const TableBody = ({
15
15
  };
16
16
 
17
17
  TableBody.propTypes = {
18
- columns: PropTypes.arrayOf(PropTypes.object).isRequired,
19
- rows: PropTypes.arrayOf(PropTypes.object).isRequired,
18
+ columns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
19
+ rows: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
20
20
  message: PropTypes.string,
21
21
  };
22
22
 
@@ -137,16 +137,17 @@ exports[`Table renders Table with pagination 1`] = `
137
137
  >
138
138
  some children
139
139
  </TablePfProvider>
140
- <PaginationWrapper
140
+ <Pagination
141
+ className={null}
141
142
  itemCount={2}
143
+ noSidePadding={false}
142
144
  onChange={[Function]}
143
- pagination={
144
- Object {
145
- "page": 1,
146
- "perPage": 20,
147
- }
148
- }
149
- viewType="table"
145
+ onPerPageSelect={null}
146
+ onSetPage={null}
147
+ page={1}
148
+ perPage={20}
149
+ updateParamsByUrl={true}
150
+ variant="bottom"
150
151
  />
151
152
  </div>
152
153
  `;
@@ -14,6 +14,7 @@ import ContentViewDetails from '../../scenes/ContentViews/Details';
14
14
  import Content from '../../scenes/Content';
15
15
  import ContentDetails from '../../scenes/Content/Details';
16
16
  import withHeader from './withHeaders';
17
+ import ChangeContentSource from '../../scenes/Hosts/ChangeContentSource';
17
18
 
18
19
  // eslint-disable-next-line import/prefer-default-export
19
20
  export const links = [
@@ -56,7 +57,7 @@ export const links = [
56
57
  },
57
58
  {
58
59
  path: 'content_views',
59
- component: WithOrganization(withHeader(ContentViews, { title: __('Content Views') })),
60
+ component: WithOrganization(withHeader(ContentViews, { title: __('Content views') })),
60
61
  },
61
62
  {
62
63
  path: 'content_views/:id([0-9]+)',
@@ -75,4 +76,8 @@ export const links = [
75
76
  path: 'content/:content_type([a-z_]+)/:id([0-9]+)',
76
77
  component: WithOrganization(withHeader(ContentDetails, { title: __('Content Details') })),
77
78
  },
79
+ {
80
+ path: 'change_host_content_source',
81
+ component: WithOrganization(withHeader(ChangeContentSource, { title: __('Change host content source') })),
82
+ },
78
83
  ];
@@ -40,9 +40,62 @@ html .pagination-pf-pagesize.btn-group {
40
40
  }
41
41
  }
42
42
 
43
- // Patternfly 4's Grid doesn't add margin at the top and bottom
44
- .grid-with-margin {
45
- margin: 20px 4px;
43
+ // Removes inherited container padding on view
44
+ .container-fluid.container-pf-nav-pf-vertical.nav-pf-persistent-secondary {
45
+ padding: 0;
46
+ }
47
+
48
+ // Margin shortcuts
49
+ .margin-24 {
50
+ margin: 24px;
51
+ }
52
+
53
+ .margin-16 {
54
+ margin: 16px;
55
+ }
56
+
57
+ .margin-8 {
58
+ margin: 8px;
59
+ }
60
+
61
+ .margin-16-24 {
62
+ margin: 16px 24px;
63
+ }
64
+
65
+ .margin-24-0 {
66
+ margin: 24px 0;
67
+ }
68
+
69
+ .margin-16-0 {
70
+ margin: 16px 0;
71
+ }
72
+
73
+ .margin-0-24 {
74
+ margin: 0 24px;
75
+ }
76
+
77
+ .margin-right-16 {
78
+ margin: 0 16px 0 0;
79
+ }
80
+
81
+ .gap-16 {
82
+ grid-gap: 16px;
83
+ }
84
+
85
+ .margin-bottom-24 {
86
+ margin-bottom: 24px;
87
+ }
88
+
89
+ .margin-top-24 {
90
+ margin-top: 24px;
91
+ }
92
+
93
+ .margin-top-16 {
94
+ margin-top: 16px;
95
+ }
96
+
97
+ .margin-top-8 {
98
+ margin-top: 8px;
46
99
  }
47
100
 
48
101
  // needed to ensure correct spacing between buttons and the button
@@ -68,10 +121,6 @@ html .pagination-pf-pagesize.btn-group {
68
121
  outline: none;
69
122
  }
70
123
 
71
- .tab-body-with-spacing {
72
- margin: 24px 0px;
73
- }
74
-
75
124
  // Modal sizing fix
76
125
  .pf-l-bullseye .pf-c-modal-box {
77
126
  margin-top: 76px;
@@ -7,10 +7,11 @@ import SystemStatuses from './components/extensions/about';
7
7
  import RegistrationCommands from './components/extensions/RegistrationCommands';
8
8
  import ContentTab from './components/extensions/HostDetails/Tabs/ContentTab';
9
9
  import ContentViewDetailsCard from './components/extensions/HostDetails/Cards/ContentViewDetailsCard';
10
+ import ErrataOverviewCard from './components/extensions/HostDetails/Cards/ErrataOverviewCard';
10
11
 
11
12
  // import SubscriptionTab from './components/extensions/HostDetails/Tabs/SubscriptionTab';
12
13
  import RepositorySetsTab from './components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab';
13
- import TracesTab from './components/extensions/HostDetails/Tabs/TracesTab';
14
+ import TracesTab from './components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js';
14
15
  import extendReducer from './components/extensions/reducers';
15
16
  import rootReducer from './redux/reducers';
16
17
 
@@ -29,4 +30,6 @@ addGlobalFill(
29
30
  'details-cards',
30
31
  'Content View Details',
31
32
  <ContentViewDetailsCard key="content-view-details" />,
33
+ 2000,
32
34
  );
35
+ addGlobalFill('details-cards', 'Installable errata', <ErrataOverviewCard key="errata-overview" />, 1900);
@@ -8,7 +8,7 @@ global.console.error = (error, stack) => {
8
8
  };
9
9
 
10
10
  // Increase jest timeout as some tests using multiple http mocks can time out on CI systems.
11
- jest.setTimeout(300000);
11
+ jest.setTimeout(process.env.JEST_TIMEOUT || 15000);
12
12
 
13
13
  afterAll(() => {
14
14
  jest.resetModules();
data/webpack/index.js CHANGED
@@ -6,6 +6,8 @@
6
6
  import componentRegistry from 'foremanReact/components/componentRegistry';
7
7
  import Application from './containers/Application/index';
8
8
  import Content from './scenes/SmartProxy/Content';
9
+ import ChangeContentSource from './scenes/Hosts/ChangeContentSource';
10
+
9
11
  import './redux';
10
12
  // Not currently mocking anything
11
13
  // import './services/api/setupMocks';
@@ -19,3 +21,8 @@ componentRegistry.register({
19
21
  name: 'Content',
20
22
  type: Content,
21
23
  });
24
+
25
+ componentRegistry.register({
26
+ name: 'ChangeContentSource',
27
+ type: ChangeContentSource,
28
+ });
@@ -16,23 +16,23 @@ export default (state = initialState, action) => {
16
16
  const { type, payload } = action;
17
17
 
18
18
  switch (type) {
19
- case ORGANIZATION_PRODUCTS_REQUEST:
20
- return state.set('loading', true);
19
+ case ORGANIZATION_PRODUCTS_REQUEST:
20
+ return state.set('loading', true);
21
21
 
22
- case ORGANIZATION_PRODUCTS_SUCCESS:
23
- return state.merge({
24
- ...payload,
25
- loading: false,
26
- });
22
+ case ORGANIZATION_PRODUCTS_SUCCESS:
23
+ return state.merge({
24
+ ...payload,
25
+ loading: false,
26
+ });
27
27
 
28
- case ORGANIZATION_PRODUCTS_FAILURE:
29
- return state.merge({
30
- error: payload,
31
- loading: false,
32
- results: [],
33
- });
28
+ case ORGANIZATION_PRODUCTS_FAILURE:
29
+ return state.merge({
30
+ error: payload,
31
+ loading: false,
32
+ results: [],
33
+ });
34
34
 
35
- default:
36
- return state;
35
+ default:
36
+ return state;
37
37
  }
38
38
  };
@@ -60,49 +60,49 @@ const changeRepoState = (state, repoToChange, stateDiff) => (
60
60
 
61
61
  export default (state = initialState, action) => {
62
62
  switch (action.type) {
63
- case DISABLE_REPOSITORY_REQUEST:
64
- return changeRepoState(state, action.repository, { loading: true });
65
- case DISABLE_REPOSITORY_FAILURE:
66
- return changeRepoState(state, action.payload.repository, { loading: false });
67
- case ENABLED_REPOSITORIES_REQUEST:
68
- if (!action.silent) {
69
- return state.set(['loading'], true);
70
- }
71
- return state;
72
- case ENABLED_REPOSITORIES_SUCCESS: {
73
- const {
74
- page,
75
- per_page, // eslint-disable-line camelcase
76
- subtotal,
77
- results,
78
- } = action.response;
79
- return Immutable({
80
- repositories: mapRepositories(results),
81
- pagination: {
82
- page: Number(page) || 1,
83
- // server can return per_page: null when there's error in the search query,
84
- // don't store it in such case
85
- // eslint-disable-next-line camelcase
86
- perPage: (per_page || state.pagination.perPage)
87
- // eslint-disable-next-line camelcase
88
- && Number(per_page || state.pagination.perPage),
89
- },
90
- itemCount: Number(subtotal),
91
- loading: false,
92
- searchIsActive: !isEmpty(action.search),
93
- search: action.search,
94
- });
95
- }
96
- case ENABLED_REPOSITORIES_FAILURE: {
97
- const { error, missingPermissions } = action;
98
- return Immutable({
99
- repositories: [],
100
- loading: false,
101
- error,
102
- missingPermissions,
103
- });
63
+ case DISABLE_REPOSITORY_REQUEST:
64
+ return changeRepoState(state, action.repository, { loading: true });
65
+ case DISABLE_REPOSITORY_FAILURE:
66
+ return changeRepoState(state, action.payload.repository, { loading: false });
67
+ case ENABLED_REPOSITORIES_REQUEST:
68
+ if (!action.silent) {
69
+ return state.set(['loading'], true);
104
70
  }
105
- default:
106
- return state;
71
+ return state;
72
+ case ENABLED_REPOSITORIES_SUCCESS: {
73
+ const {
74
+ page,
75
+ per_page, // eslint-disable-line camelcase
76
+ subtotal,
77
+ results,
78
+ } = action.response;
79
+ return Immutable({
80
+ repositories: mapRepositories(results),
81
+ pagination: {
82
+ page: Number(page) || 1,
83
+ // server can return per_page: null when there's error in the search query,
84
+ // don't store it in such case
85
+ // eslint-disable-next-line camelcase
86
+ perPage: (per_page || state.pagination.perPage)
87
+ // eslint-disable-next-line camelcase
88
+ && Number(per_page || state.pagination.perPage),
89
+ },
90
+ itemCount: Number(subtotal),
91
+ loading: false,
92
+ searchIsActive: !isEmpty(action.search),
93
+ search: action.search,
94
+ });
95
+ }
96
+ case ENABLED_REPOSITORIES_FAILURE: {
97
+ const { error, missingPermissions } = action;
98
+ return Immutable({
99
+ repositories: [],
100
+ loading: false,
101
+ error,
102
+ missingPermissions,
103
+ });
104
+ }
105
+ default:
106
+ return state;
107
107
  }
108
108
  };
@@ -56,48 +56,48 @@ const initialState = Immutable({});
56
56
 
57
57
  export default (state = initialState, action) => {
58
58
  switch (action.type) {
59
- case ENABLE_REPOSITORY_REQUEST:
60
- return changeRepoState(state, action.repository, { loading: true });
61
-
62
- case ENABLE_REPOSITORY_FAILURE:
63
- return changeRepoState(state, action.payload.repository, { loading: false, error: true });
64
-
65
- case REPOSITORY_SET_REPOSITORIES_REQUEST:
66
- return state.set(action.contentId, {
67
- loading: true,
68
- repositories: [],
69
- error: null,
70
- });
71
-
72
- case REPOSITORY_SET_REPOSITORIES_SUCCESS:
73
- return state.set(action.contentId, {
74
- loading: false,
75
- repositories: normalizeContentSetRepositories(
76
- action.results,
77
- action.contentId,
78
- action.productId,
79
- ),
80
- error: null,
81
- });
82
-
83
- case REPOSITORY_SET_REPOSITORIES_FAILURE:
84
- return state.set(action.contentId, {
85
- loading: false,
86
- repositories: [],
87
- error: action.error,
88
- });
89
-
90
- case REPOSITORY_ENABLED:
91
- return changeRepoState(state, action.repository, {
92
- enabled: true,
93
- loading: false,
94
- error: false,
95
- });
96
-
97
- case REPOSITORY_DISABLED:
98
- return changeRepoState(state, action.repository, { enabled: false });
99
-
100
- default:
101
- return state;
59
+ case ENABLE_REPOSITORY_REQUEST:
60
+ return changeRepoState(state, action.repository, { loading: true });
61
+
62
+ case ENABLE_REPOSITORY_FAILURE:
63
+ return changeRepoState(state, action.payload.repository, { loading: false, error: true });
64
+
65
+ case REPOSITORY_SET_REPOSITORIES_REQUEST:
66
+ return state.set(action.contentId, {
67
+ loading: true,
68
+ repositories: [],
69
+ error: null,
70
+ });
71
+
72
+ case REPOSITORY_SET_REPOSITORIES_SUCCESS:
73
+ return state.set(action.contentId, {
74
+ loading: false,
75
+ repositories: normalizeContentSetRepositories(
76
+ action.results,
77
+ action.contentId,
78
+ action.productId,
79
+ ),
80
+ error: null,
81
+ });
82
+
83
+ case REPOSITORY_SET_REPOSITORIES_FAILURE:
84
+ return state.set(action.contentId, {
85
+ loading: false,
86
+ repositories: [],
87
+ error: action.error,
88
+ });
89
+
90
+ case REPOSITORY_ENABLED:
91
+ return changeRepoState(state, action.repository, {
92
+ enabled: true,
93
+ loading: false,
94
+ error: false,
95
+ });
96
+
97
+ case REPOSITORY_DISABLED:
98
+ return changeRepoState(state, action.repository, { enabled: false });
99
+
100
+ default:
101
+ return state;
102
102
  }
103
103
  };
@@ -14,36 +14,36 @@ export default (state = initialState, action) => {
14
14
  const { payload } = action;
15
15
 
16
16
  switch (action.type) {
17
- case REPOSITORY_SETS_REQUEST:
18
- return state.set('loading', true);
19
-
20
- case REPOSITORY_SETS_UPDATE_RECOMMENDED:
21
- return state
22
- .set('recommended', payload);
23
-
24
- case REPOSITORY_SETS_SUCCESS:
25
- return state
26
- .set('results', payload.response.results)
27
- .set('pagination', {
28
- page: Number(payload.response.page),
29
- // server can return per_page: null when there's error in the search query,
30
- // don't store it in such case
31
- // eslint-disable-next-line camelcase
32
- perPage: Number(payload.response.per_page || state.pagination.perPage),
33
- })
34
- .set('itemCount', Number(payload.response.subtotal))
35
- .set('loading', false)
36
- .set('searchIsActive', !isEmpty(payload.search))
37
- .set('search', payload.search);
38
-
39
- case REPOSITORY_SETS_FAILURE:
40
- return Immutable({
41
- error: payload,
42
- loading: false,
43
- missingPermissions: get(payload, ['response', 'data', 'error', 'missing_permissions']),
44
- });
45
-
46
- default:
47
- return state;
17
+ case REPOSITORY_SETS_REQUEST:
18
+ return state.set('loading', true);
19
+
20
+ case REPOSITORY_SETS_UPDATE_RECOMMENDED:
21
+ return state
22
+ .set('recommended', payload);
23
+
24
+ case REPOSITORY_SETS_SUCCESS:
25
+ return state
26
+ .set('results', payload.response.results)
27
+ .set('pagination', {
28
+ page: Number(payload.response.page),
29
+ // server can return per_page: null when there's error in the search query,
30
+ // don't store it in such case
31
+ // eslint-disable-next-line camelcase
32
+ perPage: Number(payload.response.per_page || state.pagination.perPage),
33
+ })
34
+ .set('itemCount', Number(payload.response.subtotal))
35
+ .set('loading', false)
36
+ .set('searchIsActive', !isEmpty(payload.search))
37
+ .set('search', payload.search);
38
+
39
+ case REPOSITORY_SETS_FAILURE:
40
+ return Immutable({
41
+ error: payload,
42
+ loading: false,
43
+ missingPermissions: get(payload, ['response', 'data', 'error', 'missing_permissions']),
44
+ });
45
+
46
+ default:
47
+ return state;
48
48
  }
49
49
  };