katello 4.1.0 → 4.2.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +2 -2
  3. data/app/controllers/katello/api/v2/content_credentials_controller.rb +3 -3
  4. data/app/controllers/katello/api/v2/content_uploads_controller.rb +3 -1
  5. data/app/controllers/katello/api/v2/content_view_components_controller.rb +33 -1
  6. data/app/controllers/katello/api/v2/content_views_controller.rb +12 -0
  7. data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -1
  8. data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -2
  9. data/app/controllers/katello/api/v2/products_controller.rb +4 -4
  10. data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +3 -11
  11. data/app/controllers/katello/api/v2/repositories_controller.rb +68 -47
  12. data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +0 -28
  13. data/app/controllers/katello/concerns/api/v2/registration_commands_controller_extensions.rb +26 -5
  14. data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +29 -2
  15. data/app/lib/actions/candlepin/environment/destroy.rb +2 -0
  16. data/app/lib/actions/katello/agent_action.rb +2 -2
  17. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +3 -2
  18. data/app/lib/actions/katello/{gpg_key → content_credential}/update.rb +1 -1
  19. data/app/lib/actions/katello/content_view/publish.rb +6 -1
  20. data/app/lib/actions/katello/content_view_version/create_repos.rb +1 -1
  21. data/app/lib/actions/katello/content_view_version/incremental_update.rb +12 -62
  22. data/app/lib/actions/katello/orphan_cleanup/remove_orphans.rb +1 -1
  23. data/app/lib/actions/katello/repository/clone_contents.rb +1 -7
  24. data/app/lib/actions/katello/repository/clone_to_environment.rb +1 -7
  25. data/app/lib/actions/katello/repository/create.rb +2 -5
  26. data/app/lib/actions/katello/repository/create_root.rb +1 -1
  27. data/app/lib/actions/katello/repository/destroy.rb +1 -3
  28. data/app/lib/actions/katello/repository/import_upload.rb +3 -2
  29. data/app/lib/actions/katello/repository/instance_update.rb +1 -1
  30. data/app/lib/actions/katello/repository/metadata_generate.rb +2 -8
  31. data/app/lib/actions/katello/repository/multi_clone_contents.rb +0 -1
  32. data/app/lib/actions/katello/repository/refresh_repository.rb +1 -4
  33. data/app/lib/actions/katello/repository/remove_content.rb +6 -4
  34. data/app/lib/actions/katello/repository/sync.rb +5 -25
  35. data/app/lib/actions/katello/repository/update.rb +1 -2
  36. data/app/lib/actions/katello/repository/update_http_proxy_details.rb +2 -5
  37. data/app/lib/actions/katello/repository/update_redhat_repository.rb +1 -1
  38. data/app/lib/actions/katello/repository/upload_files.rb +8 -3
  39. data/app/lib/actions/katello/repository/upload_package_group.rb +2 -11
  40. data/app/lib/actions/katello/repository/verify_checksum.rb +0 -1
  41. data/app/lib/actions/katello/repository_set/enable_repository.rb +1 -1
  42. data/app/lib/actions/pulp3/capsule_content/generate_metadata.rb +5 -0
  43. data/app/lib/actions/pulp3/capsule_content/refresh_distribution.rb +3 -2
  44. data/app/lib/actions/pulp3/capsule_content/sync.rb +2 -1
  45. data/app/lib/actions/pulp3/content_view_version/destroy_exporter.rb +2 -2
  46. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -0
  47. data/app/lib/actions/pulp3/orchestration/repository/sync.rb +1 -1
  48. data/app/lib/actions/pulp3/repository/create_publication.rb +6 -3
  49. data/app/lib/actions/pulp3/repository/create_remote.rb +3 -4
  50. data/app/lib/actions/pulp3/repository/refresh_remote.rb +1 -1
  51. data/app/lib/actions/pulp3/repository/repair.rb +4 -0
  52. data/app/lib/actions/pulp3/repository/save_version.rb +9 -2
  53. data/app/lib/katello/agent/base_message.rb +7 -4
  54. data/app/lib/katello/agent/update_package_message.rb +8 -0
  55. data/app/lib/katello/errors.rb +1 -0
  56. data/app/lib/katello/http_resource.rb +26 -73
  57. data/app/lib/katello/resources/candlepin/consumer.rb +1 -1
  58. data/app/lib/katello/resources/candlepin/environment.rb +2 -0
  59. data/app/lib/katello/resources/registry.rb +7 -20
  60. data/app/lib/katello/util/http_proxy.rb +0 -3
  61. data/app/lib/katello/validators/gpg_key_content_validator.rb +1 -1
  62. data/app/models/katello/authorization/{gpg_key.rb → content_credential.rb} +1 -1
  63. data/app/models/katello/authorization/product.rb +0 -4
  64. data/app/models/katello/candlepin/repository_mapper.rb +1 -1
  65. data/app/models/katello/concerns/host_managed_extensions.rb +1 -2
  66. data/app/models/katello/concerns/organization_extensions.rb +1 -1
  67. data/app/models/katello/concerns/pulp_database_unit.rb +13 -5
  68. data/app/models/katello/concerns/smart_proxy_extensions.rb +54 -41
  69. data/app/models/katello/{gpg_key.rb → content_credential.rb} +4 -4
  70. data/app/models/katello/content_view.rb +6 -1
  71. data/app/models/katello/content_view_version.rb +26 -2
  72. data/app/models/katello/generic_content_unit.rb +16 -0
  73. data/app/models/katello/glue/pulp/repos.rb +8 -24
  74. data/app/models/katello/kt_environment.rb +1 -1
  75. data/app/models/katello/ping.rb +1 -2
  76. data/app/models/katello/product.rb +4 -4
  77. data/app/models/katello/repository.rb +13 -7
  78. data/app/models/katello/repository_generic_content_unit.rb +7 -0
  79. data/app/models/katello/root_repository.rb +48 -7
  80. data/app/models/setting/content.rb +5 -0
  81. data/app/services/cert/certs.rb +16 -8
  82. data/app/services/katello/candlepin/consumer.rb +6 -0
  83. data/app/services/katello/component_view_presenter.rb +27 -0
  84. data/app/services/katello/pulp/repository.rb +1 -1
  85. data/app/services/katello/pulp/server.rb +2 -2
  86. data/app/services/katello/pulp3/api/core.rb +7 -3
  87. data/app/services/katello/pulp3/api/docker.rb +3 -1
  88. data/app/services/katello/pulp3/api/generic.rb +68 -0
  89. data/app/services/katello/pulp3/docker_manifest.rb +3 -9
  90. data/app/services/katello/pulp3/docker_manifest_list.rb +1 -1
  91. data/app/services/katello/pulp3/generic_content_unit.rb +29 -0
  92. data/app/services/katello/pulp3/pulp_content_unit.rb +5 -1
  93. data/app/services/katello/pulp3/repository.rb +30 -20
  94. data/app/services/katello/pulp3/repository/ansible_collection.rb +1 -1
  95. data/app/services/katello/pulp3/repository/generic.rb +94 -0
  96. data/app/services/katello/pulp3/repository/yum.rb +4 -5
  97. data/app/services/katello/pulp3/repository_mirror.rb +1 -1
  98. data/app/services/katello/pulp3/smart_proxy_repository.rb +4 -4
  99. data/app/services/katello/pulp3/task.rb +16 -0
  100. data/app/services/katello/pulp3/task_group.rb +2 -2
  101. data/app/services/katello/registration_manager.rb +18 -5
  102. data/app/services/katello/repository_type.rb +59 -1
  103. data/app/services/katello/repository_type_manager.rb +116 -24
  104. data/app/views/katello/api/v2/content_views/base.json.rabl +4 -4
  105. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
  106. data/app/views/overrides/smart_proxies/_download_policy.erb +1 -1
  107. data/app/views/smart_proxies/plugins/_pulpcore.html.erb +2 -5
  108. data/app/views/smart_proxies/pulp_status.html.erb +0 -7
  109. data/config/initializers/monkeys.rb +1 -0
  110. data/config/katello.yaml.example +0 -21
  111. data/config/routes/api/v2.rb +2 -1
  112. data/db/functions/deb_version_cmp_v01.sql +200 -0
  113. data/db/migrate/20171110082124_add_ssl_certs_to_products_and_repos.rb +5 -1
  114. data/db/migrate/20200402130013_add_repsoitory_docker_meta_tag_f_key.rb +3 -1
  115. data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +14 -4
  116. data/db/migrate/20210624221630_katello_generic_content.rb +22 -0
  117. data/db/migrate/20210625095042_add_retain_package_versions_count.rb +9 -0
  118. data/db/migrate/20210628182553_add_generic_remote_options_to_root_repository.rb +5 -0
  119. data/db/migrate/20210714140440_remove_repo_export_permission.rb +5 -0
  120. data/db/migrate/20210721163730_change_gpg_keys_to_content_credentials.rb +8 -0
  121. data/db/migrate/20210728130748_create_function_deb_version_cmp.rb +12 -0
  122. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -1
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +7 -5
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +1 -0
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +4 -1
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +1 -1
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +1 -1
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-module-streams.html +1 -1
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-traces.html +1 -1
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +1 -1
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +25 -33
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-advanced-sync-modal.html +1 -1
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +1 -6
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +10 -2
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +9 -0
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +0 -2
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-advanced-sync-options.html +1 -25
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +1 -1
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +31 -13
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +11 -3
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +0 -6
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/aggregate-task.factory.js +3 -3
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/task.factory.js +1 -1
  144. data/lib/katello/engine.rb +2 -4
  145. data/lib/katello/permission_creator.rb +6 -12
  146. data/lib/katello/plugin.rb +76 -80
  147. data/lib/katello/repository_types/python.rb +37 -0
  148. data/lib/katello/tasks/reimport.rake +0 -9
  149. data/lib/katello/tasks/upgrades/4.0/remove_ostree_puppet_content.rake +4 -2
  150. data/lib/katello/version.rb +1 -1
  151. data/lib/monkeys/pulp3_13_checksumfix.rb +17 -0
  152. data/locale/action_names.rb +28 -29
  153. data/locale/bn/katello.po +699 -221
  154. data/locale/cs/katello.po +167 -59
  155. data/locale/de/katello.po +585 -352
  156. data/locale/en/katello.po +167 -59
  157. data/locale/es/katello.po +1388 -1189
  158. data/locale/fr/katello.po +1740 -1494
  159. data/locale/gu/katello.po +896 -416
  160. data/locale/hi/katello.po +892 -415
  161. data/locale/it/katello.po +371 -170
  162. data/locale/ja/katello.po +1657 -1439
  163. data/locale/katello.pot +933 -736
  164. data/locale/kn/katello.po +894 -416
  165. data/locale/ko/katello.po +515 -317
  166. data/locale/mr/katello.po +857 -415
  167. data/locale/or/katello.po +894 -416
  168. data/locale/pa/katello.po +874 -411
  169. data/locale/pt/katello.po +347 -154
  170. data/locale/pt_BR/katello.po +1398 -1215
  171. data/locale/ru/katello.po +671 -463
  172. data/locale/ta/katello.po +697 -221
  173. data/locale/te/katello.po +891 -415
  174. data/locale/zh_CN/katello.po +2029 -1845
  175. data/locale/zh_TW/katello.po +735 -407
  176. data/package.json +3 -1
  177. data/webpack/components/EditableTextInput/EditableTextInput.js +3 -3
  178. data/webpack/components/RoutedTabs/RoutedTabs.js +7 -8
  179. data/webpack/components/Table/TableWrapper.js +19 -11
  180. data/webpack/components/Table/helpers.js +1 -1
  181. data/webpack/components/extensions/HostDetails/Tabs/ContentTab.js +42 -0
  182. data/webpack/components/extensions/HostDetails/Tabs/SubscriptionTab.js +12 -0
  183. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +4 -0
  184. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
  185. data/webpack/components/extensions/RegistrationCommands/index.js +1 -2
  186. data/webpack/components/pf3Table/formatters/selectionHeaderCellFormatter.js +2 -1
  187. data/webpack/fills_index.js +4 -1
  188. data/webpack/redux/actions/RedHatRepositories/helpers.js +2 -4
  189. data/webpack/redux/reducers/RedHatRepositories/enabled.js +4 -1
  190. data/webpack/scenes/ContentViews/ContentViewsActions.js +16 -1
  191. data/webpack/scenes/ContentViews/ContentViewsConstants.js +15 -0
  192. data/webpack/scenes/ContentViews/ContentViewsPage.js +12 -22
  193. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +4 -3
  194. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +25 -14
  195. data/webpack/scenes/ContentViews/Create/CreateContentViewModal.js +4 -2
  196. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +153 -0
  197. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentVersion.js +21 -10
  198. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +157 -19
  199. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.fixtures.json +100 -108
  200. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +140 -16
  201. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/publishedContentViewDetails.fixtures.json +367 -0
  202. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +59 -6
  203. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +43 -0
  204. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +44 -13
  205. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +161 -0
  206. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +54 -0
  207. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterCreateResult.fixtures.json +124 -0
  208. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +8 -6
  209. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +7 -6
  210. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +4 -3
  211. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +71 -12
  212. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +77 -0
  213. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +13 -12
  214. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +2 -2
  215. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +17 -14
  216. data/webpack/scenes/ContentViews/Details/Repositories/LastSync.js +3 -3
  217. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +2 -2
  218. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +6 -2
  219. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +61 -20
  220. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewTaskInProgressResponse.fixtures.json +71 -0
  221. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewTaskResponse.fixtures.json +75 -0
  222. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +86 -1
  223. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +713 -0
  224. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +3 -0
  225. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +184 -0
  226. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +104 -0
  227. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +71 -0
  228. data/webpack/scenes/ContentViews/Publish/ContentViewPublishSelectors.js +17 -0
  229. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +145 -0
  230. data/webpack/scenes/ContentViews/Publish/__tests__/environmentPaths.fixtures.json +352 -0
  231. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +184 -0
  232. data/webpack/scenes/ContentViews/Publish/__tests__/publishResponse.fixture.json +69 -0
  233. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +3 -0
  234. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +75 -48
  235. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +15 -2
  236. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +6 -10
  237. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +22 -10
  238. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPathActions.js +12 -0
  239. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPathConstants.js +2 -0
  240. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPathSelectors.js +16 -0
  241. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +72 -0
  242. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +8 -0
  243. data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +85 -0
  244. data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +9 -8
  245. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +4 -25
  246. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +0 -3
  247. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +3 -3
  248. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableSchema.js +4 -2
  249. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +24 -0
  250. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +4 -1
  251. data/webpack/scenes/Subscriptions/index.js +1 -4
  252. metadata +98 -106
  253. data/app/lib/actions/candlepin/environment/create.rb +0 -21
  254. data/app/lib/actions/foreman/environment/destroy.rb +0 -23
  255. data/app/lib/actions/katello/content_view/environment_create.rb +0 -21
  256. data/app/lib/actions/katello/repository/export.rb +0 -85
  257. data/app/lib/actions/katello/repository/purge_empty_content.rb +0 -16
  258. data/app/lib/actions/katello/repository/upload_errata.rb +0 -38
  259. data/app/lib/katello/util/proxy_uri.rb +0 -64
  260. data/app/models/katello/rhsm_fact_importer.rb +0 -20
  261. data/app/models/katello/rhsm_fact_name.rb +0 -17
  262. data/app/models/katello/rhsm_fact_parser.rb +0 -120
  263. data/locale/bn/katello.edit.po +0 -8300
  264. data/locale/bn/katello.po.time_stamp +0 -0
  265. data/locale/cs/katello.edit.po +0 -8573
  266. data/locale/cs/katello.po.time_stamp +0 -0
  267. data/locale/de/katello.edit.po +0 -8319
  268. data/locale/de/katello.po.time_stamp +0 -0
  269. data/locale/en/katello.edit.po +0 -8297
  270. data/locale/en/katello.po.time_stamp +0 -0
  271. data/locale/es/katello.edit.po +0 -8317
  272. data/locale/es/katello.po.time_stamp +0 -0
  273. data/locale/fr/katello.edit.po +0 -8337
  274. data/locale/fr/katello.po.time_stamp +0 -0
  275. data/locale/gu/katello.edit.po +0 -8300
  276. data/locale/gu/katello.po.time_stamp +0 -0
  277. data/locale/hi/katello.edit.po +0 -8300
  278. data/locale/hi/katello.po.time_stamp +0 -0
  279. data/locale/it/katello.edit.po +0 -8303
  280. data/locale/it/katello.po.time_stamp +0 -0
  281. data/locale/ja/katello.edit.po +0 -8329
  282. data/locale/ja/katello.po.time_stamp +0 -0
  283. data/locale/kn/katello.edit.po +0 -8300
  284. data/locale/kn/katello.po.time_stamp +0 -0
  285. data/locale/ko/katello.edit.po +0 -8301
  286. data/locale/ko/katello.po.time_stamp +0 -0
  287. data/locale/mr/katello.edit.po +0 -8300
  288. data/locale/mr/katello.po.time_stamp +0 -0
  289. data/locale/or/katello.edit.po +0 -8300
  290. data/locale/or/katello.po.time_stamp +0 -0
  291. data/locale/pa/katello.edit.po +0 -8301
  292. data/locale/pa/katello.po.time_stamp +0 -0
  293. data/locale/pt/katello.edit.po +0 -8300
  294. data/locale/pt/katello.po.time_stamp +0 -0
  295. data/locale/pt_BR/katello.edit.po +0 -8315
  296. data/locale/pt_BR/katello.po.time_stamp +0 -0
  297. data/locale/ru/katello.edit.po +0 -8309
  298. data/locale/ru/katello.po.time_stamp +0 -0
  299. data/locale/ta/katello.edit.po +0 -8300
  300. data/locale/ta/katello.po.time_stamp +0 -0
  301. data/locale/te/katello.edit.po +0 -8300
  302. data/locale/te/katello.po.time_stamp +0 -0
  303. data/locale/zh_CN/katello.edit.po +0 -8328
  304. data/locale/zh_CN/katello.po.time_stamp +0 -0
  305. data/locale/zh_TW/katello.edit.po +0 -8303
  306. data/locale/zh_TW/katello.po.time_stamp +0 -0
