katello 3.9.1 → 3.10.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 (229) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +28 -12
  3. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +12 -3
  4. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +4 -13
  5. data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -1
  6. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  7. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +6 -4
  8. data/app/controllers/katello/api/v2/content_views_controller.rb +8 -3
  9. data/app/controllers/katello/api/v2/gpg_keys_controller.rb +2 -1
  10. data/app/controllers/katello/api/v2/host_module_streams_controller.rb +39 -0
  11. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +20 -11
  12. data/app/controllers/katello/api/v2/module_streams_controller.rb +2 -1
  13. data/app/controllers/katello/api/v2/repository_sets_controller.rb +17 -8
  14. data/app/controllers/katello/application_controller.rb +0 -2
  15. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +5 -2
  16. data/app/lib/actions/candlepin/consumer/attach_subscription.rb +0 -2
  17. data/app/lib/actions/candlepin/consumer/remove_subscription.rb +0 -2
  18. data/app/lib/actions/katello/capsule_content/create_repos.rb +1 -25
  19. data/app/lib/actions/katello/capsule_content/sync.rb +1 -1
  20. data/app/lib/actions/katello/content_view/promote.rb +2 -5
  21. data/app/lib/actions/katello/content_view/promote_to_environment.rb +2 -5
  22. data/app/lib/actions/katello/content_view/publish.rb +1 -4
  23. data/app/lib/actions/katello/content_view_puppet_environment/create.rb +6 -10
  24. data/app/lib/actions/katello/content_view_version/export.rb +0 -2
  25. data/app/lib/actions/katello/content_view_version/incremental_update.rb +19 -1
  26. data/app/lib/actions/katello/environment/publish_repositories.rb +2 -1
  27. data/app/lib/actions/katello/gpg_key/update.rb +17 -0
  28. data/app/lib/actions/katello/host/attach_subscriptions.rb +0 -2
  29. data/app/lib/actions/katello/host/erratum/install.rb +6 -0
  30. data/app/lib/actions/katello/host/generate_applicability.rb +0 -2
  31. data/app/lib/actions/katello/host/hypervisors_update.rb +11 -6
  32. data/app/lib/actions/katello/host/package/install.rb +6 -0
  33. data/app/lib/actions/katello/host/package/remove.rb +6 -0
  34. data/app/lib/actions/katello/host/package/update.rb +7 -1
  35. data/app/lib/actions/katello/host/package_group/install.rb +6 -0
  36. data/app/lib/actions/katello/host/package_group/remove.rb +6 -0
  37. data/app/lib/actions/katello/host/recalculate_errata_status.rb +0 -2
  38. data/app/lib/actions/katello/host/remove_subscriptions.rb +0 -2
  39. data/app/lib/actions/katello/host/update.rb +1 -0
  40. data/app/lib/actions/katello/host/update_content_overrides.rb +0 -2
  41. data/app/lib/actions/katello/host/upload_package_profile.rb +13 -12
  42. data/app/lib/actions/katello/host/upload_profiles.rb +70 -0
  43. data/app/lib/actions/katello/product/reindex_subscriptions.rb +0 -2
  44. data/app/lib/actions/katello/product/repositories_certs_reset.rb +4 -4
  45. data/app/lib/actions/katello/product/repositories_gpg_reset.rb +2 -2
  46. data/app/lib/actions/katello/repository/check_matching_content.rb +18 -6
  47. data/app/lib/actions/katello/repository/clone_deb_content.rb +1 -1
  48. data/app/lib/actions/katello/repository/clone_to_environment.rb +3 -5
  49. data/app/lib/actions/katello/repository/clone_to_version.rb +2 -3
  50. data/app/lib/actions/katello/repository/clone_yum_content.rb +1 -2
  51. data/app/lib/actions/katello/repository/clone_yum_metadata.rb +2 -2
  52. data/app/lib/actions/katello/repository/create.rb +1 -31
  53. data/app/lib/actions/katello/repository/destroy.rb +1 -2
  54. data/app/lib/actions/katello/repository/export.rb +0 -2
  55. data/app/lib/actions/katello/repository/fetch_pxe_files.rb +0 -2
  56. data/app/lib/actions/katello/repository/filtered_index_content.rb +0 -2
  57. data/app/lib/actions/katello/repository/finish_upload.rb +0 -2
  58. data/app/lib/actions/katello/repository/import_upload.rb +0 -2
  59. data/app/lib/actions/katello/repository/index_content.rb +0 -1
  60. data/app/lib/actions/katello/repository/index_package_groups.rb +0 -2
  61. data/app/lib/actions/katello/repository/instance_update.rb +21 -0
  62. data/app/lib/actions/katello/repository/remove_content.rb +0 -2
  63. data/app/lib/actions/katello/repository/sync.rb +0 -1
  64. data/app/lib/actions/katello/repository/update.rb +0 -2
  65. data/app/lib/actions/katello/upstream_subscriptions/bind_entitlement.rb +0 -2
  66. data/app/lib/actions/katello/upstream_subscriptions/bind_entitlements.rb +0 -2
  67. data/app/lib/actions/katello/upstream_subscriptions/remove_entitlement.rb +0 -1
  68. data/app/lib/actions/katello/upstream_subscriptions/remove_entitlements.rb +0 -2
  69. data/app/lib/actions/katello/upstream_subscriptions/update_entitlement.rb +0 -1
  70. data/app/lib/actions/katello/upstream_subscriptions/update_entitlements.rb +0 -2
  71. data/app/lib/actions/pulp/abstract.rb +13 -14
  72. data/app/lib/actions/pulp/repository/create.rb +13 -211
  73. data/app/lib/actions/pulp/repository/create_in_plan.rb +4 -18
  74. data/app/lib/actions/pulp/repository/refresh.rb +7 -70
  75. data/app/lib/actions/pulp/repository/sync.rb +1 -2
  76. data/app/lib/katello/capsule_content.rb +3 -3
  77. data/app/lib/katello/resources/candlepin/consumer.rb +1 -1
  78. data/app/lib/katello/resources/candlepin/product.rb +1 -1
  79. data/app/lib/katello/validators/hostgroup_kickstart_repository_validator.rb +1 -1
  80. data/app/models/katello/available_module_stream.rb +11 -0
  81. data/app/models/katello/concerns/content_facet_host_extensions.rb +1 -0
  82. data/app/models/katello/concerns/host_managed_extensions.rb +56 -0
  83. data/app/models/katello/concerns/hostgroup_extensions.rb +17 -0
  84. data/app/models/katello/concerns/redhat_extensions.rb +20 -6
  85. data/app/models/katello/concerns/search_by_repository_name.rb +0 -1
  86. data/app/models/katello/concerns/smart_proxy_extensions.rb +26 -12
  87. data/app/models/katello/content_facet_applicable_module_stream.rb +7 -0
  88. data/app/models/katello/content_view_puppet_environment.rb +14 -35
  89. data/app/models/katello/erratum.rb +54 -24
  90. data/app/models/katello/erratum_package.rb +6 -0
  91. data/app/models/katello/glue/pulp/repo.rb +5 -228
  92. data/app/models/katello/gpg_key.rb +1 -0
  93. data/app/models/katello/host/content_facet.rb +38 -83
  94. data/app/models/katello/host_available_module_stream.rb +47 -0
  95. data/app/models/katello/module_stream.rb +18 -0
  96. data/app/models/katello/module_stream_erratum_package.rb +6 -0
  97. data/app/models/katello/product.rb +0 -2
  98. data/app/models/katello/product_content.rb +1 -0
  99. data/app/models/katello/repository.rb +15 -6
  100. data/app/models/katello/root_repository.rb +1 -1
  101. data/app/models/katello/rpm.rb +5 -17
  102. data/app/services/katello/applicable_content_helper.rb +111 -0
  103. data/app/services/katello/managed_content_medium_provider.rb +7 -0
  104. data/app/services/katello/pulp/consumer.rb +13 -7
  105. data/app/services/katello/pulp/repository.rb +157 -4
  106. data/app/services/katello/pulp/repository/deb.rb +47 -0
  107. data/app/services/katello/pulp/repository/docker.rb +43 -0
  108. data/app/services/katello/pulp/repository/file.rb +31 -0
  109. data/app/services/katello/pulp/repository/ostree.rb +40 -0
  110. data/app/services/katello/pulp/repository/puppet.rb +43 -0
  111. data/app/services/katello/pulp/repository/yum.rb +61 -0
  112. data/app/services/katello/repository_type.rb +1 -1
  113. data/app/views/katello/api/v2/content_facet/base.json.rabl +1 -0
  114. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +0 -1
  115. data/app/views/katello/api/v2/errata/_counts.json.rabl +0 -1
  116. data/app/views/katello/api/v2/errata/show.json.rabl +9 -3
  117. data/app/views/katello/api/v2/host_collections/delta_activation_keys.rabl +0 -1
  118. data/app/views/katello/api/v2/host_module_streams/base.json.rabl +8 -0
  119. data/app/views/katello/api/v2/host_module_streams/index.json.rabl +7 -0
  120. data/app/views/katello/api/v2/packages/backend.json.rabl +0 -1
  121. data/app/views/katello/api/v2/repositories/show.json.rabl +6 -6
  122. data/app/views/katello/layouts/react.html.erb +2 -2
  123. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +0 -1
  124. data/config/routes/api/rhsm.rb +1 -0
  125. data/config/routes/overrides.rb +4 -0
  126. data/db/migrate/20181008201422_add_modules_to_errata_packages.rb +29 -0
  127. data/db/migrate/20181017181806_available_module_streams.rb +34 -0
  128. data/db/migrate/20181027014323_add_applicable_modules.rb +24 -0
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/module-stream-actions.service.js +2 -1
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-info.html +1 -1
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/new/views/new-content-credential.html +1 -0
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-host-bulk-module-streams-modal.html +2 -2
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +37 -22
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +4 -1
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +27 -7
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-module-streams.html +29 -0
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/errata-details.html +15 -1
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +1 -1
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +0 -1
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +1 -2
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +3 -1
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +1 -1
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +0 -15
  144. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +0 -14
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum.controller.js +19 -0
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +0 -12
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-packages.html +36 -0
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum.html +7 -0
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.routes.js +9 -0
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-module-streams.factory.js +18 -0
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +4 -2
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +2 -2
  153. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +13 -0
  154. data/lib/katello/permissions/host_permissions.rb +3 -0
  155. data/lib/katello/repository_types/deb.rb +3 -1
  156. data/lib/katello/repository_types/docker.rb +3 -1
  157. data/lib/katello/repository_types/file.rb +1 -0
  158. data/lib/katello/repository_types/ostree.rb +3 -1
  159. data/lib/katello/repository_types/puppet.rb +3 -1
  160. data/lib/katello/repository_types/yum.rb +3 -1
  161. data/lib/katello/tasks/delete_orphaned_content.rake +1 -1
  162. data/lib/katello/tasks/reset.rake +1 -0
  163. data/lib/katello/tasks/test.rake +14 -0
  164. data/lib/katello/tasks/unify_hosts.rake +2 -0
  165. data/lib/katello/tasks/virt_who_report.rake +2 -1
  166. data/lib/katello/version.rb +1 -1
  167. data/locale/Makefile +52 -17
  168. data/locale/update-i18n +22 -0
  169. data/package.json +11 -1
  170. data/webpack/__mocks__/foremanReact/components/common/EmptyState.js +8 -0
  171. data/webpack/move_to_foreman/components/common/table/components/Table.js +2 -1
  172. data/webpack/move_to_pf/react-bootstrap-select/index.js +4 -2
  173. data/webpack/move_to_pf/test-utils/testHelpers.js +9 -0
  174. data/webpack/redux/OrganizationProducts/OrganizationProductsActions.js +24 -0
  175. data/webpack/redux/OrganizationProducts/OrganizationProductsConstants.js +5 -0
  176. data/webpack/redux/OrganizationProducts/OrganizationProductsReducer.js +38 -0
  177. data/webpack/redux/OrganizationProducts/OrganizationProductsSelectors.js +7 -0
  178. data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsActions.test.js +47 -0
  179. data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsReducer.test.js +33 -0
  180. data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsSelectors.test.js +19 -0
  181. data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsActions.test.js.snap +49 -0
  182. data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsReducer.test.js.snap +36 -0
  183. data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsSelectors.test.js.snap +9 -0
  184. data/webpack/redux/OrganizationProducts/index.js +13 -0
  185. data/webpack/redux/actions/RedHatRepositories/enabled.js +7 -1
  186. data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -0
  187. data/webpack/redux/actions/RedHatRepositories/sets.js +2 -0
  188. data/webpack/redux/reducers/RedHatRepositories/enabled.fixtures.js +8 -2
  189. data/webpack/redux/reducers/RedHatRepositories/enabled.js +1 -1
  190. data/webpack/redux/reducers/RedHatRepositories/sets.fixtures.js +12 -3
  191. data/webpack/redux/reducers/index.js +2 -0
  192. data/webpack/scenes/RedHatRepositories/components/SearchBar.js +68 -33
  193. data/webpack/scenes/RedHatRepositories/index.js +13 -2
  194. data/webpack/scenes/RedHatRepositories/index.scss +26 -0
  195. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +1 -1
  196. data/webpack/scenes/Subscriptions/Manifest/__tests__/__snapshots__/ManageManifestModal.test.js.snap +1 -1
  197. data/webpack/scenes/Subscriptions/SubscriptionActions.js +18 -2
  198. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +8 -0
  199. data/webpack/scenes/Subscriptions/SubscriptionHelpers.js +15 -0
  200. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +22 -14
  201. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +39 -90
  202. data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +14 -0
  203. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +1 -3
  204. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +0 -1
  205. data/webpack/scenes/Subscriptions/__tests__/SubscriptionHelpers.test.js +84 -0
  206. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsActions.test.js +26 -1
  207. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +5 -0
  208. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +177 -75
  209. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsSelectors.test.js +29 -0
  210. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionHelpers.test.js.snap +31 -0
  211. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +32 -0
  212. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +18 -96
  213. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsReducer.test.js.snap +511 -0
  214. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsSelectors.test.js.snap +26 -0
  215. data/webpack/scenes/Subscriptions/__tests__/subscriptions.fixtures.js +6 -1
  216. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +3 -21
  217. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +113 -0
  218. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.test.js +47 -0
  219. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +504 -0
  220. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/index.js +1 -0
  221. data/webpack/scenes/Subscriptions/index.js +15 -4
  222. metadata +59 -14
  223. data/app/lib/actions/pulp/repository/associate_distributor.rb +0 -20
  224. data/app/lib/actions/pulp/repository/associate_importer.rb +0 -23
  225. data/app/lib/actions/pulp/repository/delete_distributor.rb +0 -18
  226. data/app/lib/actions/pulp/repository/refresh_distributor.rb +0 -19
  227. data/app/lib/actions/pulp/repository/update_importer.rb +0 -33
  228. data/app/lib/katello/bulk_actions.rb +0 -63
  229. data/webpack/move_to_foreman/components/common/EmptyState/index.js +0 -68
