module ForemanMaintain::Concerns::Finders

Public Instance Methods

check(label) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 12
def check(label)
  ensure_one_object(:check, label)
end
detector() click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 4
def detector
  @detector ||= ForemanMaintain.detector
end
feature(label) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 8
def feature(label)
  detector.feature(label)
end
find_all_scenarios(conditions) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 28
def find_all_scenarios(conditions)
  detector.all_scenarios(conditions)
end
find_procedures(conditions) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 20
def find_procedures(conditions)
  detector.available_procedures(conditions)
end
find_scenarios(conditions) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 24
def find_scenarios(conditions)
  detector.available_scenarios(conditions)
end
procedure(label) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 16
def procedure(label)
  ensure_one_object(:procedure, label)
end

Private Instance Methods

ensure_one_object(object_type, label_or_class) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 34
def ensure_one_object(object_type, label_or_class)
  objects = find_objects(object_type, label_or_class)
  if objects.first.nil?
    raise "#{object_type} #{label_or_class} not present"
  elsif objects.size > 1
    raise "Multiple objects of #{object_type} found for #{label_or_class}"
  else
    objects.first
  end
end
find_objects(object_type, label_or_class) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 56
def find_objects(object_type, label_or_class)
  conditions = label_or_class_condition(label_or_class)
  case object_type
  when :procedure
    detector.available_procedures(conditions)
  when :check
    detector.available_checks(conditions)
  else
    raise "Unexpected object type #{object_type}"
  end
end
label_or_class_condition(label_or_class) click to toggle source
# File lib/foreman_maintain/concerns/finders.rb, line 45
def label_or_class_condition(label_or_class)
  case label_or_class
  when Symbol
    { :label => label_or_class }
  when Class
    { :class => label_or_class }
  else
    raise 'Expecting symbol or class'
  end
end