chef 10.14.0.beta.1 → 10.14.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/distro/common/html/chef-client.8.html +3 -3
  2. data/distro/common/html/chef-expander.8.html +3 -3
  3. data/distro/common/html/chef-expanderctl.8.html +3 -3
  4. data/distro/common/html/chef-server-webui.8.html +3 -3
  5. data/distro/common/html/chef-server.8.html +3 -3
  6. data/distro/common/html/chef-solo.8.html +3 -3
  7. data/distro/common/html/chef-solr.8.html +3 -3
  8. data/distro/common/html/knife-bootstrap.1.html +3 -3
  9. data/distro/common/html/knife-client.1.html +3 -3
  10. data/distro/common/html/knife-configure.1.html +3 -3
  11. data/distro/common/html/knife-cookbook-site.1.html +3 -3
  12. data/distro/common/html/knife-cookbook.1.html +3 -3
  13. data/distro/common/html/knife-data-bag.1.html +3 -3
  14. data/distro/common/html/knife-environment.1.html +3 -3
  15. data/distro/common/html/knife-exec.1.html +3 -3
  16. data/distro/common/html/knife-index.1.html +4 -4
  17. data/distro/common/html/knife-node.1.html +3 -3
  18. data/distro/common/html/knife-role.1.html +3 -3
  19. data/distro/common/html/knife-search.1.html +5 -5
  20. data/distro/common/html/knife-ssh.1.html +4 -4
  21. data/distro/common/html/knife-status.1.html +4 -4
  22. data/distro/common/html/knife-tag.1.html +4 -4
  23. data/distro/common/html/knife.1.html +3 -3
  24. data/distro/common/html/shef.1.html +7 -7
  25. data/distro/common/man/man1/knife-bootstrap.1 +1 -1
  26. data/distro/common/man/man1/knife-client.1 +1 -1
  27. data/distro/common/man/man1/knife-configure.1 +1 -1
  28. data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
  29. data/distro/common/man/man1/knife-cookbook.1 +1 -1
  30. data/distro/common/man/man1/knife-data-bag.1 +1 -1
  31. data/distro/common/man/man1/knife-environment.1 +1 -1
  32. data/distro/common/man/man1/knife-exec.1 +1 -1
  33. data/distro/common/man/man1/knife-index.1 +1 -1
  34. data/distro/common/man/man1/knife-node.1 +1 -1
  35. data/distro/common/man/man1/knife-role.1 +1 -1
  36. data/distro/common/man/man1/knife-search.1 +1 -1
  37. data/distro/common/man/man1/knife-ssh.1 +1 -1
  38. data/distro/common/man/man1/knife-status.1 +1 -1
  39. data/distro/common/man/man1/knife-tag.1 +1 -1
  40. data/distro/common/man/man1/knife.1 +1 -1
  41. data/distro/common/man/man1/shef.1 +1 -1
  42. data/distro/common/man/man8/chef-client.8 +1 -1
  43. data/distro/common/man/man8/chef-expander.8 +1 -1
  44. data/distro/common/man/man8/chef-expanderctl.8 +1 -1
  45. data/distro/common/man/man8/chef-server-webui.8 +1 -1
  46. data/distro/common/man/man8/chef-server.8 +1 -1
  47. data/distro/common/man/man8/chef-solo.8 +1 -1
  48. data/distro/common/man/man8/chef-solr.8 +1 -1
  49. data/lib/chef/event_dispatch/base.rb +4 -0
  50. data/lib/chef/formatters/base.rb +39 -56
  51. data/lib/chef/formatters/error_descriptor.rb +66 -0
  52. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -1
  53. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -2
  54. data/lib/chef/formatters/error_mapper.rb +78 -0
  55. data/lib/chef/mixin/language_include_recipe.rb +1 -0
  56. data/lib/chef/provider.rb +5 -0
  57. data/lib/chef/provider/package/rubygems.rb +10 -0
  58. data/lib/chef/resource.rb +68 -12
  59. data/lib/chef/resource_reporter.rb +40 -16
  60. data/lib/chef/run_context.rb +37 -1
  61. data/lib/chef/runner.rb +2 -2
  62. data/lib/chef/version.rb +1 -1
  63. data/spec/unit/provider/deploy/revision_spec.rb +3 -2
  64. data/spec/unit/resource_reporter_spec.rb +36 -18
  65. data/spec/unit/resource_spec.rb +98 -3
  66. metadata +6 -4
