class Inprovise::ScriptRunner
Script runner for Inprovise
- Author
-
Martin Corino
- License
-
Distributes under the same license as Ruby
Constants
- COMMANDS
Public Class Methods
new(node, script, skip_dependencies=false)
click to toggle source
# File lib/inprovise/script_runner.rb, line 9 def initialize(node, script, skip_dependencies=false) @node = node @script = script @index = Inprovise::ScriptIndex.default @perform = true @skip_dependencies = skip_dependencies @log = Inprovise::Logger.new(@node, script) end
Public Instance Methods
demonstrate(command_name, config=nil)
click to toggle source
# File lib/inprovise/script_runner.rb, line 47 def demonstrate(command_name, config=nil) @perform = false execute(command_name, config) @perform = true end
execute(command_name, config=nil)
click to toggle source
# File lib/inprovise/script_runner.rb, line 33 def execute(command_name, config=nil) Inprovise.log.local("#{COMMANDS[command_name].first} #{script.name} #{COMMANDS[command_name].last} #{@node.to_s}") scrs = scripts context = @perform ? Inprovise::ExecutionContext.new(@node, @log, @index, config) : Inprovise::MockExecutionContext.new(@node, @log, @index, config) context.config.command = command_name.to_sym scrs.each { |script| script.update_configuration(context) } scrs.each { |script| setup_configuration(script, context) } scrs.reverse! if command_name.to_sym == :revert @log.say(scrs.map(&:name).join(', '), :yellow) if Inprovise.verbosity > 0 scrs.each do |script| send(:"execute_#{command_name}", script, context) end end
script()
click to toggle source
# File lib/inprovise/script_runner.rb, line 22 def script Inprovise::Script === @script ? @script : @index.get(@script) end
scripts()
click to toggle source
# File lib/inprovise/script_runner.rb, line 26 def scripts return [script] if @skip_dependencies resolver = Inprovise::Resolver.new(script, @index) resolver.resolve resolver.scripts end
set_index(index)
click to toggle source
# File lib/inprovise/script_runner.rb, line 18 def set_index(index) @index = index end
Private Instance Methods
exec(script, command_name, context)
click to toggle source
# File lib/inprovise/script_runner.rb, line 107 def exec(script, command_name, context) cmds = script.command(command_name) context = context.for_user(script.user) if script.user context.log.set_task(script) context.log.command(command_name) context.script = script cmds.map {|cmd| context.exec(cmd) } end
execute_apply(script, context)
click to toggle source
# File lib/inprovise/script_runner.rb, line 61 def execute_apply(script, context) return unless should_run?(script, :apply, context) exec(script, :apply, context) validate!(script, context) end
execute_revert(script, context)
click to toggle source
# File lib/inprovise/script_runner.rb, line 68 def execute_revert(script, context) return unless should_run?(script, :revert, context) exec(script, :revert, context) end
execute_validate(script, context)
click to toggle source
# File lib/inprovise/script_runner.rb, line 74 def execute_validate(script, context) validate!(script, context) end
is_valid?(script, context)
click to toggle source
# File lib/inprovise/script_runner.rb, line 99 def is_valid?(script, context) results = exec(script, :validate, context) rc = results.all? context.log.command("validate -> #{rc}") if Inprovise.verbosity > 0 rc end
setup_configuration(script, context)
click to toggle source
# File lib/inprovise/script_runner.rb, line 53 def setup_configuration(script, context) context.log.set_task(script) context.log.command(:configure) context.script = script script.command(:configure).each {|cmd| context.exec_config(cmd) } end
should_run?(script, command_name, context)
click to toggle source
# File lib/inprovise/script_runner.rb, line 79 def should_run?(script, command_name, context) return false unless script.provides_command?(command_name) return true unless @perform return true unless command_name == :apply || command_name == :revert return true if context.config[:run_always] return true unless script.provides_command?(:validate) is_present = is_valid?(script, context) return !is_present if command_name == :apply is_present end
validate!(script, context)
click to toggle source
# File lib/inprovise/script_runner.rb, line 91 def validate!(script, context) return true unless @perform return unless script.provides_command?(:validate) return if is_valid?(script, context) raise ValidationFailureError.new(@node, script) end