Class: God::Metric
- Inherits:
-
Object
- Object
- God::Metric
- Defined in:
- lib/god/metric.rb
Overview
Metrics are responsible for holding watch conditions. An instance of Metric is yielded to blocks in the start_if, restart_if, stop_if, and transition methods.
Instance Attribute Summary collapse
-
#conditions ⇒ Object
The Array of Condition instances.
-
#destination ⇒ Object
The destination Hash in canonical hash form.
-
#watch ⇒ Object
The Watch.
Instance Method Summary collapse
-
#condition(kind) {|c| ... } ⇒ Object
Public: Instantiate the given Condition and pass it into the optional block.
-
#disable ⇒ Object
Disable all of this Metric’s conditions.
-
#enable ⇒ Object
Enable all of this Metric’s conditions.
-
#initialize(watch, destination = nil) ⇒ Metric
constructor
Initialize a new Metric.
Constructor Details
#initialize(watch, destination = nil) ⇒ Metric
Initialize a new Metric.
watch - The Watch. destination - The optional destination Hash in canonical hash form.
20 21 22 23 24 |
# File 'lib/god/metric.rb', line 20 def initialize(watch, destination = nil) self.watch = watch self.destination = destination self.conditions = [] end |
Instance Attribute Details
#conditions ⇒ Object
The Array of Condition instances.
14 15 16 |
# File 'lib/god/metric.rb', line 14 def conditions @conditions end |
#destination ⇒ Object
The destination Hash in canonical hash form. Example: { true => :up, false => :restart}
11 12 13 |
# File 'lib/god/metric.rb', line 11 def destination @destination end |
#watch ⇒ Object
The Watch.
7 8 9 |
# File 'lib/god/metric.rb', line 7 def watch @watch end |
Instance Method Details
#condition(kind) {|c| ... } ⇒ Object
Public: Instantiate the given Condition and pass it into the optional block. Attributes of the condition must be set in the config file.
kind - The Symbol name of the condition.
Returns nothing.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/god/metric.rb', line 32 def condition(kind) # Create the condition. begin c = Condition.generate(kind, self.watch) rescue NoSuchConditionError => e abort e. end # Send to block so config can set attributes. yield(c) if block_given? # Prepare the condition. c.prepare # Test generic and specific validity. unless Condition.valid?(c) && c.valid? abort "Exiting on invalid condition" end # Inherit interval from watch if no poll condition specific interval was # set. if c.kind_of?(PollCondition) && !c.interval if self.watch.interval c.interval = self.watch.interval else abort "No interval set for Condition '#{c.class.name}' in Watch " + "'#{self.watch.name}', and no default Watch interval from " + "which to inherit." end end # Add the condition to the list. self.conditions << c end |
#disable ⇒ Object
Disable all of this Metric’s conditions. Poll conditions will be halted and event/trigger conditions will be deregistered.
Returns nothing.
81 82 83 84 85 |
# File 'lib/god/metric.rb', line 81 def disable self.conditions.each do |c| self.watch.detach(c) end end |
#enable ⇒ Object
Enable all of this Metric’s conditions. Poll conditions will be scheduled and event/trigger conditions will be registered.
Returns nothing.
71 72 73 74 75 |
# File 'lib/god/metric.rb', line 71 def enable self.conditions.each do |c| self.watch.attach(c) end end |