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
@@ -252,7 +252,7 @@ module Katello
252
252
  end
253
253
 
254
254
  def sync_url_params(_sync_options)
255
- params = {remote: repo.remote_href, mirror: repo.root.mirror_on_sync}
255
+ params = {remote: repo.remote_href, mirror: repo.root.mirroring_policy == Katello::RootRepository::MIRRORING_POLICY_CONTENT}
256
256
  params[:skip_types] = skip_types if skip_types
257
257
  params
258
258
  end
@@ -330,19 +330,26 @@ module Katello
330
330
  tasks
331
331
  end
332
332
 
333
- def copy_all(source_repository, mirror: false)
334
- if mirror
333
+ def copy_all(source_repository, options = {})
334
+ tasks = []
335
+ if options[:remove_all]
336
+ tasks << api.repositories_api.modify(repository_reference.repository_href, remove_content_units: ['*'])
337
+ end
338
+
339
+ if options[:mirror]
335
340
  data = api.class.add_remove_content_class.new(
336
341
  base_version: source_repository.version_href)
337
342
 
338
- [api.repositories_api.modify(repository_reference.repository_href, data)]
343
+ tasks << api.repositories_api.modify(repository_reference.repository_href, data)
344
+ tasks
339
345
  elsif api.respond_to? :copy_api
340
346
  data = api.class.copy_class.new
341
347
  data.config = [{
342
348
  source_repo_version: source_repository.version_href,
343
349
  dest_repo: repository_reference.repository_href
344
350
  }]
345
- [api.copy_api.copy_content(data)]
351
+ tasks << api.copy_api.copy_content(data)
352
+ tasks
346
353
  else
347
354
  copy_content_for_source(source_repository)
348
355
  end
@@ -399,7 +406,11 @@ module Katello
399
406
  proxy_url: root.http_proxy&.url,
400
407
  proxy_username: root.http_proxy&.username,
401
408
  proxy_password: root.http_proxy&.password,
402
- total_timeout: Setting[:sync_connect_timeout]
409
+ total_timeout: Setting[:sync_total_timeout],
410
+ connect_timeout: Setting[:sync_connect_timeout_v2],
411
+ sock_connect_timeout: Setting[:sync_sock_connect_timeout],
412
+ sock_read_timeout: Setting[:sync_sock_read_timeout],
413
+ rate_limit: Setting[:download_rate_limit]
403
414
  }
404
415
  remote_options[:url] = root.url unless root.url.blank?
405
416
  remote_options[:download_concurrency] = root.download_concurrency unless root.download_concurrency.blank?
@@ -410,6 +421,17 @@ module Katello
410
421
  remote_options.merge!(ssl_remote_options)
411
422
  end
412
423
 
424
+ def mirror_remote_options
425
+ options = {}
426
+ if Katello::RootRepository::CONTENT_ATTRIBUTE_RESTRICTIONS[:download_policy].include?(repo.content_type)
427
+ options[:policy] = smart_proxy.download_policy
428
+ if smart_proxy.download_policy == SmartProxy::DOWNLOAD_INHERIT
429
+ options[:policy] = repo.root.download_policy
430
+ end
431
+ end
432
+ options
433
+ end
434
+
413
435
  def create_options
414
436
  { name: generate_backend_object_name }.merge!(specific_create_options)
415
437
  end
@@ -429,13 +451,13 @@ module Katello
429
451
  end
430
452
 
431
453
  def ssl_remote_options
432
- if root.redhat? && root.cdn_configuration.redhat?
454
+ if root.redhat? && root.cdn_configuration.redhat_cdn?
433
455
  {
434
456
  client_cert: root.product.certificate,
435
457
  client_key: root.product.key,
436
458
  ca_cert: Katello::Repository.feed_ca_cert(root.url)
437
459
  }