@@ -3,8 +3,6 @@ module Actions
3
3
  module Katello
4
4
  module Repository
5
5
  class ImportUpload < Actions::EntryAction
6
- middleware.use Actions::Middleware::KeepCurrentUser
7
-
8
6
  def plan(repository, upload_ids, options = {})
9
7
  action_subject(repository)
10
8
 
@@ -2,7 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module Repository
4
4
  class IndexContent < Actions::EntryAction
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
5
  middleware.use Actions::Middleware::ExecuteIfContentsChanged
7
6
 
8
7
  input_format do
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module Repository
4
4
  class IndexPackageGroups < Actions::EntryAction
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
-
7
5
  def plan(repository)
8
6
  plan_self(:user_id => ::User.current.id, :id => repository.id)
9
7
  end
@@ -0,0 +1,21 @@
1
+ module Actions
2
+ module Katello
3
+ module Repository
4
+ class InstanceUpdate < Actions::EntryAction
5
+ middleware.use Actions::Middleware::KeepCurrentUser
6
+
7
+ def plan(repository)
8
+ action_subject repository
9
+ repository.save!
10
+ plan_action(::Actions::Pulp::Repository::Refresh, repository)
11
+ plan_self(:repository_id => repository.id)
12
+ end
13
+
14
+ def run
15
+ repository = ::Katello::Repository.find(input[:repository_id])
16
+ ForemanTasks.async_task(Katello::Repository::MetadataGenerate, repository)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -4,8 +4,6 @@ module Actions
4
4
  class RemoveContent < Actions::EntryAction
