Class: Chef::Resource::LWRPBase

Inherits:
Chef::Resource show all
Extended by:
Mixin::ConvertToClassName, Mixin::FromFile
Defined in:
lib/chef/resource/lwrp_base.rb

Overview

Chef::Resource::LWRPBase

Base class for LWRP resources. Adds DSL sugar on top of Chef::Resource, so attributes, default action, etc. can be defined with pleasing syntax.

Constant Summary

Constants inherited from Chef::Resource

FORBIDDEN_IVARS, HIDDEN_IVARS

Class Attribute Summary collapse

Attributes included from Mixin::FromFile

#source_file

Attributes inherited from Chef::Resource

#allowed_actions, #cookbook_name, #declared_type, #default_guard_interpreter, #elapsed_time, #enclosing_provider, #logger, #params, #recipe_name, #resource_initializing, #run_context, #source_line, #updated

Class Method Summary collapse

Methods included from Mixin::FromFile

class_from_file, from_file

Methods included from Mixin::ConvertToClassName

constantize, convert_to_class_name, convert_to_snake_case, filename_to_qualified_string, normalize_snake_case_name, snake_case_basename

Methods inherited from Chef::Resource

#action, action, #action=, action_class, #after_created, allowed_actions, allowed_actions=, #as_json, #before_notifications, chef_version_for_provides, #cookbook_version, #current_value, #current_value_does_not_exist!, #custom_exception_message, custom_resource?, #customize_exception, declare_action_class, #declared_key, default_action, default_action=, default_description, #defined_at, #delayed_action, #delayed_notifications, deprecated, description, #events, examples, from_hash, from_json, #guard_interpreter, #identity, identity_attr, identity_property, #ignore_failure, #immediate_notifications, inherited, #initialize, #inspect, introduced, is_custom_resource!, json_create, load_current_value, #load_from, #lookup_provider_constant, #method_missing, #name, #node, #not_if, #notifies, #notifies_before, #notifies_delayed, #notifies_immediately, #only_if, preview_resource, #provider, #provider=, #provider_for_action, provides, provides?, remove_canonical_dsl, #resolve_notification_references, resource_for_node, resource_matching_short_name, #resource_name, resource_name, resource_name=, #retries, #retry_delay, #run_action, #sensitive, #should_skip?, skip_docs, sorted_descendants, #source_line_file, #source_line_number, state_attrs, #state_for_resource_reporter, #subscribes, #to_h, #to_json, #to_s, #to_text, #updated?, #updated_by_last_action, #updated_by_last_action?, use_automatic_resource_name, #validate_action, #validate_resource_spec!, #value_to_text

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

Methods included from Mixin::Deprecation

#deprecated_attr, #deprecated_attr_reader, #deprecated_attr_writer, #deprecated_ivar

Methods included from Mixin::Properties

included, #property_description, #property_is_set?, #reset_property

Methods included from Mixin::ParamsValidate

#lazy, #set_or_return, #validate

Methods included from Mixin::ShellOut

#a_to_s, apply_default_env, #clean_array, maybe_add_timeout, #shell_out, #shell_out!, #shell_out_compact, #shell_out_compact!, #shell_out_compact_timeout, #shell_out_compact_timeout!, #shell_out_with_systems_locale, #shell_out_with_systems_locale!

Methods included from Mixin::PathSanity

#enforce_path_sanity, #sanitized_path

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::PlatformIntrospection

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

Methods included from DSL::RebootPending

#reboot_pending?

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::DataQuery

#data_bag, #data_bag_item, #search

Methods included from EncryptedDataBagItem::CheckEncrypted

#encrypted?

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

Constructor Details

This class inherits a constructor from Chef::Resource

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Chef::Resource

Class Attribute Details

.run_contextObject

Set the run context on the class. Used to provide access to the node during class definition.



97
98
99
# File 'lib/chef/resource/lwrp_base.rb', line 97

def run_context
  @run_context
end

Class Method Details

.actions(*action_names) ⇒ Object

Adds action_names to the list of valid actions for this resource. Does not include superclass's action list when appending.



79
80
81
82
83
84
85
86
# File 'lib/chef/resource/lwrp_base.rb', line 79

def actions(*action_names)
  action_names = action_names.flatten
  if !action_names.empty? && !@allowed_actions
    self.allowed_actions = ([ :nothing ] + action_names).uniq
  else
    allowed_actions(*action_names)
  end
end

.build_from_file(cookbook_name, filename, run_context) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/chef/resource/lwrp_base.rb', line 44

def build_from_file(cookbook_name, filename, run_context)
  if LWRPBase.loaded_lwrps[filename]
    Chef::Log.trace("Custom resource #{filename} from cookbook #{cookbook_name} has already been loaded!  Skipping the reload.")
    return loaded_lwrps[filename]
  end

  resource_name = filename_to_qualified_string(cookbook_name, filename)

  resource_class = Class.new(self)
  resource_class.run_context = run_context
  resource_class.class_from_file(filename)

  # Make a useful string for the class (rather than <Class:312894723894>)
  resource_class.instance_eval do
    define_singleton_method(:to_s) do
      "Custom resource #{resource_name} from cookbook #{cookbook_name}"
    end
    define_singleton_method(:inspect) { to_s }
  end

  Chef::Log.trace("Loaded contents of #{filename} into resource #{resource_name} (#{resource_class})")

  LWRPBase.loaded_lwrps[filename] = true

  # wire up the default resource name after the class is parsed only if we haven't declared one.
  # (this ordering is important for MapCollision deprecation warnings)
  resource_class.resource_name resource_name.to_sym if resource_class.resource_name.nil?

  resource_class
end

.nodeObject



99
100
101
# File 'lib/chef/resource/lwrp_base.rb', line 99

def node
  run_context ? run_context.node : nil
end

.valid_actions(*args) ⇒ Object

Deprecated.


90
91
92
93
# File 'lib/chef/resource/lwrp_base.rb', line 90

def valid_actions(*args)
  Chef::Log.warn("`valid_actions' is deprecated, please use allowed_actions `instead'!")
  allowed_actions(*args)
end