438
- elsif root.redhat? && !root.cdn_configuration.redhat?
460
+ elsif root.redhat? && root.cdn_configuration.upstream_server?
439
461
  {
440
462
  client_cert: root.cdn_configuration.ssl_cert,
441
463
  client_key: root.cdn_configuration.ssl_key,
@@ -479,7 +501,6 @@ module Katello
479
501
  ostree_import.artifact = artifact_href
480
502
  ostree_import.repository_name = options[:ostree_repository_name]
481
503
  ostree_import.ref = options[:ostree_ref]
482
- ostree_import.parent_commit = options[:ostree_parent_commit]
483
504
  api.repositories_api.import_commits(repository_reference.repository_href, ostree_import)
484
505
  end
485
506
 
@@ -505,7 +526,7 @@ module Katello
505
526
  end
506
527
 
507
528
  def retain_package_versions_count
508
- return 0 if root.retain_package_versions_count.nil? || root.mirror_on_sync?
529
+ return 0 if root.retain_package_versions_count.nil? || root.using_mirrored_content?
509
530
  root.retain_package_versions_count.to_i
510
531
  end
511
532
  end
@@ -79,7 +79,11 @@ module Katello
79
79
  end
80
80
 
81
81
  def publication_href
82
- api.publications_api.list(:repository_version => version_href).results.first&.pulp_href
82
+ if repo_service.repo.content_type == "deb"
83
+ api.publications_verbatim_api.list(:repository_version => version_href).results.first&.pulp_href
84
+ else
85
+ api.publications_api.list(:repository_version => version_href).results.first&.pulp_href
86
+ end
83
87
  end
84
88
 
85
89
  def create_version(options = {})
@@ -127,7 +131,12 @@ module Katello
127
131
  def sync(options = {})
128
132
  sync_params = repo_service.sync_url_params(options)
129
133
  sync_params[:remote] = remote_href
130
- sync_params[:mirror] = true
134
+ if repo.yum?
135
+ sync_params[:sync_policy] = 'mirror_complete'
136
+ else
137
+ sync_params.delete(:sync_policy)
138
+ sync_params[:mirror] = true
139
+ end
131
140
  repository_sync_url_data = api.repository_sync_url_class.new(sync_params)
132
141
  [api.repositories_api.sync(repository_href, repository_sync_url_data)]
133
142
  end
@@ -166,8 +175,13 @@ module Katello
166
175
 
167
176
  def create_publication
168
177
  if (href = version_href)
169
- publication_data = api.publication_class.new(publication_options(href))
170
- api.publications_api.create(publication_data)
178
+ if repo_service.repo.content_type == "deb"
179
+ publication_data = api.publication_verbatim_class.new({repository_version: href})
180
+ api.publications_verbatim_api.create(publication_data)
181
+ else
182
+ publication_data = api.publication_class.new(publication_options(href))
183
+ api.publications_api.create(publication_data)
184
+ end
171
185
  end
172
186
  end
173
187
 
@@ -81,24 +81,24 @@ module Katello
81
81
  backend_data['rpm_license']
82
82
  end
83
83
 
84
- def parse_filename(path)
84
+ def self.parse_filename(path)
85
85
  File.split(path).last unless path.blank?
86
86
  end
87
87
 
88
- def update_model(model)
88
+ def self.generate_model_row(unit)
89
89
  custom_json = {}
90
- custom_json['modular'] = backend_data['is_modular']
91
- custom_json['pulp_id'] = backend_data['pulp_href']
90
+ custom_json['modular'] = unit['is_modular']
91
+ custom_json['pulp_id'] = unit['pulp_href']
92
92
  (PULP_INDEXED_FIELDS - ['is_modular', 'pulp_href', 'rpm_sourcerpm', 'pkgId', 'location_href']).
93
- each { |field| custom_json[field] = backend_data[field] }
94
- custom_json['release_sortable'] = Util::Package.sortable_version(backend_data['release'])
95
- custom_json['version_sortable'] = Util::Package.sortable_version(backend_data['version'])
96
- custom_json['filename'] = parse_filename(backend_data['location_href']) #location_href is the relative path of the rpm in the upstream repo
97
- custom_json['checksum'] = backend_data['pkgId']
98
- custom_json['sourcerpm'] = backend_data['rpm_sourcerpm']
99
- model.assign_attributes(custom_json)
100
- model.nvra = model.build_nvra
101
- model.save!
93
+ each { |field| custom_json[field] = unit[field] }
94
+ custom_json['release_sortable'] = Util::Package.sortable_version(unit['release'])
95
+ custom_json['version_sortable'] = Util::Package.sortable_version(unit['version'])
96
+ custom_json['filename'] = parse_filename(unit['location_href']) #location_href is the relative path of the rpm in the upstream repo
97
+ custom_json['checksum'] = unit['pkgId']
98
+ custom_json['sourcerpm'] = unit['rpm_sourcerpm']
99
+ custom_json['nvra'] = Util::Package.build_nvra(custom_json.with_indifferent_access)
100
+ custom_json['summary'] = custom_json['summary']&.truncate(255)
101
+ custom_json
102
102
  end
103
103
  end
104
104
  end
@@ -64,17 +64,18 @@ module Katello
64
64
  backend_data['rpm_license']
65
65
  end
66
66
 
67
- def update_model(model)
67
+ def self.generate_model_row(unit)
68
68
  custom_json = {}
69
- custom_json['pulp_id'] = backend_data['pulp_href']
69
+ custom_json['pulp_id'] = unit['pulp_href']
70
70
  (PULP_INDEXED_FIELDS - ['pulp_href', 'pkgId', 'location_href']).
71
- each { |field| custom_json[field] = backend_data[field] }
72
- custom_json['release_sortable'] = Util::Package.sortable_version(backend_data['release'])
73
- custom_json['version_sortable'] = Util::Package.sortable_version(backend_data['version'])
74
- custom_json['nvra'] = model.build_nvra
75
- custom_json['filename'] = backend_data['location_href']
76
- custom_json['checksum'] = backend_data['pkgId']
77
- model.update!(custom_json)
71
+ each { |field| custom_json[field] = unit[field] }
72
+ custom_json['release_sortable'] = Util::Package.sortable_version(unit['release'])
73
+ custom_json['version_sortable'] = Util::Package.sortable_version(unit['version'])
74
+ custom_json['nvra'] = Katello::Util::Package.build_nvra(custom_json)
75
+ custom_json['filename'] = unit['location_href']
76
+ custom_json['checksum'] = unit['pkgId']
77
+ custom_json['summary'] = custom_json['summary']&.truncate(255)
78
+ custom_json
78
79
  end
79
80
  end
80
81
  end
@@ -234,7 +234,7 @@ module Katello
234
234
  host_collection_ids.each do |host_collection_id|
235
235
  host_collection = ::Katello::HostCollection.find(host_collection_id)
236
236
  if !host_collection.unlimited_hosts && host_collection.max_hosts >= 0 &&
237
- host_collection.systems.length >= host_collection.max_hosts
237
+ host_collection.hosts.length >= host_collection.max_hosts
238
238
  fail _("Host collection '%{name}' exceeds maximum usage limit of '%{limit}'") %
239
239
  {:limit => host_collection.max_hosts, :name => host_collection.name}
240
240
  end
@@ -16,7 +16,8 @@ module Katello
16
16
  :pulp3_skip_publication, :configuration_class, :pulp3_api_class,
17
17
  :repositories_api_class, :api_class, :remotes_api_class, :repository_versions_api_class,
18
18
  :distributions_api_class, :remote_class, :repo_sync_url_class, :client_module_class,
19
- :distribution_class, :publication_class, :publications_api_class, :url_description
19
+ :distribution_class, :publication_class, :publications_api_class, :url_description,
20
+ :test_url, :test_url_root_options
20
21
 
21
22
  attr_accessor :metadata_publish_matching_check, :index_additional_data_proc
22
23
  attr_reader :id, :unique_content_per_repo
@@ -144,14 +145,14 @@ module Katello
144
145
  end
145
146
 
146
147
  class ContentType
147
- attr_accessor :model_class, :priority, :pulp2_service_class, :pulp3_service_class, :index, :uploadable, :removable,
148
- :primary_content, :index_on_pulp3, :generic_browser, :content_type, :repository_import_on_upload
148
+ attr_accessor :model_class, :priority, :pulp3_service_class, :index, :uploadable, :removable, :mutable,
149
+ :primary_content, :index_on_pulp3, :generic_browser, :content_type, :repository_import_on_upload,
150
+ :test_upload_path
149
151
 
150
152
  def initialize(options)
151
153
  self.model_class = options[:model_class]
152
154
  self.content_type = options[:content_type]
153
155
  self.priority = options[:priority] || 99
154
- self.pulp2_service_class = options[:pulp2_service_class]
155
156
  self.pulp3_service_class = options[:pulp3_service_class]
156
157
  self.index = options[:index].nil? ? true : options[:index]
157
158
  self.index_on_pulp3 = options[:index_on_pulp3].nil? ? true : options[:index_on_pulp3]
@@ -160,6 +161,8 @@ module Katello
160
161
  self.primary_content = options[:primary_content] || false
161
162
  self.generic_browser = options[:generic_browser]
162
163
  self.repository_import_on_upload = options[:repository_import_on_upload]
164
+ self.test_upload_path = options[:test_upload_path]
165
+ self.mutable = options.fetch(:mutable, false)
163
166
  end
164
167
 
165
168
  def label
@@ -174,6 +177,10 @@ module Katello
174
177
  removable: removable
175
178
  }
