Base class from which LWRP providers inherit.
DSL for defining a provider's actions.
# File lib/chef/provider/lwrp_base.rb, line 136 def self.action(name, &block) define_method("action_#{name}") do instance_eval(&block) end end
# File lib/chef/provider/lwrp_base.rb, line 83 def self.build_from_file(cookbook_name, filename, run_context) provider_name = filename_to_qualified_string(cookbook_name, filename) # Add log entry if we override an existing light-weight provider. class_name = convert_to_class_name(provider_name) if Chef::Provider.const_defined?(class_name) Chef::Log.info("#{class_name} light-weight provider already initialized -- overriding!") end provider_class = Class.new(self) provider_class.class_from_file(filename) class_name = convert_to_class_name(provider_name) Chef::Provider.const_set(class_name, provider_class) Chef::Log.debug("Loaded contents of #{filename} into a provider named #{provider_name} defined in Chef::Provider::#{class_name}") provider_class end
Enables inline evaluation of resources in provider actions.
Without this option, any resources declared inside the LWRP are added to the resource collection after the current position at the time the action is executed. Because they are added to the primary resource collection for the chef run, they can notify other resources outside the LWRP, and potentially be notified by resources outside the LWRP (but this is complicated by the fact that they don't exist until the provider executes). In this mode, it is impossible to correctly set the updated_by_last_action flag on the parent LWRP resource, since it executes and returns before its component resources are run.
With this option enabled, each action creates a temporary run_context with its own resource collection, evaluates the action's code in that context, and then converges the resources created. If any resources were updated, then this provider's new_resource will be marked updated.
In this mode, resources created within the LWRP cannot interact with external resources via notifies, though notifications to other resources within the LWRP will work. Delayed notifications are executed at the conclusion of the provider's action, not at the end of the main chef run.
This mode of evaluation is experimental, but is believed to be a better set of tradeoffs than the append-after mode, so it will likely become the default in a future major release of Chef.
# File lib/chef/provider/lwrp_base.rb, line 130 def self.use_inline_resources extend InlineResources::ClassMethods include InlineResources end
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 145 def load_current_resource end
Generated with the Darkfish Rdoc Generator 2.