@@ -2,7 +2,6 @@ module Katello
2
2
  class Api::V2::UpstreamSubscriptionsController < Api::V2::ApiController
3
3
  before_action :find_organization
4
4
  before_action :check_upstream_connection
5
- before_action :deprecated, only: [:simple_content_access_eligible, :enable_simple_content_access, :disable_simple_content_access]
6
5
  resource_description do
7
6
  description "Red Hat subscriptions management platform."
8
7
  api_version 'v2'
@@ -77,29 +76,6 @@ module Katello
77
76
  render json: { status: 'OK' }
78
77
  end
79
78
 
80
- api :GET, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/eligible",
81
- N_("Check if the specified organization is eligible for Simple Content Access"), :deprecated => true
82
- def simple_content_access_eligible
83
- eligible = @organization.upstream_consumer.simple_content_access_eligible?
84
- render json: { simple_content_access_eligible: eligible }
85
- end
86
-
87
- api :PUT, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/enable",
88
- N_("Enable simple content access for a manifest"), :deprecated => true
89
- param :organization_id, :number, :desc => N_("Organization ID"), :required => true
90
- def enable_simple_content_access
91
- task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Enable, params[:organization_id])
92
- respond_for_async :resource => task
93
- end
94
-
95
- api :PUT, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/disable",
96
- N_("Disable simple content access for a manifest"), :deprecated => true
97
- param :organization_id, :number, :desc => N_("Organization ID"), :required => true
98
- def disable_simple_content_access
99
- task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Disable, params[:organization_id])
100
- respond_for_async :resource => task
101
- end
102
-
103
79
  private
