Class: Chef::Formatters::Base

Inherits:
EventDispatch::Base show all
Includes:
ErrorMapper
Defined in:
lib/chef/formatters/base.rb

Overview

Formatters::Base

Base class that all formatters should inherit from.

Direct Known Subclasses

Doc, Minimal, NullFormatter

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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_load_complete, #attribute_load_start, #audit_phase_complete, #audit_phase_failed, #audit_phase_start, #control_example_failure, #control_example_success, #control_group_started, #converge_complete, #converge_failed, #converge_start, #cookbook_clean_complete, #cookbook_clean_start, #cookbook_gem_failed, #cookbook_gem_finished, #cookbook_gem_installing, #cookbook_gem_start, #cookbook_gem_using, #cookbook_resolution_complete, #cookbook_resolution_start, #cookbook_sync_complete, #cookbook_sync_start, #definition_load_complete, #definition_load_start, #handler_executed, #handlers_completed, #handlers_start, #library_load_complete, #library_load_start, #lwrp_load_complete, #lwrp_load_start, #msg, #node_load_completed, #node_load_start, #ohai_completed, #policyfile_loaded, #provider_requirement_failed, #recipe_load_complete, #recipe_load_start, #registration_completed, #registration_start, #removed_cookbook_file, #resource_action_start, #resource_bypassed, #resource_completed, #resource_current_state_load_bypassed, #resource_current_state_loaded, #resource_failed_retriable, #resource_skipped, #resource_up_to_date, #resource_update_applied, #resource_update_progress, #resource_updated, #run_completed, #run_failed, #run_list_expanded, #run_start, #run_started, #skipping_registration, #stream_closed, #stream_opened, #stream_output, #synchronized_cookbook, #updated_cookbook_file, #whyrun_assumption

Constructor Details

#initialize(out, err) ⇒ Base

Returns a new instance of Base.



74
75
76
# File 'lib/chef/formatters/base.rb', line 74

def initialize(out, err)
  @output = IndentableOutputStream.new(out, err)
end

Instance Attribute Details

#errObject (readonly)

Returns the value of attribute err.



71
72
73
# File 'lib/chef/formatters/base.rb', line 71

def err
  @err
end

#outObject (readonly)

Returns the value of attribute out.



70
71
72
# File 'lib/chef/formatters/base.rb', line 70

def out
  @out
end

#outputObject (readonly)

Returns the value of attribute output.



72
73
74
# File 'lib/chef/formatters/base.rb', line 72

def output
  @output
end

Class Method Details

.cli_name(name) ⇒ Object



66
67
68
# File 'lib/chef/formatters/base.rb', line 66

def self.cli_name(name)
  Chef::Formatters.register(name, self)
end

Instance Method Details

#attribute_file_load_failed(path, exception) ⇒ Object

Delegates to #file_load_failed



191
192
193
# File 'lib/chef/formatters/base.rb', line 191

def attribute_file_load_failed(path, exception)
  file_load_failed(path, exception)
end

#attribute_file_loaded(path) ⇒ Object

Delegates to #file_loaded



186
187
188
# File 'lib/chef/formatters/base.rb', line 186

def attribute_file_loaded(path)
  file_loaded(path)
end

#cookbook_resolution_failed(expanded_run_list, exception) ⇒ Object



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

def cookbook_resolution_failed(expanded_run_list, exception)
  description = ErrorMapper.cookbook_resolution_failed(expanded_run_list, exception)
  display_error(description)
end

#cookbook_sync_failed(cookbooks, exception) ⇒ Object



133
134
135
136
# File 'lib/chef/formatters/base.rb', line 133

def cookbook_sync_failed(cookbooks, exception)
  description = ErrorMapper.cookbook_sync_failed(cookbooks, exception)
  display_error(description)
end

#definition_file_load_failed(path, exception) ⇒ Object

Delegates to #file_load_failed



201
202
203
# File 'lib/chef/formatters/base.rb', line 201

def definition_file_load_failed(path, exception)
  file_load_failed(path, exception)
end

#definition_file_loaded(path) ⇒ Object

Delegates to #file_loaded



196
197
198
# File 'lib/chef/formatters/base.rb', line 196

def definition_file_loaded(path)
  file_loaded(path)
end

#deprecation(message, location = ) ⇒ Object



215
216
217
# File 'lib/chef/formatters/base.rb', line 215

def deprecation(message, location = caller(2..2)[0])
  Chef::Log.deprecation("#{message} at #{location}")
end

#display_error(description) ⇒ Object

Input: a Formatters::ErrorDescription object. Outputs error to STDOUT.



107
108
109
110
# File 'lib/chef/formatters/base.rb', line 107

def display_error(description)
  puts("")
  description.display(output)