5
5
  include Dynflow::Action::WithSubPlans
6
6
 
7
- middleware.use Actions::Middleware::KeepCurrentUser
8
-
9
7
  def plan(repository, content_units, options = {})
10
8
  sync_capsule = options.fetch(:sync_capsule, true)
11
9
  if repository.redhat?
@@ -4,7 +4,6 @@ module Actions
4
4
  module Repository
5
5
  class Sync < Actions::EntryAction
6
6
  include Helpers::Presenter
7
- middleware.use Actions::Middleware::KeepCurrentUser
8
7
  middleware.use Actions::Middleware::ExecuteIfContentsChanged
9
8
 
10
9
  input_format do
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module Repository
4
4
  class Update < Actions::EntryAction
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
-
7
5
  def plan(root, repo_params)
8
6
  repository = root.library_instance
9
7
  action_subject root.library_instance
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module UpstreamSubscriptions
4
4
  class BindEntitlement < Actions::Base
5
- middleware.use Actions::Middleware::KeepCurrentTaxonomies
6
-
7
5
  def run
8
6
  output[:response] = ::Katello::Resources::Candlepin::UpstreamConsumer
9
7
  .bind_entitlement(pool)
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module UpstreamSubscriptions
4
4
  class BindEntitlements < Actions::Base
