class Orchestra::Execution::Operation
Attributes
conductor[RW]
Public Class Methods
new(conductor, run_list, input, node)
click to toggle source
# File lib/orchestra/execution.rb, line 26 def initialize conductor, run_list, input, node @conductor = conductor @input = input.dup @node = node @run_list = run_list @registry = conductor.build_registry self @state = registry.merge input end
Public Instance Methods
ensure_inputs_are_present!()
click to toggle source
# File lib/orchestra/execution.rb, line 58 def ensure_inputs_are_present! has_dep = state.method :[] missing_input = required_dependencies.reject &has_dep raise MissingInputError.new missing_input unless missing_input.empty? end
execute()
click to toggle source
# File lib/orchestra/execution.rb, line 35 def execute publish :operation_entered, node, node.input if node ensure_inputs_are_present! run_list.each do |name, step| process name, step end publish :operation_exited, node, output if node output rescue => error publish :error_raised, error raise error end
output()
click to toggle source
# File lib/orchestra/execution.rb, line 46 def output state.fetch run_list.result end
process(name, step)
click to toggle source
# File lib/orchestra/execution.rb, line 50 def process name, step output = Step.execute step, name, self state.merge! output rescue MissingProvisionError => error error.name = name.inspect raise error end
publish(event, *payload)
click to toggle source
# File lib/orchestra/execution.rb, line 64 def publish event, *payload changed notify_observers event, *payload end
thread_pool()
click to toggle source
# File lib/orchestra/execution.rb, line 69 def thread_pool conductor.thread_pool end