katello 4.3.0 → 4.4.0.rc1

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

Potentially problematic release.


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

Files changed (337) 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 +3 -0
  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_controller.rb +17 -7
  11. data/app/controllers/katello/api/v2/repository_sets_controller.rb +7 -0
  12. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +3 -0
  13. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +32 -0
  14. data/app/controllers/katello/remote_execution_controller.rb +5 -4
  15. data/app/helpers/katello/content_source_helper.rb +43 -0
  16. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +4 -0
  17. data/app/lib/actions/katello/cdn_configuration/update.rb +5 -7
  18. data/app/lib/actions/katello/content_view/publish.rb +5 -0
  19. data/app/lib/actions/katello/content_view_version/incremental_update.rb +17 -3
  20. data/app/lib/actions/katello/repository/discover.rb +1 -14
  21. data/app/lib/actions/katello/repository/filtered_index_content.rb +1 -1
  22. data/app/lib/actions/pulp3/content_view_version/import.rb +7 -0
  23. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +7 -5
  24. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
  25. data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -0
  26. data/app/lib/katello/concerns/base_template_scope_extensions.rb +11 -0
  27. data/app/lib/katello/errors.rb +3 -3
  28. data/app/lib/katello/logging.rb +6 -1
  29. data/app/lib/katello/repo_discovery.rb +27 -19
  30. data/app/lib/katello/resources/cdn/katello_cdn.rb +41 -3
  31. data/app/lib/katello/resources/cdn.rb +4 -2
  32. data/app/lib/katello/util/deduplication_migrator.rb +105 -0
  33. data/app/models/katello/candlepin/repository_mapper.rb +1 -1
  34. data/app/models/katello/cdn_configuration.rb +38 -6
  35. data/app/models/katello/concerns/host_managed_extensions.rb +23 -1
  36. data/app/models/katello/concerns/organization_extensions.rb +5 -1
  37. data/app/models/katello/concerns/pulp_database_unit.rb +59 -173
  38. data/app/models/katello/concerns/remote_execution_proxy_selector_extensions.rb +11 -0
  39. data/app/models/katello/concerns/smart_proxy_extensions.rb +1 -1
  40. data/app/models/katello/content_view.rb +4 -4
  41. data/app/models/katello/content_view_filter.rb +1 -1
  42. data/app/models/katello/content_view_history.rb +1 -1
  43. data/app/models/katello/content_view_version.rb +6 -2
  44. data/app/models/katello/content_view_version_export_history.rb +1 -1
  45. data/app/models/katello/deb.rb +1 -3
  46. data/app/models/katello/docker_meta_tag.rb +1 -1
  47. data/app/models/katello/erratum.rb +0 -15
  48. data/app/models/katello/glue/pulp/repos.rb +1 -1
  49. data/app/models/katello/host/content_facet.rb +2 -27
  50. data/app/models/katello/host/info_provider.rb +9 -0
  51. data/app/models/katello/host/subscription_facet.rb +2 -2
  52. data/app/models/katello/hostgroup/content_facet.rb +2 -2
  53. data/app/models/katello/product.rb +1 -1
  54. data/app/models/katello/product_content.rb +2 -2
  55. data/app/models/katello/repository.rb +10 -9
  56. data/app/models/katello/root_repository.rb +24 -13
  57. data/app/models/katello/rpm.rb +8 -2
  58. data/app/models/setting/content.rb +6 -3
  59. data/app/services/cert/rhsm_client.rb +1 -5
  60. data/app/services/katello/content_unit_indexer.rb +166 -0
  61. data/app/services/katello/organization_creator.rb +12 -4
  62. data/app/services/katello/pulp/repository/docker.rb +1 -1
  63. data/app/services/katello/pulp/repository/yum.rb +0 -54
  64. data/app/services/katello/pulp/repository.rb +0 -6
  65. data/app/services/katello/pulp3/ansible_collection.rb +26 -10
  66. data/app/services/katello/pulp3/api/apt.rb +7 -0
  67. data/app/services/katello/pulp3/content_view_version/import.rb +11 -2
  68. data/app/services/katello/pulp3/deb.rb +10 -9
  69. data/app/services/katello/pulp3/docker_manifest.rb +6 -5
  70. data/app/services/katello/pulp3/docker_manifest_list.rb +23 -6
  71. data/app/services/katello/pulp3/docker_tag.rb +16 -7
  72. data/app/services/katello/pulp3/erratum.rb +51 -56
  73. data/app/services/katello/pulp3/file_unit.rb +9 -6
  74. data/app/services/katello/pulp3/generic_content_unit.rb +11 -12
  75. data/app/services/katello/pulp3/module_stream.rb +76 -30
  76. data/app/services/katello/pulp3/package_group.rb +5 -5
  77. data/app/services/katello/pulp3/pulp_content_unit.rb +19 -11
  78. data/app/services/katello/pulp3/repository/apt.rb +5 -3
  79. data/app/services/katello/pulp3/repository/docker.rb +14 -7
  80. data/app/services/katello/pulp3/repository/generic.rb +1 -1
  81. data/app/services/katello/pulp3/repository/yum.rb +10 -12
  82. data/app/services/katello/pulp3/repository.rb +26 -7
  83. data/app/services/katello/pulp3/repository_mirror.rb +18 -5
  84. data/app/services/katello/pulp3/rpm.rb +13 -13
  85. data/app/services/katello/pulp3/srpm.rb +10 -9
  86. data/app/services/katello/repository_type.rb +15 -4
  87. data/app/services/katello/repository_type_manager.rb +1 -1
  88. data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +1 -1
  89. data/app/services/katello/upstream_connection_checker.rb +2 -2
  90. data/app/views/foreman/job_templates/change_content_source.erb +1 -31
  91. data/app/views/foreman/job_templates/install_errata.erb +6 -9
  92. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +26 -0
  93. data/app/views/foreman/job_templates/install_packages_by_search_query.erb +19 -0
  94. data/app/views/katello/api/v2/cdn_configurations/show.json.rabl +1 -1
  95. data/app/views/katello/api/v2/environments/show.json.rabl +9 -0
  96. data/app/views/katello/api/v2/repositories/show.json.rabl +2 -0
  97. data/app/views/katello/layouts/react.html.erb +0 -1
  98. data/app/views/katello/sync_management/_repo.html.erb +36 -25
  99. data/config/initializers/monkeys.rb +0 -1
  100. data/config/routes/api/v2.rb +1 -0
  101. data/config/routes/overrides.rb +3 -0
  102. data/config/routes.rb +2 -0
  103. data/db/migrate/20150930183738_migrate_content_hosts.rb +1 -1
  104. data/db/migrate/20180612164926_add_content_org_id.rb +2 -2
  105. data/db/migrate/20211201154845_add_unique_indexes.rb +20 -0
  106. data/db/migrate/20211208034230_add_content_view_and_lifecycle_environment.rb +6 -0
  107. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +144 -0
  108. data/db/migrate/20220110223754_update_disconnected_settings.rb +20 -0
  109. data/db/migrate/20220120163252_fix_docker_download_policy.rb +11 -0
  110. data/db/migrate/20220124191056_add_type_to_cdn_configuration.rb +22 -0
  111. data/db/migrate/20220127120843_fix_debian_download_policy.rb +11 -0
  112. data/db/migrate/20220204171908_rename_docker_tags_whitelist_and_add_exclude_tags.rb +8 -0
  113. data/db/migrate/20220207140355_change_deb_attributes_size_limit.rb +7 -0
  114. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  115. data/engines/bastion/app/views/bastion/layouts/application.html.erb +0 -1
  116. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +0 -1
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.controller.js +1 -1
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-products.controller.js +1 -1
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-repositories.controller.js +1 -1
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +1 -1
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment.html +26 -1
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +212 -152
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +1 -0
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +20 -8
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +2 -3
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +8 -3
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +34 -30
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +16 -2
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +35 -15
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery.controller.js +5 -4
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +4 -3
  132. data/lib/katello/engine.rb +4 -0
  133. data/lib/katello/permission_creator.rb +1 -1
  134. data/lib/katello/permissions/host_permissions.rb +3 -1
  135. data/lib/katello/plugin.rb +4 -1
  136. data/lib/katello/repository_types/deb.rb +0 -1
  137. data/lib/katello/repository_types/docker.rb +4 -4
  138. data/lib/katello/repository_types/file.rb +0 -1
  139. data/lib/katello/repository_types/ostree.rb +4 -0
  140. data/lib/katello/repository_types/python.rb +5 -1
  141. data/lib/katello/repository_types/yum.rb +2 -9
  142. data/lib/katello/tasks/content_view_import_only.rake +34 -0
  143. data/lib/katello/tasks/import_applicability.rake +1 -1
  144. data/lib/katello/tasks/jenkins.rake +0 -2
  145. data/lib/katello/tasks/repository.rake +4 -1
  146. data/lib/katello/tasks/upgrades/4.4/publish_import_cvvs.rake +17 -0
  147. data/lib/katello/version.rb +1 -1
  148. data/locale/action_names.rb +8 -7
  149. data/locale/bn/katello.po +1402 -650
  150. data/locale/cs/katello.po +1217 -96
  151. data/locale/de/katello.po +2359 -1347
  152. data/locale/en/katello.po +1216 -94
  153. data/locale/es/katello.po +2201 -1172
  154. data/locale/fr/katello.po +2601 -1615
  155. data/locale/gu/katello.po +1564 -814
  156. data/locale/hi/katello.po +1563 -810
  157. data/locale/it/katello.po +1311 -282
  158. data/locale/ja/katello.po +2534 -1518
  159. data/locale/katello.pot +3430 -1326
  160. data/locale/kn/katello.po +1564 -812
  161. data/locale/ko/katello.po +1441 -409
  162. data/locale/mr/katello.po +1564 -776
  163. data/locale/or/katello.po +1565 -813
  164. data/locale/pa/katello.po +1559 -792
  165. data/locale/pt/katello.po +1314 -277
  166. data/locale/pt_BR/katello.po +2226 -1181
  167. data/locale/ru/katello.po +1587 -563
  168. data/locale/ta/katello.po +1373 -619
  169. data/locale/te/katello.po +1564 -810
  170. data/locale/zh_CN/katello.po +2936 -1890
  171. data/locale/zh_TW/katello.po +1508 -606
  172. data/webpack/__mocks__/foremanReact/{redux/actions/toasts.js → components/ToastsList/index.js} +3 -2
  173. data/webpack/components/ActionableDetail.js +35 -21
  174. data/webpack/components/Content/Details/__tests__/ContentDetailInfo.test.js +0 -2
  175. data/webpack/components/Content/Details/__tests__/ContentDetailRepositories.test.js +0 -2
  176. data/webpack/components/Content/Details/__tests__/ContentDetails.test.js +0 -2
  177. data/webpack/components/Content/__tests__/ContentPage.test.js +0 -2
  178. data/webpack/components/Content/__tests__/ContentTable.test.js +0 -2
  179. data/webpack/components/EditableSwitch.js +8 -2
  180. data/webpack/components/EditableTextInput/EditableTextInput.js +44 -86
  181. data/webpack/components/EditableTextInput/__tests__/editableTextInput.test.js +3 -3
  182. data/webpack/components/Errata/index.js +19 -11
  183. data/webpack/components/Packages/index.js +1 -1
  184. data/webpack/components/Search/Search.js +5 -2
  185. data/webpack/components/Search/__tests__/search.test.js +2 -3
  186. data/webpack/components/SelectOrg/SetOrganization.js +1 -1
  187. data/webpack/components/Table/PageControls.js +3 -6
  188. data/webpack/components/Table/TableHooks.js +46 -7
  189. data/webpack/components/Table/TableWrapper.js +14 -3
  190. data/webpack/components/TypeAhead/TypeAhead.js +5 -1
  191. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +4 -1
  192. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +2 -1
  193. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +1 -1
  194. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +3 -4
  195. data/webpack/components/extensions/HostDetails/HostDetailsActions.js +2 -0
  196. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesActions.js +18 -2
  197. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesConstants.js +12 -0
  198. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +1 -1
  199. data/webpack/components/extensions/HostDetails/Tabs/{ErrataTab.js → ErrataTab/ErrataTab.js} +30 -21
  200. data/webpack/components/extensions/HostDetails/Tabs/{ErrataTab.scss → ErrataTab/ErrataTab.scss} +0 -0
  201. data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionContents.js → ErrataTab/ErratumExpansionContents.js} +0 -0
  202. data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionDetail.js → ErrataTab/ErratumExpansionDetail.js} +0 -0
  203. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataActions.js +3 -3
  204. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataConstants.js +11 -0
  205. data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataSelectors.js +0 -0
  206. data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.js +279 -0
  207. data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.scss +3 -0
  208. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.js +125 -8
  209. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +27 -4
  210. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +2 -1
  211. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +6 -3
  212. data/webpack/components/extensions/HostDetails/Tabs/{EnableTracerEmptyState.js → TracesTab/EnableTracerEmptyState.js} +0 -0
  213. data/webpack/components/extensions/HostDetails/Tabs/{EnableTracerModal.js → TracesTab/EnableTracerModal.js} +3 -2
  214. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesActions.js → TracesTab/HostTracesActions.js} +2 -2
  215. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesConstants.js → TracesTab/HostTracesConstants.js} +0 -0
  216. data/webpack/components/extensions/HostDetails/Tabs/{HostTracesSelectors.js → TracesTab/HostTracesSelectors.js} +0 -0
  217. data/webpack/components/extensions/HostDetails/Tabs/{TracesTab.js → TracesTab/TracesTab.js} +8 -5
  218. data/webpack/components/extensions/HostDetails/Tabs/{TracesTab.scss → TracesTab/TracesTab.scss} +0 -0
  219. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +17 -18
  220. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +385 -0
  221. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packages.fixtures.json +1 -1
  222. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +58 -7
  223. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +2 -2
  224. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +4 -4
  225. data/webpack/components/extensions/HostDetails/Tabs/__tests__/yumInstallablePackages.fixtures.json +72 -0
  226. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +12 -5
  227. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesActions.js +18 -0
  228. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesConstants.js +3 -0
  229. data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesSelectors.js +16 -0
  230. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +19 -0
  231. data/webpack/components/pf3Table/components/Table.js +2 -3
  232. data/webpack/components/pf3Table/components/Table.test.js +0 -3
  233. data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +9 -8
  234. data/webpack/containers/Application/config.js +5 -0
  235. data/webpack/global_index.js +1 -1
  236. data/webpack/global_test_setup.js +1 -1
  237. data/webpack/index.js +7 -0
  238. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -2
  239. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -2
  240. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -2
  241. data/webpack/scenes/Content/ContentConfig.js +55 -5
  242. data/webpack/scenes/Content/ContentPage.js +1 -1
  243. data/webpack/scenes/Content/Details/ContentDetails.js +1 -1
  244. data/webpack/scenes/Content/Details/ContentInfo.js +1 -1
  245. data/webpack/scenes/Content/Details/ContentRepositories.js +1 -1
  246. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +4 -4
  247. data/webpack/scenes/Content/Table/ContentTable.js +1 -1
  248. data/webpack/scenes/Content/__tests__/contentTable.test.js +3 -3
  249. data/webpack/scenes/ContentViews/ContentViewsConstants.js +2 -1
  250. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +6 -6
  251. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +2 -2
  252. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +21 -27
  253. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +5 -5
  254. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +8 -3
  255. data/webpack/scenes/ContentViews/Details/DetailsContainer.js +11 -16
  256. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +2 -2
  257. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +14 -8
  258. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +2 -2
  259. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +2 -3
  260. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +2 -9
  261. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +3 -5
  262. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +2 -10
  263. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +2 -3
  264. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +2 -3
  265. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +2 -2
  266. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +1 -1
  267. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +23 -2
  268. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +11 -5
  269. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +16 -17
  270. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +1 -1
  271. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -6
  272. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +30 -34
  273. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +9 -8
  274. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +13 -15
  275. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +1 -1
  276. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +4 -4
  277. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +3 -3
  278. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +5 -3
  279. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +2 -2
  280. data/webpack/scenes/Hosts/ChangeContentSource/actions.js +43 -0
  281. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +87 -0
  282. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +90 -0
  283. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +43 -0
  284. data/webpack/scenes/Hosts/ChangeContentSource/constants.js +3 -0
  285. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +27 -0
  286. data/webpack/scenes/Hosts/ChangeContentSource/index.js +126 -0
  287. data/webpack/scenes/Hosts/ChangeContentSource/selectors.js +42 -0
  288. data/webpack/scenes/Hosts/ChangeContentSource/styles.scss +11 -0
  289. data/webpack/scenes/ModuleStreams/Details/Profiles/__tests__/ModuleStreamDetailProfiles.test.js +0 -1
  290. data/webpack/scenes/ModuleStreams/Details/__tests__/ModuleStreamDetails.test.js +0 -2
  291. data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamPage.test.js +0 -2
  292. data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamsTable.test.js +0 -2
  293. data/webpack/scenes/Organizations/OrganizationActions.js +5 -1
  294. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +31 -1
  295. data/webpack/scenes/RedHatRepositories/__tests__/RedHatRepositoriesPage.test.js +16 -0
  296. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +11 -2
  297. data/webpack/scenes/RedHatRepositories/helpers.js +5 -5
  298. data/webpack/scenes/RedHatRepositories/index.js +11 -3
  299. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/AirGappedTypeForm.js +81 -0
  300. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +13 -0
  301. data/webpack/scenes/Subscriptions/Manifest/{CdnConfigurationForm.scss → CdnConfigurationTab/CdnConfigurationForm.scss} +0 -0
  302. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +106 -0
  303. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/UpstreamServerTypeForm.js +259 -0
  304. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/AirGappedTypeForm.test.js +44 -0
  305. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +67 -0
  306. data/webpack/scenes/Subscriptions/Manifest/{__tests__/CdnConfigurationForm.test.js → CdnConfigurationTab/__tests__/UpstreamServerTypeForm.test.js} +46 -17
  307. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +97 -0
  308. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +6 -1
  309. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/UpstreamSubscriptionsPage.test.js +0 -1
  310. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +0 -1
  311. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +3 -2
  312. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +4 -0
  313. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +9 -0
  314. data/webpack/scenes/Tasks/TaskActions.js +1 -1
  315. data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap +3 -2
  316. data/webpack/services/api/testHelpers.js +5 -3
  317. data/webpack/utils/helpers.js +6 -3
  318. metadata +81 -58
  319. data/app/services/katello/pulp/deb.rb +0 -55
  320. data/app/services/katello/pulp/distribution.rb +0 -7
  321. data/app/services/katello/pulp/docker_blob.rb +0 -7
  322. data/app/services/katello/pulp/docker_manifest.rb +0 -13
  323. data/app/services/katello/pulp/docker_manifest_list.rb +0 -14
  324. data/app/services/katello/pulp/docker_tag.rb +0 -14
  325. data/app/services/katello/pulp/erratum.rb +0 -129
  326. data/app/services/katello/pulp/file_unit.rb +0 -21
  327. data/app/services/katello/pulp/module_stream.rb +0 -39
  328. data/app/services/katello/pulp/package_category.rb +0 -7
  329. data/app/services/katello/pulp/package_group.rb +0 -20
  330. data/app/services/katello/pulp/pulp_content_unit.rb +0 -156
  331. data/app/services/katello/pulp/rpm.rb +0 -57
  332. data/app/services/katello/pulp/srpm.rb +0 -29
  333. data/app/services/katello/pulp/yum_metadata_file.rb +0 -30
  334. data/lib/monkeys/pulp3_13_checksumfix.rb +0 -17
  335. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +0 -2
  336. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +0 -2
  337. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationForm.js +0 -185