@@ -35,7 +35,7 @@ class Chef
35
35
 
36
36
  # Needs to be settable so deploy can run a resource_collection independent
37
37
  # of any cookbooks.
38
- attr_accessor :resource_collection
38
+ attr_accessor :resource_collection, :immediate_notification_collection, :delayed_notification_collection
39
39
 
40
40
  attr_reader :events
41
41
 
@@ -48,6 +48,8 @@ class Chef
48
48
  @node = node
49
49
  @cookbook_collection = cookbook_collection
50
50
  @resource_collection = Chef::ResourceCollection.new
51
+ @immediate_notification_collection = Hash.new {|h,k| h[k] = []}
52
+ @delayed_notification_collection = Hash.new {|h,k| h[k] = []}
51
53
  @definitions = Hash.new
52
54
  @events = events
53
55
 
@@ -90,6 +92,40 @@ class Chef
90
92
  cookbook.recipe_filenames_by_name[recipe_short_name]
91
93
  end
92
94
 
95
+ def notifies_immediately(notification)
96
+ nr = notification.notifying_resource
97
+ if nr.instance_of?(Chef::Resource)
98
+ @immediate_notification_collection[nr.name] << notification
99
+ else
100
+ @immediate_notification_collection[nr.to_s] << notification
101
+ end
102
+ end
103
+
104
+ def notifies_delayed(notification)
105
+ nr = notification.notifying_resource
106
+ if nr.instance_of?(Chef::Resource)
107
+ @delayed_notification_collection[nr.name] << notification
108
+ else
109
+ @delayed_notification_collection[nr.to_s] << notification
110
+ end
111
+ end
112
+
113
+ def immediate_notifications(resource)
114
+ if resource.instance_of?(Chef::Resource)
115
+ return @immediate_notification_collection[resource.name]
116
+ else
117
+ return @immediate_notification_collection[resource.to_s]
118
+ end
119
+ end
120
+
121
+ def delayed_notifications(resource)
122
+ if resource.instance_of?(Chef::Resource)
123
+ return @delayed_notification_collection[resource.name]
124
+ else
125
+ return @delayed_notification_collection[resource.to_s]
126
+ end
127
+ end
128
+
93
129
  private
94
130
 
95
131
  def load_libraries
@@ -52,12 +52,12 @@ class Chef
52
52
  # associated with the resource, but only if it was updated *this time*
53
53
  # we ran an action on it.
54
54
  if resource.updated_by_last_action?
55
- resource.immediate_notifications.each do |notification|
55
+ run_context.immediate_notifications(resource).each do |notification|
56
56
  Chef::Log.info("#{resource} sending #{notification.action} action to #{notification.resource} (immediate)")
57
57
  run_action(notification.resource, notification.action, :immediate, resource)
58
58
  end
59
59
 
60
- resource.delayed_notifications.each do |notification|
60
+ run_context.delayed_notifications(resource).each do |notification|
61
61
  if delayed_actions.any? { |existing_notification| existing_notification.duplicates?(notification) }
62
62
  Chef::Log.info( "#{resource} not queuing delayed action #{notification.action} on #{notification.resource}"\
63
63
  " (delayed), as it's already been queued")
@@ -17,7 +17,7 @@
17
17
 
18
18
  class Chef
19
19
  CHEF_ROOT = File.dirname(File.expand_path(File.dirname(__FILE__)))
20
- VERSION = '10.14.0.beta.1'
20
+ VERSION = '10.14.0.beta.2'
21
21
  end
22
22
 
23
23
  # NOTE: the Chef::Version class is defined in version_class.rb
@@ -21,7 +21,8 @@ require 'spec_helper'
21
21
  describe Chef::Provider::Deploy::Revision do
22
22
 
23
23
  before do
24
- Chef::Config[:file_cache_path] = '/tmp/foo'
24
+ @temp_dir = Dir.mktmpdir
25
+ Chef::Config[:file_cache_path] = @temp_dir
25
26
  @resource = Chef::Resource::Deploy.new("/my/deploy/dir")