104
80
 
105
81
  def update_params
@@ -124,9 +100,5 @@ module Katello
124
100
  { "pool" => pool[:id], "quantity" => pool[:quantity] } if pool
125
101
  end
126
102
  end
127
-
128
- def deprecated
129
- ::Foreman::Deprecation.api_deprecation_warning("This will be removed in Katello 4.2, Please see /api/v2/simple_content_access")
130
- end
131
103
  end
132
104
  end
@@ -17,9 +17,8 @@ module Katello
17
17
  args
18
18
  end
19
19
 
20
- def append_array_of_ids(hash_params)
21
- return if registration_params['activation_key'].present? || registration_params['activation_keys'].present?
22
- super
20
+ def append_array_of_ids(*)
21
+ return
23
22
  end
24
23
  end
25
24
 
@@ -28,8 +27,8 @@ module Katello
28
27
 
29
28
  update_api(:create) do
30
29
  param :registration_command, Hash do
31
- param :activation_key, String, desc: N_('Activation key for subscription-manager client. Required for CentOS and Red Hat Enterprise Linux. Multiple keys add separated by comma, example: key1,key2,key3.'), deprecated: true
32
- param :activation_keys, Array, required: true, desc: N_('Activation key(s) for subscription-manager client. Required for CentOS and Red Hat Enterprise Linux. Required only if host group has no activation keys')
30
+ param :activation_key, String, desc: N_('Activation key for subscription-manager client, required for CentOS and Red Hat Enterprise Linux. For multiple keys use `activation_keys` param instead.'), deprecated: true
31
+ param :activation_keys, Array, desc: N_('Activation keys for subscription-manager client, required for CentOS and Red Hat Enterprise Linux. Required only if host group has no activation keys.')
33
32
  param :lifecycle_environment_id, :number, required: false, desc: N_('Lifecycle environment for the host.')