176
179
  end
180
+
181
+ def generic?
182
+ false
183
+ end
177
184
  end
178
185
 
179
186
  class GenericContentType < ContentType
@@ -198,6 +205,10 @@ module Katello
198
205
  self.content_type
199
206
  end
200
207
 
208
+ def generic?
209
+ true
210
+ end
211
+
201
212
  def details_columns
202
213
  columns = []
203
214
  columns << "Name" if self.model_name
@@ -151,7 +151,7 @@ module Katello
151
151
  def model_class(pulp_service_class)
152
152
  enabled_repository_types.values.each do |repo_type|
153
153
  repo_type.content_types.each do |content_type|
154
- return content_type.model_class if (content_type.pulp2_service_class == pulp_service_class || content_type.pulp3_service_class == pulp_service_class)
154
+ return content_type.model_class if (content_type.pulp3_service_class == pulp_service_class)
155
155
  end
156
156
  end
157
157
  end
@@ -7,7 +7,7 @@ module Katello
7
7
  CDN_PATH = '/content/dist/rhel/server/7/listing'.freeze
8
8
 
9
9
  def self.deliver!(orgs = ::Organization.all)
10
- return if Setting[:content_disconnected]
10
+ return unless Setting[:subscription_connection_enabled]
11
11
 
12
12
  orgs.each do |org|