5
- middleware.use Actions::Middleware::KeepCurrentTaxonomies
6
-
7
5
  def plan(pools = [])
8
6
  fail _("No pools were provided.") unless pools.any?
9
7
  fail _("Current organization is not set.") unless ::Organization.current
@@ -2,7 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module UpstreamSubscriptions
4
4
  class RemoveEntitlement < Actions::Base
5
- middleware.use Actions::Middleware::KeepCurrentTaxonomies
6
5
  middleware.use Actions::Middleware::PropagateCandlepinErrors
7
6
 
8
7
  input_format do
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module UpstreamSubscriptions
4
4
  class RemoveEntitlements < Actions::Base
5
- middleware.use Actions::Middleware::KeepCurrentTaxonomies
6
-
7
5
  def plan(pool_ids = [])
8
6
  ids = pool_ids.uniq.compact
9
7
  fail _("No pool IDs were provided.") if ids.blank?
@@ -2,7 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module UpstreamSubscriptions
4
4
  class UpdateEntitlement < Actions::Base
5
- middleware.use Actions::Middleware::KeepCurrentTaxonomies
6
5
  middleware.use Actions::Middleware::PropagateCandlepinErrors
7
6
 
8
7
  input_format do
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module UpstreamSubscriptions
4
4
  class UpdateEntitlements < Actions::Base
