Class: Chef::RunStatus

Inherits:
Object
  • Object
show all
Defined in:
lib/chef/run_status.rb

Overview

Chef::RunStatus

Tracks various aspects of a Chef run, including the Node and RunContext, start and end time, and any Exception that stops the run. RunStatus objects are passed to any notification or exception handlers at the completion of a Chef run.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node, events) ⇒ RunStatus

Returns a new instance of RunStatus.



40
41
42
43
# File 'lib/chef/run_status.rb', line 40

def initialize(node, events)
  @node = node
  @events = events
end

Instance Attribute Details

#end_timeObject (readonly)

Returns the value of attribute end_time.



32
33
34
# File 'lib/chef/run_status.rb', line 32

def end_time
  @end_time
end

#eventsObject (readonly)

Returns the value of attribute events.



26
27
28
# File 'lib/chef/run_status.rb', line 26

def events
  @events
end

#exceptionObject

Returns the value of attribute exception.



34
35
36
# File 'lib/chef/run_status.rb', line 34

def exception
  @exception
end

#nodeObject

Returns the value of attribute node.



38
39
40
# File 'lib/chef/run_status.rb', line 38

def node
  @node
end

#run_contextObject

Returns the value of attribute run_context.



28
29
30
# File 'lib/chef/run_status.rb', line 28

def run_context
  @run_context
end

#run_idObject

Returns the value of attribute run_id.



36
37
38
# File 'lib/chef/run_status.rb', line 36

def run_id
  @run_id
end

#start_timeObject (readonly)

Returns the value of attribute start_time.



30
31
32
# File 'lib/chef/run_status.rb', line 30

def start_time
  @start_time
end

Instance Method Details

#all_resourcesObject

The list of all resources in the current run context’s resource_collection



67
68
69
# File 'lib/chef/run_status.rb', line 67

def all_resources
  @run_context && @run_context.resource_collection.all_resources
end

#backtraceObject

The backtrace from exception, if any



78
79
80
# File 'lib/chef/run_status.rb', line 78

def backtrace
  @exception && @exception.backtrace
end

#elapsed_timeObject

The elapsed time between start_time and end_time. Returns nil if either value is not set.



58
59
60
61
62
63
64
# File 'lib/chef/run_status.rb', line 58

def elapsed_time
  if @start_time && @end_time
    @end_time - @start_time
  else
    nil
  end
end

#failed?Boolean

Did the Chef run fail?

Returns:

  • (Boolean)


83
84
85
# File 'lib/chef/run_status.rb', line 83

def failed?
  !success?
end

#formatted_exceptionObject

Returns a string of the format “ExceptionClass: message” or nil if no exception is set.



120
121
122
# File 'lib/chef/run_status.rb', line 120

def formatted_exception
  @exception && "#{@exception.class.name}: #{@exception.message}"
end

#start_clockObject

sets start_time to the current time.



46
47
48
# File 'lib/chef/run_status.rb', line 46

def start_clock
  @start_time = Time.now
end

#stop_clockObject

sets end_time to the current time



51
52
53
54
# File 'lib/chef/run_status.rb', line 51

def stop_clock
  @start_time ||= Time.now # if we failed so early we didn't get a start time
  @end_time = Time.now
end

#success?Boolean

Did the chef run succeed? returns true if no exception has been set.

Returns:

  • (Boolean)


88
89
90
# File 'lib/chef/run_status.rb', line 88

def success?
  @exception.nil?
end

#to_hObject Also known as: to_hash

A Hash representation of the RunStatus, with the following (Symbol) keys:

  • :node

  • :success

  • :start_time

  • :end_time

  • :elapsed_time

  • :all_resources

  • :updated_resources

  • :exception

  • :backtrace



102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/chef/run_status.rb', line 102

def to_h
  # use a flat hash here so we can't errors from intermediate values being nil
  { node: node,
    success: success?,
    start_time: start_time,
    end_time: end_time,
    elapsed_time: elapsed_time,
    all_resources: all_resources,
    updated_resources: updated_resources,
    exception: formatted_exception,
    backtrace: backtrace,
    run_id: run_id }
end

#updated_resourcesObject

The list of all resources in the current run context’s resource_collection that are marked as updated



73
74
75
# File 'lib/chef/run_status.rb', line 73

def updated_resources
  @run_context && @run_context.resource_collection.select(&:updated)
end