# # Author:: John Keiser ("} action #{action ? action.inspect : ""}" end # # If load_current_value! is defined on the resource, use that. # def load_current_resource if new_resource.respond_to?(:load_current_value!) # dup the resource and then reset desired-state properties. current_resource = new_resource.dup # We clear desired state in the copy, because it is supposed to be actual state. # We keep identity properties and non-desired-state, which are assumed to be # "control" values like `recurse: true` current_resource.class.properties.each_value do |property| if property.desired_state? && !property.identity? && !property.name_property? property.reset(current_resource) end end # Call the actual load_current_value! method. If it raises # CurrentValueDoesNotExist, set current_resource to `nil`. begin # If the user specifies load_current_value do |desired_resource|, we # pass in the desired resource as well as the current one. if current_resource.method(:load_current_value!).arity > 0 current_resource.load_current_value!(new_resource) else current_resource.load_current_value! end rescue Chef::Exceptions::CurrentValueDoesNotExist current_resource = nil end end @current_resource = current_resource end # XXX: remove in Chef-14 def self.include_resource_dsl? true end class << self # # The Chef::Resource class this ActionClass was declared against. # # @return [Class] The Chef::Resource class this ActionClass was declared against. # attr_accessor :resource_class end def self.to_s "#{resource_class} action provider" end def self.inspect to_s end end end end