class Chef::Provider::LWRPBase

Chef::Provider::LWRPBase

Base class from which LWRP providers inherit.

Public Class Methods

build_from_file(cookbook_name, filename, run_context) click to toggle source
# File lib/chef/provider/lwrp_base.rb, line 52
def build_from_file(cookbook_name, filename, run_context)
  if LWRPBase.loaded_lwrps[filename]
    Chef::Log.trace("LWRP provider #{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)

  # We load the class first to give it a chance to set its own name
  provider_class = Class.new(self)
  provider_class.provides resource_name.to_sym
  provider_class.class_from_file(filename)

  # Respect resource_name set inside the LWRP
  provider_class.instance_eval do
    define_singleton_method(:to_s) do
      "LWRP provider #{resource_name} from cookbook #{cookbook_name}"
    end
    define_singleton_method(:inspect) { to_s }
  end

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

  LWRPBase.loaded_lwrps[filename] = true

  provider_class
end

Protected Class Methods

loaded_lwrps() click to toggle source
# File lib/chef/provider/lwrp_base.rb, line 82
def loaded_lwrps
  @loaded_lwrps ||= {}
end

Public Instance Methods

load_current_resource() click to toggle source

no-op `load_current_resource`. Allows simple LWRP providers to work without defining this method explicitly (silences Chef::Exceptions::Override exception)

# File lib/chef/provider/lwrp_base.rb, line 45
def load_current_resource; end