Class: Chef::Formatters::Doc

Inherits:
Base show all
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

Attributes inherited from Base

#err, #out, #output

Instance Method Summary collapse

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, #library_file_load_failed, #library_file_loaded, #lwrp_file_load_failed, #lwrp_file_loaded, #print, #puts, #recipe_file_load_failed, #recipe_file_loaded, #recipe_not_found, #registration_failed, #run_list_expand_failed

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, #cookbook_sync_failed, #definition_file_load_failed, #definition_file_loaded, #definition_load_complete, #definition_load_start, #handler_executed, #handlers_completed, #handlers_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

Constructor Details

#initialize(out, err) ⇒ Doc

Returns a new instance of Doc.


13
14
15
16
17
# File 'lib/chef/formatters/doc.rb', line 13

def initialize(out, err)
  super

  @updated_resources = 0
end

Instance Method Details

#converge_completeObject

Called when the converge phase is finished.


134
135
# File 'lib/chef/formatters/doc.rb', line 134

def converge_complete
end

#converge_start(run_context) ⇒ Object

Called before convergence starts


129
130
131
# File 'lib/chef/formatters/doc.rb', line 129

def converge_start(run_context)
  puts "Converging #{run_context.resource_collection.all_resources.size} resources"
end

#cookbook_clean_completeObject

Called when cookbook cleaning is finished.


94
95
# File 'lib/chef/formatters/doc.rb', line 94

def cookbook_clean_complete
end

#cookbook_clean_startObject

Called before unneeded cookbooks are removed


84
85
# File 'lib/chef/formatters/doc.rb', line 84

def cookbook_clean_start
end

#cookbook_resolution_complete(cookbook_collection) ⇒ Object

Called when the cookbook collection is returned from the server.


80
81
# File 'lib/chef/formatters/doc.rb', line 80

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.


75
76
77
# File 'lib/chef/formatters/doc.rb', line 75

def cookbook_resolution_failed(expanded_run_list, exception)
  super
end

#cookbook_resolution_start(expanded_run_list) ⇒ Object

Called before the cookbook collection is fetched from the server.


69
70
71
# File 'lib/chef/formatters/doc.rb', line 69

def cookbook_resolution_start(expanded_run_list)
  puts "resolving cookbooks for run list: #{expanded_run_list.inspect}"
end

#cookbook_sync_completeObject

Called after all cookbooks have been sync'd.


112
113
# File 'lib/chef/formatters/doc.rb', line 112

def cookbook_sync_complete
end

#cookbook_sync_start(cookbook_count) ⇒ Object

Called before cookbook sync starts


98
99
100
# File 'lib/chef/formatters/doc.rb', line 98

def cookbook_sync_start(cookbook_count)
  puts "Synchronizing Cookbooks:"
end

#file_loaded(path) ⇒ Object

Called after a file in a cookbook is loaded.


121
122
# File 'lib/chef/formatters/doc.rb', line 121

def file_loaded(path)
end

#library_load_start(file_count) ⇒ Object

Called when cookbook loading starts.


116
117
118
# File 'lib/chef/formatters/doc.rb', line 116

def library_load_start(file_count)
  puts "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.


65
66
# File 'lib/chef/formatters/doc.rb', line 65

def node_load_completed(node, expanded_run_list, config)
end

#node_load_failed(node_name, exception, config) ⇒ Object

Failed to load node data from the server


59
60
61
# File 'lib/chef/formatters/doc.rb', line 59

def node_load_failed(node_name, exception, config)
  super
end

#node_load_start(node_name, config) ⇒ Object


55
56
# File 'lib/chef/formatters/doc.rb', line 55

def node_load_start(node_name, config)
end

#ohai_completed(node) ⇒ Object

Called right after ohai runs.


40
41
# File 'lib/chef/formatters/doc.rb', line 40

def ohai_completed(node)
end

#output_record(line) ⇒ Object


181
182
183
# File 'lib/chef/formatters/doc.rb', line 181

def output_record(line)

end

#provider_requirement_failed(action, resource, exception, message) ⇒ Object

Called when an assertion declared by a provider fails


227
228
229
230
231
232
233
# File 'lib/chef/formatters/doc.rb', line 227

def provider_requirement_failed(action, resource, exception, message)
  return unless message
  color = Chef::Config[:why_run] ? :yellow : :red
  [ message ].flatten.each do |line|
    @output.color("\n    * #{line}", color)
  end
end

#recipe_load_completeObject

Called when recipes have been loaded.


