Module: Sensu::Server::Mutate
- Included in:
- Process
- Defined in:
- lib/sensu/server/mutate.rb
Instance Method Summary collapse
-
#mutate_event(handler, event, &callback) ⇒ Object
Mutate event data for a handler.
-
#mutator_callback(mutator, event, &callback) ⇒ Proc
Create a mutator callback (Proc).
-
#mutator_extension(mutator, event, &callback) ⇒ Object
Run a mutator extension, within the Sensu EventMachine reactor (event loop).
-
#pipe_mutator(mutator, event, &callback) ⇒ Object
Execute a standard mutator (pipe), spawn a process using the mutator command and pipe the event data to it via STDIN.
Instance Method Details
#mutate_event(handler, event, &callback) ⇒ Object
Mutate event data for a handler. By default, the “json” mutator is used, unless the handler specifies another mutator. If a mutator does not exist, not defined or a missing extension, an error will be logged and the ‘@in_progress` is decremented by `1`. This method first checks for the existence of a standard mutator, then checks for an extension if a standard mutator is not defined.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/sensu/server/mutate.rb', line 74 def mutate_event(handler, event, &callback) mutator_name = handler[:mutator] || "json" case when @settings.mutator_exists?(mutator_name) mutator = @settings[:mutators][mutator_name] pipe_mutator(mutator, event, &callback) when @extensions.mutator_exists?(mutator_name) mutator = @extensions[:mutators][mutator_name] mutator_extension(mutator, event, &callback) else @logger.error("unknown mutator", { :mutator_name => mutator_name }) @in_progress[:events] -= 1 if @in_progress end end |
#mutator_callback(mutator, event, &callback) ⇒ Proc
Create a mutator callback (Proc). A mutator callback takes two parameters, for the mutator output and status code. The created callback can be used for standard mutators and mutator extensions. The provided callback will only be called when the mutator status is ‘0` (OK). If the status is not `0`, an error is logged, and the `@in_progress` is decremented by `1`.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/sensu/server/mutate.rb', line 16 def mutator_callback(mutator, event, &callback) Proc.new do |output, status| if status == 0 callback.call(output) else definition = mutator.is_a?(Hash) ? mutator : mutator.definition @logger.error("mutator error", { :mutator => definition, :event => event, :output => output, :status => status }) @in_progress[:events] -= 1 if @in_progress end end end |
#mutator_extension(mutator, event, &callback) ⇒ Object
Run a mutator extension, within the Sensu EventMachine reactor (event loop). The ‘mutator_callback()` method is used to create the mutator callback, wrapping the provided callback (event handler).
57 58 59 60 |
# File 'lib/sensu/server/mutate.rb', line 57 def mutator_extension(mutator, event, &callback) block = mutator_callback(mutator, event, &callback) mutator.safe_run(event, &block) end |
#pipe_mutator(mutator, event, &callback) ⇒ Object
Execute a standard mutator (pipe), spawn a process using the mutator command and pipe the event data to it via STDIN. The ‘mutator_callback()` method is used to create the mutator callback, wrapping the provided callback (event handler).
42 43 44 45 46 |
# File 'lib/sensu/server/mutate.rb', line 42 def pipe_mutator(mutator, event, &callback) = {:data => Sensu::JSON.dump(event), :timeout => mutator[:timeout]} block = mutator_callback(mutator, event, &callback) Spawn.process(mutator[:command], , &block) end |