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 @@ require 'base64'
3
3
 
4
4
  module Katello
5
5
  class ApplicationController < ::ApplicationController
6
- include ::HomeHelper
7
-
8
6
  layout 'katello/layouts/katello'
9
7
 
10
8
  clear_helpers
@@ -19,8 +19,11 @@ module Katello
19
19
  prepend Overrides
20
20
 
21
21
  def destroy
22
- Katello::RegistrationManager.unregister_host(@host, :unregistering => false)
23
- process_success :success_redirect => hosts_path
22
+ if Katello::RegistrationManager.unregister_host(@host, :unregistering => false)
23
+ process_success(:success_redirect => hosts_path)
24
+ else
25
+ process_error :redirect => :back, :error_msg => _("Failed to delete %{host}: %{errors}") % { :host => @host, :errors => @host.errors.full_messages }
26
+ end
24
27
  rescue StandardError => ex
25
28
  process_error(:object => @host, :error_msg => ex.message, :redirect => saved_redirect_url_or(send("#{controller_name}_url")))
26
29
  end
@@ -2,8 +2,6 @@ module Actions
2
2
  module Candlepin
3
3
  module Consumer
4
4
  class AttachSubscription < Candlepin::Abstract
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
-
7
5
  input_format do
8
6
  param :uuid, String
9
7
  param :pool_uuid, String
@@ -2,8 +2,6 @@ module Actions
2
2
  module Candlepin
3
3
  module Consumer
4
4
  class RemoveSubscription < Candlepin::Abstract
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
-
7
5
  input_format do
8
6
  param :uuid, String
9
7
  param :entitlement_id, String
@@ -7,7 +7,7 @@ module Actions
7
7
  fail _("Action not allowed for the default capsule.") if capsule_content.default_capsule?
8
8
 
9
9
  repos_to_create(capsule_content, environment, content_view, repository).each do |repo|
10
- create_repo_in_pulp(capsule_content, repo)
10
+ plan_action(Pulp::Repository::Create, repo, capsule_content.capsule)
11
11
  end
12
12
  end
13
13
 
@@ -26,30 +26,6 @@ module Actions
26
26
  repos
27
27
  end
28
28
 
29
- def create_repo_in_pulp(capsule_content, repository)
30
- ueber_cert = ::Cert::Certs.ueber_cert(repository.organization)
31
- relative_path = repository_relative_path(repository, capsule_content)
32
- checksum_type = repository.yum? ? repository.checksum_type : nil
33
-
34
- plan_action(Pulp::Repository::Create,
35
- content_type: repository.content_type,
36
- pulp_id: repository.pulp_id,
37
- name: repository.name,
38
- feed: repository.docker? ? repository.docker_feed_url(capsule_content.capsule) : repository.full_path(nil, true),
39
- ssl_ca_cert: ::Cert::Certs.ca_cert,
40
- ssl_client_cert: ueber_cert[:cert],
41
- ssl_client_key: ueber_cert[:key],
42
- unprotected: repository.unprotected,
43
- checksum_type: checksum_type,
44
- path: relative_path,
45
- with_importer: true,
46
- docker_upstream_name: repository.docker? ? repository.container_repository_name : nil,
47
- docker_tags_whitelist: repository.docker? ? repository.docker_tags_whitelist : nil,
48
- repo_registry_id: repository.docker? ? repository.container_repository_name : nil,
49
- download_policy: repository.capsule_download_policy(capsule_content.capsule),
50
- capsule_id: capsule_content.capsule.id)
51
- end
52
-
53
29
  def repository_relative_path(repository, capsule_content)
54
30
  if repository.is_a? ::Katello::ContentViewPuppetEnvironment
55
31
  repository.generate_puppet_path(capsule_content.capsule)
@@ -73,7 +73,7 @@ module Actions
73
73
  capsule_id: capsule_content.capsule.id,
74
74
  repo_pulp_id: repo_id)
75
75
  end
76
- pulp_options = { remove_missing: repo && ["puppet", "yum"].include?(repo.content_type) }
76
+ pulp_options = { remove_missing: repo && ["deb", "puppet", "yum"].include?(repo.content_type) }
77
77
  pulp_options[:force_full] = true if skip_metadata_check && repo.content_type == "yum"
