Sha256: e517d1223807d11e3d0d3629a34e2c11653f9a95d29c55364d444fa0c37449da

Contents?: true

Size: 821 Bytes

Versions: 1

Compression:

Stored size: 821 Bytes

Contents

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

Version data entries

1 entries across 1 versions & 1 rubygems

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