katello 4.5.0 → 4.6.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 (458) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +10 -0
  3. data/app/controllers/katello/api/v2/activation_keys_controller.rb +7 -0
  4. data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +52 -22
  5. data/app/controllers/katello/api/v2/content_exports_controller.rb +33 -3
  6. data/app/controllers/katello/api/v2/content_uploads_controller.rb +2 -0
  7. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  8. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  9. data/app/controllers/katello/api/v2/debs_controller.rb +42 -10
  10. data/app/controllers/katello/api/v2/host_collections_controller.rb +5 -1
  11. data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -0
  12. data/app/controllers/katello/api/v2/host_module_streams_controller.rb +9 -1
  13. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +8 -1
  14. data/app/controllers/katello/api/v2/organizations_controller.rb +3 -1
  15. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +8 -0
  16. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +34 -11
  17. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +7 -16
  18. data/app/lib/actions/katello/alternate_content_source/alternate_content_source_common.rb +16 -0
  19. data/app/lib/actions/katello/alternate_content_source/create.rb +11 -5
  20. data/app/lib/actions/katello/alternate_content_source/destroy.rb +3 -4
  21. data/app/lib/actions/katello/alternate_content_source/refresh.rb +3 -5
  22. data/app/lib/actions/katello/alternate_content_source/update.rb +57 -13
  23. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +2 -2
  24. data/app/lib/actions/katello/content_view/promote_to_environment.rb +4 -2
  25. data/app/lib/actions/katello/content_view/publish.rb +5 -2
  26. data/app/lib/actions/katello/organization/environment_contents_refresh.rb +20 -0
  27. data/app/lib/actions/katello/organization/manifest_refresh.rb +10 -4
  28. data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +1 -9
  29. data/app/lib/actions/katello/repository/create.rb +9 -0
  30. data/app/lib/actions/katello/repository/destroy.rb +21 -0
  31. data/app/lib/actions/katello/repository/errata_mail.rb +3 -3
  32. data/app/lib/actions/katello/repository/refresh_repository.rb +3 -0
  33. data/app/lib/actions/katello/repository/update.rb +33 -0
  34. data/app/lib/actions/katello/repository/update_redhat_repository.rb +1 -1
  35. data/app/lib/actions/pulp3/alternate_content_source/create.rb +5 -4
  36. data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +5 -4
  37. data/app/lib/actions/pulp3/alternate_content_source/delete.rb +4 -4
  38. data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +4 -4
  39. data/app/lib/actions/pulp3/alternate_content_source/refresh.rb +4 -4
  40. data/app/lib/actions/pulp3/alternate_content_source/update.rb +4 -4
  41. data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +5 -5
  42. data/app/lib/actions/pulp3/capsule_content/reclaim_space.rb +1 -0
  43. data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +3 -1
  44. data/app/lib/actions/pulp3/content_view_version/create_exporter.rb +9 -2
  45. data/app/lib/actions/pulp3/content_view_version/create_syncable_export_history.rb +45 -0
  46. data/app/lib/actions/pulp3/content_view_version/destroy_exporter.rb +6 -1
  47. data/app/lib/actions/pulp3/content_view_version/export.rb +8 -3
  48. data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +3 -3
  49. data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +6 -7
  50. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +2 -2
  51. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh_remote.rb +18 -0
  52. data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +3 -3
  53. data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +28 -13
  54. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +4 -2
  55. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +4 -2
  56. data/app/lib/actions/pulp3/orchestration/content_view_version/syncable_export.rb +82 -0
  57. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
  58. data/app/lib/katello/concerns/base_template_scope_extensions.rb +1 -1
  59. data/app/lib/katello/errors.rb +1 -1
  60. data/app/lib/katello/resources/candlepin/owner.rb +9 -2
  61. data/app/lib/katello/validators/alternate_content_source_products_validator.rb +17 -0
  62. data/app/models/katello/alternate_content_source.rb +39 -8
  63. data/app/models/katello/alternate_content_source_product.rb +13 -0
  64. data/app/models/katello/concerns/host_managed_extensions.rb +13 -2
  65. data/app/models/katello/concerns/pulp_database_unit.rb +2 -2
  66. data/app/models/katello/concerns/smart_proxy_extensions.rb +5 -6
  67. data/app/models/katello/content_view.rb +41 -29
  68. data/app/models/katello/content_view_deb_filter.rb +51 -0
  69. data/app/models/katello/content_view_deb_filter_rule.rb +24 -0
  70. data/app/models/katello/content_view_filter.rb +10 -3
  71. data/app/models/katello/glue/candlepin/owner.rb +0 -1
  72. data/app/models/katello/installed_package.rb +1 -0
  73. data/app/models/katello/product.rb +3 -0
  74. data/app/models/katello/repository.rb +2 -0
  75. data/app/models/katello/smart_proxy_alternate_content_source.rb +6 -0
  76. data/app/services/cert/certs.rb +8 -16
  77. data/app/services/katello/organization_creator.rb +18 -7
  78. data/app/services/katello/pulp/server.rb +2 -2
  79. data/app/services/katello/pulp3/alternate_content_source.rb +22 -4
  80. data/app/services/katello/pulp3/api/apt.rb +12 -0
  81. data/app/services/katello/pulp3/api/core.rb +8 -0
  82. data/app/services/katello/pulp3/content_view_version/export.rb +38 -11
  83. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +3 -1
  84. data/app/services/katello/pulp3/content_view_version/syncable_format_export.rb +34 -0
  85. data/app/services/katello/pulp3/deb.rb +3 -1
  86. data/app/services/katello/pulp3/pulp_content_unit.rb +2 -0
  87. data/app/services/katello/pulp3/repository/apt.rb +186 -2
  88. data/app/services/katello/pulp3/repository.rb +4 -3
  89. data/app/services/katello/pulp3/service_common.rb +1 -1
  90. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
  91. data/app/views/foreman/smart_proxies/show.html.erb +3 -3
  92. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +18 -3
  93. data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +20 -0
  94. data/app/views/katello/api/v2/ansible_collections/compare.json.rabl +10 -0
  95. data/app/views/katello/api/v2/content_view_filters/base.json.rabl +5 -0
  96. data/app/views/katello/api/v2/module_streams/compare.json.rabl +10 -0
  97. data/app/views/katello/api/v2/repository_sets/show.json.rabl +4 -0
  98. data/app/views/katello/layouts/foreman_with_bastion.html.erb +1 -1
  99. data/app/views/katello/layouts/react.html.erb +1 -1
  100. data/app/views/overrides/organizations/_edit_override.html.erb +5 -8
  101. data/app/views/overrides/organizations/_index_row_override.html.erb +1 -1
  102. data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
  103. data/ca/redhat-uep.pem +18 -23
  104. data/config/katello.yaml.example +0 -2
  105. data/config/routes/api/v2.rb +2 -0
  106. data/config/routes/overrides.rb +1 -0
  107. data/db/migrate/20201116161820_create_content_view_deb_filter_rules.rb +17 -0
  108. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +11 -9
  109. data/db/migrate/20220524132259_remove_last_refreshed_from_katello_alternate_content_sources.rb +5 -0
  110. data/db/migrate/20220601163911_add_vendor_to_katello_installed_packages.rb +5 -0
  111. data/db/migrate/20220610165621_add_repositories_and_products_to_acs.rb +23 -0
  112. data/engines/bastion/app/views/bastion/layouts/application.html.erb +1 -1
  113. data/engines/bastion/app/views/bastion/layouts/application_ie.html.erb +1 -1
  114. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -1
  115. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +2 -0
  116. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +2 -0
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +3 -3
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -5
  121. data/engines/bastion_katello/lib/bastion_katello/engine.rb +0 -1
  122. data/lib/katello/engine.rb +1 -2
  123. data/lib/katello/permission_creator.rb +2 -2
  124. data/lib/katello/permissions/host_permissions.rb +1 -0
  125. data/lib/katello/plugin.rb +6 -12
  126. data/lib/katello/version.rb +1 -1
  127. data/locale/action_names.rb +49 -46
  128. data/locale/bn/katello.po +361 -53
  129. data/locale/cs/katello.po +361 -53
  130. data/locale/de/katello.po +366 -58
  131. data/locale/en/katello.po +361 -53
  132. data/locale/es/katello.po +364 -56
  133. data/locale/fr/katello.po +374 -66
  134. data/locale/gu/katello.po +361 -53
  135. data/locale/hi/katello.po +361 -53
  136. data/locale/it/katello.po +361 -53
  137. data/locale/ja/katello.po +374 -66
  138. data/locale/katello.pot +1626 -1079
  139. data/locale/kn/katello.po +361 -53
  140. data/locale/ko/katello.po +361 -53
  141. data/locale/mr/katello.po +361 -53
  142. data/locale/or/katello.po +361 -53
  143. data/locale/pa/katello.po +361 -53
  144. data/locale/pt/katello.po +361 -53
  145. data/locale/pt_BR/katello.po +364 -56
  146. data/locale/ru/katello.po +361 -53
  147. data/locale/ta/katello.po +361 -53
  148. data/locale/te/katello.po +361 -53
  149. data/locale/zh_CN/katello.po +374 -66
  150. data/locale/zh_TW/katello.po +361 -53
  151. data/webpack/components/EditableTextInput/EditableTextInput.js +3 -16
  152. data/webpack/components/EditableTextInput/PencilEditButton.js +33 -0
  153. data/webpack/components/Errata/index.js +18 -3
  154. data/webpack/components/Loading.js +1 -1
  155. data/webpack/components/RoutedTabs/index.js +1 -17
  156. data/webpack/components/Search/Search.js +0 -1
  157. data/webpack/components/Search/__tests__/search.test.js +1 -2
  158. data/webpack/components/SelectAllCheckbox/index.js +7 -4
  159. data/webpack/components/SelectableDropdown/SelectableDropdown.js +1 -0
  160. data/webpack/components/Table/EmptyStateMessage.js +77 -2
  161. data/webpack/components/Table/MainTable.js +46 -4
  162. data/webpack/components/Table/TableHooks.js +8 -4
  163. data/webpack/components/Table/TableWrapper.js +14 -8
  164. data/webpack/components/TypeAhead/TypeAhead.js +26 -11
  165. data/webpack/components/TypeAhead/pf3Search/TypeAheadItems.js +1 -1
  166. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +1 -0
  167. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +2 -1
  168. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +9 -4
  169. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeActions.js +37 -0
  170. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +173 -0
  171. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +6 -0
  172. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeConstants.js +6 -0
  173. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +301 -0
  174. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeSelectors.js +25 -0
  175. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +108 -0
  176. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +161 -0
  177. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +12 -12
  178. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +100 -0
  179. data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +26 -4
  180. data/webpack/components/extensions/HostDetails/HostDetailsConstants.js +3 -1
  181. data/webpack/components/extensions/HostDetails/HostDetailsReducer.js +14 -0
  182. data/webpack/components/extensions/HostDetails/HostDetailsSelectors.js +8 -2
  183. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +9 -1
  184. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +23 -8
  185. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +11 -9
  186. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +58 -8
  187. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +2 -0
  188. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +30 -3
  189. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +3 -0
  190. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +48 -20
  191. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +1 -10
  192. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +1 -1
  193. data/webpack/components/extensions/RegistrationCommands/index.js +49 -17
  194. data/webpack/containers/Application/config.js +5 -10
  195. data/webpack/global_index.js +19 -7
  196. data/webpack/global_test_setup.js +14 -2
  197. data/webpack/ouia_id_check.js +95 -0
  198. data/webpack/redux/actions/RedHatRepositories/helpers.js +2 -0
  199. data/webpack/redux/reducers/index.js +2 -4
  200. data/webpack/scenes/AlternateContentSources/ACSActions.js +36 -3
  201. data/webpack/scenes/AlternateContentSources/ACSConstants.js +3 -0
  202. data/webpack/scenes/AlternateContentSources/ACSSelectors.js +15 -6
  203. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +73 -42
  204. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +26 -10
  205. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSProducts.js +44 -0
  206. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +59 -45
  207. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +4 -3
  208. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +0 -1
  209. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +35 -19
  210. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +120 -13
  211. data/webpack/scenes/AlternateContentSources/Create/__tests__/products.fixtures.json +92 -0
  212. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +459 -0
  213. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +354 -0
  214. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +104 -0
  215. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +120 -0
  216. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +118 -0
  217. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +118 -0
  218. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +242 -0
  219. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +106 -0
  220. data/webpack/scenes/AlternateContentSources/Details/__tests__/acsDetails.fixtures.json +49 -0
  221. data/webpack/scenes/AlternateContentSources/Details/__tests__/acsProducts.fixtures.json +95 -0
  222. data/webpack/scenes/AlternateContentSources/Details/__tests__/simplifiedAcsDetails.fixtures.json +39 -0
  223. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +215 -87
  224. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.scss +3 -0
  225. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +1 -2
  226. data/webpack/scenes/Content/__tests__/contentTable.test.js +1 -2
  227. data/webpack/scenes/ContentViews/ContentViewsConstants.js +15 -4
  228. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +1 -2
  229. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -0
  230. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -2
  231. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +113 -0
  232. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +89 -0
  233. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +32 -9
  234. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +13 -3
  235. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +39 -27
  236. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +236 -0
  237. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +1 -0
  238. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +10 -0
  239. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +3 -0
  240. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +3 -1
  241. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +17 -4
  242. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +1 -0
  243. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +34 -22
  244. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +97 -0
  245. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +1 -2
  246. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +128 -0
  247. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +56 -3
  248. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +62 -8
  249. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +1 -5
  250. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +1 -2
  251. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +32 -2
  252. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +1 -2
  253. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +1 -2
  254. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVContainerImageFilterContent.fixtures.json +13 -0
  255. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVPackageFilterRules.fixtures.json +13 -0
  256. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyContentViewFilters.fixtures.json +13 -0
  257. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
  258. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +5 -1
  259. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +1 -2
  260. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +3 -0
  261. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.js +143 -0
  262. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +51 -0
  263. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +314 -0
  264. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +186 -0
  265. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +74 -0
  266. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/AnsibleCollectionsCompareAllContentData.fixtures.json +63 -0
  267. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js +657 -0
  268. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionEmptyContentCompareData.fixtures.json +14 -0
  269. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ContainerTagsCompareAllContentData.fixtures.json +95 -0
  270. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/DebPackagesCompareAllContentData.fixtures.json +87 -0
  271. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareAllContentData.fixtures.json +319 -0
  272. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareThreeContentTypesData.fixtures.json +131 -0
  273. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareAllContentData.fixtures.json +51 -0
  274. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareThreeContentTypesData.fixtures.json +48 -0
  275. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ModuleStreamsCompareAllContentData.fixtures.json +239 -0
  276. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PackageGroupsCompareAllContentData.fixtures.json +51 -0
  277. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PythonPackagesCompareAllContentData.fixtures.json +315 -0
  278. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareAllContentData.fixtures.json +470 -0
  279. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareThreeContentTypesData.fixtures.json +475 -0
  280. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewDetails.fixtures.json +160 -0
  281. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +161 -0
  282. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +154 -0
  283. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +211 -0
  284. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +1013 -0
  285. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +145 -0
  286. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +145 -0
  287. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +102 -36
  288. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +1 -2
  289. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +4 -2
  290. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +1 -2
  291. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +1 -2
  292. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +113 -40
  293. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +96 -81
  294. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -2
  295. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +7 -2
  296. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +1 -1
  297. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +0 -30
  298. data/webpack/test-utils/nockWrapper.js +7 -0
  299. metadata +82 -167
  300. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +0 -34
  301. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +0 -751
  302. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-deletion.controller.js +0 -42
  303. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +0 -81
  304. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-confirm.controller.js +0 -65
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +0 -82
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-environments.controller.js +0 -76
  307. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion.controller.js +0 -160
  308. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html +0 -58
  309. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html +0 -94
  310. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-confirm.html +0 -76
  311. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-content-hosts.html +0 -88
  312. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html +0 -73
  313. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-component.factory.js +0 -32
  314. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +0 -75
  315. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +0 -68
  316. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +0 -81
  317. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +0 -81
  318. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite.html +0 -24
  319. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-deb-repositories.controller.js +0 -50
  320. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +0 -42
  321. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-file-repositories.controller.js +0 -50
  322. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +0 -42
  323. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-repositories.controller.js +0 -45
  324. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-deb-repositories-list.controller.js +0 -48
  325. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +0 -100
  326. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +0 -49
  327. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-file-repositories-list.controller.js +0 -48
  328. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +0 -49
  329. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +0 -129
  330. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +0 -46
  331. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories-list.controller.js +0 -42
  332. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories.service.js +0 -91
  333. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +0 -240
  334. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +0 -115
  335. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-module-stream-filter.controller.js +0 -68
  336. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +0 -66
  337. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +0 -77
  338. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/docker-tag-filter.controller.js +0 -137
  339. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/edit-filter.controller.js +0 -36
  340. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +0 -78
  341. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter.controller.js +0 -74
  342. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-content-type.filter.js +0 -21
  343. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-details.controller.js +0 -34
  344. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-helper.service.js +0 -30
  345. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +0 -86
  346. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-rule-matching-package-modal.controller.js +0 -37
  347. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-type.filter.js +0 -21
  348. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter.factory.js +0 -66
  349. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +0 -85
  350. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/module-stream-list-filter.controller.js +0 -73
  351. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +0 -100
  352. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +0 -179
  353. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +0 -75
  354. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/rule.factory.js +0 -21
  355. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata-filter.html +0 -9
  356. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata.html +0 -75
  357. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-filter.html +0 -28
  358. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-tag-filter-details.html +0 -65
  359. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/edit-filter.html +0 -19
  360. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter-details.html +0 -63
  361. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter.html +0 -50
  362. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-details.html +0 -9
  363. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-repositories.html +0 -121
  364. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-rule-matching-package-modal.html +0 -43
  365. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +0 -85
  366. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter-details.html +0 -58
  367. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter.html +0 -43
  368. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/new-filter.html +0 -62
  369. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +0 -182
  370. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter.html +0 -28
  371. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html +0 -42
  372. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter.html +0 -43
  373. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/partials/filter-repositories-count.html +0 -2
  374. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +0 -47
  375. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.factory.js +0 -22
  376. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/views/content-view-history.html +0 -36
  377. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-copy.html +0 -20
  378. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-deb-repositories.html +0 -87
  379. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details-tasks.html +0 -4
  380. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +0 -144
  381. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-docker-repositories.html +0 -114
  382. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-file-repositories.html +0 -87
  383. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +0 -63
  384. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-ostree-repositories.html +0 -87
  385. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +0 -59
  386. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +0 -58
  387. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-repositories.html +0 -116
  388. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -126
  389. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +0 -78
  390. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +0 -127
  391. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +0 -138
  392. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.controller.js +0 -59
  393. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-apt.html +0 -25
  394. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-components.html +0 -19
  395. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-deb.html +0 -19
  396. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-details.html +0 -15
  397. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-docker.html +0 -23
  398. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-errata.html +0 -48
  399. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-file.html +0 -21
  400. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-module-streams.html +0 -8
  401. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-package-groups.html +0 -21
  402. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-packages.html +0 -27
  403. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +0 -42
  404. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +0 -83
  405. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +0 -74
  406. data/lib/katello/tasks/reset.rake.bak +0 -67
  407. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  408. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  409. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  410. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  411. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  412. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  413. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  414. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  415. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  416. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  417. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  418. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  419. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  420. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  421. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  422. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  423. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  424. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  425. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  426. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  427. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  428. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  429. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsActions.js +0 -30
  430. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsConstants.js +0 -3
  431. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsPage.js +0 -80
  432. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +0 -39
  433. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +0 -60
  434. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTables.scss +0 -0
  435. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetails.js +0 -94
  436. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsActions.js +0 -23
  437. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsConstants.js +0 -3
  438. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +0 -30
  439. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionsSchema.js +0 -35
  440. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailInfo.test.js +0 -16
  441. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.fixtures.js +0 -25
  442. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -27
  443. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsActions.test.js +0 -41
  444. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsReducer.test.js +0 -33
  445. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailInfo.test.js.snap +0 -83
  446. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetails.test.js.snap +0 -190
  447. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsActions.test.js.snap +0 -58
  448. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsReducer.test.js.snap +0 -50
  449. data/webpack/scenes/AnsibleCollections/Details/index.js +0 -17
  450. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -23
  451. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollections.fixtures.js +0 -52
  452. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsActions.test.js +0 -48
  453. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsReducer.test.js +0 -46
  454. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -25
  455. data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionPage.test.js.snap +0 -73
  456. data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionsTable.test.js.snap +0 -81
  457. data/webpack/scenes/AnsibleCollections/index.js +0 -17
  458. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +0 -123