34
33
  param :force, :bool, required: false, desc: N_('Clear any previous registration and run subscription-manager with --force.')
35
34
  param :ignore_subman_errors, :bool, required: false, desc: N_('Ignore subscription-manager errors for `subscription-manager register` command')
@@ -40,6 +39,28 @@ module Katello
40
39
  included do
41
40
  prepend Overrides
42
41
  include ApiPieExtensions
42
+
43
+ before_action :check_activation_keys, only: [:create]
44
+ end
45
+
46
+ private
47
+
48
+ def check_activation_keys
49
+ return if params['registration_command']['activation_key'].present? ||
50
+ params['registration_command']['activation_keys'].present? ||
51
+ hostgroup_have_acks?
52
+
53
+ render_error 'custom_error', status: :unprocessable_entity,
54
+ locals: { message: N_('Missing activation key!') }
55
+ end
56
+
57
+ def hostgroup_have_acks?
58
+ return unless params['registration_command']['hostgroup_id']
59
+
60
+ ::Hostgroup.authorized(:view_hostgroups)
61
+ .find(params['registration_command']['hostgroup_id'])
62
+ .params['kt_activation_keys']
63
+ .present?
43
64
  end
44
65
  end
45
66
  end
@@ -7,7 +7,7 @@ module Katello
7
7
  if params['uuid']