13
13
  if cdn_inaccessible?(org) || upstream_inaccessible?(org)
@@ -1,7 +1,7 @@
1
1
  module Katello
2
2
  class UpstreamConnectionChecker
3
3
  POSSIBLE_EXCEPTIONS = [
4
- Katello::Errors::DisconnectedMode,
4
+ Katello::Errors::SubscriptionConnectionNotEnabled,
5
5
  Katello::Errors::ManifestExpired,
6
6
  Katello::Errors::UpstreamConsumerGone,
7
7
  Katello::Errors::UpstreamConsumerNotFound,
@@ -33,7 +33,7 @@ module Katello
33
33
  private
34
34
 
35
35
  def assert_connected
36
- fail Katello::Errors::DisconnectedMode if Setting[:content_disconnected]
36
+ fail Katello::Errors::SubscriptionConnectionNotEnabled unless Setting[:subscription_connection_enabled]
37
37
  end
38
38
 
39
39
  def assert_can_upstream_ping
@@ -8,35 +8,5 @@ description_format: Configure subscription manager to new content source
8
8
  feature: katello_change_content_source
9
9
  %>
10
10
  #!/bin/sh
11
- <%
12
- content_source = @host.content_source
13
- -%>
14
11
 
15
- <% if content_source -%>
16
- SSL_CA_CERT=$(mktemp)
17
- cat << EOF > $SSL_CA_CERT
18
- <%= foreman_server_ca_cert %>
19
- EOF
20
-
21
- KATELLO_SERVER_CA_CERT=/etc/rhsm/ca/katello-server-ca.pem
22
- RHSM_CFG=/etc/rhsm/rhsm.conf
23
-
24
- # Prepare SSL certificate
25
- mkdir -p /etc/rhsm/ca
26
- cp -f $SSL_CA_CERT $KATELLO_SERVER_CA_CERT
27
- chmod 644 $KATELLO_SERVER_CA_CERT
28
-
29
- # Configure subscription-manager
30
- test -f $RHSM_CFG.bak || cp $RHSM_CFG $RHSM_CFG.bak
31
-
32
- subscription-manager config \
33
- --server.hostname="<%= content_source.rhsm_url.host %>" \
34
- --server.port="<%= content_source.rhsm_url.port %>" \
35
- --server.prefix="<%= content_source.rhsm_url.path %>" \
36
- --rhsm.repo_ca_cert="$KATELLO_SERVER_CA_CERT" \
37
- --rhsm.baseurl="<%= content_source.pulp_content_url %>"
38
-
39
- <% else -%>
40
- echo "Host [<%= @host.name %>] doesn't have assigned content source!"
41
- exit 1
42
- <% end -%>
12
+ <%= change_content_source(@host, foreman_server_ca_cert) %>
@@ -2,25 +2,22 @@
2
2
  kind: job_template
3
3
  name: Install Errata - Katello SSH Default
4
4
  job_category: Katello
5
- description_format: 'Install errata %{Errata search query}'
5
+ description_format: 'Install errata %{errata}'
6
6
  feature: katello_errata_install
7
7
  provider_type: SSH
8
8
  template_inputs:
9
- - name: Errata search query
10
- description: Filter criteria for errata to be installed.
9
+ - name: errata
10
+ description: A comma-separated list of errata to install
11
11
  input_type: user
12
- required: false
12
+ required: true
13
13
  foreign_input_sets:
14
14
  - template: Package Action - SSH Default
15
15
  exclude: action,package
16
16
  %>
17
-
18
17
  <% if @host.operatingsystem.family == 'Suse' -%>
19
18
  <% advisories = input(:errata).split(',').join(' ') %>
20
19
  <%= render_template('Package Action - SSH Default', :action => 'install -n -t patch', :package => advisories) %>
21
20
  <% else %>
22
- <% advisory_ids = @host.advisory_ids(search: input("Errata search query")) %>
23
-
24
- <% advisories = advisory_ids.map { |e| "--advisory=#{e}" }.join(' ') %>
21
+ <% advisories = input(:errata).split(',').map { |e| "--advisory=#{e}" }.join(' ') %>
25
22
  <%= render_template('Package Action - SSH Default', :action => 'update-minimal', :package => advisories) %>
26
- <% end %>
23
+ <% end %>
@@ -0,0 +1,26 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Install errata by search query - Katello SSH Default
4
+ job_category: Katello
5
+ description_format: 'Install errata %{Errata search query}'
6
+ feature: katello_errata_install_by_search
7
+ provider_type: SSH
8
+ template_inputs:
9
+ - name: Errata search query
10
+ description: Filter criteria for errata to be installed.
11
+ input_type: user
12
+ required: false
13
+ foreign_input_sets:
14
+ - template: Package Action - SSH Default
15
+ exclude: action,package
16
+ %>
17
+
18
+ <% if @host.operatingsystem.family == 'Suse' -%>
19
+ <% advisories = @host.advisory_ids(search: input("Errata search query")).join(' ') %>
20
+ <%= render_template('Package Action - SSH Default', :action => 'install -n -t patch', :package => advisories) %>
21
+ <% else %>
22
+ <% advisory_ids = @host.advisory_ids(search: input("Errata search query")) %>
23
+
24
+ <% advisories = advisory_ids.map { |e| "--advisory=#{e}" }.join(' ') %>
25
+ <%= render_template('Package Action - SSH Default', :action => 'update-minimal', :package => advisories) %>
26
+ <% end %>
@@ -0,0 +1,19 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Install packages by search query - Katello SSH Default
4
+ job_category: Katello
5
+ description_format: 'Install package(s) %{Package search query}'
6
+ feature: katello_package_install_by_search
7
+ provider_type: SSH
8
+ template_inputs:
9
+ - name: Package search query
10
+ description: Filter criteria for packages to be installed. IMPORTANT- If left blank, the job will attempt to install all possible packages.
11
+ input_type: user
12
+ required: false
13
+ %>
14
+ <% package_names = @host.package_names_for_job_template(
15
+ action: 'install',
16
+ search: input('Package search query')
17
+ ) -%>
18
+
19
+ <%= render_template('Package Action - SSH Default', :action => 'install', :package => package_names.join(' ')) %>
@@ -0,0 +1,19 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Remove Packages by search query - Katello SSH Default
4
+ job_category: Katello
5
+ description_format: 'Remove packages %{Packages search query}'
6
+ feature: katello_packages_remove_by_search
7
+ provider_type: SSH
8
+ template_inputs:
9
+ - name: Packages search query
10
+ description: Filter criteria for packages to be removed.
11
+ input_type: user
12
+ required: true
13
+ %>
14
+ <% package_names = @host.package_names_for_job_template(
15
+ action: 'remove',
16
+ search: input('Packages search query')
17
+ ) -%>
18
+
19
+ <%= render_template('Package Action - SSH Default', :action => 'remove', :package => package_names.join(' ')) %>
@@ -0,0 +1,19 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Update Packages by search query - Katello SSH Default
4
+ job_category: Katello
5
+ description_format: 'Update package(s) %{Packages search query}'
6
+ feature: katello_packages_update_by_search
7
+ provider_type: SSH
8
+ template_inputs:
9
+ - name: Packages search query
10
+ description: Filter criteria for packages to be updated.
11
+ input_type: user
12
+ required: false
13
+ %>
14
+ <% package_names = @host.package_names_for_job_template(
15
+ action: 'update',
16
+ search: input('Packages search query')
17
+ ) -%>
18
+
19
+ <%= render_template('Package Action - SSH Default', :action => 'update', :package => package_names.join(' ')) %>
@@ -1,4 +1,4 @@
1
- attributes :url, :username, :upstream_organization_label, :ssl_ca_credential_id
1
+ attributes :url, :username, :upstream_organization_label, :ssl_ca_credential_id, :upstream_content_view_label, :upstream_lifecycle_environment_label, :type
2
2
 
3
3
  node :password_exists do |config|
4
4
  config.password.present?
@@ -36,11 +36,15 @@ node :last_published do |content_view|
36
36
  end
37
37
  end
38
38
 
39
- child :environments => :environments do
40
- attributes :id, :name, :label
41
- node :permissions do |env|
39
+ node :environments do |cv|
40
+ cv.environments.map do |env|
42
41
  {
43
- :readable => env.readable?
42
+ id: env.id,
43
+ label: env.label,
44
+ name: env.label,
45
+ activation_keys: cv&.activation_keys&.in_environment(env)&.ids,
46
+ hosts: cv&.hosts&.in_environment(env)&.ids,
47
+ permissions: {readable: env.readable?}
44
48
  }
45
49
  end
46
50
  end
@@ -46,4 +46,13 @@ node :permissions do |env|
46
46
  }
