compat_resource 12.5.26 → 12.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/files/lib/chef_compat/copied_from_chef/chef/dsl/declare_resource.rb +2 -2
- data/files/lib/chef_compat/copied_from_chef/chef/dsl/recipe.rb +2 -2
- data/files/lib/chef_compat/copied_from_chef/chef/mixin/params_validate.rb +14 -4
- data/files/lib/chef_compat/copied_from_chef/chef/mixin/properties.rb +3 -3
- data/files/lib/chef_compat/copied_from_chef/chef/property.rb +98 -36
- data/files/lib/chef_compat/copied_from_chef/chef/provider.rb +19 -19
- data/files/lib/chef_compat/copied_from_chef/chef/resource.rb +17 -17
- data/files/lib/chef_compat/copied_from_chef/chef/resource_builder.rb +1 -1
- data/files/lib/chef_compat/monkeypatches/chef/exceptions.rb +4 -1
- data/files/lib/chef_compat/monkeypatches/chef/log.rb +0 -1
- data/files/lib/compat_resource/version.rb +1 -1
- data/files/spec/data/Gemfile.lock +19 -21
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 154eebdbd187ddd7eee14842727a39f1b447dd21
|
4
|
+
data.tar.gz: 6ad6654c932db5ae4ad4b2de9801d8d67e81f74e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04a32ccdc4f1ce060bed2a4e99ea39c394157be4b6a4be0ce25be9f23a91de2132c3f0e0afb13e7734d64469cbb939df8a5ae014c550e01c3cdeaf409b10884f
|
7
|
+
data.tar.gz: 7bddb0214270ce21dce221755f8dfe2edf7215961fb2ef2725ece9977dc236210b9143d5ce76d8a8cfb17c05c68935ab26fc3bd5c8e94eacf7eec08bd2059326
|
@@ -94,7 +94,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
94
94
|
def build_resource(type, name, created_at=nil, run_context: self.run_context, &resource_attrs_block)
|
95
95
|
created_at ||= caller[0]
|
96
96
|
Thread.exclusive do
|
97
|
-
require
|
97
|
+
require "chef_compat/copied_from_chef/chef/resource_builder" unless defined?(Chef::ResourceBuilder)
|
98
98
|
end
|
99
99
|
|
100
100
|
Chef::ResourceBuilder.new(
|
@@ -105,7 +105,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
105
105
|
run_context: run_context,
|
106
106
|
cookbook_name: cookbook_name,
|
107
107
|
recipe_name: recipe_name,
|
108
|
-
enclosing_provider: self.is_a?(Chef::Provider) ? self : nil
|
108
|
+
enclosing_provider: self.is_a?(Chef::Provider) ? self : nil,
|
109
109
|
).build(&resource_attrs_block)
|
110
110
|
end
|
111
111
|
end
|
@@ -2,7 +2,7 @@ require 'chef_compat/copied_from_chef'
|
|
2
2
|
class Chef
|
3
3
|
module ::ChefCompat
|
4
4
|
module CopiedFromChef
|
5
|
-
require
|
5
|
+
require "chef_compat/copied_from_chef/chef/dsl/declare_resource"
|
6
6
|
class Chef < (defined?(::Chef) ? ::Chef : Object)
|
7
7
|
module DSL
|
8
8
|
CopiedFromChef.extend_chef_module(::Chef::DSL, self) if defined?(::Chef::DSL)
|
@@ -16,7 +16,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
-
require
|
19
|
+
require "chef_compat/copied_from_chef/chef/resource"
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -19,16 +19,15 @@ module CopiedFromChef
|
|
19
19
|
# See the License for the specific language governing permissions and
|
20
20
|
# limitations under the License.
|
21
21
|
|
22
|
-
require
|
23
|
-
require
|
24
|
-
require
|
22
|
+
require "chef_compat/copied_from_chef/chef/constants"
|
23
|
+
require "chef_compat/copied_from_chef/chef/property"
|
24
|
+
require "chef_compat/copied_from_chef/chef/delayed_evaluator"
|
25
25
|
|
26
26
|
class Chef < (defined?(::Chef) ? ::Chef : Object)
|
27
27
|
module Mixin
|
28
28
|
CopiedFromChef.extend_chef_module(::Chef::Mixin, self) if defined?(::Chef::Mixin)
|
29
29
|
module ParamsValidate
|
30
30
|
CopiedFromChef.extend_chef_module(::Chef::Mixin::ParamsValidate, self) if defined?(::Chef::Mixin::ParamsValidate)
|
31
|
-
|
32
31
|
# Takes a hash of options, along with a map to validate them. Returns the original
|
33
32
|
# options hash, plus any changes that might have been made (through things like setting
|
34
33
|
# default values in the validation map)
|
@@ -339,6 +338,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
339
338
|
def _pv_name_property(opts, key, is_name_property=true)
|
340
339
|
if is_name_property
|
341
340
|
if opts[key].nil?
|
341
|
+
raise CannotValidateStaticallyError, "name_property cannot be evaluated without a resource." if self == Chef::Mixin::ParamsValidate
|
342
342
|
opts[key] = self.instance_variable_get(:"@name")
|
343
343
|
end
|
344
344
|
end
|
@@ -409,6 +409,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
409
409
|
to_be.each do |tb|
|
410
410
|
case tb
|
411
411
|
when Proc
|
412
|
+
raise CannotValidateStaticallyError, "is: proc { } must be evaluated once for each resource" if self == Chef::Mixin::ParamsValidate
|
412
413
|
return true if instance_exec(value, &tb)
|
413
414
|
when Property
|
414
415
|
validate(opts, { key => tb.validation_options })
|
@@ -442,12 +443,21 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
442
443
|
#
|
443
444
|
def _pv_coerce(opts, key, coercer)
|
444
445
|
if opts.has_key?(key.to_s)
|
446
|
+
raise CannotValidateStaticallyError, "coerce must be evaluated for each resource." if self == Chef::Mixin::ParamsValidate
|
445
447
|
opts[key.to_s] = instance_exec(opts[key], &coercer)
|
446
448
|
elsif opts.has_key?(key.to_sym)
|
449
|
+
raise CannotValidateStaticallyError, "coerce must be evaluated for each resource." if self == Chef::Mixin::ParamsValidate
|
447
450
|
opts[key.to_sym] = instance_exec(opts[key], &coercer)
|
448
451
|
end
|
449
452
|
end
|
450
453
|
|
454
|
+
# We allow Chef::Mixin::ParamsValidate.validate(), but we will raise an
|
455
|
+
# error if you try to do anything requiring there to be an actual resource.
|
456
|
+
# This way, you can statically validate things if you have constant validation
|
457
|
+
# (which is the norm).
|
458
|
+
extend self
|
459
|
+
|
460
|
+
|
451
461
|
# Used by #set_or_return to avoid emitting a deprecation warning for
|
452
462
|
# "value nil" and to keep default stickiness working exactly the same
|
453
463
|
# @api private
|
@@ -2,9 +2,9 @@ require 'chef_compat/copied_from_chef'
|
|
2
2
|
class Chef
|
3
3
|
module ::ChefCompat
|
4
4
|
module CopiedFromChef
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
5
|
+
require "chef_compat/copied_from_chef/chef/delayed_evaluator"
|
6
|
+
require "chef_compat/copied_from_chef/chef/mixin/params_validate"
|
7
|
+
require "chef_compat/copied_from_chef/chef/property"
|
8
8
|
|
9
9
|
class Chef < (defined?(::Chef) ? ::Chef : Object)
|
10
10
|
module Mixin
|
@@ -20,7 +20,7 @@ module CopiedFromChef
|
|
20
20
|
# limitations under the License.
|
21
21
|
#
|
22
22
|
|
23
|
-
require
|
23
|
+
require "chef_compat/copied_from_chef/chef/delayed_evaluator"
|
24
24
|
|
25
25
|
class Chef < (defined?(::Chef) ? ::Chef : Object)
|
26
26
|
#
|
@@ -89,16 +89,21 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
89
89
|
#
|
90
90
|
def initialize(**options)
|
91
91
|
super if defined?(::Chef::Property)
|
92
|
-
options.each { |k,v| options[k.to_sym] = v if k.is_a?(String) }
|
92
|
+
options.each { |k,v| options[k.to_sym] = v; options.delete(k) if k.is_a?(String) }
|
93
|
+
@options = options
|
94
|
+
options[:name] = options[:name].to_sym if options[:name]
|
95
|
+
options[:instance_variable_name] = options[:instance_variable_name].to_sym if options[:instance_variable_name]
|
96
|
+
|
93
97
|
|
94
98
|
# Replace name_attribute with name_property
|
95
99
|
if options.has_key?(:name_attribute)
|
96
100
|
# If we have both name_attribute and name_property and they differ, raise an error
|
97
101
|
if options.has_key?(:name_property)
|
98
|
-
raise ArgumentError, "Cannot specify both name_property and name_attribute together on property #{
|
102
|
+
raise ArgumentError, "Cannot specify both name_property and name_attribute together on property #{self}."
|
99
103
|
end
|
100
104
|
# replace name_property with name_attribute in place
|
101
105
|
options = Hash[options.map { |k,v| k == :name_attribute ? [ :name_property, v ] : [ k,v ] }]
|
106
|
+
@options = options
|
102
107
|
end
|
103
108
|
|
104
109
|
# Only pick the first of :default, :name_property and :name_attribute if
|
@@ -111,17 +116,22 @@ super if defined?(::Chef::Property)
|
|
111
116
|
options.delete(:name_property)
|
112
117
|
preferred_default = :default
|
113
118
|
end
|
114
|
-
Chef.log_deprecation("Cannot specify both default and name_property together on property #{
|
119
|
+
Chef.log_deprecation("Cannot specify both default and name_property together on property #{self}. Only one (#{preferred_default}) will be obeyed. In Chef 13, this will become an error. Please remove one or the other from the property.")
|
115
120
|
end
|
116
121
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
122
|
+
# Validate the default early, so the user gets a good error message, and
|
123
|
+
# cache it so we don't do it again if so
|
124
|
+
begin
|
125
|
+
# If we can validate it all the way to output, do it.
|
126
|
+
@stored_default = input_to_stored_value(nil, default, is_default: true)
|
127
|
+
rescue Chef::Exceptions::CannotValidateStaticallyError
|
128
|
+
# If the validation is not static (i.e. has procs), we will have to
|
129
|
+
# coerce and validate the default each time we run
|
130
|
+
end
|
121
131
|
end
|
122
132
|
|
123
133
|
def to_s
|
124
|
-
name
|
134
|
+
"#{name}#{declared_in ? " of resource #{declared_in.resource_name}" : ""}"
|
125
135
|
end
|
126
136
|
|
127
137
|
#
|
@@ -255,14 +265,26 @@ super if defined?(::Chef::Property)
|
|
255
265
|
return get(resource)
|
256
266
|
end
|
257
267
|
|
258
|
-
if value.nil?
|
268
|
+
if value.nil?
|
259
269
|
# In Chef 12, value(nil) does a *get* instead of a set, so we
|
260
270
|
# warn if the value would have been changed. In Chef 13, it will be
|
261
271
|
# equivalent to value = nil.
|
262
272
|
result = get(resource)
|
263
|
-
|
264
|
-
|
273
|
+
|
274
|
+
# Warn about this becoming a set in Chef 13.
|
275
|
+
begin
|
276
|
+
input_to_stored_value(resource, value)
|
277
|
+
# If nil is valid, and it would change the value, warn that this will change to a set.
|
278
|
+
if !result.nil?
|
279
|
+
Chef.log_deprecation("An attempt was made to change #{name} from #{result.inspect} to nil by calling #{name}(nil). In Chef 12, this does a get rather than a set. In Chef 13, this will change to set the value to nil.")
|
280
|
+
end
|
281
|
+
rescue Chef::Exceptions::DeprecatedFeatureError
|
282
|
+
raise
|
283
|
+
rescue
|
284
|
+
# If nil is invalid, warn that this will become an error.
|
285
|
+
Chef.log_deprecation("nil is an invalid value for #{self}. In Chef 13, this warning will change to an error. Error: #{$!}")
|
265
286
|
end
|
287
|
+
|
266
288
|
result
|
267
289
|
else
|
268
290
|
# Anything else, such as myprop(value) is a set
|
@@ -293,16 +315,14 @@ super if defined?(::Chef::Property)
|
|
293
315
|
# this property, or if the value is required and not set.
|
294
316
|
#
|
295
317
|
def get(resource)
|
318
|
+
# If it's set, return it (and evaluate any lazy values)
|
296
319
|
if is_set?(resource)
|
297
320
|
value = get_value(resource)
|
298
|
-
|
299
|
-
value = exec_in_resource(resource, value)
|
300
|
-
value = coerce(resource, value)
|
301
|
-
validate(resource, value)
|
302
|
-
end
|
303
|
-
value
|
321
|
+
value = stored_value_to_output(resource, value)
|
304
322
|
|
305
323
|
else
|
324
|
+
# We are getting the default value.
|
325
|
+
|
306
326
|
# If the user does something like this:
|
307
327
|
#
|
308
328
|
# ```
|
@@ -322,19 +342,20 @@ super if defined?(::Chef::Property)
|
|
322
342
|
resource.resource_initializing &&
|
323
343
|
resource.respond_to?(:enclosing_provider) &&
|
324
344
|
resource.enclosing_provider &&
|
325
|
-
resource.enclosing_provider.
|
345
|
+
resource.enclosing_provider.new_resource &&
|
346
|
+
resource.enclosing_provider.new_resource.respond_to?(name)
|
326
347
|
Chef::Log.warn("#{Chef::Log.caller_location}: property #{name} is declared in both #{resource} and #{resource.enclosing_provider}. Use new_resource.#{name} instead. At #{Chef::Log.caller_location}")
|
327
348
|
end
|
328
349
|
|
329
350
|
if has_default?
|
330
|
-
|
331
|
-
if
|
332
|
-
value =
|
351
|
+
# If we were able to cache the stored_default, grab it.
|
352
|
+
if defined?(@stored_default)
|
353
|
+
value = @stored_default
|
354
|
+
else
|
355
|
+
# Otherwise, we have to validate it now.
|
356
|
+
value = input_to_stored_value(resource, default, is_default: true)
|
333
357
|
end
|
334
|
-
|
335
|
-
value = coerce(resource, value)
|
336
|
-
|
337
|
-
# We don't validate defaults
|
358
|
+
value = stored_value_to_output(resource, value, is_default: true)
|
338
359
|
|
339
360
|
# If the value is mutable (non-frozen), we set it on the instance
|
340
361
|
# so that people can mutate it. (All constant default values are
|
@@ -367,11 +388,7 @@ super if defined?(::Chef::Property)
|
|
367
388
|
# this property.
|
368
389
|
#
|
369
390
|
def set(resource, value)
|
370
|
-
|
371
|
-
value = coerce(resource, value)
|
372
|
-
validate(resource, value)
|
373
|
-
end
|
374
|
-
set_value(resource, value)
|
391
|
+
set_value(resource, input_to_stored_value(resource, value))
|
375
392
|
end
|
376
393
|
|
377
394
|
#
|
@@ -424,7 +441,10 @@ super if defined?(::Chef::Property)
|
|
424
441
|
#
|
425
442
|
def coerce(resource, value)
|
426
443
|
if options.has_key?(:coerce)
|
427
|
-
|
444
|
+
# If we have no default value, `nil` is never coerced or validated
|
445
|
+
unless !has_default? && value.nil?
|
446
|
+
value = exec_in_resource(resource, options[:coerce], value)
|
447
|
+
end
|
428
448
|
end
|
429
449
|
value
|
430
450
|
end
|
@@ -443,7 +463,10 @@ super if defined?(::Chef::Property)
|
|
443
463
|
# this property.
|
444
464
|
#
|
445
465
|
def validate(resource, value)
|
446
|
-
|
466
|
+
# If we have no default value, `nil` is never coerced or validated
|
467
|
+
unless value.nil? && !has_default?
|
468
|
+
(resource || Chef::Mixin::ParamsValidate).validate({ name => value }, { name => validation_options })
|
469
|
+
end
|
447
470
|
end
|
448
471
|
|
449
472
|
#
|
@@ -596,15 +619,54 @@ super if defined?(::Chef::Property)
|
|
596
619
|
value = resource.instance_exec(*args, &proc)
|
597
620
|
end
|
598
621
|
else
|
599
|
-
|
622
|
+
# If we don't have a resource yet, we can't exec in resource!
|
623
|
+
raise Chef::Exceptions::CannotValidateStaticallyError, "Cannot validate or coerce without a resource"
|
624
|
+
end
|
625
|
+
end
|
626
|
+
|
627
|
+
def input_to_stored_value(resource, value, is_default: false)
|
628
|
+
unless value.is_a?(DelayedEvaluator)
|
629
|
+
value = coerce_and_validate(resource, value, is_default: is_default)
|
600
630
|
end
|
631
|
+
value
|
632
|
+
end
|
601
633
|
|
634
|
+
def stored_value_to_output(resource, value, is_default: false)
|
635
|
+
# Crack open lazy values before giving the result to the user
|
602
636
|
if value.is_a?(DelayedEvaluator)
|
603
|
-
value =
|
604
|
-
|
637
|
+
value = exec_in_resource(resource, value)
|
638
|
+
value = coerce_and_validate(resource, value, is_default: is_default)
|
605
639
|
end
|
606
640
|
value
|
607
641
|
end
|
642
|
+
|
643
|
+
# Coerces and validates the value. If the value is a default, it will warn
|
644
|
+
# the user that invalid defaults are bad mmkay, and return it as if it were
|
645
|
+
# valid.
|
646
|
+
def coerce_and_validate(resource, value, is_default: false)
|
647
|
+
result = coerce(resource, value)
|
648
|
+
begin
|
649
|
+
# If the input is from a default, we need to emit an invalid default warning on validate.
|
650
|
+
validate(resource, result)
|
651
|
+
rescue Chef::Exceptions::CannotValidateStaticallyError
|
652
|
+
# This one gets re-raised
|
653
|
+
raise
|
654
|
+
rescue
|
655
|
+
# Anything else is just an invalid default: in those cases, we just
|
656
|
+
# warn and return the (possibly coerced) value to the user.
|
657
|
+
if is_default
|
658
|
+
if value.nil?
|
659
|
+
Chef.log_deprecation("Default value nil is invalid for property #{self}. Possible fixes: 1. Remove 'default: nil' if nil means 'undefined'. 2. Set a valid default value if there is a reasonable one. 3. Allow nil as a valid value of your property (for example, 'property #{name.inspect}, [ String, nil ], default: nil'). Error: #{$!}")
|
660
|
+
else
|
661
|
+
Chef.log_deprecation("Default value #{value.inspect} is invalid for property #{self}. In Chef 13 this will become an error: #{$!}.")
|
662
|
+
end
|
663
|
+
else
|
664
|
+
raise
|
665
|
+
end
|
666
|
+
end
|
667
|
+
|
668
|
+
result
|
669
|
+
end
|
608
670
|
end
|
609
671
|
end
|
610
672
|
end
|
@@ -30,11 +30,11 @@ super if defined?(::Chef::Provider)
|
|
30
30
|
modified = specified_properties.select { |p| new_resource.send(p) != current_resource.send(p) }
|
31
31
|
if modified.empty?
|
32
32
|
properties_str = if sensitive
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
Chef::Log.debug("Skipping update of #{new_resource
|
33
|
+
specified_properties.join(", ")
|
34
|
+
else
|
35
|
+
specified_properties.map { |p| "#{p}=#{new_resource.send(p).inspect}" }.join(", ")
|
36
|
+
end
|
37
|
+
Chef::Log.debug("Skipping update of #{new_resource}: has not changed any of the specified properties #{properties_str}.")
|
38
38
|
return false
|
39
39
|
end
|
40
40
|
|
@@ -42,10 +42,10 @@ super if defined?(::Chef::Provider)
|
|
42
42
|
property_size = modified.map { |p| p.size }.max
|
43
43
|
modified.map! do |p|
|
44
44
|
properties_str = if sensitive
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
45
|
+
"(suppressed sensitive property)"
|
46
|
+
else
|
47
|
+
"#{new_resource.send(p).inspect} (was #{current_resource.send(p).inspect})"
|
48
|
+
end
|
49
49
|
" set #{p.to_s.ljust(property_size)} to #{properties_str}"
|
50
50
|
end
|
51
51
|
converge_by([ "update #{current_resource.identity}" ] + modified, &converge_block)
|
@@ -55,12 +55,12 @@ super if defined?(::Chef::Provider)
|
|
55
55
|
# write down any properties we are setting.
|
56
56
|
property_size = properties.map { |p| p.size }.max
|
57
57
|
created = properties.map do |property|
|
58
|
-
default =
|
58
|
+
default = " (default value)" unless new_resource.property_is_set?(property)
|
59
59
|
properties_str = if sensitive
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
60
|
+
"(suppressed sensitive property)"
|
61
|
+
else
|
62
|
+
new_resource.send(property).inspect
|
63
|
+
end
|
64
64
|
" set #{property.to_s.ljust(property_size)} to #{properties_str}#{default}"
|
65
65
|
end
|
66
66
|
|
@@ -97,10 +97,10 @@ super if defined?(::Chef::Provider)
|
|
97
97
|
EOM
|
98
98
|
end
|
99
99
|
dsl_methods =
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
100
|
+
resource.class.public_instance_methods +
|
101
|
+
resource.class.protected_instance_methods -
|
102
|
+
provider_class.instance_methods -
|
103
|
+
resource.class.properties.keys
|
104
104
|
def_delegators(:new_resource, *dsl_methods)
|
105
105
|
end
|
106
106
|
include @included_resource_dsl_module
|
@@ -141,7 +141,7 @@ super if defined?(::Chef::Provider)
|
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
144
|
-
require
|
144
|
+
require "chef_compat/copied_from_chef/chef/dsl/recipe"
|
145
145
|
include Chef::DSL::Recipe::FullDSL
|
146
146
|
end
|
147
147
|
protected
|
@@ -2,13 +2,13 @@ require 'chef_compat/copied_from_chef'
|
|
2
2
|
class Chef
|
3
3
|
module ::ChefCompat
|
4
4
|
module CopiedFromChef
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
5
|
+
require "chef_compat/copied_from_chef/chef/resource/action_class"
|
6
|
+
require "chef_compat/copied_from_chef/chef/provider"
|
7
|
+
require "chef_compat/copied_from_chef/chef/mixin/properties"
|
8
8
|
class Chef < (defined?(::Chef) ? ::Chef : Object)
|
9
9
|
class Resource < (defined?(::Chef::Resource) ? ::Chef::Resource : Object)
|
10
10
|
include Chef::Mixin::Properties
|
11
|
-
property :name, String, coerce: proc { |v| v.is_a?(Array) ? v.join(
|
11
|
+
property :name, String, coerce: proc { |v| v.is_a?(Array) ? v.join(", ") : v.to_s }, desired_state: false
|
12
12
|
def initialize(name, run_context=nil)
|
13
13
|
super if defined?(::Chef::Resource)
|
14
14
|
name(name) unless name.nil?
|
@@ -44,7 +44,7 @@ super if defined?(::Chef::Resource)
|
|
44
44
|
arg.each do |action|
|
45
45
|
validate(
|
46
46
|
{ action: action },
|
47
|
-
{ action: { kind_of: Symbol, equal_to: allowed_actions } }
|
47
|
+
{ action: { kind_of: Symbol, equal_to: allowed_actions } },
|
48
48
|
)
|
49
49
|
end
|
50
50
|
@action = arg
|
@@ -89,7 +89,7 @@ super if defined?(::Chef::Resource)
|
|
89
89
|
end
|
90
90
|
safe_ivars = instance_variables.map { |ivar| ivar.to_sym } - FORBIDDEN_IVARS
|
91
91
|
safe_ivars.each do |iv|
|
92
|
-
key = iv.to_s.sub(/^@/,
|
92
|
+
key = iv.to_s.sub(/^@/,"").to_sym
|
93
93
|
next if result.has_key?(key)
|
94
94
|
result[key] = instance_variable_get(iv)
|
95
95
|
end
|
@@ -113,7 +113,7 @@ super if defined?(::Chef::Resource)
|
|
113
113
|
@resource_name || self.class.resource_name
|
114
114
|
end
|
115
115
|
def self.use_automatic_resource_name
|
116
|
-
automatic_name = convert_to_snake_case(self.name.split(
|
116
|
+
automatic_name = convert_to_snake_case(self.name.split("::")[-1])
|
117
117
|
resource_name automatic_name
|
118
118
|
end
|
119
119
|
def self.allowed_actions(*actions)
|
@@ -168,17 +168,17 @@ super if defined?(::Chef::Resource)
|
|
168
168
|
end
|
169
169
|
def self.declare_action_class(&block)
|
170
170
|
@action_class ||= begin
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
171
|
+
if superclass.respond_to?(:action_class)
|
172
|
+
base_provider = superclass.action_class
|
173
|
+
end
|
174
|
+
base_provider ||= Chef::Provider
|
175
175
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
176
|
+
resource_class = self
|
177
|
+
Class.new(base_provider) do
|
178
|
+
include ActionClass
|
179
|
+
self.resource_class = resource_class
|
180
|
+
end
|
181
|
+
end
|
182
182
|
@action_class.class_eval(&block) if block
|
183
183
|
@action_class
|
184
184
|
end
|
@@ -1,7 +1,10 @@
|
|
1
|
+
require 'chef/exceptions'
|
2
|
+
|
1
3
|
class Chef
|
2
4
|
class Exceptions
|
3
5
|
# Used in Resource::ActionClass#load_current_resource to denote that
|
4
6
|
# the resource doesn't actually exist (for example, the file does not exist)
|
5
|
-
class CurrentValueDoesNotExist < RuntimeError; end
|
7
|
+
class CurrentValueDoesNotExist < RuntimeError; end unless defined?(CurrentValueDoesNotExist)
|
8
|
+
class CannotValidateStaticallyError < RuntimeError; end unless defined?(CannotValidateStaticallyError)
|
6
9
|
end
|
7
10
|
end
|
@@ -9,7 +9,6 @@ module ChefCompat
|
|
9
9
|
@compat_resource_filter_paths ||=
|
10
10
|
Gem.loaded_specs['chef'].require_paths.map { |p| File.join(Gem.loaded_specs['chef'].full_gem_path, p) } +
|
11
11
|
Gem.loaded_specs['compat_resource'].require_paths.map { |p| File.join(Gem.loaded_specs['compat_resource'].full_gem_path, p) }
|
12
|
-
puts caller.select { |c| !@compat_resource_filter_paths.any? { |path| c.start_with?(path) } }
|
13
12
|
|
14
13
|
caller.select { |c| !@compat_resource_filter_paths.any? { |path| c.start_with?(path) } }.first
|
15
14
|
end
|
@@ -1,10 +1,9 @@
|
|
1
|
-
|
2
|
-
remote: git://github.com/chef/chef.git
|
3
|
-
revision: 5f51f93f71cdee3ed598b38cecd8f5fa1a585f49
|
1
|
+
GEM
|
4
2
|
specs:
|
3
|
+
builder (3.2.2)
|
5
4
|
chef (12.6.0)
|
6
5
|
chef-config (= 12.6.0)
|
7
|
-
chef-zero (~> 4.
|
6
|
+
chef-zero (~> 4.2, >= 4.2.2)
|
8
7
|
diff-lcs (~> 1.2, >= 1.2.4)
|
9
8
|
erubis (~> 2.7)
|
10
9
|
ffi-yajl (~> 2.2)
|
@@ -29,11 +28,7 @@ GIT
|
|
29
28
|
chef-config (12.6.0)
|
30
29
|
mixlib-config (~> 2.0)
|
31
30
|
mixlib-shellout (~> 2.0)
|
32
|
-
|
33
|
-
GEM
|
34
|
-
specs:
|
35
|
-
builder (3.2.2)
|
36
|
-
chef-zero (4.4.0)
|
31
|
+
chef-zero (4.4.2)
|
37
32
|
ffi-yajl (~> 2.2)
|
38
33
|
hashie (>= 2.0, < 4.0)
|
39
34
|
mixlib-log (~> 1.3)
|
@@ -43,15 +38,18 @@ GEM
|
|
43
38
|
diff-lcs (1.2.5)
|
44
39
|
erubis (2.7.0)
|
45
40
|
ffi (1.9.10)
|
46
|
-
ffi-yajl (2.2.
|
41
|
+
ffi-yajl (2.2.3)
|
47
42
|
libyajl2 (~> 1.2)
|
48
43
|
hashie (3.4.3)
|
49
44
|
highline (1.7.8)
|
50
|
-
ipaddress (0.8.
|
45
|
+
ipaddress (0.8.2)
|
51
46
|
libyajl2 (1.2.0)
|
52
47
|
method_source (0.8.2)
|
53
|
-
mixlib-authentication (1.
|
48
|
+
mixlib-authentication (1.4.0)
|
54
49
|
mixlib-log
|
50
|
+
rspec-core (~> 3.2)
|
51
|
+
rspec-expectations (~> 3.2)
|
52
|
+
rspec-mocks (~> 3.2)
|
55
53
|
mixlib-cli (1.5.0)
|
56
54
|
mixlib-config (2.2.1)
|
57
55
|
mixlib-log (1.6.0)
|
@@ -66,7 +64,7 @@ GEM
|
|
66
64
|
net-ssh (>= 2.6.5)
|
67
65
|
net-ssh-gateway (>= 1.2.0)
|
68
66
|
net-telnet (0.1.1)
|
69
|
-
ohai (8.
|
67
|
+
ohai (8.9.0)
|
70
68
|
chef-config (>= 12.5.0.alpha.1, < 13)
|
71
69
|
ffi (~> 1.9)
|
72
70
|
ffi-yajl (~> 2.2)
|
@@ -85,12 +83,12 @@ GEM
|
|
85
83
|
method_source (~> 0.8.1)
|
86
84
|
slop (~> 3.4)
|
87
85
|
rack (1.6.4)
|
88
|
-
rake (10.
|
86
|
+
rake (10.5.0)
|
89
87
|
rspec (3.4.0)
|
90
88
|
rspec-core (~> 3.4.0)
|
91
89
|
rspec-expectations (~> 3.4.0)
|
92
90
|
rspec-mocks (~> 3.4.0)
|
93
|
-
rspec-core (3.4.
|
91
|
+
rspec-core (3.4.2)
|
94
92
|
rspec-support (~> 3.4.0)
|
95
93
|
rspec-expectations (3.4.0)
|
96
94
|
diff-lcs (>= 1.2.0, < 2.0)
|
@@ -98,21 +96,21 @@ GEM
|
|
98
96
|
rspec-its (1.2.0)
|
99
97
|
rspec-core (>= 3.0.0)
|
100
98
|
rspec-expectations (>= 3.0.0)
|
101
|
-
rspec-mocks (3.4.
|
99
|
+
rspec-mocks (3.4.1)
|
102
100
|
diff-lcs (>= 1.2.0, < 2.0)
|
103
101
|
rspec-support (~> 3.4.0)
|
104
102
|
rspec-support (3.4.1)
|
105
103
|
rspec_junit_formatter (0.2.3)
|
106
104
|
builder (< 4)
|
107
105
|
rspec-core (>= 2, < 4, != 2.12.0)
|
108
|
-
serverspec (2.
|
106
|
+
serverspec (2.29.1)
|
109
107
|
multi_json
|
110
108
|
rspec (~> 3.0)
|
111
109
|
rspec-its
|
112
|
-
specinfra (~> 2.
|
110
|
+
specinfra (~> 2.48)
|
113
111
|
sfl (2.2)
|
114
112
|
slop (3.6.0)
|
115
|
-
specinfra (2.
|
113
|
+
specinfra (2.50.3)
|
116
114
|
net-scp
|
117
115
|
net-ssh (>= 2.7, < 3.1)
|
118
116
|
net-telnet
|
@@ -126,7 +124,7 @@ PLATFORMS
|
|
126
124
|
ruby
|
127
125
|
|
128
126
|
DEPENDENCIES
|
129
|
-
chef
|
127
|
+
chef
|
130
128
|
|
131
129
|
BUNDLED WITH
|
132
|
-
1.
|
130
|
+
1.11.2
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compat_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.
|
4
|
+
version: 12.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Keiser
|
8
8
|
autorequire:
|
9
9
|
bindir: files/bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
164
|
version: '0'
|
165
165
|
requirements: []
|
166
166
|
rubyforge_project:
|
167
|
-
rubygems_version: 2.5.
|
167
|
+
rubygems_version: 2.4.5.1
|
168
168
|
signing_key:
|
169
169
|
specification_version: 4
|
170
170
|
summary: Bring some new features of Chef 12.5 to previous 12.X releases
|