From dd93333a3fc0851a0b63ec5bf63f67ce82ea4a21 Mon Sep 17 00:00:00 2001 From: Lamont Granquist Date: Thu, 12 Apr 2018 18:01:38 -0700 Subject: add the resources() dsl method to providers Custom resource actions were picking this up via delegation to the wrapping resource, and that wiring was removed in 14, so that API then got dropped accidentally. This should fix that back up. It also consistently injects the resource APIs into resources and providers both now (and consistently across core resources and custom resources). Signed-off-by: Lamont Granquist --- lib/chef/dsl/declare_resource.rb | 24 +++++++++++++++++++++++- lib/chef/recipe.rb | 8 +------- lib/chef/resource.rb | 22 ++-------------------- 3 files changed, 26 insertions(+), 28 deletions(-) diff --git a/lib/chef/dsl/declare_resource.rb b/lib/chef/dsl/declare_resource.rb index 0d727b4861..dc95489d52 100644 --- a/lib/chef/dsl/declare_resource.rb +++ b/lib/chef/dsl/declare_resource.rb @@ -1,7 +1,7 @@ #-- # Author:: Adam Jacob () # Author:: Christopher Walters -# Copyright:: Copyright 2008-2017, Chef Software Inc. +# Copyright:: Copyright 2008-2018, Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -166,6 +166,27 @@ class Chef resource end + # Find existing resources by searching the list of existing resources. Possible + # forms are: + # + # find(:file => "foobar") + # find(:file => [ "foobar", "baz" ]) + # find("file[foobar]", "file[baz]") + # find("file[foobar,baz]") + # + # Calls `run_context.resource_collection.find(*args)` + # + # The is backcompat API, the use of find_resource, below, is encouraged. + # + # @return the matching resource, or an Array of matching resources. + # + # @raise ArgumentError if you feed it bad lookup information + # @raise RuntimeError if it can't find the resources you are looking for. + # + def resources(*args) + run_context.resource_collection.find(*args) + end + # Lookup a resource in the resource collection by name. If the resource is not # found this will raise Chef::Exceptions::ResourceNotFound. This API is identical to the # resources() call and while it is a synonym it is not intended to deprecate that call. @@ -292,6 +313,7 @@ class Chef enclosing_provider: is_a?(Chef::Provider) ? self : nil ).build(&resource_attrs_block) end + end end end diff --git a/lib/chef/recipe.rb b/lib/chef/recipe.rb index 967703b629..f00b211630 100644 --- a/lib/chef/recipe.rb +++ b/lib/chef/recipe.rb @@ -1,7 +1,7 @@ #-- # Author:: Adam Jacob () # Author:: Christopher Walters () -# Copyright:: Copyright 2008-2017, Chef Software Inc. +# Copyright:: Copyright 2008-2018, Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -66,12 +66,6 @@ class Chef run_context.node end - # Used by the DSL to look up resources when executing in the context of a - # recipe. - def resources(*args) - run_context.resource_collection.find(*args) - end - # This was moved to Chef::Node#tag, redirecting here for compatibility def tag(*tags) run_context.node.tag(*tags) diff --git a/lib/chef/resource.rb b/lib/chef/resource.rb index 46bc25b713..7cfb907795 100644 --- a/lib/chef/resource.rb +++ b/lib/chef/resource.rb @@ -23,6 +23,7 @@ require "chef/dsl/data_query" require "chef/dsl/registry_helper" require "chef/dsl/reboot_pending" require "chef/dsl/resources" +require "chef/dsl/declare_resource" require "chef/json_compat" require "chef/mixin/convert_to_class_name" require "chef/guard_interpreter/resource_guard_interpreter" @@ -51,6 +52,7 @@ class Chef # Generic User DSL (not resource-specific) # + include Chef::DSL::DeclareResource include Chef::DSL::DataQuery include Chef::DSL::RegistryHelper include Chef::DSL::RebootPending @@ -97,26 +99,6 @@ class Chef run_context && run_context.node end - # - # Find existing resources by searching the list of existing resources. Possible - # forms are: - # - # find(:file => "foobar") - # find(:file => [ "foobar", "baz" ]) - # find("file[foobar]", "file[baz]") - # find("file[foobar,baz]") - # - # Calls `run_context.resource_collection.find(*args)` - # - # @return the matching resource, or an Array of matching resources. - # - # @raise ArgumentError if you feed it bad lookup information - # @raise RuntimeError if it can't find the resources you are looking for. - # - def resources(*args) - run_context.resource_collection.find(*args) - end - # # Resource User Interface (for users) # -- cgit v1.2.1