5
- middleware.use Actions::Middleware::KeepCurrentTaxonomies
6
-
7
5
  def plan(pools = [])
8
6
  fail _("No pools were provided.") if pools.blank?
9
7
  fail _("Current organization is not set.") unless ::Organization.current
@@ -5,29 +5,28 @@ module Actions
5
5
  middleware.use Actions::Middleware::PulpServicesCheck
6
6
 
7
7
  def pulp_resources(capsule_id = nil)
8
- capsule_id ||= input.try(:[], "capsule_id")
9
- if capsule_id
10
- capsule_content = ::Katello::CapsuleContent.new(smart_proxy(capsule_id))
11
- capsule_content.pulp_server.resources
12
- else
13
- ::Katello.pulp_server.resources
14
- end
8
+ capsule_content(capsule_id).resources
15
9
  end
16
10
 
17
11
  def pulp_extensions(capsule_id = nil)
12
+ capsule_content(capsule_id).extensions
13
+ end
14
+
15
+ def smart_proxy(id)
16
+ SmartProxy.unscoped.find(id)
17
+ end
18
+
19
+ private
20
+
21
+ def capsule_content(capsule_id = nil)
18
22
  capsule_id ||= input["capsule_id"]
19
23
  if capsule_id
20
24
  capsule_content = ::Katello::CapsuleContent.new(SmartProxy.unscoped.find(capsule_id))