26
27
  @resource.revision("8a3195bf3efa246f743c5dfa83683201880f935c")
27
28
  @node = Chef::Node.new
@@ -37,7 +38,7 @@ describe Chef::Provider::Deploy::Revision do
37
38
  after do
38
39
  # Make sure we don't keep any state in our tests
39
40
  FileUtils.rspec_reset
40
- FileUtils.rm_rf '/tmp/foo' if File.directory?("/tmp/foo")
41
+ FileUtils.rm_rf @temp_dir if File.directory?( @temp_dir )
41
42
  end
42
43
 
43
44
 
@@ -1,6 +1,7 @@
1
1
  #
2
2
  # Author:: Daniel DeLeo (<dan@opscode.com>)
3
- # Author:: Prajakta Purohit (prajakta@opscode.com>)
3
+ # Author:: Prajakta Purohit (<prajakta@opscode.com>)
4
+ # Author:: Tyler Cloke (<tyler@opscode.com>)
4
5
  #
5
6
  # Copyright:: Copyright (c) 2012 Opscode, Inc.
6
7
  # License:: Apache License, Version 2.0
@@ -47,6 +48,12 @@ describe Chef::ResourceReporter do
47
48
  @resource_reporter.reporting_enabled?.should be_true
48
49
  end
49
50
 
51
+ it "should have no error_descriptions" do
52
+ @resource_reporter.error_descriptions.should be_nil
53
+ # @resource_reporter.error_descriptions.should be_empty
54
+ # @resource_reporter.should have(0).error_descriptions
55
+ end
56
+
50
57
  end
51
58
 
52
59
  context "after the chef run completes" do
@@ -65,8 +72,8 @@ describe Chef::ResourceReporter do
65
72
  @resource_reporter.run_failed(@exception)
66
73
  end
67
74
 
68
- it "sets the run status to 'failed'" do
69
- @resource_reporter.status.should == "failed"
75
+ it "sets the run status to 'failure'" do
76
+ @resource_reporter.status.should == "failure"
70
77
  end
71
78
 
72
79
  it "keeps the exception data" do
@@ -80,6 +87,7 @@ describe Chef::ResourceReporter do
80
87
  @exception = Exception.new
81
88
  @resource_reporter.resource_action_start(@new_resource, :create)
82
89
  @resource_reporter.resource_failed(@new_resource, :create, @exception)
90
+ @resource_reporter.resource_completed(@new_resource)
83
91
  end
84
92
 
85
93
  it "collects the resource as an updated resource" do
@@ -89,8 +97,8 @@ describe Chef::ResourceReporter do
89
97
  it "collects the desired state of the resource" do
90
98
  update_record = @resource_reporter.updated_resources.first
91
99
  update_record.new_resource.should == @new_resource
92
- end
93
100
 
101
+ end
94
102
  end
95
103
 
96
104
  # TODO: make sure a resource that is skipped because of `not_if` doesn't
@@ -117,6 +125,7 @@ describe Chef::ResourceReporter do
117
125
  @new_resource.content("this is the old content")
118
126
  @current_resource.content("this is the new hotness")
119
127
  @resource_reporter.resource_updated(@new_resource, :create)
128
+ @resource_reporter.resource_completed(@new_resource)
120
129
  end
121
130
 
122
131
  it "collects the updated resource" do
@@ -140,6 +149,7 @@ describe Chef::ResourceReporter do
140
149
  @next_new_resource = Chef::Resource::Service.new("apache2")
141
150
  @exception = Exception.new
142
151
  @resource_reporter.resource_failed(@next_new_resource, :create, @exception)
152
+ @resource_reporter.resource_completed(@next_new_resource)
143
153
  end
144
154
 
145
155
  it "collects the desired state of the failed resource" do
@@ -164,7 +174,9 @@ describe Chef::ResourceReporter do
164
174
  @resource_reporter.resource_action_start(@implementation_resource , :create)
165
175
  @resource_reporter.resource_current_state_loaded(@implementation_resource, :create, @implementation_resource)
166
176
  @resource_reporter.resource_updated(@implementation_resource, :create)
