Module: Sensu::Extensions

Defined in:
lib/sensu/extensions.rb,
lib/sensu/extensions/loader.rb,
lib/sensu/extensions/constants.rb

Defined Under Namespace

Classes: Loader

Constant Summary collapse

GEM_PREFIX =

Sensu Extension Rubygem prefix.

"sensu-extensions-".freeze

Class Method Summary collapse

Class Method Details

.get(options = {}) ⇒ Loader

Retrieve the current loaded extensions loader or load one up if there isn’t one. Note: We may need to add a mutex for thread safety.

Parameters:

  • options (Hash) (defaults to: {})

    to pass to load().

Returns:

  • (Loader)

    instance of a loaded loader.



43
44
45
# File 'lib/sensu/extensions.rb', line 43

def get(options={})
  @loader || load(options)
end

.load(options = {}) ⇒ Loader

Load Sensu extensions.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :extension_file (String)

    to load.

  • :extension_dir (String)

    to load.

  • :extension_dirs (Array)

    to load.

  • :extensions (Hash)

    to load (gems).

Returns:

  • (Loader)

    a loaded instance of Loader.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/sensu/extensions.rb', line 14

def load(options={})
  @loader = Loader.new
  if options[:extension_file]
    @loader.load_file(options[:extension_file])
  end
  if options[:extension_dir]
    @loader.load_directory(options[:extension_dir])
  end
  if options[:extension_dirs]
    options[:extension_dirs].each do |directory|
      @loader.load_directory(directory)
    end
  end
  if options[:extensions]
    options[:extensions].each do |name, details|
      gem_name = details[:gem] || "#{GEM_PREFIX}#{name}"
      @loader.load_gem(gem_name, details[:version])
    end
  end
  @loader.load_instances
  @loader
end