@@ -204,7 +204,16 @@ module Katello
204
204
 
205
205
  def import_package_profile_in_bulk(simple_packages)
206
206
  nvreas = simple_packages.map { |sp| sp.nvrea }
207
- found = InstalledPackage.where(:nvrea => nvreas).select(:id, :nvrea).to_a
207
+ found_nvrea = InstalledPackage.where(:nvrea => nvreas)
208
+ nil_vendor_installed_packages = found_nvrea.where(vendor: nil)
209
+ unless nil_vendor_installed_packages.blank?
210
+ packages_to_update = simple_packages.select { |sp| !sp.vendor.blank? && nil_vendor_installed_packages&.map(&:nvrea)&.include?(sp.nvrea) }
211
+ packages_to_update.each do |simple_package|
212
+ nil_vendor_installed_packages.where(nvrea: simple_package.nvrea).update(vendor: simple_package.vendor)
213
+ end
214
+ end
215
+
216
+ found = found_nvrea.select(:id, :nvrea).to_a
208
217
  found_nvreas = found.map(&:nvrea)
209
218
 
210
219
  new_packages = simple_packages.select { |sp| !found_nvreas.include?(sp.nvrea) }
@@ -217,7 +226,8 @@ module Katello
217
226
  :epoch => simple_package.epoch,