177
+ @resource_reporter.resource_completed(@implementation_resource)
167
178
  @resource_reporter.resource_updated(@new_resource, :create)
179
+ @resource_reporter.resource_completed(@new_resource)
168
180
  end
169
181
 
170
182
  it "does not collect data about the nested resource" do
@@ -178,7 +190,9 @@ describe Chef::ResourceReporter do
178
190
  @resource_reporter.resource_action_start(@implementation_resource , :create)
179
191
  @resource_reporter.resource_current_state_loaded(@implementation_resource, :create, @implementation_resource)
180
192
  @resource_reporter.resource_up_to_date(@implementation_resource, :create)
193
+ @resource_reporter.resource_completed(@implementation_resource)
181
194
  @resource_reporter.resource_updated(@new_resource, :create)
195
+ @resource_reporter.resource_completed(@new_resource)
182
196
  end
183
197
 
184
198
  it "does not collect data about the nested resource" do
@@ -190,6 +204,7 @@ describe Chef::ResourceReporter do
190
204
  before do
191
205
  @exception = Exception.new
192
206
  @resource_reporter.resource_failed(@new_resource, :create, @exception)
207
+ @resource_reporter.resource_completed(@new_resource)
193
208
  end
194
209
 
195
210
  it "collects the resource as an updated resource" do
@@ -249,6 +264,7 @@ describe Chef::ResourceReporter do
249
264
  @resource_reporter.resource_action_start(@new_resource, :create)
250
265
  @resource_reporter.resource_current_state_loaded(@new_resource, :create, @current_resource)
251
266
  @resource_reporter.resource_updated(@new_resource, :create)
267
+ @resource_reporter.resource_completed(@new_resource)
252
268
  @report = @resource_reporter.report(@node)
253
269
  @first_update_report = @report["resources"].first
254
270
  end
@@ -322,40 +338,42 @@ describe Chef::ResourceReporter do
322
338
  context "for an unsuccessful run" do
323
339
 
324
340
  before do
341
+
325
342
  @backtrace = "foo.rb:1 in `foo!'\nbar.rb:2 in `bar!\n'baz.rb:3 in `baz!'"
326
343
  @node = Chef::Node.new
327
344
  @node.name("spitfire")
328
345
  @exception = mock("ArgumentError")
329
- @exception.should_receive(:inspect).and_return("Net::HTTPServerException")
330
- @exception.should_receive(:message).and_return("Object not found")
331
- @exception.should_receive(:backtrace).and_return(@backtrace)
346
+ @exception.stub!(:inspect).and_return("Net::HTTPServerException")
347
+ @exception.stub!(:message).and_return("Object not found")
348
+ @exception.stub!(:backtrace).and_return(@backtrace)
332
349
  @resource_reporter.run_failed(@exception)
350
+ @resource_reporter.run_list_expand_failed(@node, @exception)
333
351
  @report = @resource_reporter.report(@node)
334
352
  end
335
353
 
336
354
  it "includes the exception type in the event data" do
337
- @report.should have_key("exception")
338
- @report["exception"].should have_key("class")
339
- @report["exception"]["class"].should == "Net::HTTPServerException"
355
+ @report.should have_key("data")
356
+ @report["data"].should have_key("exception")
357
+ @report["data"]["exception"].should have_key("class")
358
+ @report["data"]["exception"]["class"].should == "Net::HTTPServerException"
340
359
  end
341
360
 
342
361
  it "includes the exception message in the event data" do
343
- @report.should have_key("exception")
344
- @report["exception"].should have_key("message")
345
- @report["exception"]["message"].should == "Object not found"
362
+ @report["data"]["exception"].should have_key("message")
363
+ @report["data"]["exception"]["message"].should == "Object not found"
346
364
  end
347
365
 
348
366
  it "includes the exception trace in the event data" do
349
- @report.should have_key("exception")
350
- @report["exception"].should have_key("backtrace")
351
- @report["exception"]["backtrace"].should == @backtrace
367
+ @report["data"]["exception"].should have_key("backtrace")
368
+ @report["data"]["exception"]["backtrace"].should == @backtrace
352
369
  end
353
370
 
354
371
  it "includes the error inspector output in the event data" do
