Class: Chef::Formatters::Doc
- Inherits:
-
Base
- Object
- EventDispatch::Base
- Base
- Chef::Formatters::Doc
- Defined in:
- lib/chef/formatters/doc.rb
Overview
– TODO: not sold on the name, but the output is similar to what rspec calls “specdoc”
Instance Attribute Summary collapse
-
#end_time ⇒ Object
readonly
Returns the value of attribute end_time.
-
#start_time ⇒ Object
readonly
Returns the value of attribute start_time.
Attributes inherited from Base
Instance Method Summary collapse
- #audit_phase_complete ⇒ Object
- #audit_phase_failed(error) ⇒ Object
-
#audit_phase_start(run_status) ⇒ Object
Called before audit phase starts.
- #control_example_failure(control_group_name, example_data, error) ⇒ Object
- #control_example_success(control_group_name, example_data) ⇒ Object
-
#converge_complete ⇒ Object
Called when the converge phase is finished.
- #converge_failed(e) ⇒ Object
-
#converge_start(run_context) ⇒ Object
Called before convergence starts.
-
#cookbook_clean_complete ⇒ Object
Called when cookbook cleaning is finished.
-
#cookbook_clean_start ⇒ Object
Called before unneeded cookbooks are removed.
-
#cookbook_resolution_complete(cookbook_collection) ⇒ Object
Called when the cookbook collection is returned from the server.
-
#cookbook_resolution_failed(expanded_run_list, exception) ⇒ Object
Called when there is an error getting the cookbook collection from the server.
-
#cookbook_resolution_start(expanded_run_list) ⇒ Object
Called before the cookbook collection is fetched from the server.
-
#cookbook_sync_complete ⇒ Object
Called after all cookbooks have been sync’d.
-
#cookbook_sync_start(cookbook_count) ⇒ Object
Called before cookbook sync starts.
- #elapsed_time ⇒ Object
-
#file_loaded(path) ⇒ Object
Called after a file in a cookbook is loaded.
-
#handler_executed(handler) ⇒ Object
Called after an individual handler has run.
-
#handlers_completed ⇒ Object
Called after all handlers have executed.
-
#handlers_start(handler_count) ⇒ Object
Called before handlers run.
- #indent ⇒ Object
-
#initialize(out, err) ⇒ Doc
constructor
A new instance of Doc.
-
#library_load_start(file_count) ⇒ Object
Called when cookbook loading starts.
-
#node_load_completed(node, expanded_run_list, config) ⇒ Object
Default and override attrs from roles have been computed, but not yet applied.
-
#node_load_failed(node_name, exception, config) ⇒ Object
Failed to load node data from the server.
- #node_load_start(node_name, config) ⇒ Object
-
#ohai_completed(node) ⇒ Object
Called right after ohai runs.
- #output_record(line) ⇒ Object
-
#provider_requirement_failed(action, resource, exception, message) ⇒ Object
Called when an assertion declared by a provider fails.
-
#recipe_load_complete ⇒ Object
Called when recipes have been loaded.
- #registration_completed ⇒ Object
-
#registration_start(node_name, config) ⇒ Object
About to attempt to register as
node_name. -
#removed_cookbook_file(path) ⇒ Object
Called after the file at
pathis removed. -
#resource_action_start(resource, action, notification_type = nil, notifier = nil) ⇒ Object
Called before action is executed on a resource.
- #resource_bypassed(resource, action, provider) ⇒ Object
-
#resource_current_state_load_bypassed(resource, action, current_resource) ⇒ Object
Called when resource current state load is skipped due to the provider not supporting whyrun mode.
-
#resource_current_state_loaded(resource, action, current_resource) ⇒ Object
Called after #load_current_resource has run.
-
#resource_failed(resource, action, exception) ⇒ Object
Called when a resource fails and will not be retried.
-
#resource_failed_retriable(resource, action, retry_count, exception) ⇒ Object
Called when a resource fails, but will retry.
-
#resource_skipped(resource, action, conditional) ⇒ Object
Called when a resource action has been skipped b/c of a conditional.
-
#resource_up_to_date(resource, action) ⇒ Object
Called when a resource has no converge actions, e.g., it was already correct.
-
#resource_update_applied(resource, action, update) ⇒ Object
Called when a change has been made to a resource.
-
#resource_updated(resource, action) ⇒ Object
Called after a resource has been completely converged.
- #run_completed(node) ⇒ Object
- #run_failed(exception) ⇒ Object
- #run_start(version) ⇒ Object
-
#skipping_registration(node_name, config) ⇒ Object
Already have a client key, assuming this node has registered.
- #stream_output(stream, output, options = {}) ⇒ Object
-
#synchronized_cookbook(cookbook_name) ⇒ Object
Called when cookbook
cookbook_namehas been sync’d. - #total_audits ⇒ Object
- #total_resources ⇒ Object
- #unindent ⇒ Object
-
#updated_cookbook_file(cookbook_name, path) ⇒ Object
Called when an individual file in a cookbook has been updated.
-
#whyrun_assumption(action, resource, message) ⇒ Object
Called when a provider makes an assumption after a failed assertion in whyrun mode, in order to allow execution to continue.
Methods inherited from Base
#attribute_file_load_failed, #attribute_file_loaded, cli_name, #cookbook_sync_failed, #definition_file_load_failed, #definition_file_loaded, #display_error, #file_load_failed, #indent_by, #library_file_load_failed, #library_file_loaded, #lwrp_file_load_failed, #lwrp_file_loaded, #print, #puts, #puts_line, #recipe_file_load_failed, #recipe_file_loaded, #recipe_not_found, #registration_failed, #run_list_expand_failed, #start_line
Methods included from ErrorMapper
cookbook_resolution_failed, cookbook_sync_failed, file_load_failed, node_load_failed, registration_failed, resource_failed, run_list_expand_failed
Methods inherited from EventDispatch::Base
#attribute_file_load_failed, #attribute_file_loaded, #attribute_load_complete, #attribute_load_start, #control_group_started, #cookbook_sync_failed, #definition_file_load_failed, #definition_file_loaded, #definition_load_complete, #definition_load_start, #library_file_load_failed, #library_file_loaded, #library_load_complete, #lwrp_file_load_failed, #lwrp_file_loaded, #lwrp_load_complete, #lwrp_load_start, #msg, #recipe_file_load_failed, #recipe_file_loaded, #recipe_load_start, #recipe_not_found, #registration_failed, #resource_completed, #run_list_expand_failed, #run_started, #stream_closed, #stream_opened
Constructor Details
#initialize(out, err) ⇒ Doc
Returns a new instance of Doc.
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/chef/formatters/doc.rb', line 16 def initialize(out, err) super @updated_resources = 0 @up_to_date_resources = 0 @successful_audits = 0 @failed_audits = 0 @start_time = Time.now @end_time = @start_time end |
Instance Attribute Details
#end_time ⇒ Object (readonly)
Returns the value of attribute end_time.
11 12 13 |
# File 'lib/chef/formatters/doc.rb', line 11 def end_time @end_time end |
#start_time ⇒ Object (readonly)
Returns the value of attribute start_time.
11 12 13 |
# File 'lib/chef/formatters/doc.rb', line 11 def start_time @start_time end |
Instance Method Details
#audit_phase_complete ⇒ Object
178 179 180 |
# File 'lib/chef/formatters/doc.rb', line 178 def audit_phase_complete puts_line "Auditing complete" end |
#audit_phase_failed(error) ⇒ Object
182 183 184 185 186 187 188 189 190 |
# File 'lib/chef/formatters/doc.rb', line 182 def audit_phase_failed(error) puts_line "" puts_line "Audit phase exception:" indent puts_line "#{error.message}" error.backtrace.each do |l| puts_line l end end |
#audit_phase_start(run_status) ⇒ Object
Called before audit phase starts
174 175 176 |
# File 'lib/chef/formatters/doc.rb', line 174 def audit_phase_start(run_status) puts_line "Starting audit phase" end |
#control_example_failure(control_group_name, example_data, error) ⇒ Object
196 197 198 |
# File 'lib/chef/formatters/doc.rb', line 196 def control_example_failure(control_group_name, example_data, error) @failed_audits += 1 end |
#control_example_success(control_group_name, example_data) ⇒ Object
192 193 194 |
# File 'lib/chef/formatters/doc.rb', line 192 def control_example_success(control_group_name, example_data) @successful_audits += 1 end |
#converge_complete ⇒ Object
Called when the converge phase is finished.
164 165 166 |
# File 'lib/chef/formatters/doc.rb', line 164 def converge_complete unindent if @current_recipe end |
#converge_failed(e) ⇒ Object
168 169 170 171 |
# File 'lib/chef/formatters/doc.rb', line 168 def converge_failed(e) # Currently a failed converge is handled the same way as a successful converge converge_complete end |
#converge_start(run_context) ⇒ Object
Called before convergence starts
159 160 161 |
# File 'lib/chef/formatters/doc.rb', line 159 def converge_start(run_context) puts_line "Converging #{run_context.resource_collection.all_resources.size} resources" end |
#cookbook_clean_complete ⇒ Object
Called when cookbook cleaning is finished.
122 123 |
# File 'lib/chef/formatters/doc.rb', line 122 def cookbook_clean_complete end |
#cookbook_clean_start ⇒ Object
Called before unneeded cookbooks are removed
112 113 |
# File 'lib/chef/formatters/doc.rb', line 112 def cookbook_clean_start end |
#cookbook_resolution_complete(cookbook_collection) ⇒ Object
Called when the cookbook collection is returned from the server.
108 109 |
# File 'lib/chef/formatters/doc.rb', line 108 def cookbook_resolution_complete(cookbook_collection) end |
#cookbook_resolution_failed(expanded_run_list, exception) ⇒ Object
Called when there is an error getting the cookbook collection from the server.
103 104 105 |
# File 'lib/chef/formatters/doc.rb', line 103 def cookbook_resolution_failed(, exception) super end |
#cookbook_resolution_start(expanded_run_list) ⇒ Object
Called before the cookbook collection is fetched from the server.
97 98 99 |
# File 'lib/chef/formatters/doc.rb', line 97 def cookbook_resolution_start() puts_line "resolving cookbooks for run list: #{expanded_run_list.inspect}" end |
#cookbook_sync_complete ⇒ Object
Called after all cookbooks have been sync’d.
141 142 143 |
# File 'lib/chef/formatters/doc.rb', line 141 def cookbook_sync_complete unindent end |
#cookbook_sync_start(cookbook_count) ⇒ Object
Called before cookbook sync starts
126 127 128 129 |
# File 'lib/chef/formatters/doc.rb', line 126 def cookbook_sync_start(cookbook_count) puts_line "Synchronizing Cookbooks:" indent end |
#elapsed_time ⇒ Object
27 28 29 |
# File 'lib/chef/formatters/doc.rb', line 27 def elapsed_time end_time - start_time end |
#file_loaded(path) ⇒ Object
Called after a file in a cookbook is loaded.
151 152 |
# File 'lib/chef/formatters/doc.rb', line 151 def file_loaded(path) end |
#handler_executed(handler) ⇒ Object
Called after an individual handler has run
301 302 303 |
# File 'lib/chef/formatters/doc.rb', line 301 def handler_executed(handler) puts_line "- #{handler.class.name}" end |
#handlers_completed ⇒ Object
Called after all handlers have executed
306 307 308 309 |
# File 'lib/chef/formatters/doc.rb', line 306 def handlers_completed unindent puts_line "Running handlers complete\n" end |
#handlers_start(handler_count) ⇒ Object
Called before handlers run
294 295 296 297 298 |
# File 'lib/chef/formatters/doc.rb', line 294 def handlers_start(handler_count) puts '' puts "Running handlers:" indent end |
#indent ⇒ Object
329 330 331 |
# File 'lib/chef/formatters/doc.rb', line 329 def indent indent_by(2) end |
#library_load_start(file_count) ⇒ Object
Called when cookbook loading starts.
146 147 148 |
# File 'lib/chef/formatters/doc.rb', line 146 def library_load_start(file_count) puts_line "Compiling Cookbooks..." end |
#node_load_completed(node, expanded_run_list, config) ⇒ Object
Default and override attrs from roles have been computed, but not yet applied. Normal attrs from JSON have been added to the node.
93 94 |
# File 'lib/chef/formatters/doc.rb', line 93 def node_load_completed(node, , config) end |
#node_load_failed(node_name, exception, config) ⇒ Object
Failed to load node data from the server
87 88 89 |
# File 'lib/chef/formatters/doc.rb', line 87 def node_load_failed(node_name, exception, config) super end |
#node_load_start(node_name, config) ⇒ Object
83 84 |
# File 'lib/chef/formatters/doc.rb', line 83 def node_load_start(node_name, config) end |
#ohai_completed(node) ⇒ Object
Called right after ohai runs.
68 69 |
# File 'lib/chef/formatters/doc.rb', line 68 def ohai_completed(node) end |
#output_record(line) ⇒ Object
252 253 254 |
# File 'lib/chef/formatters/doc.rb', line 252 def output_record(line) end |
#provider_requirement_failed(action, resource, exception, message) ⇒ Object
Called when an assertion declared by a provider fails
321 322 323 324 325 326 327 |
# File 'lib/chef/formatters/doc.rb', line 321 def provider_requirement_failed(action, resource, exception, ) return unless color = Chef::Config[:why_run] ? :yellow : :red [ ].flatten.each do |line| start_line("* #{line}", color) end end |
#recipe_load_complete ⇒ Object
Called when recipes have been loaded.
155 156 |
# File 'lib/chef/formatters/doc.rb', line 155 def recipe_load_complete end |
#registration_completed ⇒ Object
80 81 |
# File 'lib/chef/formatters/doc.rb', line 80 def registration_completed end |
#registration_start(node_name, config) ⇒ Object
About to attempt to register as node_name
76 77 78 |
# File 'lib/chef/formatters/doc.rb', line 76 def registration_start(node_name, config) puts_line "Creating a new client identity for #{node_name} using the validator key." end |
#removed_cookbook_file(path) ⇒ Object
Called after the file at path is removed. It may be removed if the cookbook containing it was removed from the run list, or if the file was removed from the cookbook.
118 119 |
# File 'lib/chef/formatters/doc.rb', line 118 def removed_cookbook_file(path) end |
#resource_action_start(resource, action, notification_type = nil, notifier = nil) ⇒ Object
Called before action is executed on a resource.
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
# File 'lib/chef/formatters/doc.rb', line 201 def resource_action_start(resource, action, notification_type=nil, notifier=nil) if resource.cookbook_name && resource.recipe_name resource_recipe = "#{resource.cookbook_name}::#{resource.recipe_name}" else resource_recipe = "<Dynamically Defined Resource>" end if resource_recipe != @current_recipe && !resource.enclosing_provider unindent if @current_recipe puts_line "Recipe: #{resource_recipe}" @current_recipe = resource_recipe indent end # TODO: info about notifies start_line "* #{resource} action #{action}", :stream => resource indent end |
#resource_bypassed(resource, action, provider) ⇒ Object
247 248 249 250 |
# File 'lib/chef/formatters/doc.rb', line 247 def resource_bypassed(resource, action, provider) puts " (Skipped: whyrun not supported by provider #{provider.class.name})", :stream => resource unindent end |
#resource_current_state_load_bypassed(resource, action, current_resource) ⇒ Object
Called when resource current state load is skipped due to the provider not supporting whyrun mode.
285 286 287 |
# File 'lib/chef/formatters/doc.rb', line 285 def resource_current_state_load_bypassed(resource, action, current_resource) puts_line("* Whyrun not supported for #{resource}, bypassing load.", :yellow) end |
#resource_current_state_loaded(resource, action, current_resource) ⇒ Object
Called after #load_current_resource has run.
237 238 |
# File 'lib/chef/formatters/doc.rb', line 237 def resource_current_state_loaded(resource, action, current_resource) end |
#resource_failed(resource, action, exception) ⇒ Object
Called when a resource fails and will not be retried.
224 225 226 227 |
# File 'lib/chef/formatters/doc.rb', line 224 def resource_failed(resource, action, exception) super unindent end |
#resource_failed_retriable(resource, action, retry_count, exception) ⇒ Object
Called when a resource fails, but will retry.
220 221 |
# File 'lib/chef/formatters/doc.rb', line 220 def resource_failed_retriable(resource, action, retry_count, exception) end |
#resource_skipped(resource, action, conditional) ⇒ Object
Called when a resource action has been skipped b/c of a conditional
230 231 232 233 234 |
# File 'lib/chef/formatters/doc.rb', line 230 def resource_skipped(resource, action, conditional) # TODO: more info about conditional puts " (skipped due to #{conditional.short_description})", :stream => resource unindent end |
#resource_up_to_date(resource, action) ⇒ Object
Called when a resource has no converge actions, e.g., it was already correct.
241 242 243 244 245 |
# File 'lib/chef/formatters/doc.rb', line 241 def resource_up_to_date(resource, action) @up_to_date_resources+= 1 puts " (up to date)", :stream => resource unindent end |
#resource_update_applied(resource, action, update) ⇒ Object
Called when a change has been made to a resource. May be called multiple times per resource, e.g., a file may have its content updated, and then its permissions updated.
259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 |
# File 'lib/chef/formatters/doc.rb', line 259 def resource_update_applied(resource, action, update) prefix = Chef::Config[:why_run] ? "Would " : "" Array(update).each do |line| next if line.nil? output_record line if line.kind_of? String start_line "- #{prefix}#{line}", :green elsif line.kind_of? Array # Expanded output - delta # @todo should we have a resource_update_delta callback? line.each do |detail| start_line detail, :white end end end end |
#resource_updated(resource, action) ⇒ Object
Called after a resource has been completely converged.
277 278 279 280 281 |
# File 'lib/chef/formatters/doc.rb', line 277 def resource_updated(resource, action) @updated_resources += 1 unindent puts "\n" end |
#run_completed(node) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/chef/formatters/doc.rb', line 43 def run_completed(node) @end_time = Time.now if Chef::Config[:why_run] puts_line "Chef Client finished, #{@updated_resources}/#{total_resources} resources would have been updated" else puts_line "Chef Client finished, #{@updated_resources}/#{total_resources} resources updated in #{elapsed_time} seconds" if total_audits > 0 puts_line " #{successful_audits}/#{total_audits} Audits succeeded" end end end |
#run_failed(exception) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/chef/formatters/doc.rb', line 55 def run_failed(exception) @end_time = Time.now if Chef::Config[:why_run] puts_line "Chef Client failed. #{@updated_resources} resources would have been updated" else puts_line "Chef Client failed. #{@updated_resources} resources updated in #{elapsed_time} seconds" if total_audits > 0 puts_line " #{successful_audits} Audits succeeded" end end end |
#run_start(version) ⇒ Object
31 32 33 |
# File 'lib/chef/formatters/doc.rb', line 31 def run_start(version) puts_line "Starting Chef Client, version #{version}" end |
#skipping_registration(node_name, config) ⇒ Object
Already have a client key, assuming this node has registered.
72 73 |
# File 'lib/chef/formatters/doc.rb', line 72 def skipping_registration(node_name, config) end |
#stream_output(stream, output, options = {}) ⇒ Object
289 290 291 |
# File 'lib/chef/formatters/doc.rb', line 289 def stream_output(stream, output, = {}) print(output, { :stream => stream }.merge()) end |
#synchronized_cookbook(cookbook_name) ⇒ Object
Called when cookbook cookbook_name has been sync’d
132 133 134 |
# File 'lib/chef/formatters/doc.rb', line 132 def synchronized_cookbook(cookbook_name) puts_line "- #{cookbook_name}" end |
#total_audits ⇒ Object
39 40 41 |
# File 'lib/chef/formatters/doc.rb', line 39 def total_audits successful_audits + failed_audits end |
#total_resources ⇒ Object
35 36 37 |
# File 'lib/chef/formatters/doc.rb', line 35 def total_resources @up_to_date_resources + @updated_resources end |
#unindent ⇒ Object
333 334 335 |
# File 'lib/chef/formatters/doc.rb', line 333 def unindent indent_by(-2) end |
#updated_cookbook_file(cookbook_name, path) ⇒ Object
Called when an individual file in a cookbook has been updated
137 138 |
# File 'lib/chef/formatters/doc.rb', line 137 def updated_cookbook_file(cookbook_name, path) end |
#whyrun_assumption(action, resource, message) ⇒ Object
Called when a provider makes an assumption after a failed assertion in whyrun mode, in order to allow execution to continue
313 314 315 316 317 318 |
# File 'lib/chef/formatters/doc.rb', line 313 def whyrun_assumption(action, resource, ) return unless [ ].flatten.each do |line| start_line("* #{line}", :yellow) end end |