47
47
  end
48
48
 
49
+ node :content_views do |env|
50
+ env.content_views.non_default.map do |cv|
51
+ {
52
+ :name => cv.name,
53
+ :id => cv.id
54
+ }
55
+ end
56
+ end
57
+
49
58
  extends 'katello/api/v2/common/timestamps'
@@ -2,6 +2,7 @@ object @resource
2
2
 
3
3
  attributes :status, :installed_profiles
4
4
  attributes :upgradable? => :upgradable
5
+ attributes :install_status? => :install_status
5
6
 
6
7
  glue(@object.available_module_stream) do
7
8
  attributes :name, :stream, :module_spec
@@ -6,6 +6,7 @@ attributes :pulp_id => :backend_identifier
6
6
  attributes :relative_path, :container_repository_name, :full_path, :library_instance_id
7
7
  attributes :version_href, :remote_href, :publication_href
8
8
  attributes :content_counts
9
+ attributes :mirroring_policy
9
10
 
10
11
  glue(@object.root) do
11
12
  attributes :content_type, :url, :arch, :os_versions, :content_id, :generic_remote_options
@@ -8,7 +8,9 @@ glue(@resource.root) do
8
8
  attributes :content_type
9
9
  attributes :docker_upstream_name
10
10
  attributes :docker_tags_whitelist
