Sha256: 6fc1e51e3ceeeebc50e61aeefe4544904f8144956619f50361fd76f84a4877dc

Contents?: true

Size: 1.87 KB

Versions: 34

Compression:

Stored size: 1.87 KB

Contents

module Actions
  module Katello
    module ContentView
      class Update < Actions::EntryAction
        def plan(content_view, content_view_params)
          action_subject content_view
          content_view_params = content_view_params.with_indifferent_access

          # If we are removing repositories, remove their filter rules
          if content_view.filters.present? && content_view.repository_ids.present? && content_view_params.key?(:repository_ids)
            repo_ids_to_remove = content_view.repository_ids - content_view_params[:repository_ids]
            if repo_ids_to_remove.present?
              # Only yum-type repositories have by-ID filter rules
              old_repos = content_view.repositories.yum_type
              new_repos = ::Katello::Repository.where(id: content_view_params[:repository_ids]).yum_type

              lost_module_stream_ids = (::Katello::ModuleStream.in_repositories(old_repos) -
                ::Katello::ModuleStream.in_repositories(new_repos)).pluck(:id)
              ::Katello::ContentViewModuleStreamFilterRule.in_content_views([content_view.id]).where(module_stream_id: lost_module_stream_ids).delete_all

              lost_errata_ids = (::Katello::Erratum.in_repositories(old_repos) -
                ::Katello::Erratum.in_repositories(new_repos)).pluck(:errata_id)
              ::Katello::ContentViewErratumFilterRule.in_content_views([content_view.id]).where(errata_id: lost_errata_ids).delete_all

              lost_package_group_hrefs = (::Katello::PackageGroup.in_repositories(old_repos) -
                ::Katello::PackageGroup.in_repositories(new_repos)).pluck(:pulp_id)
              ::Katello::ContentViewPackageGroupFilterRule.in_content_views([content_view.id]).where(uuid: lost_package_group_hrefs).delete_all
            end
          end

          content_view.update!(content_view_params)
        end
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
katello-4.16.0 app/lib/actions/katello/content_view/update.rb
katello-4.15.1 app/lib/actions/katello/content_view/update.rb
katello-4.16.0.rc2 app/lib/actions/katello/content_view/update.rb
katello-4.16.0.rc1 app/lib/actions/katello/content_view/update.rb
katello-4.14.3 app/lib/actions/katello/content_view/update.rb
katello-4.14.2 app/lib/actions/katello/content_view/update.rb
katello-4.15.0 app/lib/actions/katello/content_view/update.rb
katello-4.15.0.rc2 app/lib/actions/katello/content_view/update.rb
katello-4.15.0.rc1 app/lib/actions/katello/content_view/update.rb
katello-4.14.1 app/lib/actions/katello/content_view/update.rb
katello-4.14.0 app/lib/actions/katello/content_view/update.rb
katello-4.14.0.rc3 app/lib/actions/katello/content_view/update.rb
katello-4.14.0.rc2 app/lib/actions/katello/content_view/update.rb
katello-4.14.0.rc1.1 app/lib/actions/katello/content_view/update.rb
katello-4.14.0.rc1 app/lib/actions/katello/content_view/update.rb
katello-4.13.1 app/lib/actions/katello/content_view/update.rb
katello-4.13.0 app/lib/actions/katello/content_view/update.rb
katello-4.12.1 app/lib/actions/katello/content_view/update.rb
katello-4.13.0.rc1 app/lib/actions/katello/content_view/update.rb
katello-4.12.0 app/lib/actions/katello/content_view/update.rb