Class: Puppet::ResourceApi::SimpleProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/resource_api/simple_provider.rb

Overview

This class provides a default implementation for set(), when your resource does not benefit from batching. Instead of processing changes yourself, the ‘create`, `update`, and `delete` functions, are called for you, with proper logging already set up. Note that your type needs to use `ensure` in the conventional way to signal presence and absence of resources.

Instance Method Summary collapse

Instance Method Details

#create(_context, _name, _should) ⇒ Object



31
32
33
# File 'lib/puppet/resource_api/simple_provider.rb', line 31

def create(_context, _name, _should)
  raise "#{self.class} has not implemented `create`"
end

#delete(_context, _name) ⇒ Object



39
40
41
# File 'lib/puppet/resource_api/simple_provider.rb', line 39

def delete(_context, _name)
  raise "#{self.class} has not implemented `delete`"
end

#set(context, changes) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/puppet/resource_api/simple_provider.rb', line 7

def set(context, changes)
  changes.each do |name, change|
    is = change.key?(:is) ? change[:is] : (get(context) || []).find { |key| key[:id] == name }
    should = change[:should]

    is = { name: name, ensure: 'absent' } if is.nil?
    should = { name: name, ensure: 'absent' } if should.nil?

    if is[:ensure].to_s == 'absent' && should[:ensure].to_s == 'present'
      context.creating(name) do
        create(context, name, should)
      end
    elsif is[:ensure].to_s == 'present' && should[:ensure].to_s == 'present'
      context.updating(name) do
        update(context, name, should)
      end
    elsif is[:ensure].to_s == 'present' && should[:ensure].to_s == 'absent'
      context.deleting(name) do
        delete(context, name)
      end
    end
  end
end

#update(_context, _name, _should) ⇒ Object



35
36
37
# File 'lib/puppet/resource_api/simple_provider.rb', line 35

def update(_context, _name, _should)
  raise "#{self.class} has not implemented `update`"
end