11
- attributes :mirror_on_sync, :verify_ssl_on_sync
11
+ attributes :include_tags
12
+ attributes :exclude_tags
13
+ attributes :verify_ssl_on_sync
12
14
  attributes :unprotected, :full_path, :checksum_type
13
15
  attributes :container_repository_name
14
16
  attributes :download_policy
@@ -7,7 +7,6 @@
7
7
  <% end %>
8
8
 
9
9
  <% content_for(:content) do %>
10
- <%= notifications %>
11
10
  <div id="organization-id" data-id="<%= Organization.current.id if Organization.current %>" ></div>
12
11
  <div id="user-id" data-id="<%= User.current.id if User.current %>" ></div>
13
12
  <div id="reactRoot">
@@ -6,37 +6,48 @@
6
6
  </label>
7
7
  </td>
8
8
  <td class="start_time">
9
- <%= @repo_status[repo.id][:start_time] %>
9
+ <%= @repo_status[repo.id][:sync_id] ? @repo_status[repo.id][:start_time] : _('N/A') %>
10
10
  </td>
11
11
  <td class="duration">
12
- <%= @repo_status[repo.id][:duration] %>
12
+ <%= @repo_status[repo.id][:sync_id] ? @repo_status[repo.id][:duration] : _('N/A') %>
13
13
  </td>
