class RMonitor::Matcher

Public Class Methods

new(options = {}) click to toggle source
# File lib/rmonitor/matcher.rb, line 3
def initialize(options = {})
  @capabilities = options[:capabilities] || Capabilities.new(options).parse
end

Public Instance Methods

invokable?(profile) click to toggle source
# File lib/rmonitor/matcher.rb, line 7
def invokable?(profile)
  return false if profile.has_key?(:only_if) && !profile[:only_if].call
  return false if profile.has_key?(:not_if) && profile[:not_if].call

  profile[:devices].all? do |device|
    has_desired_capability? device
  end
end

Private Instance Methods

has_desired_capability?(desire) click to toggle source
# File lib/rmonitor/matcher.rb, line 18
def has_desired_capability?(desire)
  @capabilities.any? do |capability|
    match_desire_capability?(desire, capability)
  end
end
match_desire_capability?(desire, capability) click to toggle source
# File lib/rmonitor/matcher.rb, line 24
def match_desire_capability?(desire, capability)
  return false if desire[:name] != capability[:name]
  return false if desire[:mode] && desire[:mode] != capability[:mode]
  return false if desire[:rate] && desire[:rate] != capability[:rate]

  true
end