theforeman/foreman_maintain

View on GitHub
definitions/procedures/packages/uninstall.rb

Summary

Maintainability
A
1 hr
Test Coverage
module Procedures::Packages
  class Uninstall < ForemanMaintain::Procedure
    metadata do
      description 'Uninstall packages'
      param :packages, 'List of packages to uninstall', :array => true
      param :assumeyes, 'Do not ask for confirmation'
      param :warn_on_errors, 'Do not interrupt scenario on failure',
        :flag => true, :default => false
    end

    def run
      assumeyes_val = @assumeyes.nil? ? assumeyes? : @assumeyes
      packages_action(:remove, @packages, :assumeyes => assumeyes_val)
    rescue ForemanMaintain::Error::ExecutionError => e
      if @warn_on_errors
        set_status(:warning, e.message)
      else
        raise
      end
    end

    def necessary?
      @force || @packages.any? { |package| package_version(package).nil? }
    end

    def runtime_message
      "Uninstalling package(s) #{@packages.join(', ')}"
    end
  end
end