summaryrefslogtreecommitdiff
path: root/lib/chef/resource.rb
diff options
context:
space:
mode:
authorJohn Keiser <john@johnkeiser.com>2015-06-05 14:47:18 -0700
committerJohn Keiser <john@johnkeiser.com>2015-06-08 09:01:55 -0700
commit3dcaddb86dc85a4cf730e675232ce83f97d5726b (patch)
tree950b87bae166f85b45edf7552dee6891153e8125 /lib/chef/resource.rb
parentc65de79dbd662d895c8a10ef496d7eb9c69376c2 (diff)
downloadchef-3dcaddb86dc85a4cf730e675232ce83f97d5726b.tar.gz
Make sure resource_name :x only removes automatic provides from that class
Diffstat (limited to 'lib/chef/resource.rb')
-rw-r--r--lib/chef/resource.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/chef/resource.rb b/lib/chef/resource.rb
index 3a9af0bcca..ed66bab916 100644
--- a/lib/chef/resource.rb
+++ b/lib/chef/resource.rb
@@ -911,10 +911,11 @@ class Chef
def self.resource_name(name=NULL_ARG)
# Setter
if name != NULL_ARG
+ remove_canonical_dsl
+
# Set the resource_name and call provides
if name
name = name.to_sym
- remove_canonical_dsl
# If our class is not already providing this name, provide it.
if !Chef::ResourceResolver.list(name).include?(self)
provides name, canonical: true
@@ -1327,10 +1328,18 @@ class Chef
#
resource_subclass = class_eval <<-EOM, __FILE__, __LINE__+1
class Chef::Resource::#{class_name} < resource_class
+ resource_name nil # we do not actually provide anything
def initialize(*args, &block)
Chef::Log.deprecation("Using an LWRP by its name (#{class_name}) directly is no longer supported in Chef 13 and will be removed. Use Chef::Resource.resource_for_node(node, name) instead.")
super
end
+ def self.resource_name(*args)
+ if args.empty?
+ @resource_name ||= superclass.resource_name
+ else
+ super
+ end
+ end
self
end
EOM
@@ -1379,7 +1388,7 @@ class Chef
def self.remove_canonical_dsl
if @resource_name
- remaining = Chef.resource_priority_map.delete_canonical(@resource_name)
+ remaining = Chef.resource_priority_map.delete_canonical(@resource_name, self)
if !remaining
Chef::DSL::Resources.remove_resource_dsl(@resource_name)
end