218
227
  :version => simple_package.version,
219
228
  :release => simple_package.release,
220
- :arch => simple_package.arch)
229
+ :arch => simple_package.arch,
230
+ :vendor => simple_package.vendor)
221
231
  end
222
232
  InstalledPackage.import(installed_packages, validate: false, on_duplicate_key_ignore: true)
223
233
  #re-lookup all imported to pickup any duplicates/conflicts
@@ -246,6 +256,7 @@ module Katello
246
256
  streams = {}
247
257
  module_streams.each do |module_stream|
248
258
  stream = AvailableModuleStream.where(name: module_stream["name"],
259
+ context: module_stream["context"],
249
260
  stream: module_stream["stream"]).first_or_create!
250
261
  streams[stream.id] = module_stream
251
262
  end
@@ -156,8 +156,8 @@ module Katello
156
156
  end
157
157
 
158
158
  self.joins(repository_association_units).
159
- where(repository_association_class.table_name => {:repository_id => facet_repos,
160
- content_unit_association_id => facet_content_units}).distinct
159
+ where(repository_association_class.table_name => { :repository_id => facet_repos,
160
+ content_unit_association_id => facet_content_units }).distinct
161
161
  end
162
162
 
163
163
  def with_identifiers(ids)
@@ -57,6 +57,7 @@ module Katello
57
57
  has_many :hostgroup_content_facets, :class_name => "::Katello::Hostgroup::ContentFacet", :foreign_key => :content_source_id,