78
78
  plan_action(Pulp::Consumer::SyncCapsule,
79
79
  capsule_id: capsule_content.capsule.id,
@@ -2,9 +2,7 @@ module Actions
2
2
  module Katello
3
3
  module ContentView
4
4
  class Promote < Actions::EntryAction
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
-
7
- def plan(version, environments, is_force = false, description = nil, options = {})
5
+ def plan(version, environments, is_force = false, description = nil)
8
6
  action_subject(version.content_view)
9
7
  version.check_ready_to_promote!(environments)
10
8
 
@@ -15,8 +13,7 @@ module Actions
15
13
  environments.each do |environment|
16
14
  sequence do
17
15
  plan_action(Katello::ContentViewVersion::BeforePromoteHook, :id => version.id)
18
- plan_action(ContentView::PromoteToEnvironment, version, environment, description,
19
- :force_yum_metadata_regeneration => options[:force_yum_metadata_regeneration])
16
+ plan_action(ContentView::PromoteToEnvironment, version, environment, description)
20
17
  plan_action(Katello::ContentViewVersion::AfterPromoteHook, :id => version.id)
21
18
  end
22
19
  end
@@ -3,9 +3,7 @@ module Actions
3
3
  module Katello
4
4
  module ContentView
5
5
  class PromoteToEnvironment < Actions::EntryAction
6
- middleware.use Actions::Middleware::KeepCurrentUser
7
-
8
- def plan(version, environment, description, options = {})
6
+ def plan(version, environment, description)
9
7
  history = ::Katello::ContentViewHistory.create!(:content_view_version => version, :user => ::User.current.login,
10
8
  :environment => environment, :task => self.task,
11
9
  :status => ::Katello::ContentViewHistory::IN_PROGRESS,
@@ -17,8 +15,7 @@ module Actions
17
15
  concurrence do
18
16
  version.archived_repos.non_puppet.each do |repository|
19
17
  sequence do
20
- plan_action(Repository::CloneToEnvironment, repository, environment,
21
- :force_yum_metadata_regeneration => options[:force_yum_metadata_regeneration])
18
+ plan_action(Repository::CloneToEnvironment, repository, environment)
22
19
  end
23
20
  end
24
21
 
@@ -3,8 +3,6 @@ module Actions
3
3
  module Katello
4
4
  module ContentView
5
5
  class Publish < Actions::EntryAction
6
- middleware.use Actions::Middleware::KeepCurrentUser
7
-
8
6
  # rubocop:disable MethodLength
9
7
  def plan(content_view, description = "", options = {})
10
8
  action_subject(content_view)
@@ -45,8 +43,7 @@ module Actions
45
43
  content_view.publish_repositories do |repositories|
46
44
  sequence do
47
45
  clone_to_version = plan_action(Repository::CloneToVersion, repositories, version, :repos_units => options[:repos_units])
48
- plan_action(Repository::CloneToEnvironment, clone_to_version.new_repository, library,
49
- :force_yum_metadata_regeneration => options[:force_yum_metadata_regeneration])
46
+ plan_action(Repository::CloneToEnvironment, clone_to_version.new_repository, library)
50
47
  end
51
48
  end
52
49
 
@@ -9,17 +9,8 @@ module Actions
9
9
  User.as_anonymous_admin { puppet_environment.save! }
10
10
 
11
11
  action_subject(puppet_environment)
12
- plan_self
13
-
14
- puppet_path = puppet_environment.generate_puppet_path(internal_capsule)
15
-
16
12
  sequence do
17
- plan_action(Pulp::Repository::Create,
18
- content_type: ::Katello::Repository::PUPPET_TYPE,
19
- pulp_id: puppet_environment.pulp_id,
20
- name: puppet_environment.name,
21
- with_importer: true,
22
- path: puppet_path)
13
+ plan_self(:content_view_puppet_environment_id => puppet_environment.id)
23
14
 
24
15
  # when creating a clone, the following actions are handled by the
25
16
  # publish/promote process
@@ -29,6 +20,11 @@ module Actions
29
20
  end
30
21
  end
31
22
 
23
+ def run
24
+ puppet_environment = ::Katello::ContentViewPuppetEnvironment.find(input[:content_view_puppet_environment_id])
25
+ output[:response] = ::Katello::Pulp::Repository::Puppet.new(puppet_environment.nonpersisted_repository, SmartProxy.pulp_master).create
26
+ end
27
+
32
28
  def humanized_name
33
29
  _("Create")
34
30
  end
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module ContentViewVersion
4
4
  class Export < Actions::EntryAction
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
-
7
5
  def plan(content_view_version, export_to_iso, since, iso_size)
8
6
  # assemble data to feed to Pulp
9
7
  content_view = ::Katello::ContentView.find(content_view_version.content_view_id)
@@ -7,6 +7,7 @@ module Actions
7
7
  HUMANIZED_TYPES = {
8
8
  ::Katello::Erratum::CONTENT_TYPE => "Errata",
9
9
  ::Katello::Rpm::CONTENT_TYPE => "Packages",
10
+ ::Katello::Deb::CONTENT_TYPE => "Deb Packages",
10
11
  ::Katello::PuppetModule::CONTENT_TYPE => "Puppet Modules"
11
12
  }.freeze
12
13
 
@@ -67,7 +68,8 @@ module Actions
67
68
  copy_output = []
68
69
  sequence do
69
70
  new_repo = plan_action(Repository::CloneToVersion, source_repos, new_version, :incremental => true).new_repository
70
- copy_output = copy_yum_content(new_repo, dep_solve, content[:package_ids], content[:errata_ids])
71
+ copy_output += copy_deb_content(new_repo, dep_solve, content[:deb_ids])
72
+ copy_output += copy_yum_content(new_repo, dep_solve, content[:package_ids], content[:errata_ids])
71
73
 
72
74
  plan_action(Katello::Repository::MetadataGenerate, new_repo)
73
75
  plan_action(Katello::Repository::IndexContent, id: new_repo.id)
@@ -118,6 +120,7 @@ module Actions
118
120
  def run
119
121
  content = { ::Katello::Erratum::CONTENT_TYPE => [],
120
122
  ::Katello::Rpm::CONTENT_TYPE => [],
123
+ ::Katello::Deb::CONTENT_TYPE => [],
121
124
  ::Katello::PuppetModule::CONTENT_TYPE => []}
122
125
 
123
126
  input[:copy_action_outputs].each do |copy_output|
@@ -130,6 +133,8 @@ module Actions
130
133
  content[::Katello::Erratum::CONTENT_TYPE] << unit['id']
131
134
  when ::Katello::Rpm::CONTENT_TYPE
132
135
  content[::Katello::Rpm::CONTENT_TYPE] << ::Katello::Util::Package.build_nvra(unit)
136
+ when ::Katello::Deb::CONTENT_TYPE
137
+ content[::Katello::Deb::CONTENT_TYPE] << "#{unit['name']}_#{unit['version']}_#{unit['architecture']}"
133
138
  when ::Katello::PuppetModule::CONTENT_TYPE
134
139
  content[::Katello::PuppetModule::CONTENT_TYPE] << "#{unit['author']}-#{unit['name']}-#{unit['version']}"
135
140
  end
@@ -210,6 +215,19 @@ module Actions
210
215
  plan_action(Katello::ContentView::Promote, new_version, environments, true)
211
216
  end
212
217
 
218
+ def copy_deb_content(new_repo, dep_solve, deb_ids)
219
+ copy_outputs = []
220
+ if new_repo.content_type == ::Katello::Repository::DEB_TYPE
221
+ unless deb_ids.blank?
222
+ deb_uuids = ::Katello::Deb.with_identifiers(deb_ids).pluck(:uuid)
223
+ copy_outputs << plan_copy(Pulp::Repository::CopyDeb, new_repo.library_instance, new_repo,
224
+ { :filters => {:association => {'unit_id' => {'$in' => deb_uuids}}}},
225
+ :recursive => true, :resolve_dependencies => dep_solve).output
226
+ end
227
+ end
228
+ copy_outputs
229
+ end
230
+
213
231
  def copy_yum_content(new_repo, dep_solve, package_ids, errata_ids)
214
232
  copy_outputs = []
215
233
  if new_repo.content_type == ::Katello::Repository::YUM_TYPE
@@ -15,7 +15,8 @@ module Actions
15
15
  concurrence do
16
16
  repositories.each do |repository|
17
17
  sequence do
18
- plan_action(::Actions::Katello::Repository::Update, repository, container_repository_name: repository.container_repository_name)
18
+ repository.set_container_repository_name
19
+ plan_action(::Actions::Katello::Repository::InstanceUpdate, repository)
19
20
  plan_action(::Actions::Katello::Repository::CapsuleSync, repository)
20
21
  end
21
22
  end
@@ -0,0 +1,17 @@
1
+ module Actions
2
+ module Katello
3
+ module GpgKey
4
+ class Update < Actions::EntryAction
5
+ def plan(gpg_key, gpg_key_params)
6
+ action_subject gpg_key
7
+ gpg_key.update_attributes!(gpg_key_params)
8
+ gpg_key.repositories.each do |repository|
9
+ if repository.content_type == ::Katello::Repository::DEB_TYPE
10
+ plan_action(::Actions::Katello::Repository::RefreshRepository, repository)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module Host
4
4
  class AttachSubscriptions < Actions::EntryAction
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
-
7
5
  def plan(host, pools_with_quantities_params)
8
6
  action_subject(host)
9
7
  sequence do
@@ -22,6 +22,7 @@ module Actions
22
22
  type: 'erratum',
23
23
  args: errata_ids)
24
24
  end
25
+ plan_self(:host_id => host.id)
25
26
  end
26
27
 
27
28
  def humanized_name
@@ -39,6 +40,11 @@ module Actions
39
40
  def presenter
40
41
  Helpers::Presenter::Delegated.new(self, planned_actions(Pulp::Consumer::ContentInstall))
41
42
  end
43
+
44
+ def finalize
45
+ host = ::Host.find_by(:id => input[:host_id])
46
+ host.update(audit_comment: _("Installation of errata requested: %{errata}") % {errata: input[:errata].join(", ")})
47
+ end
42
48
  end
43
49
  end
44
50
  end
@@ -2,8 +2,6 @@ module Actions
2
2
  module Katello
3
3
  module Host
4
4
  class GenerateApplicability < Actions::Base
5
- middleware.use Actions::Middleware::KeepCurrentUser
6
-
7
5
  def plan(hosts, use_queue = true)
8
6
  uuids = hosts.map { |host| host.content_facet.try(:uuid) }.compact
9
7
  unless uuids.empty?
@@ -30,9 +30,9 @@ module Actions
30
30
  @organizations = ::Organization.where(label: hypervisors_field(:organization_label)).map { |org| [org.label, org] }.to_h
31
31
  @hosts = {}
32
32
 
33
- load_hosts_by_uuid
34
- load_hosts_by_duplicate_name
35
- create_missing_hosts
33
+ @hosts.merge!(load_hosts_by_uuid)
34
+ @hosts.merge!(load_hosts_by_duplicate_name)
35
+ @hosts.merge!(create_missing_hosts)
36
36
 
37
37
  candlepin_data = ::Katello::Resources::Candlepin::Consumer.get_all(@hosts.keys)
38
38
  @candlepin_attributes = candlepin_data.map { |consumer| [consumer[:uuid], consumer] }.to_h
@@ -40,7 +40,10 @@ module Actions
40
40
 
41
41
  def load_hosts_by_uuid
42
42
  hosts_by_uuid = ::Host.eager_load(:subscription_facet).where(katello_subscription_facets: { uuid: hypervisors_field(:uuid) })
43
- @hosts.merge(hosts_by_uuid.map { |host| [host.subscription_facet.uuid, host] }.to_h)
43
+ hosts_by_uuid.each do |host|
44
+ validate_host_organization(host, host.organization.try(:id))
45
+ end
46
+ hosts_by_uuid.map { |host| [host.subscription_facet.uuid, host] }.to_h
44
47
  end
45
48
 
46
49
  def load_hosts_by_duplicate_name
@@ -52,16 +55,18 @@ module Actions
52
55
  validate_host_organization(host, duplicate_name_orgs[host.name].try(:id))
53
56
  end
54
57
 
55
- @hosts.merge!(hosts_by_dup_name.map { |host| [duplicate_names[host.name], host] }.to_h)
58
+ hosts_by_dup_name.map { |host| [duplicate_names[host.name], host] }.to_h
56
59
  end
57
60
 
58
61
  def create_missing_hosts
59
62
  # remaining hypervisors
63
+ new_hypervisors = {}
60
64
  @hypervisors.each do |hypervisor|
61
65
  next if @hosts.key?(hypervisor[:uuid])
62
66
  duplicate_name, org = duplicate_name(hypervisor)
63
- @hosts[hypervisor[:uuid]] = create_host_for_hypervisor(duplicate_name, org)
67
+ new_hypervisors[hypervisor[:uuid]] = create_host_for_hypervisor(duplicate_name, org)
64
68
  end
69
+ new_hypervisors
65
70
  end
66
71
 
67
72
  def generate_duplicates_list
@@ -13,6 +13,7 @@ module Actions
13
13
  consumer_uuid: host.content_facet.uuid,
14
14
  type: 'rpm',
15
15
  args: packages)