@@ -1,7 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class Distribution < PulpContentUnit
4
- CONTENT_TYPE = "distribution".freeze
5
- end
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class DockerBlob < PulpContentUnit
4
- CONTENT_TYPE = "docker_blob".freeze
5
- end
6
- end
7
- end
@@ -1,13 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class DockerManifest < PulpContentUnit
4
- CONTENT_TYPE = "docker_manifest".freeze
5
-
6
- def update_model(model)
7
- model.update(:schema_version => backend_data[:schema_version],
8
- :digest => backend_data[:digest]
9
- )
10
- end
11
- end
12
- end
13
- end
@@ -1,14 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class DockerManifestList < PulpContentUnit
4
- CONTENT_TYPE = "docker_manifest_list".freeze
5
-
6
- def update_model(model)
7
- model.update(:schema_version => backend_data[:schema_version],
8
- :digest => backend_data[:digest],
9
- :docker_manifests => ::Katello::DockerManifest.where(:digest => backend_data[:manifests].pluck(:digest))
10
- )
11
- end
12
- end
13
- end
14
- end
@@ -1,14 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class DockerTag < PulpContentUnit
4
- CONTENT_TYPE = "docker_tag".freeze
5
-
6
- def update_model(model)
7
- taggable_class = backend_data['manifest_type'] == "list" ? ::Katello::DockerManifestList : ::Katello::DockerManifest
8
- model.docker_taggable = taggable_class.find_by(:digest => backend_data['manifest_digest'])
9
- model.name = backend_data['name']
10
- model.save!
11
- end
12
- end
13
- end
14
- end
@@ -1,129 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class Erratum < PulpContentUnit
4
- PULP_SELECT_FIELDS = %w(errata_id).freeze
5
- CONTENT_TYPE = "erratum".freeze
6
-
7
- def self.unit_handler
8
- Katello.pulp_server.extensions.errata
9
- end
10
-
11
- def update_model(model)
12
- keys = %w(title id severity issued type description reboot_suggested solution updated summary)
13
- custom_json = backend_data.slice(*keys)
14
-
15
- # handle SUSE epoch dates
16
- custom_json["issued"] = convert_date_if_epoch(custom_json["issued"])
17
- custom_json["updated"] = convert_date_if_epoch(custom_json["updated"]) unless custom_json["updated"].blank?
18
-
19
- if model.updated.blank? || (custom_json['updated'].to_datetime != model.updated.to_datetime)
20
- custom_json['errata_id'] = custom_json.delete('id')
21
- custom_json['errata_type'] = custom_json.delete('type')
22
- custom_json['updated'] = custom_json['updated'].blank? ? custom_json['issued'] : custom_json['updated']
23
- model.update!(custom_json)
24
-
25
- unless backend_data['references'].blank?
26
- update_bugzillas(model, backend_data['references'].select { |r| r['type'] == 'bugzilla' })
27
- update_cves(model, backend_data['references'].select { |r| r['type'] == 'cve' })
28
- end
29
- end
30
- update_packages(model, backend_data['pkglist']) unless backend_data['pkglist'].blank?
31
- update_modules(model, backend_data['pkglist']) unless backend_data['pkglist'].blank?
32
- end
33
-
34
- def update_bugzillas(model, json)
35
- needed_function = lambda do
36
- existing_names = model.bugzillas.pluck(:bug_id)
37
- json.select { |bz| !existing_names.include?(bz['id']) }
38
- end
39
- action_function = lambda do |needed|
40
- model.bugzillas.create!(needed.map { |bug| {:bug_id => bug['id'], :href => bug['href']} })
41
- end
42
- run_until(model, needed_function, action_function)
43
- end
44
-
45
- def update_cves(model, json)
46
- needed_function = lambda do
47
- existing_names = model.cves.pluck(:cve_id)
48
- json.select { |cve| !existing_names.include?(cve['id']) }
49
- end
50
- action_function = lambda do |needed|
51
- model.cves.create!(needed.map { |cve| {:cve_id => cve['id'], :href => cve['href']} })
52
- end
53
- run_until(model, needed_function, action_function)
54
- end
55
-
56
- def update_packages(model, json)
57
- needed_function = lambda do
58
- package_hashes = json.map { |list| list['packages'] }.flatten
59
- package_attributes = package_hashes.map do |hash|
60
- nvrea = Util::Package.build_nvra(hash)
61
- {'name' => hash['name'], 'nvrea' => nvrea, 'filename' => hash['filename']}
62
- end
63
- existing_nvreas = model.packages.pluck(:nvrea)
64
- package_attributes.delete_if { |pkg| existing_nvreas.include?(pkg['nvrea']) }
65
- package_attributes.uniq { |pkg| pkg['nvrea'] }
66
- end
67
- action_function = lambda do |needed|
68
- model.packages.create!(needed)
69
- end
70
- run_until(model, needed_function, action_function)
71
- end
72
-
73
- def update_modules(model, json)
74
- needed_function = lambda do
75
- module_stream_attributes = []
76
- json.each do |package_item|
77
- if package_item['module']
78
- module_stream = ::Katello::ModuleStream.where(package_item['module']).first
79
- next if module_stream.blank?
80
- nvreas = package_item["packages"].map { |hash| Util::Package.build_nvra(hash) }
81
- module_stream_id_column = "#{ModuleStreamErratumPackage.table_name}.module_stream_id"
82
- existing = ErratumPackage.joins(:module_streams).
83
- where(module_stream_id_column => module_stream.id,
84
- :nvrea => nvreas).pluck(:nvrea)
85
-
86
- (nvreas - existing).each do |nvrea|
87
- package = model.packages.find_by(:nvrea => nvrea)
88
- module_stream_attributes << { :module_stream_id => module_stream.id,
89
- :erratum_package_id => package.id }
90
- end
91
- end
92
- end
93
- module_stream_attributes.uniq
94
- end
95
-
96
- action_function = lambda do |needed|
97
- needed.each do |msep|
98
- ModuleStreamErratumPackage.create!(msep)
99
- end
100
- end
101
-
102
- run_until(model, needed_function, action_function)
103
- end
104
-
105
- def run_until(model, needed_function, action_function)
106
- needed = needed_function.call
107
- retries = needed.length
108
- until needed.empty? || retries == 0
109
- begin
110
- action_function.call(needed)
111
- rescue ActiveRecord::RecordNotUnique
112
- model.reload
113
- end
114
- needed = needed_function.call
115
- retries -= 1
116
- end
117
- fail _('Failed indexing errata, maximum retries encountered') if retries == 0 && needed.any?
118
- end
119
-
120
- def convert_date_if_epoch(date)
121
- date.to_i.to_s == date ? epoch_to_date(date) : date
122
- end
123
-
124
- def epoch_to_date(epoch)
125
- Time.at(epoch.to_i).to_s
126
- end
127
- end
128
- end
129
- end
@@ -1,21 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class FileUnit < PulpContentUnit
4
- include LazyAccessor
5
-
6
- PULP_SELECT_FIELDS = %w(name checksum).freeze
7
- PULP_INDEXED_FIELDS = %w(name checksum).freeze
8
- CONTENT_TYPE = "iso".freeze
9
-
10
- lazy_accessor :pulp_facts, :initializer => :backend_data
11
-
12
- def update_model(model)
13
- custom_json = {}
14
- custom_json['checksum'] = backend_data['checksum']
15
- custom_json['path'] = backend_data['name']
16
- custom_json['name'] = File.basename(backend_data['name'])
17
- model.update!(custom_json)
18
- end
19
- end
20
- end
21
- end
@@ -1,39 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class ModuleStream < PulpContentUnit
4
- include LazyAccessor
5
-
6
- CONTENT_TYPE = "modulemd".freeze
7
-
8
- def update_model(model)
9
- shared_attributes = backend_data.keys & model.class.column_names
10
- shared_json = backend_data.select { |key, _v| shared_attributes.include?(key) }
11
- model.update!(shared_json)
12
-
13
- create_stream_artifacts(model, backend_data['artifacts']) if backend_data.key?('artifacts')
14
- create_profiles(model, backend_data['profiles']) if backend_data.key?('profiles')
15
- end
16
-
17
- def create_stream_artifacts(model, artifacts_json)
18
- artifacts_json.each do |name|
19
- Katello::Util::Support.active_record_retry do
20
- model.artifacts.where(name: name).first_or_create!
21
- end
22
- end
23
- end
24
-
25
- def create_profiles(model, profiles_json)
26
- profiles_json.each do |profile, rpms|
27
- Katello::Util::Support.active_record_retry do
28
- profile = model.profiles.where(name: profile).first_or_create!
29
- end
30
- rpms.each do |rpm|
31
- Katello::Util::Support.active_record_retry do
32
- profile.rpms.where(name: rpm).first_or_create!
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,7 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class PackageCategory < PulpContentUnit
4
- CONTENT_TYPE = "package_category".freeze
5
- end
6
- end
7
- end
@@ -1,20 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class PackageGroup < PulpContentUnit
4
- include LazyAccessor
5
-
6
- CONTENT_TYPE = 'package_group'.freeze
7
-
8
- lazy_accessor :pulp_facts, :initializer => :backend_data
9
-
10
- lazy_accessor :optional_package_names, :mandatory_package_names,
11
- :conditional_package_names, :default_package_names, :_id,
12
- :repository_memberships,
13
- :initializer => :pulp_facts
14
-
15
- def update_model(model)
16
- model.update!(backend_data.slice('name', 'description'))
17
- end
18
- end
19
- end
20
- end
@@ -1,156 +0,0 @@
1
- require 'set'
2
-
3
- module Katello
4
- module Pulp
5
- class PulpContentUnit
6
- # Any class that extends this class should define:
7
- # Class::CONTENT_TYPE
8
- # Class#update_model
9
-
10
- # Any class that extends this class can define:
11
- # Class.unit_handler (optional)
12
- # Class::PULP_INDEXED_FIELDS (optional)
13
-
14
- attr_accessor :uuid
15
- attr_writer :backend_data
16
-
17
- def initialize(uuid)
18
- self.uuid = uuid
19
- end
20
-
21
- def self.pulp_data(uuid)
22
- unit_handler.find_by_unit_id(uuid)
23
- end
24
-
25
- def self.model_class
26
- Katello::RepositoryTypeManager.model_class(self)
27
- end
28
-
29
- def self.unit_identifier
30
- "_id"
31
- end
32
-
33
- def self.backend_unit_identifier
34
- nil
35
- end
36
-
37
- def self.supports_id_fetch?
38
- true
39
- end
40
-
41
- def self.content_type
42
- self::CONTENT_TYPE
43
- end
44
-
45
- def self.unit_handler
46
- Katello.pulp_server.extensions.send(self.name.demodulize.underscore)
47
- end
48
-
49
- def self.pulp_units_batch_all(unit_ids = nil, page_size = Setting[:bulk_load_size])
50
- fields = self.const_get(:PULP_INDEXED_FIELDS) if self.constants.include?(:PULP_INDEXED_FIELDS)
51
- criteria = {:limit => page_size, :skip => 0}
52
- criteria[:fields] = fields if fields
53
- criteria[:filters] = {'_id' => {'$in' => unit_ids}} if unit_ids
54
-
55
- pulp_units_batch(criteria, page_size) do
56
- Katello.pulp_server.resources.unit.search(self::CONTENT_TYPE, criteria, :include_repos => true)
57
- end
58
- end
59
-
60
- def self.pulp_units_batch_for_repo(repository, options = {})
61
- page_size = options.fetch(:page_size, Setting[:bulk_load_size])
62
-
63
- fields = self.const_get(:PULP_INDEXED_FIELDS) if self.constants.include?(:PULP_INDEXED_FIELDS)
64
- criteria = {:type_ids => [const_get(:CONTENT_TYPE)], :limit => page_size, :skip => 0}
65
- criteria[:fields] = {:unit => fields} if fields
66
-
67
- pulp_units_batch(criteria, page_size) do
68
- Katello.pulp_server.resources.repository.unit_search(repository.pulp_id, criteria).pluck(:metadata)
69
- end
70
- end
71
-
72
- def self.pulp_units_batch(criteria, page_size = Setting[:bulk_load_size], &block)
73
- response = {}
74
- Enumerator.new do |yielder|
75
- loop do
76
- break if (response.blank? && criteria[:skip] != 0)
77
- response = block.call
78
- yielder.yield response
79
- criteria[:skip] += page_size
80
- end
81
- end
82
- end
83
-
84
- def self.fetch_all
85
- count = 0
86
- results = []
87
- sub_list = fetch(0, Setting[:bulk_load_size])
88
-
89
- until sub_list.empty? #we can't know how many there are, so we have to keep looping until we get nothing
90
- count += sub_list.count
91
- if block_given?
92
- value = yield(sub_list)
93
- value.is_a?(Array) ? results.concat(value) : results << value
94
- else
95
- results.concat(sub_list)
96
- end
97
-
98
- sub_list = fetch(count, Setting[:bulk_load_size])
99
- end
100
- results
101
- end
102
-
103
- def self.fetch_by_uuids(uuids)
104
- results = []
105
- uuids.each_slice(Setting[:bulk_load_size]) do |sub_list|
106
- fetched = fetch(0, sub_list.length, sub_list)
107
- if block_given?
108
- value = yield(fetched)
109
- value.is_a?(Array) ? results.concat(value) : results << value
110
- else
111
- results.concat(fetched)
112
- end
113
- end
114
- results
115
- end
116
-
117
- def self.ids_for_repository(repo_id)
118
- criteria = {:type_ids => [const_get(:CONTENT_TYPE)],
119
- :fields => {:unit => [], :association => ['unit_id']}}
120
- Katello.pulp_server.resources.repository.unit_search(repo_id, criteria).map { |i| i['unit_id'] }
121
- end
122
-
123
- def self.fetch_for_repository(repo_id)
124
- ids = ids_for_repository(repo_id)
125
- fetch(0, ids.count, ids)
126
- end
127
-
128
- def self.fetch(offset, page_size, uuids = nil)
129
- fields = self.const_get(:PULP_INDEXED_FIELDS) if self.constants.include?(:PULP_INDEXED_FIELDS)
130
- criteria = {:limit => page_size, :skip => offset}
131
- criteria[:fields] = fields if fields
132
- criteria[:filters] = {'_id' => {'$in' => uuids}} if uuids
133
- Katello.pulp_server.resources.unit.search(self::CONTENT_TYPE, criteria, :include_repos => true)
134
- end
135
-
136
- def backend_data
137
- @backend_data ||= fetch_backend_data
138
- @backend_data.try(:with_indifferent_access)
139
- end
140
-
141
- def fetch_backend_data
142
- self.class.pulp_data(self.uuid)
143
- end
144
-
145
- def self.remove(repo, uuids = nil)
146
- fields = self.const_get(:PULP_SELECT_FIELDS) if self.constants.include?(:PULP_SELECT_FIELDS)
147
- clauses = {:association => {'unit_id' => {'$in' => uuids}}}
148
- clause = { type_ids: [const_get(:CONTENT_TYPE)]}
149
- clause = clause.merge(filters: clauses) if uuids
150
- clause = clause.merge(fields: { :unit => fields}) if fields
151
- Katello.pulp_server.resources.repository.unassociate_units(repo.pulp_id,
152
- clause)
153
- end
154
- end
155
- end
156
- end
@@ -1,57 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class Rpm < PulpContentUnit
4
- include LazyAccessor
5
-
6
- PULP_SELECT_FIELDS = %w(name epoch version release arch checksumtype checksum).freeze
7
- PULP_INDEXED_FIELDS = %w(name version release arch epoch summary sourcerpm checksum filename is_modular).freeze
8
- CONTENT_TYPE = "rpm".freeze
9
-
10
- lazy_accessor :description, :license, :buildhost, :vendor, :relativepath, :children, :checksumtype,
11
- :changelog, :group, :size, :url, :build_time, :group,
12
- :initializer => :backend_data
13
-
14
- def requires
15
- if backend_data['requires']
16
- backend_data['requires'].map { |entry| Katello::Util::Package.format_requires(entry) }.uniq.sort
17
- else
18
- []
19
- end
20
- end
21
-
22
- def provides
23
- if backend_data['provides']
24
- backend_data['provides'].map { |entry| Katello::Util::Package.build_nvrea(entry, false) }.uniq.sort
25
- else
26
- []
27
- end
28
- end
29
-
30
- def files
31
- result = []
32
- if backend_data['files']
33
- if backend_data['files']['file']
34
- result << backend_data['files']['file']
35
- end
36
- if backend_data['files']['dir']
37
- result << backend_data['files']['dir']
38
- end
39
- end
40
- result.flatten
41
- end
42
-
43
- def update_model(model)
44
- keys = PULP_INDEXED_FIELDS - ['_id', 'is_modular']
45
- data = backend_data.slice(*keys)
46
- data['modular'] = backend_data['is_modular'] == true
47
- if data.any? { |name, value| model.send(name) != value }
48
- data[:release_sortable] = Util::Package.sortable_version(data[:release])
49
- data[:version_sortable] = Util::Package.sortable_version(data[:version])
50
- model.assign_attributes(data)
51
- model.nvra = model.build_nvra
52
- model.save!
53
- end
54
- end
55
- end
56
- end
57
- end
@@ -1,29 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class Srpm < PulpContentUnit
4
- include LazyAccessor
5
-
6
- PULP_SELECT_FIELDS = %w(name epoch version release arch checksumtype checksum).freeze
7
- PULP_INDEXED_FIELDS = %w(name version release arch epoch summary checksum filename).freeze
8
- CONTENT_TYPE = "srpm".freeze
9
-
10
- lazy_accessor :pulp_facts, :initializer => :backend_data
11
-
12
- lazy_accessor :description, :license, :buildhost, :vendor, :relativepath, :children, :checksumtype,
13
- :changelog, :group, :size, :url, :build_time, :group,
14
- :initializer => :pulp_facts
15
-
16
- def update_model(model)
17
- keys = Pulp::Srpm::PULP_INDEXED_FIELDS - ['_id']
18
- custom_json = backend_data.slice(*keys)
19
- if custom_json.any? { |name, value| model.send(name) != value }
20
- custom_json[:release_sortable] = Util::Package.sortable_version(custom_json[:release])
21
- custom_json[:version_sortable] = Util::Package.sortable_version(custom_json[:version])
22
- model.assign_attributes(custom_json)
23
- model.nvra = model.build_nvra
24
- model.save!
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,30 +0,0 @@
1
- module Katello
2
- module Pulp
3
- class YumMetadataFile < PulpContentUnit
4
- CONTENT_TYPE = "yum_repo_metadata_file".freeze
5
-
6
- def update_model(model)
7
- shared_attributes = backend_data.keys & model.class.column_names
8
- shared_json = backend_data.select { |key, _v| shared_attributes.include?(key) }
9
- repo = ::Katello::Repository.find_by(:pulp_id => backend_data['repo_id']).try(:id)
10
- filename = find_name_from_json(backend_data)
11
- model.update!(shared_json.merge(repository_id: repo, name: filename))
12
- if repo
13
- Katello::YumMetadataFile.where("id != ? AND repository_id = ? AND name = ? AND checksum = ?",
14
- model.id, repo, filename, model.checksum).delete_all
15
- end
16
- end
17
-
18
- def find_name_from_json(json)
19
- # get the name of the metadata file.
20
- # Notice that pulp does not have a way to get name of the metadata file
21
- # so we infer it from the _storage_path
22
- # for example from the following storage path
23
- # "/var/lib/pulp/content/units/yum_repo_metadata_file/..../050-productid.gz"
24
- # we find the right most '/' and return everything after that
25
- # i.e -> "050-productid.gz"
26
- File.basename(json["_storage_path"])
27
- end
28
- end
29
- end
30
- end
@@ -1,17 +0,0 @@
1
- require 'pulp_rpm_client'
2
-
3
- unless PulpRpmClient.const_defined?('OneOfMetadataChecksumTypeEnumNullEnum')
4
- class PulpRpmClient::OneOfMetadataChecksumTypeEnumNullEnum
5
- def self.build_from_hash(value)
6
- value
7
- end
8
- end
9
- end
10
-
11
- unless PulpRpmClient.const_defined?('OneOfPackageChecksumTypeEnumNullEnum')
12
- class PulpRpmClient::OneOfPackageChecksumTypeEnumNullEnum
13
- def self.build_from_hash(value)
14
- value
15
- end
16
- end
17
- end
@@ -1,2 +0,0 @@
1
- // eslint-disable-next-line import/prefer-default-export
2
- export const usePaginationOptions = () => [5, 10, 20, 50];
@@ -1,2 +0,0 @@
1
- const PaginationWrapper = () => jest.fn();
2
- export default PaginationWrapper;