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