14
14
  <td class="size" data-size="<%= @repo_status[repo.id][:size] %>">
15
- <%= @repo_status[repo.id][:display_size] %>
15
+ <%= @repo_status[repo.id][:sync_id] ? @repo_status[repo.id][:display_size] : _('N/A')%>
16
16
  </td>
17
- <td class="result">
18
- <span class="result-info">
19
- <a href="/foreman_tasks/tasks/<%= @repo_status[repo.id][:sync_id] %>">
20
- <%= @repo_status[repo.id][:state] %>
21
- </a>
22
- </span>
23
- <a class="info-tipsy clickable fa fa-warning <%= 'hidden' if @repo_status[repo.id][:raw_state] != 'error' %>"
24
- href="/foreman_tasks/tasks/<%= @repo_status[repo.id][:sync_id] %>">
25
- <span class="hidden-text hidden">
26
- <div class="la error-tipsy">
27
- <ul>
28
- <% if @repo_status[repo.id][:error_details].present? && error_state?(@repo_status[repo.id]) %>
29
- <% @repo_status[repo.id][:error_details][:messages].each do |error| %>
30
- <li>
31
- <%= error %>
32
- </li>
33
- <% end %>
34
- <% end %>
35
- </ul>
36
- </div>
17
+ <% if @repo_status[repo.id][:sync_id] %>
18
+ <td class="result">
19
+ <span class="result-info">
20
+ <a href="/foreman_tasks/tasks/<%= @repo_status[repo.id][:sync_id] %>">
21
+ <%= @repo_status[repo.id][:state] %>
22
+ </a>
37
23
  </span>
38
- </a>
39
- </td>
24
+ <a class="info-tipsy clickable fa fa-warning <%= 'hidden' if @repo_status[repo.id][:raw_state] != 'error' %>"
25
+ href="/foreman_tasks/tasks/<%= @repo_status[repo.id][:sync_id] %>">
26
+ <span class="hidden-text hidden">
27
+ <div class="la error-tipsy">
28
+ <ul>
29
+ <% if @repo_status[repo.id][:error_details].present? && error_state?(@repo_status[repo.id]) %>
30
+ <% @repo_status[repo.id][:error_details][:messages].each do |error| %>
31
+ <li>
32
+ <%= error %>
33
+ </li>
34
+ <% end %>
35
+ <% end %>
36
+ </ul>
37
+ </div>
38
+ </span>
39
+ </a>
40
+ </td>
41
+ <% elsif repo&.latest_sync_audit&.created_at %>
42
+ <td>
43
+ <%= _("Synced ") + time_ago_in_words(repo&.latest_sync_audit&.created_at) + _(" ago.") %>
44
+ </td>
45
+ <% else%>
46
+ <td>
47
+ <%= @repo_status[repo.id][:state] %>
48
+ </td>
49
+ <% end %>
50
+
40
51
  <% if @show_org %>
41
52
  <td></td>
42
53
  <% end %>
@@ -2,4 +2,3 @@
2
2
  require 'monkeys/anemone'
3
3
  require 'monkeys/ar_postgres_evr_t'
4
4
  require 'monkeys/fx_sqlite_skip'
5
- require 'monkeys/pulp3_13_checksumfix'
@@ -74,6 +74,7 @@ Katello::Engine.routes.draw do
74
74
  post :copy
75
75
  post :publish
76
76
  put :remove
77
+ put :bulk_delete_versions
77
78
  put :remove_filters
78
79
  match '/environments/:environment_id' => "content_views#remove_from_environment", :via => :delete
79
80
  end