125
126
# File 'lib/chef/formatters/doc.rb', line 125

def recipe_load_complete
end

#registration_completedObject


52
53
# File 'lib/chef/formatters/doc.rb', line 52

def registration_completed
end

#registration_start(node_name, config) ⇒ Object

About to attempt to register as node_name


48
49
50
# File 'lib/chef/formatters/doc.rb', line 48

def registration_start(node_name, config)
  puts "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.


90
91
# File 'lib/chef/formatters/doc.rb', line 90

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.


138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/chef/formatters/doc.rb', line 138

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
    puts "Recipe: #{resource_recipe}"
    @current_recipe = resource_recipe
  end
  # TODO: info about notifies
  print "  * #{resource} action #{action}"
end

#resource_bypassed(resource, action, provider) ⇒ Object


177
178
179
# File 'lib/chef/formatters/doc.rb', line 177

def resource_bypassed(resource, action, provider)
  puts " (Skipped: whyrun not supported by provider #{provider.class.name})"
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.


213
214
215
# File 'lib/chef/formatters/doc.rb', line 213

def resource_current_state_load_bypassed(resource, action, current_resource)
  @output.color("\n    * 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.


169
170
# File 'lib/chef/formatters/doc.rb', line 169

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.


158
159
160
# File 'lib/chef/formatters/doc.rb', line 158

def resource_failed(resource, action, exception)
  super
end

#resource_failed_retriable(resource, action, retry_count, exception) ⇒ Object

Called when a resource fails, but will retry.


154
155
# File 'lib/chef/formatters/doc.rb', line 154

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


163
164
165
166
# File 'lib/chef/formatters/doc.rb', line 163

def resource_skipped(resource, action, conditional)
  # TODO: more info about conditional
  puts " (skipped due to #{conditional.positivity})"
end

#resource_up_to_date(resource, action) ⇒ Object

Called when a resource has no converge actions, e.g., it was already correct.


173
174
175
# File 'lib/chef/formatters/doc.rb', line 173

def resource_up_to_date(resource, action)
  puts " (up to date)"
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.


188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/chef/formatters/doc.rb', line 188

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
      @output.color "\n    - #{prefix}#{line}", :green
    elsif line.kind_of? Array 
      # Expanded output - delta 
      # @todo should we have a resource_update_delta callback? 
      line.each do |detail|
        @output.color "\n        #{detail}", :white
      end
    end
  end
end

#resource_updated(resource, action) ⇒ Object

Called after a resource has been completely converged.


206
207
208
209
# File 'lib/chef/formatters/doc.rb', line 206

def resource_updated(resource, action)
  @updated_resources += 1
  puts "\n"
end

#run_completed(node) ⇒ Object


23
24
25
26
27
28
29
# File 'lib/chef/formatters/doc.rb', line 23

def run_completed(node)
  if Chef::Config[:whyrun]
    puts "Chef Client finished, #{@updated_resources} resources would have been updated"
  else
    puts "Chef Client finished, #{@updated_resources} resources updated"
  end
end

#run_failed(exception) ⇒ Object


31
32
33
34
35
36
37
# File 'lib/chef/formatters/doc.rb', line 31

def run_failed(exception)
  if Chef::Config[:whyrun]
    puts "Chef Client failed. #{@updated_resources} resources would have been updated"
  else
    puts "Chef Client failed. #{@updated_resources} resources updated"
  end
end

#run_start(version) ⇒ Object


19
20
21
# File 'lib/chef/formatters/doc.rb', line 19

def run_start(version)
  puts "Starting Chef Client, version #{version}"
end

#skipping_registration(node_name, config) ⇒ Object

Already have a client key, assuming this node has registered.


44
45
# File 'lib/chef/formatters/doc.rb', line 44

def skipping_registration(node_name, config)
end

#synchronized_cookbook(cookbook_name) ⇒ Object

Called when cookbook cookbook_name has been sync'd


103
104
105
# File 'lib/chef/formatters/doc.rb', line 103

def synchronized_cookbook(cookbook_name)
  puts "  - #{cookbook_name}"
end

#updated_cookbook_file(cookbook_name, path) ⇒ Object

Called when an individual file in a cookbook has been updated


108
109
# File 'lib/chef/formatters/doc.rb', line 108

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


219
220
221
222
223
224
# File 'lib/chef/formatters/doc.rb', line 219

def whyrun_assumption(action, resource, message) 
  return unless message
  [ message ].flatten.each do |line|
    @output.color("\n    * #{line}", :yellow)
  end
end