58
58
  :inverse_of => :content_source, :dependent => :nullify
59
59
  has_many :hostgroups, :class_name => "::Hostgroup", :through => :hostgroup_content_facets
60
+ has_many :smart_proxy_alternate_content_sources, :class_name => "::Katello::SmartProxyAlternateContentSource", :inverse_of => :smart_proxy, :dependent => :delete_all
60
61
 
61
62
  validates :download_policy, inclusion: {
62
63
  :in => DOWNLOAD_POLICIES,
@@ -188,14 +189,12 @@ module Katello
188
189
  end
189
190
 
190
191
  def pulp3_ssl_configuration(config, connection_adapter = Faraday.default_adapter)
191
- legacy_pulp_cert = !self.setting(PULP3_FEATURE, 'client_authentication')&.include?('client_certificate')
192
-
193
192
  if connection_adapter == :excon
194
- config.ssl_client_cert = ::Cert::Certs.ssl_client_cert_filename(use_admin_as_cn_cert: legacy_pulp_cert)
195
- config.ssl_client_key = ::Cert::Certs.ssl_client_key_filename(use_admin_as_cn_cert: legacy_pulp_cert)
193
+ config.ssl_client_cert = ::Cert::Certs.ssl_client_cert_filename
194
+ config.ssl_client_key = ::Cert::Certs.ssl_client_key_filename
196
195
  elsif connection_adapter == :net_http
197
- config.ssl_client_cert = ::Cert::Certs.ssl_client_cert(use_admin_as_cn_cert: legacy_pulp_cert)
198
- config.ssl_client_key = ::Cert::Certs.ssl_client_key(use_admin_as_cn_cert: legacy_pulp_cert)
196
+ config.ssl_client_cert = ::Cert::Certs.ssl_client_cert
197
+ config.ssl_client_key = ::Cert::Certs.ssl_client_key
199
198
  else
200
199
  fail "Unexpected connection_adapter #{Faraday.default_adapter}! Cannot continue, this is likely a bug."
201
200
  end
@@ -33,49 +33,50 @@ module Katello
33
33
  has_many :content_view_repositories, :class_name => 'Katello::ContentViewRepository',
34
34
  :dependent => :destroy, :inverse_of => :content_view
35
35
  has_many :repositories, :through => :content_view_repositories, :class_name => "Katello::Repository",
36
- :after_remove => :remove_repository
36
+ :after_remove => :remove_repository
37
37
 
38
38
  has_many :filters, :dependent => :destroy, :class_name => "Katello::ContentViewFilter"
39
39
 
40
40
  has_many :activation_keys, :class_name => "Katello::ActivationKey", :dependent => :restrict_with_exception
41
41
 
42
42
  has_many :content_facets, :class_name => "Katello::Host::ContentFacet",
43
- :inverse_of => :content_view, :dependent => :restrict_with_exception
44
- has_many :hosts, :class_name => "::Host::Managed", :through => :content_facets,
45
- :inverse_of => :content_view
43
+ :inverse_of => :content_view, :dependent => :restrict_with_exception
44
+ has_many :hosts, :class_name => "::Host::Managed", :through => :content_facets,
45
+ :inverse_of => :content_view
46
46
  has_many :hostgroup_content_facets, :class_name => "Katello::Hostgroup::ContentFacet",
47
- :inverse_of => :content_view, :dependent => :nullify
47
+ :inverse_of => :content_view, :dependent => :nullify
48
48
  has_many :hostgroups, :class_name => "::Hostgroup", :through => :hostgroup_content_facets,
49
- :inverse_of => :content_view
49
+ :inverse_of => :content_view
50
50
 
51
51
  has_many :repository_references, :class_name => 'Katello::Pulp3::RepositoryReference',
52
52
  :dependent => :destroy, :inverse_of => :content_view
53
53
 
54
54
  validates_lengths_from_database :except => [:label]
55
- validates :label, :uniqueness => {:scope => :organization_id},
56
- :presence => true
57
- validates :name, :presence => true, :uniqueness => {:scope => :organization_id}
55
+ validates :label, :uniqueness => { :scope => :organization_id },
56
+ :presence => true
57
+ validates :name, :presence => true, :uniqueness => { :scope => :organization_id }
58
58
  validates :organization_id, :presence => true
59
59
  validate :check_non_composite_components
60
60
  validate :check_docker_conflicts
61
61
  validate :check_non_composite_auto_publish
62
+ validate :check_default_label_name, if: :default?
62
63
  validates :composite, :inclusion => [true, false]
63
64
  validates :composite,
64
- inclusion: { in: [false], message: "Composite Content Views can not solve dependencies"},
65
+ inclusion: { in: [false], message: "Composite Content Views can not solve dependencies" },
65
66
  if: :solve_dependencies
66
67
  validates :import_only, :inclusion => [true, false]
67
68
  validates :import_only,
68
- inclusion: { in: [false], message: "Import-only Content Views can not be Composite"},
69
+ inclusion: { in: [false], message: "Import-only Content Views can not be Composite" },
69
70
  if: :composite
70
71
  validates :import_only,
71
- inclusion: { in: [false], message: "Import-only Content Views can not solve dependencies"},
72
+ inclusion: { in: [false], message: "Import-only Content Views can not solve dependencies" },
72
73
  if: :solve_dependencies
73
74
  validate :import_only_immutable
74
75
  validates :generated_for,
75
- exclusion: { in: [:none], message: "Generated Content Views can not be Composite"},
76
+ exclusion: { in: [:none], message: "Generated Content Views can not be Composite" },
76
77
  if: :composite
77
78
  validates :generated_for,
78
- exclusion: { in: [:none], message: "Generated Content Views can not solve dependencies"},
79
+ exclusion: { in: [:none], message: "Generated Content Views can not solve dependencies" },
79
80
  if: :solve_dependencies
80
81
 
81
82
  validates_with Validators::KatelloNameFormatValidator, :attributes => :name
@@ -203,6 +204,10 @@ module Katello
203
204
  new_view.filters << new_filter
204
205
 
205
206
  case filter.type
207
+ when ContentViewDebFilter.name
208
+ filter.deb_rules.each do |rule|
209
+ new_filter.deb_rules << rule.dup
210
+ end
206
211
  when ContentViewPackageFilter.name
207
212
  filter.package_rules.each do |rule|
208
213
  new_filter.package_rules << rule.dup
@@ -279,6 +284,7 @@ module Katello
279
284
  required :env, 'Katello::KTEnvironment', desc: 'a __Katello::KTEnvironment__ object for which we load the __Katello::ContentViewVersion__ object'
280
285
  returns 'Katello::ContentViewVersion'
281
286
  end
287
+
282
288
  def version(env)
283
289
  self.versions.in_environment(env).order("#{Katello::ContentViewVersion.table_name}.id ASC").readonly(false).last
284
290
  end
@@ -306,7 +312,7 @@ module Katello
306
312
 
307
313
  def history
308
314
  Katello::ContentViewHistory.joins(:content_view_version).where(
309
- "#{Katello::ContentViewVersion.table_name}.content_view_id" => self.id)
315
+ "#{Katello::ContentViewVersion.table_name}.content_view_id" => self.id)
310
316
  end