16
+ plan_self(:host_id => host.id)
16
17
  end
17
18
 
18
19
  def humanized_name
@@ -30,6 +31,11 @@ module Actions
30
31
  def rescue_strategy
31
32
  Dynflow::Action::Rescue::Skip
32
33
  end
34
+
35
+ def finalize
36
+ host = ::Host.find_by(:id => input[:host_id])
37
+ host.update(audit_comment: _("Installation of package(s) requested: %{packages}") % {packages: input[:packages].join(", ")})
38
+ end
33
39
  end
34
40
  end
35
41
  end
@@ -11,6 +11,7 @@ module Actions
11
11
  consumer_uuid: host.content_facet.uuid,
12
12
  type: 'rpm',
13
13
  args: packages)
14
+ plan_self(:host_id => host.id)
14
15
  end
15
16
 
16
17
  def humanized_name
@@ -43,6 +44,11 @@ module Actions
43
44
  def rescue_strategy
44
45
  Dynflow::Action::Rescue::Skip
45
46
  end
47
+
48
+ def finalize
49
+ host = ::Host.find_by(:id => input[:host_id])
50
+ host.update(audit_comment: _("Removal of package(s) requested: %{packages}") % {packages: input[:packages].join(", ")})
51
+ end
46
52
  end
47
53
  end