355
- @report.should have_key("exception")
356
- @report["exception"].should have_key("description")
372
+ @report["data"]["exception"].should have_key("description")
373
+ @report["data"]["exception"]["description"].should include({"title"=>"Error expanding the run_list:", "sections"=>[["Unexpected Error:", "RSpec::Mocks::Mock: Object not found"]]})
357
374
  end
358
375
 
376
+
359
377
  end
360
378
 
361
379
  end
@@ -304,9 +304,9 @@ describe Chef::Resource do
304
304
  it "should convert to a hash" do
305
305
  hash = @resource.to_hash
306
306
  expected_keys = [ :allowed_actions, :params, :provider, :updated,
307
- :updated_by_last_action, :before, :supports, :delayed_notifications,
308
- :immediate_notifications, :noop, :ignore_failure, :name, :source_line,
309
- :action, :retries, :retry_delay , :elapsed_time]
307
+ :updated_by_last_action, :before, :supports,
308
+ :noop, :ignore_failure, :name, :source_line,
309
+ :action, :retries, :retry_delay, :elapsed_time]
310
310
  (hash.keys - expected_keys).should == []
311
311
  (expected_keys - hash.keys).should == []
312
312
  hash[:name].should eql("funk")
@@ -593,6 +593,8 @@ describe Chef::Resource::Notification do
593
593
  it "takes no action to resolve a resource reference that doesn't need to be resolved" do
594
594
  @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
595
595
  @notification.resource = @keyboard_cat
596
+ @long_cat = Chef::Resource::Cat.new("long_cat")
597
+ @notification.notifying_resource = @long_cat
596
598
  @resource_collection = Chef::ResourceCollection.new
597
599
  # would raise an error since the resource is not in the collection
598
600
  @notification.resolve_resource_reference(@resource_collection)
@@ -604,8 +606,101 @@ describe Chef::Resource::Notification do
604
606
  @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
605
607
  @resource_collection = Chef::ResourceCollection.new
606
608
  @resource_collection << @keyboard_cat
609
+ @long_cat = Chef::Resource::Cat.new("long_cat")
610
+ @notification.notifying_resource = @long_cat
607
611
  @notification.resolve_resource_reference(@resource_collection)
608
612
  @notification.resource.should == @keyboard_cat
609
613
  end
610
614
 
