summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2019-05-06 16:38:24 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2019-05-06 16:45:10 -0700
commitd69afb400c4094b83a0942746f5426acfb04f73f (patch)
tree99075d6d33b573c30797a84162094835d81ccba2
parenta9263b94022e74ec23c63c44bad2048f080fc202 (diff)
downloadchef-lcg/remove-collision-deprecation.tar.gz
Remove resource collision deprecationslcg/remove-collision-deprecation
Switch to only doing warnings. Remove the features in the node_map that we never used. Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
-rw-r--r--lib/chef/deprecated.rb4
-rw-r--r--lib/chef/node_map.rb27
-rw-r--r--lib/chef/resource.rb22
-rw-r--r--lib/chef/resource_inspector.rb1
-rw-r--r--spec/unit/node_map_spec.rb53
-rw-r--r--spec/unit/resource_spec.rb38
6 files changed, 17 insertions, 128 deletions
diff --git a/lib/chef/deprecated.rb b/lib/chef/deprecated.rb
index 6516366d49..04a436d3f7 100644
--- a/lib/chef/deprecated.rb
+++ b/lib/chef/deprecated.rb
@@ -207,9 +207,7 @@ class Chef
target 23
end
- class MapCollision < Base
- target 25
- end
+ # id 15 was deleted
# id 3694 was deleted
diff --git a/lib/chef/node_map.rb b/lib/chef/node_map.rb
index e66e249a97..a142565de1 100644
--- a/lib/chef/node_map.rb
+++ b/lib/chef/node_map.rb
@@ -1,6 +1,6 @@
#
# Author:: Lamont Granquist (<lamont@chef.io>)
-# Copyright:: Copyright 2014-2018, Chef Software Inc.
+# Copyright:: Copyright 2014-2019, Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -37,11 +37,6 @@
#
class Chef
class NodeMap
- COLLISION_WARNING_14 = <<~EOH.gsub(/\s+/, " ").strip
- %{type_caps} %{key} from a cookbook is overriding the %{type} from the client. Please upgrade your cookbook
- or remove the cookbook from your run_list before the next major release of Chef.
- EOH
-
COLLISION_WARNING_15 = <<~EOH.gsub(/\s+/, " ").strip
%{type_caps} %{key} from the client is overriding the %{type} from a cookbook. Please upgrade your cookbook
or remove the cookbook from your run_list.
@@ -54,19 +49,13 @@ class Chef
# @param key [Object] Key to store
# @param value [Object] Value associated with the key
# @param filters [Hash] Node filter options to apply to key retrieval
- # @param allow_cookbook_override [Boolean, String] Allow a cookbook to add
- # to this key even in locked mode. If a string is given, it should be a
- # Gem::Requirement-compatible value indicating for which Chef versions an
- # override from cookbooks is allowed.
- # @param __core_override__ [Boolean] Advanced-mode override to add to a key
- # even in locked mode.
# @param chef_version [String] version constraint to match against the running Chef::VERSION
#
# @yield [node] Arbitrary node filter as a block which takes a node argument
#
# @return [NodeMap] Returns self for possible chaining
#
- def set(key, klass, platform: nil, platform_version: nil, platform_family: nil, os: nil, canonical: nil, override: nil, allow_cookbook_override: false, __core_override__: false, chef_version: nil, target_mode: nil, &block) # rubocop:disable Lint/UnderscorePrefixedVariableName
+ def set(key, klass, platform: nil, platform_version: nil, platform_family: nil, os: nil, canonical: nil, override: nil, chef_version: nil, target_mode: nil, &block) # rubocop:disable Lint/UnderscorePrefixedVariableName
new_matcher = { klass: klass }
new_matcher[:platform] = platform if platform
new_matcher[:platform_version] = platform_version if platform_version
@@ -75,8 +64,6 @@ class Chef
new_matcher[:block] = block if block
new_matcher[:canonical] = canonical if canonical
new_matcher[:override] = override if override
- new_matcher[:cookbook_override] = allow_cookbook_override
- new_matcher[:core_override] = __core_override__
new_matcher[:target_mode] = target_mode
if chef_version && Chef::VERSION !~ chef_version
@@ -88,9 +75,7 @@ class Chef
# 1. Core override mode is not set.
# 2. The key exists.
# 3. At least one previous `provides` is now locked.
- # 4. No previous `provides` had `allow_cookbook_override`, either set to
- # true or with a string version matcher that still matches Chef::VERSION
- if !__core_override__ && map[key] && map[key].any? { |matcher| matcher[:locked] } && !map[key].any? { |matcher| matcher[:cookbook_override].is_a?(String) ? Chef::VERSION =~ matcher[:cookbook_override] : matcher[:cookbook_override] }
+ if map[key] && map[key].any? { |matcher| matcher[:locked] } && !map[key].any? { |matcher| matcher[:cookbook_override].is_a?(String) ? Chef::VERSION =~ matcher[:cookbook_override] : matcher[:cookbook_override] }
# If we ever use locked mode on things other than the resource and provider handler maps, this probably needs a tweak.
type_of_thing = if klass < Chef::Resource
"resource"
@@ -99,11 +84,7 @@ class Chef
else
klass.superclass.to_s
end
- # For now, only log the warning.
- Chef.deprecated(:map_collision, COLLISION_WARNING_14 % { type: type_of_thing, key: key, type_caps: type_of_thing.capitalize })
- # In 15.0, uncomment this and remove the log above.
- # Chef.deprecated(:map_collision, COLLISION_WARNING_15 % {type: type_of_thing, key: key, type_caps: type_of_thing.capitalize}))
- # return
+ Chef::Log.warn( COLLISION_WARNING_15 % { type: type_of_thing, key: key, type_caps: type_of_thing.capitalize } )
end
# The map is sorted in order of preference already; we just need to find
diff --git a/lib/chef/resource.rb b/lib/chef/resource.rb
index e08b2b0bc3..22dbc4282e 100644
--- a/lib/chef/resource.rb
+++ b/lib/chef/resource.rb
@@ -1170,22 +1170,6 @@ class Chef
end
end
- # Set or return if this resource is in preview mode.
- #
- # This is used in Chef core as part of the process of migrating resources
- # from a cookbook into core. It should be set to `true` when a cookbook
- # resource is added to core, and then removed (set to `false`) in the next
- # major release.
- #
- # @param value [nil, Boolean] If nil, get the current value. If not nil, set
- # the value of the flag.
- # @return [Boolean]
- def self.preview_resource(value = nil)
- @preview_resource = false unless defined?(@preview_resource)
- @preview_resource = value unless value.nil?
- @preview_resource
- end
-
#
# Internal Resource Interface (for Chef)
#
@@ -1354,12 +1338,6 @@ class Chef
remove_canonical_dsl
end
- # If a resource is in preview mode, set allow_cookbook_override on all its
- # mappings by default.
- if preview_resource && !options.include?(:allow_cookbook_override)
- options[:allow_cookbook_override] = true
- end
-
if @chef_version_for_provides && !options.include?(:chef_version)
options[:chef_version] = @chef_version_for_provides
end
diff --git a/lib/chef/resource_inspector.rb b/lib/chef/resource_inspector.rb
index ac65e55e99..6b17e9b1cf 100644
--- a/lib/chef/resource_inspector.rb
+++ b/lib/chef/resource_inspector.rb
@@ -43,7 +43,6 @@ module ResourceInspector
data[:actions] = resource.allowed_actions
data[:examples] = resource.examples
data[:introduced] = resource.introduced
- data[:preview] = resource.preview_resource
properties = unless complete
resource.properties.reject { |_, k| k.options[:declared_in] == Chef::Resource || k.options[:skip_docs] }
diff --git a/spec/unit/node_map_spec.rb b/spec/unit/node_map_spec.rb
index 7c867857dc..2b38f8cea5 100644
--- a/spec/unit/node_map_spec.rb
+++ b/spec/unit/node_map_spec.rb
@@ -1,6 +1,6 @@
#
# Author:: Lamont Granquist (<lamont@chef.io>)
-# Copyright:: Copyright 2014-2018, Chef Software Inc.
+# Copyright:: Copyright 2014-2019, Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -145,14 +145,14 @@ describe Chef::NodeMap do
describe "deleting classes" do
it "deletes a class and removes the mapping completely" do
node_map.set(:thing, Bar)
- expect( node_map.delete_class(Bar) ).to include({ thing: [{ klass: Bar, cookbook_override: false, core_override: false, target_mode: nil }] })
+ expect( node_map.delete_class(Bar) ).to include({ thing: [{ klass: Bar, target_mode: nil }] })
expect( node_map.get(node, :thing) ).to eql(nil)
end
it "deletes a class and leaves the mapping that still has an entry" do
node_map.set(:thing, Bar)
node_map.set(:thing, Foo)
- expect( node_map.delete_class(Bar) ).to eql({ thing: [{ klass: Bar, cookbook_override: false, core_override: false, target_mode: nil }] })
+ expect( node_map.delete_class(Bar) ).to eql({ thing: [{ klass: Bar, target_mode: nil }] })
expect( node_map.get(node, :thing) ).to eql(Foo)
end
@@ -160,7 +160,7 @@ describe Chef::NodeMap do
node_map.set(:thing1, Bar)
node_map.set(:thing2, Bar)
node_map.set(:thing2, Foo)
- expect( node_map.delete_class(Bar) ).to eql({ thing1: [{ klass: Bar, cookbook_override: false, core_override: false, target_mode: nil }], thing2: [{ klass: Bar, cookbook_override: false, core_override: false, target_mode: nil }] })
+ expect( node_map.delete_class(Bar) ).to eql({ thing1: [{ klass: Bar, target_mode: nil }], thing2: [{ klass: Bar, target_mode: nil }] })
expect( node_map.get(node, :thing1) ).to eql(nil)
expect( node_map.get(node, :thing2) ).to eql(Foo)
end
@@ -247,7 +247,7 @@ describe Chef::NodeMap do
describe "locked mode" do
context "while unlocked" do
it "allows setting the same key twice" do
- expect(Chef).to_not receive(:deprecated)
+ expect(Chef::Log).to_not receive(:warn)
node_map.set(:foo, FooResource)
node_map.set(:foo, BarResource)
expect(node_map.get(node, :foo)).to eql(BarResource)
@@ -255,53 +255,20 @@ describe Chef::NodeMap do
end
context "while locked" do
- # Uncomment the commented `expect`s in 15.0.
- it "rejects setting the same key twice" do
- expect(Chef).to receive(:deprecated).with(:map_collision, /Resource foo/)
+ it "warns on setting the same key twice" do
+ expect(Chef::Log).to receive(:warn).with(/Resource foo/)
node_map.set(:foo, FooResource)
node_map.lock!
node_map.set(:foo, BarResource)
- # expect(node_map.get(node, :foo)).to eql(FooResource)
- end
-
- it "allows setting the same key twice when the first has allow_cookbook_override" do
- expect(Chef).to_not receive(:deprecated)
- node_map.set(:foo, FooResource, allow_cookbook_override: true)
- node_map.lock!
- node_map.set(:foo, BarResource)
- expect(node_map.get(node, :foo)).to eql(BarResource)
- end
-
- it "allows setting the same key twice when the first has allow_cookbook_override with a future version" do
- expect(Chef).to_not receive(:deprecated)
- node_map.set(:foo, FooResource, allow_cookbook_override: "< 100")
- node_map.lock!
- node_map.set(:foo, BarResource)
- expect(node_map.get(node, :foo)).to eql(BarResource)
- end
-
- it "rejects setting the same key twice when the first has allow_cookbook_override with a past version" do
- expect(Chef).to receive(:deprecated).with(:map_collision, /Resource foo/)
- node_map.set(:foo, FooResource, allow_cookbook_override: "< 1")
- node_map.lock!
- node_map.set(:foo, BarResource)
- # expect(node_map.get(node, :foo)).to eql(FooResource)
- end
-
- it "allows setting the same key twice when the second has __core_override__" do
- expect(Chef).to_not receive(:deprecated)
- node_map.set(:foo, FooResource)
- node_map.lock!
- node_map.set(:foo, BarResource, __core_override__: true)
expect(node_map.get(node, :foo)).to eql(BarResource)
end
- it "rejects setting the same key twice for a provider" do
- expect(Chef).to receive(:deprecated).with(:map_collision, /Provider foo/)
+ it "warns on setting the same key twice for a provider" do
+ expect(Chef::Log).to receive(:warn).with(/Provider foo/)
node_map.set(:foo, FooProvider)
node_map.lock!
node_map.set(:foo, BarProvider)
- # expect(node_map.get(node, :foo)).to eql(FooProvider)
+ expect(node_map.get(node, :foo)).to eql(BarProvider)
end
end
end
diff --git a/spec/unit/resource_spec.rb b/spec/unit/resource_spec.rb
index 3bd13b4c97..39753475ea 100644
--- a/spec/unit/resource_spec.rb
+++ b/spec/unit/resource_spec.rb
@@ -3,7 +3,7 @@
# Author:: Christopher Walters (<cw@chef.io>)
# Author:: Tim Hinderliter (<tim@chef.io>)
# Author:: Seth Chisamore (<schisamo@chef.io>)
-# Copyright:: Copyright 2008-2018, Chef Software Inc.
+# Copyright:: Copyright 2008-2019, Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -867,7 +867,7 @@ describe Chef::Resource do
snitch_var1 = snitch_var2 = 0
runner = Chef::Runner.new(run_context)
- Chef::Provider::SnakeOil.provides :cat, __core_override__: true
+ Chef::Provider::SnakeOil.provides :cat
resource1.only_if { snitch_var1 = 1 }
resource1.not_if { snitch_var2 = 2 }
@@ -1171,40 +1171,6 @@ describe Chef::Resource do
end
end
- describe ".preview_resource" do
- let(:klass) { Class.new(Chef::Resource) }
-
- before do
- allow(Chef::DSL::Resources).to receive(:add_resource_dsl).with(:test_resource)
- end
-
- it "defaults to false" do
- expect(klass.preview_resource).to eq false
- end
-
- it "can be set to true" do
- klass.preview_resource(true)
- expect(klass.preview_resource).to eq true
- end
-
- it "does not affect provides by default" do
- expect(Chef.resource_handler_map).to receive(:set).with(:test_resource, klass, { canonical: true })
- klass.resource_name(:test_resource)
- end
-
- it "adds allow_cookbook_override when true" do
- expect(Chef.resource_handler_map).to receive(:set).with(:test_resource, klass, { canonical: true, allow_cookbook_override: true })
- klass.preview_resource(true)
- klass.resource_name(:test_resource)
- end
-
- it "allows manually overriding back to false" do
- expect(Chef.resource_handler_map).to receive(:set).with(:test_resource, klass, { allow_cookbook_override: false })
- klass.preview_resource(true)
- klass.provides(:test_resource, allow_cookbook_override: false)
- end
- end
-
describe "tagged" do
let(:recipe) do
Chef::Recipe.new("hjk", "test", run_context)