Module: Chef::Resource::ActionClass

Defined in:
lib/chef/resource/action_class.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(other) ⇒ Object



63
64
65
66
67
# File 'lib/chef/resource/action_class.rb', line 63

def self.included(other)
  other.extend(ClassMethods)
  other.use_inline_resources
  other.include_resource_dsl true
end

Instance Method Details

#load_current_resourceObject

If load_current_value! is defined on the resource, use that.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/chef/resource/action_class.rb', line 31

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 do |name, 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

#to_sObject



24
25
26
# File 'lib/chef/resource/action_class.rb', line 24

def to_s
  "#{new_resource || "<no resource>"} action #{action ? action.inspect : "<no action>"}"
end