class Etoro::Utility::MCollective::Puppet

Public Instance Methods

check_run_status() click to toggle source
# File lib/etoro/utility/mcollective/puppet.rb, line 33
def check_run_status
  @logger.info("Checking for Puppet run completion")
  exit_flag = false
  begin
    Timeout.timeout(@config[:timeout]) do
      until @last_run_puppet == {}
        @last_run_puppet.each do |host, lastrun|
          run = rpcclient('puppet', :chomp => true)
          run.identity_filter host
          run.progress = false
          results = run.last_run_summary
          results.each do |result|
            @logger.info("#{host} - Puppet last run id is: #{result[:data][:lastrun]}")
            if lastrun != result[:data][:lastrun]
              @logger.info("#{host} - run completed")
              @last_run_puppet.delete(host)
              @logger.info("#{result[:data]}")
              @logger.info("#{result[:data][:summary]['resources']['changed']} - changes were made on server.")
              if result[:data][:summary]['resources']['failed'] != 0 || result[:data][:summary]['resources']['changed'] == 0
                @logger.error("#{host} - Puppet run failed, check Event Viewer log.")
                exit_flag = true
              end
            else
              @logger.info("#{host} - Puppet not complete yet...!")
            end
          end
        end
        sleep @config[:wait_between_checks]
      end
    end
  rescue Timeout::Error
    @logger.error("Puppet run timed out. Took more than #{@config[:timeout]} seconds")
    exit_flag = true
  end

  if exit_flag == true then
    @logger.error("Puppet run failed")
    raise "Puppet run failed"
  end
end
execute() click to toggle source
# File lib/etoro/utility/mcollective/puppet.rb, line 15
def execute
  if @config.has_key?(:tags)
      @mc.runonce(:tags => @config[:tags])
  else
    @mc.runonce
  end
  sleep @config[:wait_for_status]
  self.check_run_status
end
hosts() click to toggle source
# File lib/etoro/utility/mcollective/puppet.rb, line 25
def hosts
  hosts = []
  @last_run_puppet.each_key do |host|
    hosts.push host
  end
  hosts
end
status() click to toggle source
# File lib/etoro/utility/mcollective/puppet.rb, line 6
def status
  @last_run_puppet = {}
  @logger.info("Getting last puppet run information")
  @mc.last_run_summary.each do |result|
    @last_run_puppet[result[:sender]] = result[:data][:lastrun]
    @logger.info("#{result[:sender]} - Puppet last run: #{result[:data][:lastrun]}")
  end
end