compat_resource 12.7.1 → 12.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +5 -0
- data/files/lib/chef_compat/copied_from_chef/chef/constants.rb +5 -0
- data/files/lib/chef_compat/copied_from_chef/chef/delayed_evaluator.rb +4 -0
- data/files/lib/chef_compat/copied_from_chef/chef/dsl/declare_resource.rb +7 -3
- data/files/lib/chef_compat/copied_from_chef/chef/dsl/recipe.rb +4 -0
- data/files/lib/chef_compat/copied_from_chef/chef/mixin/params_validate.rb +7 -4
- data/files/lib/chef_compat/copied_from_chef/chef/mixin/properties.rb +9 -5
- data/files/lib/chef_compat/copied_from_chef/chef/property.rb +14 -11
- data/files/lib/chef_compat/copied_from_chef/chef/provider.rb +4 -0
- data/files/lib/chef_compat/copied_from_chef/chef/resource.rb +10 -6
- data/files/lib/chef_compat/copied_from_chef/chef/resource/action_class.rb +5 -1
- data/files/lib/chef_compat/copied_from_chef/chef/resource_builder.rb +4 -0
- data/files/lib/compat_resource/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed268da9671b0afd05e7febfabc797b8e259675d
|
4
|
+
data.tar.gz: e8eeaceb5f6707856a90c7b2c0d55549353afc5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0884d41c143edb61e2c4219f98983cbe379968d38d16a3606deba2180b9f4ee7d124d21eb2300864019b6fffb912704be6433dd813abb4be55ebad0827452fe3
|
7
|
+
data.tar.gz: 88a8398a2276ab2fcf7b4e2f69a8ddf174576a6be0171a4b3fff28d262a909d4a624af5aba361cb47f5f01061ea711bab660aa48fd48dfb3f676817646b83707
|
data/Rakefile
CHANGED
@@ -89,6 +89,11 @@ task :update do
|
|
89
89
|
chef_gem_path = Bundler.environment.specs['chef'].first.full_gem_path
|
90
90
|
CHEF_FILES.each do |file|
|
91
91
|
output = StringIO.new
|
92
|
+
# First lets try to load the original file if it exists
|
93
|
+
output.puts "begin"
|
94
|
+
output.puts " require '#{file}'"
|
95
|
+
output.puts "rescue LoadError; end"
|
96
|
+
output.puts ""
|
92
97
|
# Wrap the whole thing in a ChefCompat module
|
93
98
|
output.puts "require 'chef_compat/copied_from_chef'"
|
94
99
|
output.puts "class Chef"
|
@@ -1,3 +1,7 @@
|
|
1
|
+
begin
|
2
|
+
require 'chef/constants'
|
3
|
+
rescue LoadError; end
|
4
|
+
|
1
5
|
require 'chef_compat/copied_from_chef'
|
2
6
|
class Chef
|
3
7
|
module ::ChefCompat
|
@@ -24,6 +28,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
24
28
|
def NOT_PASSED.to_s
|
25
29
|
"NOT_PASSED"
|
26
30
|
end
|
31
|
+
|
27
32
|
def NOT_PASSED.inspect
|
28
33
|
to_s
|
29
34
|
end
|
@@ -1,3 +1,7 @@
|
|
1
|
+
begin
|
2
|
+
require 'chef/dsl/declare_resource'
|
3
|
+
rescue LoadError; end
|
4
|
+
|
1
5
|
require 'chef_compat/copied_from_chef'
|
2
6
|
class Chef
|
3
7
|
module ::ChefCompat
|
@@ -53,7 +57,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
53
57
|
# action :delete
|
54
58
|
# end
|
55
59
|
#
|
56
|
-
def declare_resource(type, name, created_at=nil, run_context: self.run_context, create_if_missing: false, &resource_attrs_block)
|
60
|
+
def declare_resource(type, name, created_at = nil, run_context: self.run_context, create_if_missing: false, &resource_attrs_block)
|
57
61
|
created_at ||= caller[0]
|
58
62
|
|
59
63
|
if create_if_missing
|
@@ -91,7 +95,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
91
95
|
# action :delete
|
92
96
|
# end
|
93
97
|
#
|
94
|
-
def build_resource(type, name, created_at=nil, run_context: self.run_context, &resource_attrs_block)
|
98
|
+
def build_resource(type, name, created_at = nil, run_context: self.run_context, &resource_attrs_block)
|
95
99
|
created_at ||= caller[0]
|
96
100
|
Thread.exclusive do
|
97
101
|
require "chef_compat/copied_from_chef/chef/resource_builder" unless defined?(Chef::ResourceBuilder)
|
@@ -105,7 +109,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
105
109
|
run_context: run_context,
|
106
110
|
cookbook_name: cookbook_name,
|
107
111
|
recipe_name: recipe_name,
|
108
|
-
enclosing_provider: self.is_a?(Chef::Provider) ? self :
|
112
|
+
enclosing_provider: self.is_a?(Chef::Provider) ? self : nil,
|
109
113
|
).build(&resource_attrs_block)
|
110
114
|
end
|
111
115
|
end
|
@@ -1,3 +1,7 @@
|
|
1
|
+
begin
|
2
|
+
require 'chef/mixin/params_validate'
|
3
|
+
rescue LoadError; end
|
4
|
+
|
1
5
|
require 'chef_compat/copied_from_chef'
|
2
6
|
class Chef
|
3
7
|
module ::ChefCompat
|
@@ -146,7 +150,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
146
150
|
end
|
147
151
|
|
148
152
|
# Raise an exception if the parameter is not found.
|
149
|
-
def _pv_required(opts, key, is_required=true, explicitly_allows_nil=false)
|
153
|
+
def _pv_required(opts, key, is_required = true, explicitly_allows_nil = false)
|
150
154
|
if is_required
|
151
155
|
return true if opts.has_key?(key.to_s) && (explicitly_allows_nil || !opts[key.to_s].nil?)
|
152
156
|
return true if opts.has_key?(key.to_sym) && (explicitly_allows_nil || !opts[key.to_sym].nil?)
|
@@ -335,7 +339,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
335
339
|
# property :x, name_property: true
|
336
340
|
# ```
|
337
341
|
#
|
338
|
-
def _pv_name_property(opts, key, is_name_property=true)
|
342
|
+
def _pv_name_property(opts, key, is_name_property = true)
|
339
343
|
if is_name_property
|
340
344
|
if opts[key].nil?
|
341
345
|
raise CannotValidateStaticallyError, "name_property cannot be evaluated without a resource." if self == Chef::Mixin::ParamsValidate
|
@@ -468,7 +472,6 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
468
472
|
# (which is the norm).
|
469
473
|
extend self
|
470
474
|
|
471
|
-
|
472
475
|
# Used by #set_or_return to avoid emitting a deprecation warning for
|
473
476
|
# "value nil" and to keep default stickiness working exactly the same
|
474
477
|
# @api private
|
@@ -482,7 +485,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
482
485
|
value
|
483
486
|
end
|
484
487
|
|
485
|
-
def call(resource, value=NOT_PASSED)
|
488
|
+
def call(resource, value = NOT_PASSED)
|
486
489
|
# setting to nil does a get
|
487
490
|
if value.nil? && !explicitly_accepts_nil?(resource)
|
488
491
|
get(resource)
|
@@ -1,3 +1,7 @@
|
|
1
|
+
begin
|
2
|
+
require 'chef/mixin/properties'
|
3
|
+
rescue LoadError; end
|
4
|
+
|
1
5
|
require 'chef_compat/copied_from_chef'
|
2
6
|
class Chef
|
3
7
|
module ::ChefCompat
|
@@ -24,7 +28,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
24
28
|
#
|
25
29
|
# @return [Hash<Symbol,Property>] The list of property names and types.
|
26
30
|
#
|
27
|
-
def properties(include_superclass=true)
|
31
|
+
def properties(include_superclass = true)
|
28
32
|
if include_superclass
|
29
33
|
result = {}
|
30
34
|
ancestors.reverse_each { |c| result.merge!(c.properties(false)) if c.respond_to?(:properties) }
|
@@ -99,10 +103,10 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
99
103
|
# @example With type and options
|
100
104
|
# property :x, String, default: 'hi'
|
101
105
|
#
|
102
|
-
def property(name, type=NOT_PASSED, **options)
|
106
|
+
def property(name, type = NOT_PASSED, **options)
|
103
107
|
name = name.to_sym
|
104
108
|
|
105
|
-
options.each { |k,v| options[k.to_sym] = v if k.is_a?(String) }
|
109
|
+
options.each { |k, v| options[k.to_sym] = v if k.is_a?(String) }
|
106
110
|
|
107
111
|
options[:instance_variable_name] = :"@#{name}" if !options.has_key?(:instance_variable_name)
|
108
112
|
options.merge!(name: name, declared_in: self)
|
@@ -207,7 +211,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
207
211
|
|
208
212
|
# If state_attrs *excludes* something which is currently desired state,
|
209
213
|
# mark it as desired_state: false.
|
210
|
-
local_properties.each do |name,property|
|
214
|
+
local_properties.each do |name, property|
|
211
215
|
if property.desired_state? && !names.include?(name)
|
212
216
|
self.property name, desired_state: false
|
213
217
|
end
|
@@ -255,7 +259,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
255
259
|
|
256
260
|
# If identity_properties *excludes* something which is currently part of
|
257
261
|
# the identity, mark it as identity: false.
|
258
|
-
properties.each do |name,property|
|
262
|
+
properties.each do |name, property|
|
259
263
|
if property.identity? && !names.include?(name)
|
260
264
|
|
261
265
|
self.property name, identity: false
|
@@ -1,3 +1,7 @@
|
|
1
|
+
begin
|
2
|
+
require 'chef/property'
|
3
|
+
rescue LoadError; end
|
4
|
+
|
1
5
|
require 'chef_compat/copied_from_chef'
|
2
6
|
class Chef
|
3
7
|
module ::ChefCompat
|
@@ -89,12 +93,11 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
89
93
|
#
|
90
94
|
def initialize(**options)
|
91
95
|
super if defined?(::Chef::Property)
|
92
|
-
options.each { |k,v| options[k.to_sym] = v; options.delete(k) if k.is_a?(String) }
|
96
|
+
options.each { |k, v| options[k.to_sym] = v; options.delete(k) if k.is_a?(String) }
|
93
97
|
@options = options
|
94
98
|
options[:name] = options[:name].to_sym if options[:name]
|
95
99
|
options[:instance_variable_name] = options[:instance_variable_name].to_sym if options[:instance_variable_name]
|
96
100
|
|
97
|
-
|
98
101
|
# Replace name_attribute with name_property
|
99
102
|
if options.has_key?(:name_attribute)
|
100
103
|
# If we have both name_attribute and name_property and they differ, raise an error
|
@@ -102,7 +105,7 @@ super if defined?(::Chef::Property)
|
|
102
105
|
raise ArgumentError, "Cannot specify both name_property and name_attribute together on property #{self}."
|
103
106
|
end
|
104
107
|
# replace name_property with name_attribute in place
|
105
|
-
options = Hash[options.map { |k,v| k == :name_attribute ? [ :name_property, v ] : [ k,v ] }]
|
108
|
+
options = Hash[options.map { |k, v| k == :name_attribute ? [ :name_property, v ] : [ k, v ] }]
|
106
109
|
@options = options
|
107
110
|
end
|
108
111
|
|
@@ -235,8 +238,8 @@ super if defined?(::Chef::Property)
|
|
235
238
|
# @return [Hash<Symbol,Object>]
|
236
239
|
#
|
237
240
|
def validation_options
|
238
|
-
@validation_options ||= options.reject { |k,v|
|
239
|
-
[:declared_in
|
241
|
+
@validation_options ||= options.reject { |k, v|
|
242
|
+
[:declared_in, :name, :instance_variable_name, :desired_state, :identity, :default, :name_property, :coerce, :required].include?(k)
|
240
243
|
}
|
241
244
|
end
|
242
245
|
|
@@ -260,7 +263,7 @@ super if defined?(::Chef::Property)
|
|
260
263
|
# will be returned without running, validating or coercing. If it is a
|
261
264
|
# `get`, the non-lazy, coerced, validated value will always be returned.
|
262
265
|
#
|
263
|
-
def call(resource, value=NOT_PASSED)
|
266
|
+
def call(resource, value = NOT_PASSED)
|
264
267
|
if value == NOT_PASSED
|
265
268
|
return get(resource)
|
266
269
|
end
|
@@ -344,7 +347,7 @@ super if defined?(::Chef::Property)
|
|
344
347
|
resource.enclosing_provider &&
|
345
348
|
resource.enclosing_provider.new_resource &&
|
346
349
|
resource.enclosing_provider.new_resource.respond_to?(name)
|
347
|
-
|
350
|
+
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}")
|
348
351
|
end
|
349
352
|
|
350
353
|
if has_default?
|
@@ -491,7 +494,7 @@ super if defined?(::Chef::Property)
|
|
491
494
|
if modified_options.has_key?(:name_property) ||
|
492
495
|
modified_options.has_key?(:name_attribute) ||
|
493
496
|
modified_options.has_key?(:default)
|
494
|
-
options = options.reject { |k,v| k == :name_attribute || k == :name_property || k == :default }
|
497
|
+
options = options.reject { |k, v| k == :name_attribute || k == :name_property || k == :default }
|
495
498
|
end
|
496
499
|
self.class.new(options.merge(modified_options))
|
497
500
|
end
|
@@ -508,7 +511,7 @@ super if defined?(::Chef::Property)
|
|
508
511
|
|
509
512
|
# We prefer this form because the property name won't show up in the
|
510
513
|
# stack trace if you use `define_method`.
|
511
|
-
declared_in.class_eval <<-EOM, __FILE__, __LINE__+1
|
514
|
+
declared_in.class_eval <<-EOM, __FILE__, __LINE__ + 1
|
512
515
|
def #{name}(value=NOT_PASSED)
|
513
516
|
raise "Property #{name} of \#{self} cannot be passed a block! If you meant to create a resource named #{name} instead, you'll need to first rename the property." if block_given?
|
514
517
|
self.class.properties[#{name.inspect}].call(self, value)
|
@@ -520,7 +523,7 @@ super if defined?(::Chef::Property)
|
|
520
523
|
EOM
|
521
524
|
rescue SyntaxError
|
522
525
|
# If the name is not a valid ruby name, we use define_method.
|
523
|
-
declared_in.define_method(name) do |value=NOT_PASSED, &block|
|
526
|
+
declared_in.define_method(name) do |value = NOT_PASSED, &block|
|
524
527
|
raise "Property #{name} of #{self} cannot be passed a block! If you meant to create a resource named #{name} instead, you'll need to first rename the property." if block
|
525
528
|
self.class.properties[name].call(self, value)
|
526
529
|
end
|
@@ -579,7 +582,7 @@ super if defined?(::Chef::Property)
|
|
579
582
|
# @api private
|
580
583
|
def explicitly_accepts_nil?(resource)
|
581
584
|
options.has_key?(:coerce) ||
|
582
|
-
|
585
|
+
(options.has_key?(:is) && resource.send(:_pv_is, { name => nil }, name, options[:is], raise_error: false))
|
583
586
|
end
|
584
587
|
|
585
588
|
def get_value(resource)
|
@@ -1,3 +1,7 @@
|
|
1
|
+
begin
|
2
|
+
require 'chef/resource'
|
3
|
+
rescue LoadError; end
|
4
|
+
|
1
5
|
require 'chef_compat/copied_from_chef'
|
2
6
|
class Chef
|
3
7
|
module ::ChefCompat
|
@@ -9,7 +13,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
9
13
|
class Resource < (defined?(::Chef::Resource) ? ::Chef::Resource : Object)
|
10
14
|
include Chef::Mixin::Properties
|
11
15
|
property :name, String, coerce: proc { |v| v.is_a?(Array) ? v.join(", ") : v.to_s }, desired_state: false
|
12
|
-
def initialize(name, run_context=nil)
|
16
|
+
def initialize(name, run_context = nil)
|
13
17
|
super if defined?(::Chef::Resource)
|
14
18
|
name(name) unless name.nil?
|
15
19
|
@run_context = run_context
|
@@ -38,7 +42,7 @@ super if defined?(::Chef::Resource)
|
|
38
42
|
@elapsed_time = 0
|
39
43
|
@sensitive = false
|
40
44
|
end
|
41
|
-
def action(arg=nil)
|
45
|
+
def action(arg = nil)
|
42
46
|
if arg
|
43
47
|
arg = Array(arg).map(&:to_sym)
|
44
48
|
arg.each do |action|
|
@@ -89,13 +93,13 @@ super if defined?(::Chef::Resource)
|
|
89
93
|
end
|
90
94
|
safe_ivars = instance_variables.map { |ivar| ivar.to_sym } - FORBIDDEN_IVARS
|
91
95
|
safe_ivars.each do |iv|
|
92
|
-
key = iv.to_s.sub(/^@/,"").to_sym
|
96
|
+
key = iv.to_s.sub(/^@/, "").to_sym
|
93
97
|
next if result.has_key?(key)
|
94
98
|
result[key] = instance_variable_get(iv)
|
95
99
|
end
|
96
100
|
result
|
97
101
|
end
|
98
|
-
def self.identity_property(name=nil)
|
102
|
+
def self.identity_property(name = nil)
|
99
103
|
result = identity_properties(*Array(name))
|
100
104
|
if result.size > 1
|
101
105
|
raise Chef::Exceptions::MultipleIdentityError, "identity_property cannot be called on an object with more than one identity property (#{result.map { |r| r.name }.join(", ")})."
|
@@ -103,7 +107,7 @@ super if defined?(::Chef::Resource)
|
|
103
107
|
result.first
|
104
108
|
end
|
105
109
|
attr_accessor :allowed_actions
|
106
|
-
def allowed_actions(value=NOT_PASSED)
|
110
|
+
def allowed_actions(value = NOT_PASSED)
|
107
111
|
if value != NOT_PASSED
|
108
112
|
self.allowed_actions = value
|
109
113
|
end
|
@@ -128,7 +132,7 @@ super if defined?(::Chef::Resource)
|
|
128
132
|
def self.allowed_actions=(value)
|
129
133
|
@allowed_actions = value.uniq
|
130
134
|
end
|
131
|
-
def self.default_action(action_name=NOT_PASSED)
|
135
|
+
def self.default_action(action_name = NOT_PASSED)
|
132
136
|
unless action_name.equal?(NOT_PASSED)
|
133
137
|
@default_action = Array(action_name).map(&:to_sym)
|
134
138
|
self.allowed_actions |= @default_action
|
@@ -1,3 +1,7 @@
|
|
1
|
+
begin
|
2
|
+
require 'chef/resource/action_class'
|
3
|
+
rescue LoadError; end
|
4
|
+
|
1
5
|
require 'chef_compat/copied_from_chef'
|
2
6
|
class Chef
|
3
7
|
module ::ChefCompat
|
@@ -40,7 +44,7 @@ class Chef < (defined?(::Chef) ? ::Chef : Object)
|
|
40
44
|
# We clear desired state in the copy, because it is supposed to be actual state.
|
41
45
|
# We keep identity properties and non-desired-state, which are assumed to be
|
42
46
|
# "control" values like `recurse: true`
|
43
|
-
current_resource.class.properties.each do |name,property|
|
47
|
+
current_resource.class.properties.each do |name, property|
|
44
48
|
if property.desired_state? && !property.identity? && !property.name_property?
|
45
49
|
property.reset(current_resource)
|
46
50
|
end
|
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.7.
|
4
|
+
version: 12.7.3
|
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: 2016-02-
|
11
|
+
date: 2016-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|