Project

General

Profile

Download (1.72 KB) Statistics
| Branch: | Tag: | Revision:
class Kafo::Helpers
class << self
def log_and_say(level, message, do_say = true, do_log = true)
style = case level
when :error
'bad'
when :debug
'yellow'
else
level
end

# \ and ' characters could cause trouble in ERB, make sure to escape them
escaped_message = message.gsub('\\', '\\\\\\').gsub("'", %q{\\\'})
say "<%= color('#{escaped_message}', :#{style}) %>" if do_say
Kafo::KafoConfigure.logger.send(level, message) if do_log
end

def read_cache_data(param)
YAML.load_file("/opt/puppetlabs/puppet/cache/foreman_cache_data/#{param}")
end

def execute(commands, do_say = true, do_log = true)
commands = commands.is_a?(Array) ? commands : [commands]
results = []
commands.each do |command|
results << execute_command(command, do_say, do_log)
end
!results.include? false
end

def execute_command(command, do_say, do_log)
process = IO.popen("#{command} 2>&1") do |io|
while line = io.gets
line.chomp!
log_and_say(:debug, line, do_say, do_log)
end
io.close
if $?.success?
log_and_say(:debug, "#{command} finished successfully!", do_say, do_log)
else
log_and_say(:error, "#{command} failed! Check the output for error!", do_say, do_log)
end
$?.success?
end
end
end
end

# FIXME: remove when #23332 is released
module HookContextExtension
def param_value(mod, name)
param(mod, name).value if param(mod, name)
end
end

unless Kafo::HookContext.method_defined?(:param_value)
Kafo::HookContext.send(:include, HookContextExtension)
end
(1-1/10)