Module: Poise::Helpers::Inversion::Resource

Defined in:
lib/poise/helpers/inversion.rb

Overview

Resource implementation for Poise::Helpers::Inversion.

See Also:

Since:

  • 2.0.0

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create_inversion_options_resource!(name)

This method returns an undefined value.

Create resource and provider classes for an options resource.

Parameters:

  • name (String, Symbol)

    DSL name for the base resource.

Since:

  • 2.0.0



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/poise/helpers/inversion.rb', line 111

def create_inversion_options_resource!(name)
  enclosing_class = self
  options_resource_name = :"#{name}_options"
  # Create the resource class.
  @inversion_options_resource_class = Class.new(Chef::Resource) do
    include Poise::Helpers::Inversion::OptionsResource
    define_singleton_method(:name) do
      "#{enclosing_class}::OptionsResource"
    end
    provides(options_resource_name)
    inversion_resource(name)
  end
  # Create the provider class.
  @inversion_options_provider_class = Class.new(Chef::Provider) do
    include Poise::Helpers::Inversion::OptionsProvider
    define_singleton_method(:name) do
      "#{enclosing_class}::OptionsProvider"
    end
    provides(options_resource_name)
  end
end

.inversion_options_provider_classObject

Options provider class.

Since:

  • 2.0.0



92
93
94
# File 'lib/poise/helpers/inversion.rb', line 92

def inversion_options_provider_class
  @inversion_options_provider_class
end

.inversion_options_resourceBoolean .inversion_options_resource(val) ⇒ Boolean

Overloads:

  • .inversion_options_resourceBoolean

    Return the options resource mode for this class.

    Returns:

    • (Boolean)
  • .inversion_options_resource(val) ⇒ Boolean

    Set the options resource mode for this class. Set to true to automatically create an options resource. Defaults to true.

    Parameters:

    • val (Boolean)

      Enable/disable setting.

    Returns:

    • (Boolean)

Since:

  • 2.0.0



102
103
104
105
# File 'lib/poise/helpers/inversion.rb', line 102

def inversion_options_resource(val=nil)
  @poise_inversion_options_resource = val unless val.nil?
  @poise_inversion_options_resource
end

.inversion_options_resource_classObject

Options resource class.

Since:

  • 2.0.0



90
91
92
# File 'lib/poise/helpers/inversion.rb', line 90

def inversion_options_resource_class
  @inversion_options_resource_class
end

.provides(name) ⇒ Object

Wrap #provides() to create an options resource if desired.

return [void]

Parameters:

  • name (Symbol)

    Resource name

Since:

  • 2.0.0



137
138
139
140
# File 'lib/poise/helpers/inversion.rb', line 137

def provides(name)
  create_inversion_options_resource!(name) if inversion_options_resource
  super if defined?(super)
end

Instance Method Details

#options(val = nil) ⇒ Hash #options(provider, val = nil) ⇒ Hash

Overloads:

  • #options(val = nil) ⇒ Hash

    Set or return provider options for all providers.

    Examples:

    my_resource 'thing_one' do
      options depends: 'thing_two'
    end

    Parameters:

    • val (Hash) (defaults to: nil)

      Provider options to set.

    Returns:

    • (Hash)
  • #options(provider, val = nil) ⇒ Hash

    Set or return provider options for a specific provider.

    Examples:

    my_resource 'thing_one' do
      options :my_provider, depends: 'thing_two'
    end

    Parameters:

    • provider (Symbol)

      Provider to set for.

    • val (Hash) (defaults to: nil)

      Provider options to set.

    Returns:

    • (Hash)

Since:

  • 2.0.0



59
60
61
62
63
64
65
66
67
# File 'lib/poise/helpers/inversion.rb', line 59

def options(provider=nil, val=nil)
  key = :options
  if !val && provider.is_a?(Hash)
    val = provider
  elsif provider
    key = :"options_#{provider}"
  end
  set_or_return(key, val ? Mash.new(val) : val, kind_of: Hash, default: lazy { Mash.new })
end

#provider(val = nil) ⇒ Class

Allow setting the provider directly using the same names as the attribute settings.

Examples:

my_resource 'thing_one' do
  provider :my_provider
end

Parameters:

  • val (String, Symbol, Class, nil) (defaults to: nil)

    Value to set the provider to.

Returns:

  • (Class)

Since:

  • 2.0.0



78
79
80
81
82
83
84
85
# File 'lib/poise/helpers/inversion.rb', line 78

def provider(val=nil)
  if val && !val.is_a?(Class)
    provider_class = Poise::Helpers::Inversion.provider_for(resource_name, node, val)
    Chef::Log.debug("[#{self}] Checking for an inversion provider for #{val}: #{provider_class && provider_class.name}")
    val = provider_class if provider_class
  end
  super
end