class Eye::Patch::ProcessSet

Public Class Methods

new(group, processes) click to toggle source
# File lib/eye/patch/process_set.rb, line 7
def initialize(group, processes)
  @group = group

  Array(processes).each do |process|
    parse_process(process)
  end
end

Private Instance Methods

indexed_config(config, index) click to toggle source
# File lib/eye/patch/process_set.rb, line 60
def indexed_config(config, index)
  config.each_with_object({}) do |(key, value), result|
    result[key] = value.is_a?(String) ? value.gsub("{ID}", index.to_s) : value
  end
end
parse_process(process) click to toggle source
# File lib/eye/patch/process_set.rb, line 17
def parse_process(process)
  if process[:count]
    parse_process_cluster(process)
  else
    parse_single_process(
      process[:name],
      process[:config],
      process_monitors(process),
    )
  end
end
parse_process_cluster(process) click to toggle source
# File lib/eye/patch/process_set.rb, line 29
def parse_process_cluster(process)
  process[:count].times do |index|
    name = "#{process[:name]}-#{index}"
    parse_single_process(
      name,
      indexed_config(process[:config], index),
      process_monitors(process),
    )
  end
end
parse_single_process(name, config, monitors) click to toggle source
# File lib/eye/patch/process_set.rb, line 40
def parse_single_process(name, config, monitors)
  self[name] = @group
    .merge(stdout: config[:stdall], stderr: config[:stdall])
    .merge(config)
    .merge(name: name, group: @group[:name])

  self[name][:triggers] = self[name][:triggers].merge(monitors[:triggers])
  self[name][:checks] = self[name][:checks].merge(monitors[:checks])

  return unless config[:monitor_children]
  return unless config[:monitor_children][:checks]

  monitor_options = OptionSet.new(
    Eye::Checker,
    config[:monitor_children][:checks],
  )

  self[name][:monitor_children][:checks] = monitor_options
end
process_monitors(config) click to toggle source
# File lib/eye/patch/process_set.rb, line 66
def process_monitors(config)
  {
    triggers: OptionSet.new(Eye::Trigger, config[:triggers]),
    checks: OptionSet.new(Eye::Checker, config[:checks]),
  }
end