class Proxy::RemoteExecution::Ssh::CommandAction

Public Instance Methods

command() click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 42
def command
  @command ||= Dispatcher::Command.new(:id               => input[:task_id],
                                       :host             => input[:hostname],
                                       :ssh_user         => input[:ssh_user] || 'root',
                                       :effective_user   => input[:effective_user],
                                       :script           => input[:script],
                                       :host_public_key  => input[:host_public_key],
                                       :verify_host      => input[:verify_host],
                                       :suspended_action => suspended_action)
end
failed_run?() click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 77
def failed_run?
  output[:exit_status] != 0
end
finalize() click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 33
def finalize
  # To mark the task as a whole as failed
  error! "Script execution failed" if failed_run?
end
finish_run(update) click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 64
def finish_run(update)
  output[:exit_status] = update.exit_status
end
init_run() click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 53
def init_run
  output[:result] = []
  Proxy::RemoteExecution::Ssh.dispatcher.tell([:initialize_command, command])
  suspend
end
kill_run() click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 59
def kill_run
  Proxy::RemoteExecution::Ssh.dispatcher.tell([:kill, command])
  suspend
end
plan(input) click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 6
def plan(input)
  if callback = input['callback']
    input[:task_id] = callback['task_id']
  else
    input[:task_id] ||= SecureRandom.uuid
  end
  plan_with_callback(input)
end
process_update(update) click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 68
def process_update(update)
  output[:result].concat(update.buffer_to_hash)
  if update.exit_status
    finish_run(update)
  else
    suspend
  end
end
rescue_strategy_for_self() click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 38
def rescue_strategy_for_self
  Dynflow::Action::Rescue::Skip
end
run(event = nil) click to toggle source
# File lib/smart_proxy_remote_execution_ssh/command_action.rb, line 15
def run(event = nil)
  case event
  when nil
    init_run
  when CommandUpdate
    process_update(event)
  when Dynflow::Action::Cancellable::Cancel
    kill_run
  when Dynflow::Action::Skip
    # do nothing
  else
    raise "Unexpected event #{event.inspect}"
  end
rescue => e
  action_logger.error(e)
  process_update(CommandUpdate.new(CommandUpdate.encode_exception("Proxy error", e)))
end