Exception: Chef::Exceptions::MultipleFailures
- Defined in:
- lib/chef/exceptions.rb
Overview
Exception class for collecting multiple failures. Used when running delayed notifications so that chef can process each delayed notification even if chef client or other notifications fail.
Instance Method Summary collapse
- #client_run_failure(exception) ⇒ Object
- #empty? ⇒ Boolean
- #for_raise ⇒ Object
-
#initialize(*args) ⇒ MultipleFailures
constructor
A new instance of MultipleFailures.
- #message ⇒ Object
- #notification_failure(exception) ⇒ Object
- #raise! ⇒ Object
Constructor Details
#initialize(*args) ⇒ MultipleFailures
Returns a new instance of MultipleFailures.
202 203 204 205 |
# File 'lib/chef/exceptions.rb', line 202 def initialize(*args) super @all_failures = [] end |
Instance Method Details
#client_run_failure(exception) ⇒ Object
214 215 216 217 |
# File 'lib/chef/exceptions.rb', line 214 def client_run_failure(exception) set_backtrace(exception.backtrace) @all_failures << [ "chef run", exception ] end |
#empty? ⇒ Boolean
229 230 231 |
# File 'lib/chef/exceptions.rb', line 229 def empty? @all_failures.empty? end |
#for_raise ⇒ Object
233 234 235 236 237 238 239 |
# File 'lib/chef/exceptions.rb', line 233 def for_raise if @all_failures.size == 1 @all_failures[0][1] else self end end |
#message ⇒ Object
207 208 209 210 211 212 |
# File 'lib/chef/exceptions.rb', line 207 def base = "Multiple failures occurred:\n" @all_failures.inject(base) do |, (location, error)| << "* #{error.class} occurred in #{location}: #{error.}\n" end end |
#notification_failure(exception) ⇒ Object
219 220 221 |
# File 'lib/chef/exceptions.rb', line 219 def notification_failure(exception) @all_failures << [ "delayed notification", exception ] end |
#raise! ⇒ Object
223 224 225 226 227 |
# File 'lib/chef/exceptions.rb', line 223 def raise! unless empty? raise self.for_raise end end |