615
+ it "resolves a lazy reference to its notifying resource" do
616
+ @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
617
+ @notification.resource = @keyboard_cat
618
+ @notification.notifying_resource = {:cat => "long_cat"}
619
+ @long_cat = Chef::Resource::Cat.new("long_cat")
620
+ @resource_collection = Chef::ResourceCollection.new
621
+ @resource_collection << @long_cat
622
+ @notification.resolve_resource_reference(@resource_collection)
623
+ @notification.notifying_resource.should == @long_cat
624
+ end
625
+
626
+ it "resolves lazy references to both its resource and its notifying resource" do
627
+ @notification.resource = {:cat => "keyboard_cat"}
628
+ @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
629
+ @resource_collection = Chef::ResourceCollection.new
630
+ @resource_collection << @keyboard_cat
631
+ @notification.notifying_resource = {:cat => "long_cat"}
632
+ @long_cat = Chef::Resource::Cat.new("long_cat")
633
+ @resource_collection << @long_cat
634
+ @notification.resolve_resource_reference(@resource_collection)
635
+ @notification.resource.should == @keyboard_cat
636
+ @notification.notifying_resource.should == @long_cat
637
+ end
638
+
639
+ it "raises a RuntimeError if you try to reference multiple resources" do
640
+ @notification.resource = {:cat => ["keyboard_cat", "cheez_cat"]}
641
+ @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
642
+ @cheez_cat = Chef::Resource::Cat.new("cheez_cat")
643
+ @resource_collection = Chef::ResourceCollection.new
644
+ @resource_collection << @keyboard_cat
645
+ @resource_collection << @cheez_cat
646
+ @long_cat = Chef::Resource::Cat.new("long_cat")
647
+ @notification.notifying_resource = @long_cat
648
+ lambda {@notification.resolve_resource_reference(@resource_collection)}.should raise_error(RuntimeError)
649
+ end
650
+
651
+ it "raises a RuntimeError if you try to reference multiple notifying resources" do
652
+ @notification.notifying_resource = {:cat => ["long_cat", "cheez_cat"]}
653
+ @long_cat = Chef::Resource::Cat.new("long_cat")
654
+ @cheez_cat = Chef::Resource::Cat.new("cheez_cat")
655
+ @resource_collection = Chef::ResourceCollection.new
656
+ @resource_collection << @long_cat
657
+ @resource_collection << @cheez_cat
658
+ @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
659
+ @notification.resource = @keyboard_cat
660
+ lambda {@notification.resolve_resource_reference(@resource_collection)}.should raise_error(RuntimeError)
661
+ end
662
+
663
+ it "raises a RuntimeError if it can't find a resource in the resource collection when resolving a lazy reference" do
664
+ @notification.resource = {:cat => "keyboard_cat"}
665
+ @cheez_cat = Chef::Resource::Cat.new("cheez_cat")
666
+ @resource_collection = Chef::ResourceCollection.new
667
+ @resource_collection << @cheez_cat
668
+ @long_cat = Chef::Resource::Cat.new("long_cat")
669
+ @notification.notifying_resource = @long_cat
670
+ lambda {@notification.resolve_resource_reference(@resource_collection)}.should raise_error(RuntimeError)
671
+ end
672
+
673
+ it "raises a RuntimeError if it can't find a notifying resource in the resource collection when resolving a lazy reference" do
674
+ @notification.notifying_resource = {:cat => "long_cat"}
675
+ @cheez_cat = Chef::Resource::Cat.new("cheez_cat")
676
+ @resource_collection = Chef::ResourceCollection.new
677
+ @resource_collection << @cheez_cat
678
+ @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
679
+ @notification.resource = @keyboard_cat
680
+ lambda {@notification.resolve_resource_reference(@resource_collection)}.should raise_error(RuntimeError)
681
+ end
682
+
683
+ it "raises an ArgumentError if improper syntax is used in the lazy reference to its resource" do
684
+ @notification.resource = "cat => keyboard_cat"
685
+ @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
686
+ @resource_collection = Chef::ResourceCollection.new
687
+ @resource_collection << @keyboard_cat
688
+ @long_cat = Chef::Resource::Cat.new("long_cat")
689
+ @notification.notifying_resource = @long_cat
690
+ lambda {@notification.resolve_resource_reference(@resource_collection)}.should raise_error(ArgumentError)
691
+ end
692
+
693
+ it "raises an ArgumentError if improper syntax is used in the lazy reference to its notifying resource" do
694
+ @notification.notifying_resource = "cat => long_cat"
695
+ @long_cat = Chef::Resource::Cat.new("long_cat")
696
+ @resource_collection = Chef::ResourceCollection.new
697
+ @resource_collection << @long_cat
698
+ @keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
699
+ @notification.resource = @keyboard_cat
700
+ lambda {@notification.resolve_resource_reference(@resource_collection)}.should raise_error(ArgumentError)
701
+ end
702
+
703
+ # Create test to resolve lazy references to both notifying resource and dest. resource
704
+ # Create tests to check proper error raising
705
+
611
706
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
- hash: 2518967739
4
+ hash: -1445976474
5
5
  prerelease: 8
6
6
  segments:
7
7
  - 10
8
8
  - 14
9
9
  - 0
10
10
  - beta
11
- - 1
12
- version: 10.14.0.beta.1
11
+ - 2
12
+ version: 10.14.0.beta.2
13
13
  platform: ruby
14
14
  authors:
15
15
  - Adam Jacob
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-07-02 00:00:00 Z
20
+ date: 2012-07-12 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: mixlib-config
@@ -625,6 +625,8 @@ files:
625
625
  - lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb
626
626
  - lib/chef/formatters/error_inspectors/compile_error_inspector.rb
627
627
  - lib/chef/formatters/error_inspectors/node_load_error_inspector.rb
628
+ - lib/chef/formatters/error_mapper.rb
629
+ - lib/chef/formatters/error_descriptor.rb
628
630
  - lib/chef/formatters/error_inspectors.rb
629
631
  - lib/chef/run_list/run_list_item.rb
630
632
  - lib/chef/run_list/versioned_recipe_list.rb