Sha256: 3d4bf69e96a2023c90c95b9591247b2e53fece851fbd84d525796bd83a59c03f

Contents?: true

Size: 1.81 KB

Versions: 2

Compression:

Stored size: 1.81 KB

Contents

require 'pathname'
require 'net/http'
require 'net/https'
require 'uri'
require 'forwardable'

# Ruby’s stock DNS resolution, by default, blocks the entire Ruby VM from
# processing while the lookup is happening, because it calls out to the native
# libc resolver code. A slow DNS server can cause your entire Ruby process to
# grind to a halt. Ruby comes with a pure Ruby replacement that is not loaded
# by default called 'resolv'.
#
# 'resolv-replace' monkeypatches the various Ruby Socket objects to use resolv
#
require 'resolv-replace'

require 'sinatra/base'
require 'facter'
require 'syslog_logger'

require 'facts/loadaverage'

require 'litmus_paper/app'
require 'litmus_paper/configuration'
require 'litmus_paper/dependency/haproxy_backends'
require 'litmus_paper/dependency/http'
require 'litmus_paper/dependency/tcp'
require 'litmus_paper/health'
require 'litmus_paper/forced_health'
require 'litmus_paper/logger'
require 'litmus_paper/metric/available_memory'
require 'litmus_paper/metric/cpu_load'
require 'litmus_paper/service'
require 'litmus_paper/status_file'
require 'litmus_paper/version'

module LitmusPaper
  class << self
    attr_reader :services, :config_dir
    attr_accessor :logger
  end

  self.logger = Logger.new

  def self.check_service(service_name)
    Facter.flush

    if service = @services[service_name]
      service.current_health
    else
      nil
    end
  end

  def self.configure(filename)
    @config_file = filename

    begin
      @services = LitmusPaper::Configuration.new(filename).evaluate
    rescue Exception
    end
  end

  def self.config_dir=(path)
    @config_dir = Pathname.new(path)
  end

  def self.reload
    LitmusPaper.logger.info "Reloading configuration"
    configure(@config_file)
  end

  def self.reset
    @services = {}
  end
end

Signal.trap("USR1") { LitmusPaper.reload }

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
litmus_paper-0.6.0 lib/litmus_paper.rb
litmus_paper-0.5.0 lib/litmus_paper.rb