311
317
 
312
318
  def version_environment(env)
@@ -387,7 +393,7 @@ module Katello
387
393
  end
388
394
 
389
395
  def auto_publish_components
390
- component_composites.where(latest: true).joins(:composite_content_view).where(self.class.table_name => {auto_publish: true})
396
+ component_composites.where(latest: true).joins(:composite_content_view).where(self.class.table_name => { auto_publish: true })
391
397
  end
392
398
 
393
399
  def publish_repositories(override_components = nil)
@@ -446,8 +452,8 @@ module Katello
446
452
  def get_repo_clone(env, repo)
447
453
  lib_id = repo.library_instance_id || repo.id
448
454
  Repository.in_environment(env).where(:library_instance_id => lib_id).
449
- joins(:content_view_version).
450
- where("#{Katello::ContentViewVersion.table_name}.content_view_id" => self.id)
455
+ joins(:content_view_version).
456
+ where("#{Katello::ContentViewVersion.table_name}.content_view_id" => self.id)
451
457
  end
452
458
 
453
459
  def delete(from_env)
@@ -497,9 +503,15 @@ module Katello
497
503
  end
498
504
  end
499
505
 
506
+ def check_default_label_name
507
+ if default? && !(name == 'Default Organization View' && label == 'Default_Organization_View')
508
+ errors.add(:base, _("Name and label of default content view should not be changed"))
509
+ end
510
+ end
511
+
500
512
  def check_docker_conflicts
501
513
  duplicate_docker_repos.each do |repo|
502
- msg = _("Container Image repo '%{repo}' is present in multiple component content views.") % {repo: repo.name}
514
+ msg = _("Container Image repo '%{repo}' is present in multiple component content views.") % { repo: repo.name }
503
515
  errors.add(:base, msg)
504
516
  end
505
517
  end
@@ -526,7 +538,7 @@ module Katello
526
538
  :environment_id => env.id,
527
539
  :content_view => self,
528
540
  :content_view_version => version
529
- )
541
+ )
530
542
  end
531
543
  end
532
544
 
@@ -555,7 +567,7 @@ module Katello
555
567
  :minor => minor,
556
568
  :content_view => self,
557
569
  :components => components
558
- )
570
+ )
559
571
 
560
572
  update(:next_version => major.to_i + 1) unless major.to_i < next_version
561
573
  version
@@ -626,14 +638,14 @@ module Katello
626
638
  def check_remove_from_environment!(env)
627
639
  errors = []
628
640
 
