Sha256: bfbac7607f5a7984486bc4be6af9c76f6bfb98c19cdbff27e33285b0fdd8e8fa

Contents?: true

Size: 1.89 KB

Versions: 9

Compression:

Stored size: 1.89 KB

Contents

module Katello
  class BulkActions
    attr_accessor :systems

    def initialize(systems)
      self.systems = systems
    end

    def install_packages(packages)
      fail Errors::HostCollectionEmptyException if self.systems.empty?
      perform_bulk_action do |consumer_group|
        consumer_group.install_package(packages)
      end
    end

    def uninstall_packages(packages)
      fail Errors::HostCollectionEmptyException if self.systems.empty?
      perform_bulk_action do |consumer_group|
        consumer_group.uninstall_package(packages)
      end
    end

    def update_packages(packages = nil)
      # if no packages are provided, a full system update will be performed (e.g ''yum update' equivalent)
      fail Errors::HostCollectionEmptyException if self.systems.empty?
      perform_bulk_action do |consumer_group|
        consumer_group.update_package(packages)
      end
    end

    def install_package_groups(groups)
      fail Errors::HostCollectionEmptyException if self.systems.empty?
      perform_bulk_action do |consumer_group|
        consumer_group.install_package_group(groups)
      end
    end

    def update_package_groups(groups)
      fail Errors::HostCollectionEmptyException if self.systems.empty?
      perform_bulk_action do |consumer_group|
        consumer_group.install_package_group(groups)
      end
    end

    def uninstall_package_groups(groups)
      fail Errors::HostCollectionEmptyException if self.systems.empty?
      perform_bulk_action do |consumer_group|
        consumer_group.uninstall_package_group(groups)
      end
    end

    private

    def perform_bulk_action
      consumer_ids = self.systems.collect { |i| i.uuid }
      group = Glue::Pulp::ConsumerGroup.new
      group.pulp_id = SecureRandom.uuid
      group.consumer_ids = consumer_ids
      group.set_pulp_consumer_group
      yield(group)
    ensure
      group.del_pulp_consumer_group
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
katello-2.4.5 app/lib/katello/bulk_actions.rb
katello-2.4.4 app/lib/katello/bulk_actions.rb
katello-2.4.3 app/lib/katello/bulk_actions.rb
katello-2.4.2 app/lib/katello/bulk_actions.rb
katello-2.4.1 app/lib/katello/bulk_actions.rb
katello-2.4.0 app/lib/katello/bulk_actions.rb
katello-2.4.0.rc3 app/lib/katello/bulk_actions.rb
katello-2.4.0.rc2 app/lib/katello/bulk_actions.rb
katello-2.4.0.rc1 app/lib/katello/bulk_actions.rb