class Cheffish::ChefRun
Attributes
chef_config[R]
Public Class Methods
new(chef_config = {})
click to toggle source
@param chef_config
A hash with symbol keys that looks suspiciously similar to `Chef::Config`.
Some possible options: - stdout: <IO object> - where to stream stdout to - stderr: <IO object> - where to stream stderr to - log_level: :debug|:info|:warn|:error|:fatal - log_location: <path|IO object> - where to stream logs to - verbose_logging: true|false - true if you want verbose logging in :debug
# File lib/cheffish/chef_run.rb, line 14 def initialize(chef_config = {}) @chef_config = chef_config || {} end
Public Instance Methods
client()
click to toggle source
# File lib/cheffish/chef_run.rb, line 34 def client @client ||= begin chef_config = self.chef_config.dup chef_config[:log_level] ||= :debug unless chef_config.key?(:log_level) chef_config[:verbose_logging] = false unless chef_config.key?(:verbose_logging) chef_config[:stdout] = StringIOTee.new(chef_config[:stdout]) chef_config[:stderr] = StringIOTee.new(chef_config[:stderr]) chef_config[:log_location] = StringIOTee.new(chef_config[:log_location]) @client = ::Cheffish::BasicChefClient.new(nil, [ event_sink, Chef::Formatters.new(:doc, chef_config[:stdout], chef_config[:stderr]) ], **chef_config) end end
compile_recipe(&recipe)
click to toggle source
# File lib/cheffish/chef_run.rb, line 83 def compile_recipe(&recipe) client.load_block(&recipe) end
converge()
click to toggle source
# File lib/cheffish/chef_run.rb, line 87 def converge client.converge @converged = true rescue RuntimeError => e @raised_exception = e raise end
converge_failed?()
click to toggle source
# File lib/cheffish/chef_run.rb, line 108 def converge_failed? @raised_exception.nil? ? false : true end
converged?()
click to toggle source
# File lib/cheffish/chef_run.rb, line 104 def converged? !!@converged end
event_sink()
click to toggle source
# File lib/cheffish/chef_run.rb, line 48 def event_sink @event_sink ||= EventSink.new end
logged_errors()
click to toggle source
# File lib/cheffish/chef_run.rb, line 71 def logged_errors logs.lines.select { |l| l =~ /^\[[^\]]*\] ERROR:/ }.join("\n") end
logged_info()
click to toggle source
# File lib/cheffish/chef_run.rb, line 75 def logged_info logs.lines.select { |l| l =~ /^\[[^\]]*\] INFO:/ }.join("\n") end
logged_warnings()
click to toggle source
# File lib/cheffish/chef_run.rb, line 67 def logged_warnings logs.lines.select { |l| l =~ /^\[[^\]]*\] WARN:/ }.join("\n") end
logs()
click to toggle source
# File lib/cheffish/chef_run.rb, line 63 def logs @client ? client.chef_config[:log_location].string : nil end
output_for_failure_message()
click to toggle source
# File lib/cheffish/chef_run.rb, line 120 def output_for_failure_message message = "" if stdout && !stdout.empty? message << "--- ---\n" message << "--- Chef Client Output ---\n" message << "--- ---\n" message << stdout message << "\n" unless stdout.end_with?("\n") end if stderr && !stderr.empty? message << "--- ---\n" message << "--- Chef Client Error Output ---\n" message << "--- ---\n" message << stderr message << "\n" unless stderr.end_with?("\n") end if logs && !logs.empty? message << "--- ---\n" message << "--- Chef Client Logs ---\n" message << "--- ---\n" message << logs end message end
reset()
click to toggle source
# File lib/cheffish/chef_run.rb, line 95 def reset @client = nil @converged = nil @stdout = nil @stderr = nil @logs = nil @raised_exception = nil end
resources()
click to toggle source
# File lib/cheffish/chef_run.rb, line 79 def resources client.run_context.resource_collection end
stderr()
click to toggle source
# File lib/cheffish/chef_run.rb, line 59 def stderr @client ? client.chef_config[:stderr].string : nil end
stdout()
click to toggle source
output
# File lib/cheffish/chef_run.rb, line 55 def stdout @client ? client.chef_config[:stdout].string : nil end
up_to_date?()
click to toggle source
# File lib/cheffish/chef_run.rb, line 116 def up_to_date? !client.updated? end
updated?()
click to toggle source
# File lib/cheffish/chef_run.rb, line 112 def updated? client.updated? end