Class: Sensu::Extensions

Inherits:
Object
  • Object
show all
Defined in:
lib/sensu/extensions.rb

Instance Method Summary collapse

Constructor Details

#initializeExtensions

Returns a new instance of Extensions.



3
4
5
6
7
8
9
# File 'lib/sensu/extensions.rb', line 3

def initialize
  @logger = Logger.get
  @extensions = Hash.new
  EXTENSION_CATEGORIES.each do |category|
    @extensions[category] = Hash.new
  end
end

Instance Method Details

#[](key) ⇒ Object



11
12
13
# File 'lib/sensu/extensions.rb', line 11

def [](key)
  @extensions[key]
end

#load_allObject



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/sensu/extensions.rb', line 44

def load_all
  require_directory(File.join(File.dirname(__FILE__), 'extensions'))
  EXTENSION_CATEGORIES.each do |category|
    extension_type = category.to_s.chop
    Extension.const_get(extension_type.capitalize).descendants.each do |klass|
      extension = klass.new
      @extensions[category][extension.name] = extension
      loaded(extension_type, extension.name, extension.description)
    end
  end
end

#load_settings(settings = {}) ⇒ Object



56
57
58
59
60
# File 'lib/sensu/extensions.rb', line 56

def load_settings(settings={})
  all_extensions.each do |extension|
    extension.settings = settings
  end
end

#require_directory(directory) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/sensu/extensions.rb', line 27

def require_directory(directory)
  path = directory.gsub(/\\(?=\S)/, '/')
  Dir.glob(File.join(path, '**/*.rb')).each do |file|
    begin
      require File.expand_path(file)
    rescue ScriptError => error
      @logger.error('failed to require extension', {
        :extension_file => file,
        :error => error
      })
      @logger.warn('ignoring extension', {
        :extension_file => file
      })
    end
  end
end

#stop_all(&block) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/sensu/extensions.rb', line 62

def stop_all(&block)
  extensions = all_extensions
  stopper = Proc.new do |extension|
    if extension.nil?
      block.call
    else
      extension.stop do
        stopper.call(extensions.pop)
      end
    end
  end
  stopper.call(extensions.pop)
end