Class: Bosh::Director::Errand::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh/director/errand/result.rb

Constant Summary collapse

AGENT_RUN_ERRAND_RESULT_SCHEMA =
::Membrane::SchemaParser.parse do
  {
    'exit_code' => Integer,
    'stdout' => String,
    'stderr' => String,
  }
end

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(exit_code, stdout, stderr, logs_blobstore_id) ⇒ Result

Returns a new instance of Result.



24
25
26
27
28
29
# 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

Instance Attribute Details

#exit_codeObject (readonly)

Returns the value of attribute exit_code.



5
6
7
# File 'lib/bosh/director/errand/result.rb', line 5

def exit_code
  @exit_code
end

Class Method Details

.from_agent_task_results(agent_task_result, logs_blobstore_id) ⇒ Object

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



17
18
19
20
21
22
# 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

Instance Method Details

#short_description(job_name) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# 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_hashObject



44
45
46
47
48
49
50
51
52
53
# 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