21
- capsule_content.pulp_server.extensions
25
+ capsule_content.pulp_server
22
26
  else
23
- ::Katello.pulp_server.extensions
27
+ ::Katello.pulp_server
24
28
  end
25
29
  end
26
-
27
- def smart_proxy(capsule_id = nil)
28
- smart_proxy = capsule_id ? SmartProxy.unscoped.find(capsule_id) : SmartProxy.default_capsule
29
- smart_proxy
30
- end
31
30
  end
32
31
  end
33
32
  end
@@ -5,227 +5,29 @@ module Actions
5
5
  include Helpers::Presenter
6
6
 
7
7
  input_format do
8
- param :content_type
9
- param :pulp_id
10
- param :name
11
- param :feed
12
- param :ssl_ca_cert
13
- param :ssl_client_cert
14
- param :ssl_client_key
15
- param :unprotected
16
- param :checksum_type
17
- param :path
18
- param :with_importer
19
- param :docker_upstream_name
20
- param :docker_tags_whitelist
21
- param :download_policy
8
+ param :repository_id
22
9
  param :capsule_id
23
- param :mirror_on_sync
24
- param :ssl_validation
25
- param :upstream_username
26
- param :upstream_password
27
- param :ostree_upstream_sync_depth
28
- param :ostree_publish_depth
29
- param :deb_releases
30
- param :deb_architectures
31
- param :deb_components
32
- param :ignorable_content
33
10
  end
34
11
 
35
- def run
36
- output[:response] = pulp_extensions.repository.
37
- create_with_importer_and_distributors(input[:pulp_id],
38
- importer,
39
- distributors,
40
- display_name: input[:name])
41
- rescue RestClient::Conflict
42
- Rails.logger.warn("Tried to add repository #{input[:pulp_id]} that already exists.")
43
- []
44
- end
45
-
46
- def importer
47
- case input[:content_type]
48
- when ::Katello::Repository::YUM_TYPE, ::Katello::Repository::FILE_TYPE
49
- yum_or_iso_importer
50
- when ::Katello::Repository::PUPPET_TYPE
51
- puppet_importer
52
- when ::Katello::Repository::DOCKER_TYPE
53
- docker_importer
54
- when ::Katello::Repository::OSTREE_TYPE
55
- ostree_importer
56
- when ::Katello::Repository::DEB_TYPE
57
- deb_importer
12
+ def plan(repository, smart_proxy = SmartProxy.pulp_master!)
13
+ if repository.is_a?(::Katello::ContentViewPuppetEnvironment)
14
+ plan_self(:content_view_puppet_environment_id => repository.id, :capsule_id => smart_proxy.id)
58
15
  else