end

#file_load_failed(path, exception) ⇒ Object

Generic callback for any attribute/library/lwrp/recipe file throwing an exception when loaded. Default behavior is to use CompileErrorInspector to print contextual info about the failure.



155
156
157
158
# File 'lib/chef/formatters/base.rb', line 155

def file_load_failed(path, exception)
  description = ErrorMapper.file_load_failed(path, exception)
  display_error(description)
end

#file_loaded(path) ⇒ Object

Generic callback for any attribute/library/lwrp/recipe file in a cookbook getting loaded. The per-filetype callbacks for file load are overriden so that they call this instead. This means that a subclass of Formatters::Base can implement #file_loaded to do the same thing for every kind of file that Chef loads from a recipe instead of implementing all the per-filetype callbacks.



149
150
# File 'lib/chef/formatters/base.rb', line 149

def file_loaded(path)
end

#indent_by(amount) ⇒ Object



94
95
96
97
98
99
100
101
102
103
# File 'lib/chef/formatters/base.rb', line 94

def indent_by(amount)
  @output.indent += amount
  if @output.indent < 0
    # This is left commented out for now.  We need to uncomment it and fix at least one bug in
    # the formatter, and then leave this line uncommented in the future.
    #Chef::Log.warn "Internal Formatter Error -- Attempt to indent by negative number of spaces"
    @output.indent = 0
  end
  @output.indent
end

#is_formatter?Boolean

Returns:

  • (Boolean)


219
220
221
# File 'lib/chef/formatters/base.rb', line 219

def is_formatter?
  true
end

#library_file_load_failed(path, exception) ⇒ Object

Delegates to #file_load_failed



171
172
173
# File 'lib/chef/formatters/base.rb', line 171

def library_file_load_failed(path, exception)
  file_load_failed(path, exception)
end

#library_file_loaded(path) ⇒ Object

Delegates to #file_loaded



166
167
168
# File 'lib/chef/formatters/base.rb', line 166

def library_file_loaded(path)
  file_loaded(path)
end

#lwrp_file_load_failed(path, exception) ⇒ Object

Delegates to #file_load_failed



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

def lwrp_file_load_failed(path, exception)
  file_load_failed(path, exception)
end

#lwrp_file_loaded(path) ⇒ Object

Delegates to #file_loaded



176
177
178
# File 'lib/chef/formatters/base.rb', line 176

def lwrp_file_loaded(path)
  file_loaded(path)
end

#node_load_failed(node_name, exception, config) ⇒ Object



118
119
120
121
# File 'lib/chef/formatters/base.rb', line 118

def node_load_failed(node_name, exception, config)
  description = ErrorMapper.node_load_failed(node_name, exception, config)
  display_error(description)
end


82
83
84
# File 'lib/chef/formatters/base.rb', line 82

def print(*args)
  @output.print(*args)
end

#puts(*args) ⇒ Object



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

def puts(*args)
  @output.puts(*args)
end

#puts_line(*args) ⇒ Object



86
87
88
# File 'lib/chef/formatters/base.rb', line 86

def puts_line(*args)
  @output.puts_line(*args)
end

#recipe_file_load_failed(path, exception) ⇒ Object

Delegates to #file_load_failed



211
212
213
# File 'lib/chef/formatters/base.rb', line 211

def recipe_file_load_failed(path, exception)
  file_load_failed(path, exception)
end

#recipe_file_loaded(path) ⇒ Object

Delegates to #file_loaded



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

def recipe_file_loaded(path)
  file_loaded(path)
end

#recipe_not_found(exception) ⇒ Object



160
161
162
163
# File 'lib/chef/formatters/base.rb', line 160

def recipe_not_found(exception)
  description = ErrorMapper.file_load_failed(nil, exception)
  display_error(description)
end

#registration_failed(node_name, exception, config) ⇒ Object



112
113
114
115
116
# File 'lib/chef/formatters/base.rb', line 112

def registration_failed(node_name, exception, config)
  #A Formatters::ErrorDescription object
  description = ErrorMapper.registration_failed(node_name, exception, config)
  display_error(description)
end

#resource_failed(resource, action, exception) ⇒ Object



138
139
140
141
# File 'lib/chef/formatters/base.rb', line 138

def resource_failed(resource, action, exception)
  description = ErrorMapper.resource_failed(resource, action, exception)
  display_error(description)
end

#run_list_expand_failed(node, exception) ⇒ Object



123
124
125
126
# File 'lib/chef/formatters/base.rb', line 123

def run_list_expand_failed(node, exception)
  description = ErrorMapper.run_list_expand_failed(node, exception)
  display_error(description)
end

#start_line(*args) ⇒ Object



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

def start_line(*args)
  @output.start_line(*args)
end