class Inprovise::ExecutionContext

Attributes

config[R]
node[R]
script[RW]

Public Class Methods

new(node, log, index, config=nil) click to toggle source
# File lib/inprovise/execution_context.rb, line 101
def initialize(node, log, index, config=nil)
  @node = node
  @log = log
  @node.log_to(@log)
  @config = Inprovise::Config.new(config || @node.config)
  @index = index
  @script = nil
end

Public Instance Methods

as(user, &blk) click to toggle source
# File lib/inprovise/execution_context.rb, line 118
def as(user, &blk)
  for_user(user).exec(blk)
end
binary_exists?(binary) click to toggle source
# File lib/inprovise/execution_context.rb, line 235
def binary_exists?(binary)
  @node.binary_exists?(binary)
end
copy(from, to) click to toggle source
# File lib/inprovise/execution_context.rb, line 186
def copy(from, to)
  @node.copy(from, to)
end
download(from, to) click to toggle source
# File lib/inprovise/execution_context.rb, line 174
def download(from, to)
  @node.download(from, to)
end
env(var) click to toggle source
# File lib/inprovise/execution_context.rb, line 161
def env(var)
  @node.env(var)
end
exec(blk, *args) click to toggle source
# File lib/inprovise/execution_context.rb, line 114
def exec(blk, *args)
  DSL.new(self).instance_exec(*args, &blk)
end
exec_config(blk) click to toggle source
# File lib/inprovise/execution_context.rb, line 110
def exec_config(blk)
  ConfigDSL.new(self).instance_eval(&blk)
end
for_user(user) click to toggle source
# File lib/inprovise/execution_context.rb, line 133
def for_user(user)
  return self if user.nil? || user == node.user
  new_node = @node.for_user(user)
  new_log = @log.clone_for_node(new_node)
  self.dup.setup_for_node!(new_node, new_log)
end
in_dir(path, &blk) click to toggle source
# File lib/inprovise/execution_context.rb, line 122
def in_dir(path, &blk)
  rc = nil
  old_cwd = @node.helper.set_cwd(path)
  begin
    rc = exec(blk)
  ensure
    @node.helper.set_cwd(old_cwd)
  end
  rc
end
local(path) click to toggle source
# File lib/inprovise/execution_context.rb, line 194
def local(path)
  Inprovise::LocalFile.new(self, path)
end
log(msg=nil, color=nil) click to toggle source
# File lib/inprovise/execution_context.rb, line 165
def log(msg=nil, color=nil)
  @log.log(msg, color) if msg
  @log
end
mkdir(path) click to toggle source
# File lib/inprovise/execution_context.rb, line 178
def mkdir(path)
  @node.mkdir(path)
end
move(from, to) click to toggle source
# File lib/inprovise/execution_context.rb, line 190
def move(from, to)
  @node.move(from, to)
end
remote(path) click to toggle source
# File lib/inprovise/execution_context.rb, line 198
def remote(path)
  Inprovise::RemoteFile.new(self, path)
end
remove(path) click to toggle source
# File lib/inprovise/execution_context.rb, line 182
def remove(path)
  @node.delete(path)
end
resolve_action_ref(action_ref) click to toggle source
# File lib/inprovise/execution_context.rb, line 214
def resolve_action_ref(action_ref)
  action_name, scr_name = *action_ref.split(':', 2).reverse
  scr = scr_name ? @index.get(scr_name) : nil
  [scr, action_name]
end
run(cmd, opts={}) click to toggle source
# File lib/inprovise/execution_context.rb, line 153
def run(cmd, opts={})
  @node.run(cmd, opts)
end
run_local(cmd) click to toggle source
# File lib/inprovise/execution_context.rb, line 146
def run_local(cmd)
  @log.local(cmd)
  stdout, stderr, status = Open3.capture3(cmd)
  @log.stdout(stdout)
  @log.stderr(stderr)
end
set_owner(path, user, group=nil) click to toggle source
# File lib/inprovise/execution_context.rb, line 206
def set_owner(path, user, group=nil)
  @node.set_owner(path, user, group)
end
set_permissions(path, mask) click to toggle source
# File lib/inprovise/execution_context.rb, line 202
def set_permissions(path, mask)
  @node.set_permissions(path, mask)
end
setup_for_node!(node, log) click to toggle source
# File lib/inprovise/execution_context.rb, line 140
def setup_for_node!(node, log)
  @node = node
  @log = log
  self
end
sudo(cmd, opts={}) click to toggle source
# File lib/inprovise/execution_context.rb, line 157
def sudo(cmd, opts={})
  @node.sudo(cmd, opts)
end
template(path) click to toggle source
# File lib/inprovise/execution_context.rb, line 210
def template(path)
  Inprovise::Template.new(path, self)
end
trigger(scr, action_name, *args) click to toggle source
# File lib/inprovise/execution_context.rb, line 220
def trigger(scr, action_name, *args)
  scr ||= @script
  action = scr ? scr.actions[action_name] : nil
  raise Inprovise::MissingActionError.new("#{scr ? scr.name+':' : ''}#{action_name}") unless action
  curtask = @node.log.set_task("#{scr.name}:#{action_name}")
  curscript = @script
  @script = scr
  begin
    exec(action, *args)
  ensure
    @script = curscript
    @node.log.set_task(curtask)
  end
end
upload(from, to) click to toggle source
# File lib/inprovise/execution_context.rb, line 170
def upload(from, to)
  @node.upload(from, to)
end