48
54
  end
@@ -13,6 +13,7 @@ module Actions
13
13
  consumer_uuid: host.content_facet.uuid,
14
14
  type: 'rpm',
15
15
  args: packages)
16
+ plan_self(:host_id => host.id)
16
17
  end
17
18
 
18
19
  def humanized_name
@@ -20,7 +21,7 @@ module Actions
20
21
  end
21
22
 
22
23
  def humanized_input
23
- [input[:packages].join(", ")] + super
24
+ [(input[:packages] && input[:packages].join(", ") || "all packages")] + super
24
25
  end
25
26
 
26
27
  def presenter
@@ -30,6 +31,11 @@ module Actions
30
31
  def rescue_strategy
31
32
  Dynflow::Action::Rescue::Skip
32
33
  end
34
+
35
+ def finalize
36
+ host = ::Host.find_by(:id => input[:host_id])
37
+ host.update(audit_comment: _("Update of package(s) requested: %{packages}") % {packages: input[:packages].join(", ")})
38
+ end
33
39
  end
34
40
  end
35
41
  end
@@ -13,6 +13,7 @@ module Actions
13
13
  consumer_uuid: host.content_facet.uuid,
14
14
  type: 'package_group',
15
15
  args: groups)
16
+ plan_self(:host_id => host.id)
16
17
  end
17
18
 
18
19
  def humanized_name
@@ -30,6 +31,11 @@ module Actions
30
31
  def rescue_strategy
31
32
  Dynflow::Action::Rescue::Skip
32
33
  end
34
+
35
+ def finalize
36
+ host = ::Host.find_by(:id => input[:host_id])
37
+ host.update(audit_comment: _("Installation of package group(s) requested: %{groups}") % {groups: input[:groups].join(", ")})
38
+ end
33
39
  end
34
40
  end
35
41
  end