629
- dependencies = {hosts: _("hosts"),
630
- activation_keys: _("activation keys")
641
+ dependencies = { hosts: _("hosts"),
642
+ activation_keys: _("activation keys")
631
643
  }
632
644
 
633
645
  dependencies.each do |key, name|
634
646
  if (models = self.association(key).scope.in_environment(env)).any?
635
647
  errors << _("Cannot remove '%{view}' from environment '%{env}' due to associated %{dependent}: %{names}.") %
636
- {view: self.name, env: env.name, dependent: name, names: models.map(&:name).join(", ")}
648
+ { view: self.name, env: env.name, dependent: name, names: models.map(&:name).join(", ") }
637
649
  end
638
650
  end
639
651
 
@@ -644,15 +656,15 @@ module Katello
644
656
  def check_ready_to_destroy!
645
657
  errors = []
646
658
 
647
- dependencies = {environments: _("environments"),
648
- hosts: _("hosts"),
649
- activation_keys: _("activation keys")
659
+ dependencies = { environments: _("environments"),
660
+ hosts: _("hosts"),
661
+ activation_keys: _("activation keys")
650
662
  }
651
663
 
652
664
  dependencies.each do |key, name|
653
665
  if (models = self.association(key).scope).any?
654
666
  errors << _("Cannot delete '%{view}' due to associated %{dependent}: %{names}.") %
655
- {view: self.name, dependent: name, names: models.map(&:name).join(", ")}
667
+ { view: self.name, dependent: name, names: models.map(&:name).join(", ") }
656
668
  end
657
669
  end
658
670
 
@@ -700,7 +712,7 @@ module Katello
700
712
  def remove_repository(repository)
701
713
  filters.each do |filter_item|
702
714
  repo_exists = Repository.unscoped.joins(:filters).where(
703
- ContentViewFilter.table_name => {:id => filter_item.id}, :id => repository.id).count
715
+ ContentViewFilter.table_name => { :id => filter_item.id }, :id => repository.id).count
704
716
  if repo_exists
705
717
  filter_item.repositories.delete(repository)
706
718
  filter_item.save!
@@ -0,0 +1,51 @@
1
+ module Katello
2
+ class ContentViewDebFilter < ContentViewFilter
3
+ CONTENT_TYPE = Deb::CONTENT_TYPE
4
+
5
+ has_many :deb_rules, :dependent => :destroy, :foreign_key => :content_view_filter_id,
6
+ :class_name => "Katello::ContentViewDebFilterRule"
7
+ validates_lengths_from_database
8
+
9
+ def generate_clauses(repo)
10
+ package_filenames = []
11
+
12
+ self.deb_rules.each do |rule|
13
+ package_filenames.concat(query_debs(repo, rule))
14
+ end
15
+
16
+ ContentViewDebFilter.generate_deb_clauses(package_filenames)
17
+ end
18
+
19
+ def content_unit_pulp_ids(repo)
20
+ deb_filenames = []
21
+ self.deb_rules.each do |rule|
22
+ deb_filenames.concat(query_debs(repo, rule))
23
+ end
24
+ debs = Deb.in_repositories(repo)
25
+ debs.where(filename: deb_filenames).pluck(:pulp_id).flatten.uniq
26
+ end
27
+
28
+ def self.generate_deb_clauses(package_filenames = [])
29
+ { 'filename' => { "$in" => package_filenames } } unless package_filenames.empty?
30
+ end
31
+
32
+ def applicable_debs
33
+ Deb.in_repositories(self.applicable_repos)
34
+ end
35
+
36
+ def query_debs(repo, rule)
37
+ debs = Deb.in_repositories(repo)
38
+ query_debs_from_collection(debs, rule).pluck("#{Deb.table_name}.filename")
39
+ end
40
+
41
+ def query_debs_from_collection(collection, rule)
42
+ query_name = rule.name.tr("*", "%")
43
+ query = collection.where("#{Deb.table_name}.name ilike ?", query_name)
44
+ if rule.architecture.present?
45
+ query_arch = rule.architecture.tr("*", "%")
46
+ query = query.where("#{Deb.table_name}.architecture ilike ?", query_arch)
47
+ end
48
+ query.default_sort
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,24 @@
1
+ module Katello
2
+ class ContentViewDebFilterRule < Katello::Model
3
+ include ::Katello::Concerns::ContentViewFilterRuleCommon
4
+
5
+ belongs_to :filter,
6
+ :class_name => "Katello::ContentViewDebFilter",
7
+ :inverse_of => :deb_rules,
8
+ :foreign_key => :content_view_filter_id
9
+
10
+ validates :name, :presence => true
11
+ validate :ensure_unique_attributes
12
+ validates_with Validators::ContentViewFilterVersionValidator
13
+
14
+ def ensure_unique_attributes
15
+ other = self.class.where(:name => self.name,
16
+ :content_view_filter_id => self.content_view_filter_id,
17
+ :architecture => self.architecture)
18
+ other = other.where.not(:id => self.id) if self.id
19
+ if other.exists?
20
+ errors.add(:base, "This deb package filter rule already exists.")
21
+ end
22
+ end
23
+ end
24
+ end
@@ -9,7 +9,7 @@ module Katello
9
9
  MODULE_STREAM = ModuleStream::CONTENT_TYPE
10
10
  DEB = Deb::CONTENT_TYPE
11
11
  CONTENT_TYPES = [RPM, PACKAGE_GROUP, ERRATA, DOCKER, DEB, MODULE_STREAM].freeze
12
- CONTENT_OPTIONS = { _('Packages') => RPM, _('Module Streams') => ModuleStream, _('Package Groups') => PACKAGE_GROUP, _('Errata') => ERRATA, _('Container Images') => DOCKER, _('deb Packages') => DEB }.freeze
12
+ CONTENT_OPTIONS = { _('Packages') => RPM, _('Module Streams') => ModuleStream, _('Package Groups') => PACKAGE_GROUP, _('Errata') => ERRATA, _('Container Images') => DOCKER, _('Deb Packages') => DEB }.freeze
13
13
 
14
14
  belongs_to :content_view,
15
15
  :class_name => "Katello::ContentView",
@@ -31,6 +31,7 @@ module Katello
31
31
  scoped_search :on => :name, :complete_value => true
32
32
  scoped_search :on => :type, :rename => :content_type,
33
33
  :complete_value => {Rpm::CONTENT_TYPE.to_sym => "Katello::ContentViewPackageFilter",
34
+ Deb::CONTENT_TYPE.to_sym => "Katello::ContentViewDebFilter",
34
35
  PackageGroup::CONTENT_TYPE.to_sym => "Katello::ContentViewPackageGroupFilter",
35
36
  Erratum::CONTENT_TYPE.to_sym => "Katello::ContentViewErratumFilter",
36
37
  DOCKER.to_sym => "Katello::ContentViewDockerFilter",
@@ -47,8 +48,7 @@ module Katello
47
48
  end
48
49
 
49
50
  def self.deb
50
- # TODO
51
- []
51
+ where(:type => ::Katello::ContentViewDebFilter.name)
52
52
  end
53
53
 
54
54
  def self.docker
@@ -69,6 +69,7 @@ module Katello
69
69
 
70
70
  def content_type
71
71
  {
72
+ ContentViewDebFilter => DEB,
72
73
  ContentViewPackageFilter => RPM,
73
74
  ContentViewErratumFilter => ERRATA,
74
75
  ContentViewPackageGroupFilter => PACKAGE_GROUP,
@@ -79,6 +80,8 @@ module Katello
79
80
 
80
81
  def self.class_for(content_type)
81
82
  case content_type
83
+ when DEB
84
+ ContentViewDebFilter
82
85
  when RPM
83
86
  ContentViewPackageFilter
84
87
  when PACKAGE_GROUP
@@ -97,6 +100,8 @@ module Katello
97
100
 
98
101
  def self.rule_class_for(filter)
99
102
  case filter.type
103
+ when ContentViewDebFilter.name
104
+ ContentViewDebFilterRule
100
105
  when ContentViewPackageFilter.name
101
106
  ContentViewPackageFilterRule
102
107
  when ContentViewPackageGroupFilter.name
@@ -115,6 +120,8 @@ module Katello
115
120
 
116
121
  def self.rule_ids_for(filter)
117
122
  case filter.type
123
+ when ContentViewDebFilter.name
124
+ filter.deb_rule_ids
118
125
  when ContentViewPackageFilter.name
119
126
  filter.package_rule_ids
120
127
  when ContentViewPackageGroupFilter.name
@@ -30,7 +30,6 @@ module Katello
30
30
  def owner_details
31
31
  @owner_details ||= find_owner
32
32
  @owner_details['virt_who'] ||= self.subscriptions.using_virt_who.any?
33
-
34
33
  @owner_details
35
34
  end
36
35
 
@@ -23,5 +23,6 @@ module Katello
23
23
  scoped_search :on => :version
24
24
  scoped_search :on => :release
25
25
  scoped_search :on => :arch
26
+ scoped_search :on => :vendor, :complete_value => true
26
27
  end
27
28
  end
@@ -28,6 +28,9 @@ module Katello
28
28
  has_many :pools, :through => :pool_products
29
29
  has_many :subscriptions, :through => :pools, :dependent => :destroy
30
30
 
31
+ has_many :alternate_content_source_products, dependent: :delete_all, inverse_of: :product, :class_name => "Katello::AlternateContentSourceProduct"
32
+ has_many :alternate_content_sources, :through => :alternate_content_source_products, :inverse_of => :products, :class_name => "Katello::AlternateContentSource"
33
+
31
34
  validates_lengths_from_database :except => [:label]
32
35
  validates :provider_id, :presence => true
33
36
  validates_with Validators::KatelloNameFormatValidator, :attributes => :name
@@ -110,6 +110,8 @@ module Katello
110
110
 
111
111
  has_many :smart_proxy_sync_histories, :class_name => "::Katello::SmartProxySyncHistory", :inverse_of => :repository, :dependent => :delete_all
112
112
 
113
+ has_many :smart_proxy_alternate_content_sources, :class_name => 'Katello::SmartProxyAlternateContentSource', :inverse_of => :repository, :dependent => :nullify
114
+
113
115
  validates_with Validators::ContainerImageNameValidator, :attributes => :container_repository_name, :allow_blank => false, :if => :docker?
114
116
  validates :container_repository_name, :if => :docker?, :uniqueness => {message: ->(object, _data) do
115
117
  _("for repository '%{name}' is not unique and cannot be created in '%{env}'. Its Container Repository Name (%{container_name}) conflicts with an existing repository. Consider changing the Lifecycle Environment's Registry Name Pattern to something more specific.") %
@@ -1,8 +1,14 @@
1
1
  module Katello
2
2
  class SmartProxyAlternateContentSource < Katello::Model
3
+ audited
3
4
  # Do not use active record callbacks in this join model. Direct INSERTs and DELETEs are done
4
5
  self.table_name = :katello_smart_proxy_alternate_content_sources
5
6
  belongs_to :smart_proxy, :inverse_of => :smart_proxy_alternate_content_sources, :class_name => 'SmartProxy'
6
7
  belongs_to :alternate_content_source, :inverse_of => :smart_proxy_alternate_content_sources, :class_name => 'Katello::AlternateContentSource'
8
+ belongs_to :repository, :inverse_of => :smart_proxy_alternate_content_sources, :class_name => 'Katello::Repository'
9
+
10
+ def backend_service
11
+ @service ||= ::Katello::Pulp3::AlternateContentSource.new(alternate_content_source, smart_proxy, repository)
12
+ end
7
13
  end
8
14
  end
@@ -12,28 +12,20 @@ module Cert
12
12
  File.read(SETTINGS[:katello][:candlepin][:ca_cert_file])
13
13
  end
14
14
 
15
- def self.ssl_client_cert(use_admin_as_cn_cert: false)
16
- @ssl_client_cert ||= OpenSSL::X509::Certificate.new(File.read(ssl_client_cert_filename(use_admin_as_cn_cert: use_admin_as_cn_cert)))
15
+ def self.ssl_client_cert
16
+ @ssl_client_cert ||= OpenSSL::X509::Certificate.new(File.read(ssl_client_cert_filename))
17
17
  end
18
18
 
19
- def self.ssl_client_cert_filename(use_admin_as_cn_cert: false)
20
- if use_admin_as_cn_cert
21
- Setting[:pulp_client_cert]
22
- else
23
- Setting[:ssl_certificate]
24
- end
19
+ def self.ssl_client_cert_filename
20
+ Setting[:ssl_certificate]
25
21
  end
26
22
 
27
- def self.ssl_client_key(use_admin_as_cn_cert: false)
28
- @ssl_client_key ||= OpenSSL::PKey::RSA.new(File.read(ssl_client_key_filename(use_admin_as_cn_cert: use_admin_as_cn_cert)))
23
+ def self.ssl_client_key
24
+ @ssl_client_key ||= OpenSSL::PKey::RSA.new(File.read(ssl_client_key_filename))
29
25
  end
30
26
 
31
- def self.ssl_client_key_filename(use_admin_as_cn_cert: false)
32
- if use_admin_as_cn_cert
33
- Setting[:pulp_client_key]
34
- else
35
- Setting[:ssl_priv_key]
36
- end
27
+ def self.ssl_client_key_filename
28
+ Setting[:ssl_priv_key]
37
29
  end
38
30
 
39
31
  def self.verify_ueber_cert(organization)
@@ -27,15 +27,16 @@ module Katello
27
27
  end
28
28
  end
29
29
 
30
- def initialize(organization)
30
+ def initialize(organization, sca: true)
31
31
  @organization = organization
32
+ @content_access_mode = sca ? 'org_environment' : 'entitlement'
32
33
  end
33
34
 
34
35
  def seed!
35
36
  ActiveRecord::Base.transaction do
36
37
  @organization.setup_label_from_name
37
38
 
38
- # existing validation errors are not resolvable here, so don't validatate
39
+ # existing validation errors are not resolvable here, so don't validate
39
40
  @organization.save(validate: false)
40
41
 
41
42
  create_library_environment
@@ -66,9 +67,8 @@ module Katello
66
67
 
67
68
  def create_backend_objects!
68
69
  Katello::Ping.ping!(services: [:candlepin])
69
-
70
70
  if needs_candlepin_organization?
71
- ::Katello::Resources::Candlepin::Owner.create(@organization.label, @organization.name)
71
+ ::Katello::Resources::Candlepin::Owner.create(@organization.label, @organization.name, content_access_mode: @content_access_mode)
72
72
  end
73
73
 
74
74
  ::Katello::ContentViewManager.create_candlepin_environment(
@@ -101,12 +101,23 @@ module Katello
101
101
  end
102
102
 
103
103
  def create_library_view
104
- @library_view = Katello::ContentView.where(
104
+ cv_wrong_label = Katello::ContentView.where(
105
105
  default: true,
106
106
  name: DEFAULT_CONTENT_VIEW_NAME,
107
- label: DEFAULT_CONTENT_VIEW_LABEL,
108
107
  organization: @organization
109
- ).first_or_create!
108
+ ).where.not(label: DEFAULT_CONTENT_VIEW_LABEL)&.first
109
+
110
+ if cv_wrong_label
111
+ cv_wrong_label.update_attribute(:label, DEFAULT_CONTENT_VIEW_LABEL)
112
+ @library_view = cv_wrong_label
113
+ else
114
+ @library_view = Katello::ContentView.where(
115
+ default: true,
116
+ name: DEFAULT_CONTENT_VIEW_NAME,
117
+ label: DEFAULT_CONTENT_VIEW_LABEL,
118
+ organization: @organization
119
+ ).first_or_create!
120
+ end
110
121
  end
111
122
 
112
123
  def create_library_cvv
@@ -17,8 +17,8 @@ module Katello
17
17
  :debug => true
18
18
  },
19
19
  :cert_auth => {
20
- :ssl_client_cert => ::Cert::Certs.ssl_client_cert(use_admin_as_cn_pulp_cert: true),
21
- :ssl_client_key => ::Cert::Certs.ssl_client_key(use_admin_as_cn_pulp_cert: true)
20
+ :ssl_client_cert => '/etc/pki/katello/certs/pulp-client.crt',
21
+ :ssl_client_key => '/etc/pki/katello/private/pulp-client.key'
22
22
  }
23
23
  }
24
24
 
@@ -5,10 +5,12 @@ module Katello
5
5
  include Katello::Pulp3::ServiceCommon
6
6
  attr_accessor :acs
7
7
  attr_accessor :smart_proxy
8
+ attr_accessor :repository
8
9
 
9
- def initialize(acs, smart_proxy)
10
+ def initialize(acs, smart_proxy, repository = nil)
10
11
  @acs = acs
11
12
  @smart_proxy = smart_proxy
13
+ @repository = repository
12
14
  end
13
15
 
14
16
  def api
@@ -20,10 +22,23 @@ module Katello
20
22
  end
21
23
 
22
24
  def smart_proxy_acs
23
- ::Katello::SmartProxyAlternateContentSource.find_by(alternate_content_source_id: acs.id, smart_proxy_id: smart_proxy.id)
25
+ if acs.alternate_content_source_type == 'custom'
26
+ ::Katello::SmartProxyAlternateContentSource.find_by(alternate_content_source_id: acs.id, smart_proxy_id: smart_proxy.id)
27
+ else
28
+ ::Katello::SmartProxyAlternateContentSource.find_by(alternate_content_source_id: acs.id, smart_proxy_id: smart_proxy.id, repository_id: repository.id)
29
+ end
24
30
  end
25
31
 
26
32
  def remote_options
33
+ if repository.present?
34
+ options = repository.backend_service(smart_proxy).remote_options
35
+ options[:policy] = 'on_demand'
36
+ options[:proxy_url] = acs.http_proxy&.url
37
+ options[:proxy_username] = acs.http_proxy&.username
38
+ options[:proxy_password] = acs.http_proxy&.password
39
+ return options
40
+ end
41
+
27
42
  remote_options = {
28
43
  tls_validation: acs.verify_ssl,
29
44
  name: generate_backend_object_name,
@@ -66,8 +81,11 @@ module Katello
66
81
  api.remotes_api.partial_update(smart_proxy_acs.remote_href, remote_options)
67
82
  end
68
83
 
69
- def delete_remote(href = smart_proxy_acs.remote_href)
70
- ignore_404_exception { remote_options[:url]&.start_with?('uln') ? api.remotes_uln_api.delete(href) : api.remotes_api.delete(href) } if href
84
+ # The old repo URL is needed to determine which remote API to use.
85
+ def delete_remote(options = {})
86
+ options[:href] ||= smart_proxy_acs.remote_href
87
+ options[:old_url] ||= remote_options[:url]
88
+ ignore_404_exception { options[:old_url]&.start_with?('uln') ? api.remotes_uln_api.delete(options[:href]) : api.remotes_api.delete(options[:href]) } if options[:href]
71
89
  end
72
90
 
73
91
  def create
@@ -11,6 +11,18 @@ module Katello
11
11
  def publications_verbatim_api
12
12
  PulpDebClient::PublicationsVerbatimApi.new(api_client)
13
13
  end
14
+
15
+ def self.copy_class
16
+ PulpDebClient::Copy
17
+ end
18
+
19
+ def self.add_remove_content_class
20
+ PulpDebClient::RepositoryAddRemoveContent
21
+ end
22
+
23
+ def copy_api
24
+ PulpDebClient::CopyApi.new(api_client)
25
+ end
14
26
  end
15
27
  end
16
28
  end
@@ -89,6 +89,10 @@ module Katello
89
89
  PulpcoreClient::RepositoriesReclaimSpaceApi.new(core_api_client)
90
90
  end
91
91
 
92
+ def yum_exporter_api
93
+ PulpcoreClient::ExportersFilesystemApi.new(core_api_client)
94
+ end
95
+
92
96
  def exporter_api
93
97
  PulpcoreClient::ExportersPulpApi.new(core_api_client)
94
98
  end
@@ -101,6 +105,10 @@ module Katello
101
105
  PulpcoreClient::ImportersPulpImportCheckApi.new(core_api_client)
102
106
  end
103
107
 
108
+ def yum_export_api
109
+ PulpcoreClient::ExportersFilesystemExportsApi.new(core_api_client)
110
+ end
111
+
104
112
  def export_api
105
113
  PulpcoreClient::ExportersPulpExportsApi.new(core_api_client)
106
114
  end