Sha256: 2b237e638a9bbf17824f6edb680d2621ee3c79e8b4304b9f01a2dbb29200d1a9

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

module NagiosPlugin
  EXIT_CODES = {
    :ok       => 0,
    :warning  => 1,
    :critical => 2,
    :unknown  => 3,
  }
  
  PluginError = Class.new(StandardError)
  
  class Plugin
    def self.check!
      plugin = self.new
      plugin.check
    rescue Exception => e
      puts [plugin.prefix, e.to_s].join(' ')
    else
      puts plugin.message
    ensure
      exit plugin.code
    end
    
    def check
      measure if respond_to?(:measure)
      set_status
    rescue Exception
      @status = :unknown
      raise
    end
    
    def message
      [prefix, (output if respond_to?(:output))].compact.join(' ')
    end
    
    def prefix
      "#{self.class.name.upcase} #{status.upcase}:"
    end
    
    def code
      EXIT_CODES[status]
    end
    
    def status
      @status || :unknown
    end
  
  protected
  
    def set_status
      @status = [:critical, :warning, :ok].select { |s| send("#{s}?") }.first
      raise PluginError, "All status checks returned false!" if @status.nil?
    end
    
    def ok?
      true
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nagiosplugin-0.0.3 lib/nagiosplugin/plugin.rb