59
- fail _("Unexpected repo type %s") % input[:content_type]
60
- end
61
- end
62
-
63
- def yum_or_iso_importer
64
- importer = case input[:content_type]
65
- when ::Katello::Repository::YUM_TYPE
66
- Runcible::Models::YumImporter.new
67
- when ::Katello::Repository::FILE_TYPE
68
- Runcible::Models::IsoImporter.new
69
- end
70
- importer.feed = input[:feed]
71
- importer.proxy_host = input[:proxy_host]
72
- importer.ssl_ca_cert = input[:ssl_ca_cert]
73
- importer.ssl_client_cert = input[:ssl_client_cert]
74
- importer.ssl_client_key = input[:ssl_client_key]
75
- importer.ssl_validation = input[:ssl_validation]
76
- importer.download_policy = input[:download_policy] if input[:content_type] == ::Katello::Repository::YUM_TYPE
77
- importer.remove_missing = input[:mirror_on_sync] if input[:content_type] == ::Katello::Repository::YUM_TYPE
78
- importer.basic_auth_username = input[:upstream_username] if input[:upstream_username].present?
79
- importer.basic_auth_password = input[:upstream_password] if input[:upstream_password].present?
80
- importer.type_skip_list = input[:ignorable_content] if input[:ignorable_content]
81
- importer
82
- end
83
-
84
- def ostree_importer
85
- importer = Runcible::Models::OstreeImporter.new
86
- importer.feed = input[:feed]
87
- importer.proxy_host = input[:proxy_host]
88
- importer.ssl_ca_cert = input[:ssl_ca_cert]
89
- importer.ssl_client_cert = input[:ssl_client_cert]
90
- importer.ssl_client_key = input[:ssl_client_key]
91
- importer.ssl_validation = input[:ssl_validation]
92
- importer.depth = input[:ostree_upstream_sync_depth]
93
- importer.basic_auth_username = input[:upstream_username] if input[:upstream_username].present?
94
- importer.basic_auth_password = input[:upstream_password] if input[:upstream_password].present?
95
- importer
96
- end
97
-
98
- def puppet_importer
99
- importer = Runcible::Models::PuppetImporter.new
100
- importer.feed = input[:feed]
101
- importer.proxy_host = input[:proxy_host]
102
- importer.ssl_ca_cert = input[:ssl_ca_cert]
103
- importer.ssl_client_cert = input[:ssl_client_cert]
104
- importer.ssl_client_key = input[:ssl_client_key]
105
- importer.ssl_validation = input[:ssl_validation]
106
- importer.remove_missing = input[:mirror_on_sync]
107
- importer.basic_auth_username = input[:upstream_username] if input[:upstream_username].present?
108
- importer.basic_auth_password = input[:upstream_password] if input[:upstream_password].present?
109
- importer
110
- end
111
-
112
- def docker_importer
113
- importer = Runcible::Models::DockerImporter.new
114
- importer.proxy_host = input[:proxy_host]
115
- importer.upstream_name = input[:docker_upstream_name] if input[:docker_upstream_name]
116
- importer.tags = input[:docker_tags_whitelist] if input[:docker_tags_whitelist]
117
- importer.feed = input[:feed]
118
- importer.enable_v1 = false
119
- importer.ssl_validation = input[:ssl_validation]
120
- importer.basic_auth_username = input[:upstream_username] if input[:upstream_username].present?
121
- importer.basic_auth_password = input[:upstream_password] if input[:upstream_password].present?
122
- importer
123
- end
124
-
125
- def deb_importer
126
- Runcible::Models::DebImporter.new.tap do |importer|
127
- importer.feed = input[:feed]
128
- importer.releases = input[:deb_releases] if input[:deb_releases]
129
- importer.architectures = input[:deb_architectures] if input[:deb_architectures]
130
- importer.components = input[:deb_components] if input[:deb_components]
131
- importer.ssl_validation = input[:ssl_validation]
132
- importer.basic_auth_username = input[:upstream_username] if input[:upstream_username].present?
133
- importer.basic_auth_password = input[:upstream_password] if input[:upstream_password].present?
16
+ plan_self(:repository_id => repository.id, :capsule_id => smart_proxy.id)
134
17
  end
135
18
  end
136
19
 
137
- def distributors
138
- case input[:content_type]
139
- when ::Katello::Repository::YUM_TYPE
140
- distributors = [yum_distributor, export_distributor]
141
- distributors << yum_clone_distributor unless input[:capsule_id]
142
- when ::Katello::Repository::FILE_TYPE
143
- distributors = [iso_distributor]
144
- when ::Katello::Repository::PUPPET_TYPE
145
- distributors = input[:path].blank? ? [] : [puppet_install_distributor]
146
- distributors << puppet_distributor
147
- when ::Katello::Repository::DOCKER_TYPE
148
- distributors = [docker_distributor]
149
- when ::Katello::Repository::OSTREE_TYPE
150
- distributors = [ostree_distributor]
151
- when ::Katello::Repository::DEB_TYPE
152
- distributors = [deb_distributor]
20
+ def run
21
+ if input[:repository_id]
22
+ repo = ::Katello::Repository.find(input[:repository_id])
153
23
  else