8
8
  @host = Katello::Host::SubscriptionFacet.find_by(uuid: params['uuid'])&.host
9
9
  if @host.nil?
10
- msg = N_("Host was not found by the subscription UUID: '%s', this can happen if the host is registered already, but not to this Foreman") % params['uuid']
10
+ msg = _("Host was not found by the subscription UUID: '%s', this can happen if the host is registered already, but not to this instance") % params['uuid']
11
11
  fail ActiveRecord::RecordNotFound, msg
12
12
  end
13
13
  @host.assign_attributes(host_params('host'))
@@ -19,11 +19,38 @@ module Katello
19
19
 
20
20
  def host_setup_extension
21
21
  if params['host']['lifecycle_environment_id']
22
- @host.update!(lifecycle_environment: KTEnvironment.readable.find(params['host']['lifecycle_environment_id']))
22
+ new_lce = KTEnvironment.readable.find(params['host']['lifecycle_environment_id'])
23
+ @host.content_facet.lifecycle_environment = new_lce
24
+ @host.update_candlepin_associations
23
25
  end
24
26
 
25
27
  super
26
28
  end
29
+
30
+ def context_urls
31
+ super.merge(rhsm_url: rhsm_url, pulp_content_url: pulp_content_url)
32
+ end
33
+
34
+ private
35
+
36
+ def smart_proxy
37
+ @smart_proxy ||= begin
38
+ proxy = params[:url] ? SmartProxy.find_by(url: params[:url]) : SmartProxy.pulp_primary
39
+
40
+ fail Foreman::Exception, _('Smart proxy content source not found!') unless proxy
41
+ fail Foreman::Exception, _('Pulp 3 is not enabled on Smart proxy!') unless proxy.pulp3_enabled?
42
+
43
+ proxy
44
+ end
45
+ end
46
+
47
+ def rhsm_url
48
+ URI(smart_proxy.rhsm_url)
49
+ end
50
+
51
+ def pulp_content_url
52
+ smart_proxy.setting(SmartProxy::PULP3_FEATURE, 'content_app_url')
53
+ end
27
54
  end
