class Proxy::RemoteExecution::Ssh::CommandAction

Public Instance Methods

command() click to toggle source
# File lib/smart_proxy_remote_execution_ssh_core/command_action.rb, line 44
def command
  @command ||= Dispatcher::Command.new(:id                    => input[:task_id],
                                       :host                  => input[:hostname],
                                       :ssh_user              => input[:ssh_user] || 'root',
                                       :ssh_port              => input[:ssh_port] || 22,
                                       :effective_user        => input[:effective_user],
                                       :script                => input[:script],
                                       :effective_user_method => input[:effective_user_method],
                                       :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_core/command_action.rb, line 81
def failed_run?
  output[:exit_status] != 0
end
finalize() click to toggle source
# File lib/smart_proxy_remote_execution_ssh_core/command_action.rb, line 35
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_core/command_action.rb, line 68
def finish_run(update)
  output[:exit_status] = update.exit_status
end
init_run() click to toggle source
# File lib/smart_proxy_remote_execution_ssh_core/command_action.rb, line 57
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_core/command_action.rb, line 63
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_core/command_action.rb, line 8
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_core/command_action.rb, line 72
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_core/command_action.rb, line 40
def rescue_strategy_for_self
  ::Dynflow::Action::Rescue::Skip
end
run(event = nil) click to toggle source
# File lib/smart_proxy_remote_execution_ssh_core/command_action.rb, line 17
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