class Bosh::Director::Errand::Result

Constants

AGENT_RUN_ERRAND_RESULT_SCHEMA

Attributes

exit_code[R]

Public Class Methods

from_agent_task_results(agent_task_result, logs_blobstore_id) click to toggle source

Explicitly write out schema of the director task result to avoid accidently leaking agent task result extra fields.

# File lib/bosh/director/errand/result.rb, line 17
def self.from_agent_task_results(agent_task_result, logs_blobstore_id)
  AGENT_RUN_ERRAND_RESULT_SCHEMA.validate(agent_task_result)
  new(*agent_task_result.values_at('exit_code', 'stdout', 'stderr'), logs_blobstore_id)
rescue Membrane::SchemaValidationError => e
  raise AgentInvalidTaskResult, e.message
end
new(exit_code, stdout, stderr, logs_blobstore_id) click to toggle source
# File lib/bosh/director/errand/result.rb, line 24
def initialize(exit_code, stdout, stderr, logs_blobstore_id)
  @exit_code = exit_code
  @stdout = stdout
  @stderr = stderr
  @logs_blobstore_id = logs_blobstore_id
end

Public Instance Methods

short_description(job_name) click to toggle source
# File lib/bosh/director/errand/result.rb, line 31
def short_description(job_name)
  title_prefix = "Errand '#{job_name}'"
  exit_code_suffix = "(exit code #{@exit_code})"

  if @exit_code == 0
    "#{title_prefix} completed successfully #{exit_code_suffix}"
  elsif @exit_code > 128
    "#{title_prefix} was canceled #{exit_code_suffix}"
  else
    "#{title_prefix} completed with error #{exit_code_suffix}"
  end
end
to_hash() click to toggle source
# File lib/bosh/director/errand/result.rb, line 44
def to_hash
  {
    'exit_code' => @exit_code,
    'stdout' => @stdout,
    'stderr' => @stderr,
    'logs' => {
      'blobstore_id' => @logs_blobstore_id,
    },
  }
end