28
55
  end
29
56
  end
@@ -8,6 +8,8 @@ module Actions
8
8
 
9
9
  def run
10
10
  ::Katello::Resources::Candlepin::Environment.destroy(input['cp_id'])
11
+ rescue ::Katello::Errors::CandlepinEnvironmentGone
12
+ Rails.logger.info("Candlepin environment cp_id=#{input['cp_id']} was not found, continuing")
11
13
  end
12
14
  end
13
15
  end
@@ -47,14 +47,14 @@ module Actions
47
47
 
48
48
  dispatch_message(history) unless input[:bulk]
49
49
 
50
- schedule_timeout(timeout)
50
+ schedule_timeout(timeout, optional: true)
51
51
  end
52
52
  when Dynflow::Action::Skip
53
53
  # Do not fail and goto a paused state, instead skip and send the state to warning so we do not block other host actions
54
54
  when Dynflow::Action::Timeouts::Timeout
55
55
  process_timeout
56
56
  when 'accepted'
57
- schedule_timeout(finish_timeout)
57
+ schedule_timeout(finish_timeout, optional: true)
58
58
  suspend
59
59
  else
60
60
  fail_on_errors
@@ -15,8 +15,9 @@ module Actions
15
15
  repos.in_groups_of(Setting[:foreman_proxy_content_batch_size], false) do |repo_batch|
16
16
  concurrence do
17
17
  repo_batch.each do |repo|
