Module: AugeasProviders::Type

Defined in:
lib/augeasproviders/type.rb

Overview

Utilities to help write types for Puppet with Augeas-based providers.

To use, include in the type:

Puppet::Type.newtype(:example) do
  extend AugeasProviders::Type
  # [..]
end

Instance Method Summary (collapse)

Instance Method Details

- (Object) positionable { ... }

Implements ensurable with an additional value of positioned.

When set to positioned, the type will call provider.in_position? to check if the resource is currently in the correct position in the file. If it isn't, the resource will be destroyed and recreated - assuming the provider then creates it in the correct position.

Yields:

  • additional block to execute within ensurable



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/augeasproviders/type.rb', line 25

def positionable(&block)
  ensurable do
    defaultvalues
    block if block_given?

    newvalue(:positioned) do
      current = self.retrieve
      if current == :absent
        provider.create
      elsif !provider.in_position?
        provider.destroy
        provider.create
      end
    end

    def insync?(is)
      return true if should == :positioned and is == :present and provider.in_position?
      super
    end
  end
end