Files

Class/Module Index [+]

Quicksearch

Chef::Resource::LWRPBase

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.

Constants

NULL_ARG

Public Class Methods

actions(*action_names) click to toggle source

Adds action_names to the list of valid actions for this resource.

# File lib/chef/resource/lwrp_base.rb, line 111
def self.actions(*action_names)
  if action_names.empty?
    defined?(@actions) ? @actions : from_superclass(:actions, []).dup
  else
    # BC-compat way for checking if actions have already been defined
    if defined?(@actions)
      @actions.push(*action_names)
    else
      @actions = action_names
    end
  end
end
attribute(attr_name, validation_opts={}) click to toggle source

Define an attribute on this resource, including optional validation parameters.

# File lib/chef/resource/lwrp_base.rb, line 77
def self.attribute(attr_name, validation_opts={})
  # Ruby 1.8 doesn't support default arguments to blocks, but we have to
  # use define_method with a block to capture +validation_opts+.
  # Workaround this by defining two methods :(
  class_eval(          def #{attr_name}(arg=nil)            _set_or_return_#{attr_name}(arg)          end, __FILE__, __LINE__)

  define_method("_set_or_return_#{attr_name.to_s}".to_sym) do |arg|
    set_or_return(attr_name.to_sym, arg, validation_opts)
  end
end
build_from_file(cookbook_name, filename, run_context) click to toggle source

Evaluates the LWRP resource file and instantiates a new Resource class.

# File lib/chef/resource/lwrp_base.rb, line 37
def self.build_from_file(cookbook_name, filename, run_context)
  rname = filename_to_qualified_string(cookbook_name, filename)

  # Add log entry if we override an existing lightweight resource.
  class_name = convert_to_class_name(rname)
  if Resource.strict_const_defined?(class_name)
    old_class = Resource.send(:remove_const, class_name)
    # CHEF-3432 -- Chef::Resource keeps a list of subclasses; need to
    # remove old ones from the list when replacing.
    resource_classes.delete(old_class)
    Chef::Log.info("#{class_name} lightweight resource already initialized -- overriding!")
  end

  resource_class = Class.new(self)

  resource_class.resource_name = rname
  resource_class.run_context = run_context
  resource_class.class_from_file(filename)

  Chef::Resource.const_set(class_name, resource_class)
  Chef::Log.debug("Loaded contents of #{filename} into a resource named #{rname} defined in Chef::Resource::#{class_name}")

  resource_class
end
default_action(action_name=NULL_ARG) click to toggle source

Sets the default action

# File lib/chef/resource/lwrp_base.rb, line 93
def self.default_action(action_name=NULL_ARG)
  unless action_name.equal?(NULL_ARG)
    @actions ||= []
    if action_name.is_a?(Array)
      action = action_name.map { |arg| arg.to_sym }
      @actions = actions | action
      @default_action = action
    else
      action = action_name.to_sym
      @actions.push(action) unless @actions.include?(action)
      @default_action = action
    end
  end

  @default_action ||= from_superclass(:default_action)
end
lazy(&block) click to toggle source
# File lib/chef/resource/lwrp_base.rb, line 144
def self.lazy(&block)
  DelayedEvaluator.new(&block)
end
new(name, run_context=nil) click to toggle source

Default initializer. Sets the default action and allowed actions.

# File lib/chef/resource/lwrp_base.rb, line 160
def initialize(name, run_context=nil)
  super(name, run_context)

  # Raise an exception if the resource_name was not defined
  if self.class.resource_name.nil?
    raise Chef::Exceptions::InvalidResourceSpecification,
      "You must specify `resource_name'!"
  end

  @resource_name = self.class.resource_name.to_sym
  @action = self.class.default_action
  allowed_actions.push(self.class.actions).flatten!
end
node() click to toggle source
# File lib/chef/resource/lwrp_base.rb, line 140
def self.node
  run_context.node
end
resource_name(arg = NULL_ARG) click to toggle source

Set the resource name for this LWRP

# File lib/chef/resource/lwrp_base.rb, line 63
def self.resource_name(arg = NULL_ARG)
  if arg.equal?(NULL_ARG)
    @resource_name
  else
    @resource_name = arg
  end
end
Also aliased as: resource_name=
resource_name=(arg = NULL_ARG) click to toggle source
Alias for: resource_name
run_context() click to toggle source
# File lib/chef/resource/lwrp_base.rb, line 136
def self.run_context
  @run_context
end
run_context=(run_context) click to toggle source

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

# File lib/chef/resource/lwrp_base.rb, line 132
def self.run_context=(run_context)
  @run_context = run_context
end
valid_actions(*args) click to toggle source

@deprecated

# File lib/chef/resource/lwrp_base.rb, line 125
def self.valid_actions(*args)
  Chef::Log.warn("`valid_actions' is deprecated, please use actions `instead'!")
  actions(*args)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.