18
- plan_pulp_action([Actions::Pulp::Orchestration::Repository::SmartProxySync,
19
- Actions::Pulp3::CapsuleContent::Sync],
18
+ plan_pulp_action(
19
+ [Actions::Pulp::Orchestration::Repository::SmartProxySync,
20
+ Actions::Pulp3::CapsuleContent::Sync],
20
21
  repo, smart_proxy,
21
22
  skip_metadata_check: skip_metadata_check)
22
23
  end
@@ -1,6 +1,6 @@
1
1
  module Actions
2
2
  module Katello
3
- module GpgKey
3
+ module ContentCredential
4
4
  class Update < Actions::EntryAction
5
5
  def plan(gpg_key, gpg_key_params)
6
6
  action_subject gpg_key
@@ -77,7 +77,7 @@ module Actions
77
77
  plan_action(Candlepin::Environment::SetContent, content_view, library, content_view.content_view_environment(library)) unless options[:skip_promotion]
78
78
  plan_action(Katello::Foreman::ContentUpdate, library, content_view) unless options[:skip_promotion]
79
79
  plan_action(ContentView::ErrataMail, content_view, library) unless options[:skip_promotion]
80
-
80
+ plan_action(ContentView::Promote, version, find_environments(options[:environment_ids]), options[:is_force_promote]) if options[:environment_ids]&.any?
81
81
  plan_self(history_id: history.id, content_view_id: content_view.id,
82
82
  auto_publish_composite_ids: auto_publish_composite_ids(content_view),
83
83
  content_view_version_name: version.name,
@@ -186,6 +186,11 @@ module Actions
186
186
  end
187
187
  end
188
188
 
189
+ def find_environments(environment_ids)
190
+ return nil unless environment_ids&.any?
191
+ ::Katello::KTEnvironment.where(:id => environment_ids)
192
+ end
193
+
189
194
  def handle_import(version, path:, metadata:)
190
195
  sequence do
191
196
  plan_action(::Actions::Pulp3::Orchestration::ContentViewVersion::Import, version, path: path, metadata: metadata)
@@ -10,7 +10,7 @@ module Actions
10
10
  source_repositories.each do |repositories|
11
11
  new_repository = repositories.first.build_clone(content_view: version.content_view,
12
12
  version: version)
13
- plan_action(Repository::Create, new_repository, true, false)
13
+ plan_action(Repository::Create, new_repository, true)
14
14
  repository_mapping[repositories] = new_repository
15
15
  end
16
16
  end
@@ -1,7 +1,6 @@
1
1
  module Actions
2
2
  module Katello
3
3
  module ContentViewVersion
4
- # rubocop:disable Metrics/ClassLength
5
4
  class IncrementalUpdate < Actions::EntryAction
6
5
  include ::Katello::ContentViewHelper
7
6
  attr_accessor :new_content_view_version
@@ -18,6 +17,7 @@ module Actions
18
17
 
19
18
  # rubocop:disable Metrics/MethodLength
20
19
  # rubocop:disable Metrics/AbcSize
20
+ # rubocop:disable Metrics/CyclomaticComplexity
21
21
  def plan(old_version, environments, options = {})
22
22
  dep_solve = options.fetch(:resolve_dependencies, true)
23
23
  description = options.fetch(:description, '')
@@ -71,18 +71,22 @@ module Actions
71
71
  unit_map = pulp3_content_mapping(content)
72
72
 
73
73
  unless extended_repo_mapping.empty? || unit_map.values.flatten.empty?
74
- copy_action_outputs << plan_action(Pulp3::Repository::MultiCopyUnits, extended_repo_mapping, unit_map,
75
- dependency_solving: dep_solve).output
74
+ sequence do
75
+ copy_action_outputs << plan_action(Pulp3::Repository::MultiCopyUnits, extended_repo_mapping, unit_map,
76
+ dependency_solving: dep_solve).output
77
+ repos_to_clone.each do |source_repos|
78
+ if separated_repo_map[:pulp3_yum].keys.include?(source_repos)
79
+ copy_repos(repository_mapping[source_repos])
80
+ end
81
+ end
82
+ end
76
83
  end
77
84
  end
78
85
 
79
86
  if separated_repo_map[:other].keys.flatten.present?
80
87
  repos_to_clone.each do |source_repos|
81
88
  if separated_repo_map[:other].keys.include?(source_repos)
82
- copy_action_outputs += copy_repos(repository_mapping[source_repos],
83
- new_content_view_version,
84
- content,
85
- dep_solve)
89
+ copy_repos(repository_mapping[source_repos])
86
90
  end
87
91
  end
88
92
  end
@@ -138,19 +142,11 @@ module Actions
138
142
  end
139
143
  end
140
144
 
141
- def copy_repos(new_repo, new_version, content, dep_solve)
142
- copy_output = []
145
+ def copy_repos(new_repo)
143
146
  sequence do
144
- solve_dependencies = new_version.content_view.solve_dependencies || dep_solve
145
- copy_output += copy_deb_content(new_repo, solve_dependencies, content[:deb_ids])
146
- copy_output += copy_yum_content(new_repo, solve_dependencies,
147
- content[:package_ids],
148
- content[:errata_ids])
149
-
150
147
  plan_action(Katello::Repository::MetadataGenerate, new_repo)
151
148
  plan_action(Katello::Repository::IndexContent, id: new_repo.id)
152
149
  end
153
- copy_output
154
150
  end
155
151
 
156
152
  # For a given repo, find it's instances in both the new and old component versions.
@@ -328,52 +324,6 @@ module Actions
328
324
  plan_action(Katello::ContentView::Promote, new_version, environments, true, nil, true)
329
325
  end
330
326
 
331
- def copy_deb_content(new_repo, dep_solve, deb_ids)
332
- copy_outputs = []
333
- if new_repo.content_type == ::Katello::Repository::DEB_TYPE
334
- unless deb_ids.blank?
335
- copy_outputs << plan_action(Pulp::Repository::CopyUnits, new_repo.library_instance, new_repo,
336
- ::Katello::Deb.with_identifiers(deb_ids),
337
- incremental_update: dep_solve).output
338
- end
339
- end
340
- copy_outputs
341
- end
342
-
343
- def copy_yum_content(new_repo, dep_solve, package_ids, errata_ids)
344
- return [] unless new_repo.content_type == ::Katello::Repository::YUM_TYPE
345
-
346
- copy_outputs = []
347
-
348
- unless errata_ids.blank?
349
- content_present_in_this_repo = new_repo
350
- .library_instance
351
- .errata
352
- .with_identifiers(errata_ids)
353
- .exists?
354
- if content_present_in_this_repo
355
- copy_outputs << plan_action(Pulp::Repository::CopyUnits, new_repo.library_instance, new_repo,
356
- ::Katello::Erratum.with_identifiers(errata_ids),
357
- incremental_update: dep_solve).output
358
- end
359
- end
360
-
361
- unless package_ids.blank?
362
- content_present_in_this_repo = new_repo
363
- .library_instance
364
- .rpms
365
- .with_identifiers(package_ids)
366
- .exists?
367
- if content_present_in_this_repo
368
- copy_outputs << plan_action(Pulp::Repository::CopyUnits, new_repo.library_instance, new_repo,
369
- ::Katello::Rpm.with_identifiers(package_ids),
370
- incremental_update: dep_solve).output
371
- end
372
- end
373
-
374
- copy_outputs
375
- end
376
-
377
327
  def plan_copy(action_class, source_repo, target_repo, clauses = nil, override_config = nil)
378
328
  plan_action(action_class,
379
329
  :source_pulp_id => source_repo.pulp_id,
@@ -19,7 +19,7 @@ module Actions
19
19
 
20
20
  def run
21
21
  models = []
22
- ::Katello::RepositoryTypeManager.repository_types.each_value do |repo_type|
22
+ ::Katello::RepositoryTypeManager.enabled_repository_types.each_value do |repo_type|
23
23
  indexable_types = repo_type.content_types_to_index
24
24
  models += indexable_types&.map(&:model_class)
25
25
  models.select! { |model| model.many_repository_associations }
@@ -2,20 +2,18 @@ module Actions
2
2
  module Katello
3
3
  module Repository
4
4
  class CloneContents < Actions::Base
5
- include Actions::Katello::PulpSelector
6
5
  include Actions::Katello::CheckMatchingContent
7
6
 
8
7
  def plan(source_repositories, new_repository, options)
9
8
  filters = options.fetch(:filters, nil)
10
9
  rpm_filenames = options.fetch(:rpm_filenames, nil)
11
10
  generate_metadata = options.fetch(:generate_metadata, true)
12
- purge_empty_contents = options.fetch(:purge_empty_contents, false)
13
11
  copy_contents = options.fetch(:copy_contents, true)
14
12
  solve_dependencies = options.fetch(:solve_dependencies, false)
15
13
 
16
14
  sequence do
17
15
  if copy_contents
18
- plan_pulp_action([Pulp3::Orchestration::Repository::CopyAllUnits, Pulp::Orchestration::Repository::CopyAllUnits],
16
+ plan_action(Pulp3::Orchestration::Repository::CopyAllUnits,
19
17
  new_repository,
20
18
  SmartProxy.pulp_primary,
21
19
  source_repositories,
@@ -29,10 +27,6 @@ module Actions
29
27
  index_options[:source_repository_id] = source_repositories.first.id if source_repositories.count == 1 && filters.empty? && rpm_filenames.nil?
30
28
  index_options[:matching_content] = matching_content
31
29
  plan_action(Katello::Repository::IndexContent, index_options)
32
-
33
- if purge_empty_contents && new_repository.backend_service(SmartProxy.pulp_primary).should_purge_empty_contents?
34
- plan_action(Katello::Repository::PurgeEmptyContent, id: new_repository.id)
35
- end
36
30
  end
37
31
  end
38
32
 
@@ -4,18 +4,12 @@ module Actions
4
4
  # Clones the contnet of the repository into the environment
5
5
  # effectively promotion the repository to the environment
6
6
  class CloneToEnvironment < Actions::Base
7
- include Actions::Katello::PulpSelector
8
7
  def plan(repository, environment)
9
8
  clone = find_or_build_environment_clone(repository, environment)
10
9
 
11
10
  sequence do
12
11
  if clone.new_record?
13
- plan_action(Repository::Create, clone, true, false)
14
- else
15
- #only clear if it should be empty, but its not
16
- plan_optional_pulp_action([Actions::Pulp::Repository::Clear], clone, SmartProxy.pulp_primary)
17
- # Do we need to refresh distributors here?
18
- plan_optional_pulp_action([Actions::Pulp::Orchestration::Repository::RefreshIfNeeded], clone, SmartProxy.pulp_primary)
12
+ plan_action(Repository::Create, clone, true)
19
13
  end
20
14
 
21
15
  plan_action(::Actions::Katello::Repository::CloneContents, [repository], clone, :copy_contents => !clone.yum?)
@@ -2,18 +2,15 @@ module Actions
2
2
  module Katello
3
3
  module Repository
4
4
  class Create < Actions::EntryAction
5
- include Actions::Katello::PulpSelector
6
-
7
- def plan(repository, clone = false, plan_create = false)
5
+ def plan(repository, clone = false)
8
6
  repository.save!
9
7
  root = repository.root
10
8
 
11
9
  action_subject(repository)
12
10
 
13
11
  org = repository.organization
14
- pulp2_create_action = plan_create ? Actions::Pulp::Repository::CreateInPlan : Actions::Pulp::Repository::Create
15
12
  sequence do
16
- create_action = plan_pulp_action([pulp2_create_action, Pulp3::Orchestration::Repository::Create],
13
+ create_action = plan_action(Pulp3::Orchestration::Repository::Create,
17
14
  repository, SmartProxy.pulp_primary)
18
15
 
19
16
  return if create_action.error
@@ -10,7 +10,7 @@ module Actions
10
10
  repository.relative_path = repository.custom_repo_path
11
11
  repository.save!
12
12
  action_subject(repository)
13
- plan_action(::Actions::Katello::Repository::Create, repository, false, true)
13
+ plan_action(::Actions::Katello::Repository::Create, repository, false)
14
14
  end
15
15
 
16
16
  def humanized_name
@@ -2,7 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module Repository
4
4
  class Destroy < Actions::EntryAction
5
- include Actions::Katello::PulpSelector
6
5
  middleware.use ::Actions::Middleware::RemoteAction
7
6
 
8
7
  # options:
@@ -20,8 +19,7 @@ module Actions
20
19
  fail repository.errors.messages.values.join("\n")
21
20
  end
22
21
 
23
- plan_pulp_action([Actions::Pulp::Orchestration::Repository::Delete,
24
- Actions::Pulp3::Orchestration::Repository::Delete],
22
+ plan_action(Actions::Pulp3::Orchestration::Repository::Delete,
25
23
  repository,
26
24
  SmartProxy.pulp_primary)
27
25