class Dopi::Plan
Attributes
context_logger[R]
plan_parser[R]
version[R]
Public Class Methods
new(plan_parser)
click to toggle source
# File lib/dopi/plan.rb, line 16 def initialize(plan_parser) @version = Dopi::VERSION @plan_parser = plan_parser step_sets.each{|step_set| state_add_child(step_set)} end
Public Instance Methods
load_state(state_hash)
click to toggle source
# File lib/dopi/plan.rb, line 76 def load_state(state_hash) if state_hash[:step_sets].kind_of?(Hash) step_sets.each do |step_set| step_set_state = state_hash[:step_sets][step_set.name] || [] step_set.load_state(step_set_state) end end end
nodes()
click to toggle source
# File lib/dopi/plan.rb, line 64 def nodes @nodes ||= parsed_nodes.map do |parsed_node| ::Dopi::Node.new(parsed_node, self) end end
run(options = {})
click to toggle source
# File lib/dopi/plan.rb, line 31 def run(options = {}) options_defaults = { :run_for_nodes => :all, :noop => false, :step_set => 'default', :node_info => {}, :run_id => Time.now.strftime('%Y%m%d-%H%M%S'), } run_options = options_defaults.merge(options) context_log_path = File.join(DopCommon.config.log_dir, "#{run_options[:run_id]}-#{name}") node_names = nodes.map{|n| n.name} @context_logger = DopCommon::ThreadContextLogger.new(context_log_path, node_names) nodes.each{|node| node.node_info = run_options[:node_info][node.fqdn] || {}} step_set = step_sets.find{|s| s.name == run_options[:step_set]} raise "Plan: Step set #{run_options[:step_set]} does not exist" if step_set.nil? step_set.run(run_options) ensure @context_logger.cleanup end
state_hash()
click to toggle source
# File lib/dopi/plan.rb, line 85 def state_hash step_sets_hash = {} step_sets.each do |step_set| step_sets_hash[step_set.name] = step_set.state_hash end {:step_sets => step_sets_hash} end
step_sets()
click to toggle source
# File lib/dopi/plan.rb, line 70 def step_sets @step_sets ||= parsed_step_sets.map do |parsed_step_set| ::Dopi::StepSet.new(parsed_step_set, self) end end
valid?()
click to toggle source
The main validation work is done in the dop_common parser. We just add the command plugin parsers
# File lib/dopi/plan.rb, line 55 def valid? validity = @plan_parser.valid? validity = false unless step_sets.all?{|step_set| step_set.valid? } validity rescue => e DopCommon.config.trace ? Dopi.log.error(e) : Dopi.log.error(e.message) Dopi.log.warn("Plan: Can't validate the command plugins because of a previous error") end