Class: Chef::Resource::ActionClass

Inherits:
Provider
  • Object
show all
Includes:
DSL::Recipe
Defined in:
lib/chef/resource/action_class.rb

Class Attribute Summary collapse

Attributes inherited from Provider

#action, #current_resource, #logger, #new_resource, #recipe_name, #run_context

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DSL::Recipe

#exec, #have_resource_class_for?, #resource_class_for

Methods included from Mixin::LazyModuleInclude

#descendants, #include, #included

Methods included from DSL::Definitions

add_definition, #evaluate_resource_definition, #has_resource_definition?

Methods included from DSL::Resources

add_resource_dsl, remove_resource_dsl

Methods included from DSL::Cheffish

load_cheffish

Methods included from DSL::RebootPending

#reboot_pending?

Methods included from DSL::PlatformIntrospection

#older_than_win_2012_or_8?, #platform?, #platform_family?, #value_for_platform, #value_for_platform_family

Methods included from DSL::RegistryHelper

#registry_data_exists?, #registry_get_subkeys, #registry_get_values, #registry_has_subkeys?, #registry_key_exists?, #registry_value_exists?

Methods included from DSL::IncludeRecipe

#include_recipe, #load_recipe

Methods included from Mixin::NotifyingBlock

#notifying_block, #subcontext_block

Methods included from DSL::DeclareResource

#build_resource, #declare_resource, #delete_resource, #delete_resource!, #edit_resource, #edit_resource!, #find_resource, #find_resource!, #resources, #with_run_context

Methods included from Mixin::ShellOut

apply_default_env, maybe_add_timeout, #shell_out, #shell_out!

Methods included from Mixin::PowershellOut

#powershell_out, #powershell_out!

Methods included from Mixin::WindowsArchitectureHelper

#assert_valid_windows_architecture!, #disable_wow64_file_redirection, #forced_32bit_override_required?, #is_i386_process_on_x86_64_windows?, #node_supports_windows_architecture?, #node_windows_architecture, #restore_wow64_file_redirection, #valid_windows_architecture?, #with_os_architecture, #wow64_architecture_override_required?, #wow64_directory

Methods included from Mixin::PowershellExec

#powershell_exec

Methods included from DSL::Powershell

#ps_credential

Methods included from DSL::DataQuery

#data_bag, #data_bag_item, #search, #tagged?

Methods included from EncryptedDataBagItem::CheckEncrypted

#encrypted?

Methods inherited from Provider

action, #action_nothing, #check_resource_semantics!, #cleanup_after_converge, #compile_and_converge_action, #converge_by, #converge_if_changed, #cookbook_name, #define_resource_requirements, #description, #events, include_resource_dsl_module, #initialize, #introduced, #node, #process_resource_requirements, provides, provides?, #requirements, #resource_collection, #resource_updated?, #run_action, #set_updated_status, supports?, use_inline_resources, #whyrun_mode?, #whyrun_supported?

Methods included from Mixin::Provides

#provided_as, #provides, #provides?

Methods included from Mixin::DescendantsTracker

#descendants, descendants, direct_descendants, #direct_descendants, find_descendants_by_name, #find_descendants_by_name, #inherited, store_inherited

Constructor Details

This class inherits a constructor from Chef::Provider

Class Attribute Details

.resource_classClass

The Chef::Resource class this ActionClass was declared against.

Returns:

  • (Class)

    The Chef::Resource class this ActionClass was declared against.



78
79
80
# File 'lib/chef/resource/action_class.rb', line 78

def resource_class
  @resource_class
end

Class Method Details

.include_resource_dsl?Boolean

@todo: remove in Chef-15

Returns:

  • (Boolean)


68
69
70
# File 'lib/chef/resource/action_class.rb', line 68

def self.include_resource_dsl?
  true
end

.inspectObject



85
86
87
# File 'lib/chef/resource/action_class.rb', line 85

def self.inspect
  to_s
end

.to_sObject



81
82
83
# File 'lib/chef/resource/action_class.rb', line 81

def self.to_s
  "#{resource_class} action provider"
end

Instance Method Details

#load_current_resourceObject

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



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
62
63
64
65
# File 'lib/chef/resource/action_class.rb', line 35

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

#to_sObject



28
29
30
# File 'lib/chef/resource/action_class.rb', line 28

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