Sha256: 335a0838398af05d2ab8dc8ec1399c4d898276ca175bc3558e5c70baf9646f48
Contents?: true
Size: 1.82 KB
Versions: 2
Compression:
Stored size: 1.82 KB
Contents
class Nagios::Runner def initialize(params, &callback) @params = params.with_indifferent_access @callback = callback @method = @params.delete(:method).to_s @method = @method.gsub(/[^_\.\-a-z0-9]/i, '') @klass_name = "Nagios::#{@method.camelize}" raise "method should be" if @method.blank? Nagios.mutex.synchronize{ load_initializers } load_class run rescue Exception, Timeout::Error => ex Nagios.logger.info "T= #{params.inspect} #{ex.message} (#{ex.backtrace.inspect})" callback[ Nagios::Check.default_error(ex.message) ] end # synchrony check, for manual call def self.check(params = {}) result = nil self.new(params) do |res| result = res end result end protected def constantize @klass_name.constantize rescue LoadError, NameError nil end def load_initializers unless Nagios.project_initializer_loaded Dir[Nagios.rails_root + "/app/nagios/initializers/*.rb"].each do |file| require File.expand_path(file) end Nagios.project_initializer_loaded = true end end def load_class klass = constantize unless klass Dir[Nagios.rails_root + "/app/nagios/**/#{@method}.rb"].each do |file| require File.expand_path(file) end klass = constantize end raise "unknown klass #{@klass_name}" unless klass @klass = klass @ancestor = klass.ancestors.detect{|an| an == Nagios::Check || an == Nagios::CheckEM } end def run if @ancestor == Nagios::Check script = @klass.new(@params, &@callback) script.run elsif @ancestor == Nagios::CheckEM raise "cant run EM check in Sync Runner" else raise "unknown klass #{@klass.inspect}" end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nagios_helper-0.1.2 | lib/nagios_helper/runner.rb |
nagios_helper-0.1.1 | lib/nagios_helper/runner.rb |