154
- fail _("Unexpected repo type %s") % input[:content_type]
24
+ repo = ::Katello::ContentViewPuppetEnvironment.find(input[:content_view_puppet_environment_id]).nonpersisted_repository
155
25
  end
156
26
 
157
- distributors
158
- end
159
-
160
- def yum_distributor
161
- yum_dist_options = { protected: true,
162
- id: input[:pulp_id],
163
- auto_publish: true }
164
- yum_dist_options[:skip] = input[:ignorable_content] if input[:ignorable_content]
165
- yum_dist_options[:checksum_type] = input[:checksum_type] if input[:checksum_type]
166
- Runcible::Models::YumDistributor.new(input[:path],
167
- input[:unprotected] || false,
168
- true,
169
- yum_dist_options)
170
- end
171
-
172
- def yum_clone_distributor
173
- Runcible::Models::YumCloneDistributor.new(id: "#{input[:pulp_id]}_clone",
174
- destination_distributor_id: input[:pulp_id])
175
- end
176
-
177
- def iso_distributor
178
- options = { auto_publish: true }
179
- Runcible::Models::IsoDistributor.new(input[:path],
180
- input[:unprotected] || true,
181
- true,
182
- options)
183
- end
184
-
185
- def puppet_distributor
186
- options = { id: "#{input[:pulp_id]}_puppet", auto_publish: true }
187
- Runcible::Models::PuppetDistributor.new(nil,
188
- input[:unprotected] || false,
189
- true,
190
- options)
191
- end
192
-
193
- def puppet_install_distributor
194
- Runcible::Models::PuppetInstallDistributor.new(input[:path],
195
- id: input[:pulp_id],
196
- auto_publish: true)
197
- end
198
-
199
- def docker_distributor
200
- options = { protected: !input[:unprotected] || false,
201
- id: input[:pulp_id],
202
- auto_publish: true,
203
- repo_registry_id: input[:repo_registry_id]}
204
- Runcible::Models::DockerDistributor.new(options)
205
- end
206
-
207
- def export_distributor
208
- # "false, false" means "no http export, no https export". We only
209
- # export to a directory.
210
- Runcible::Models::ExportDistributor.new(false, false, input[:path])
211
- end
212
-
213
- def ostree_distributor
214
- options = { id: input[:pulp_id],
215
- relative_path: input[:path],
216
- auto_publish: true }
217
- options[:depth] = input[:ostree_publish_depth] if input[:ostree_publish_depth]
218
- Runcible::Models::OstreeDistributor.new(options)
219
- end
220
-
221
- def deb_distributor
222
- deb_dist_options = { id: input[:pulp_id],
223
- auto_publish: true }
224
- deb_dist_options[:checksum_type] = input[:checksum_type] if input[:checksum_type]
225
- Runcible::Models::DebDistributor.new(input[:path],
226
- input[:unprotected] || false,
227
- true,
228
- deb_dist_options)
27
+ output[:response] = repo.backend_service(smart_proxy(input[:capsule_id])).create
28
+ rescue RestClient::Conflict
29
+ Rails.logger.warn("Tried to add repository #{input[:pulp_id]} that already exists.")
30
+ []
229
31
  end
230
32
  end
231
33
  end
@@ -4,24 +4,10 @@ module Actions
4
4
  class CreateInPlan < Create
5
5
  alias_method :perform_run, :run
6
6
 
7
- def plan(input)
8
- plan_self(input)
9
- pulp_extensions.repository.create_with_importer_and_distributors(input[:pulp_id],
10
- importer,
11
- distributors,
12
- display_name: input[:name])
13
- rescue => e
14
- raise e.try(:http_body) ? error_message(e.http_body) || e : e
15
- end
16
-
17
- def error_message(body)
18
- JSON.parse(body)['error_message']
19
- rescue JSON::ParserError
20
- nil
21
- end
22
-
23
- def run
24
- self.output = input
7
+ def plan(repository)
8
+ input[:response] = repository.backend_service(SmartProxy.pulp_master).create
9
+ rescue RestClient::Conflict
10
+ Rails.logger.warn("Tried to add repository #{input[:pulp_id]} that already exists.")
25
11
  end
26
12
  end
27
13
  end