Class: Puppet::ResourceApi::SimpleProvider
- Inherits:
-
Object
- Object
- Puppet::ResourceApi::SimpleProvider
- 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 name as its namevar, and ensure in the conventional way to signal presence and absence of resources.
Instance Method Summary collapse
- #create(_context, _name, _should) ⇒ Object
- #delete(_context, _name) ⇒ Object
- #set(context, changes) ⇒ Object
- #update(_context, _name, _should) ⇒ Object
Instance Method Details
#create(_context, _name, _should) ⇒ Object
41 42 43 |
# File 'lib/puppet/resource_api/simple_provider.rb', line 41 def create(_context, _name, _should) raise "#{self.class} has not implemented `create`" end |
#delete(_context, _name) ⇒ Object
49 50 51 |
# File 'lib/puppet/resource_api/simple_provider.rb', line 49 def delete(_context, _name) raise "#{self.class} has not implemented `delete`" end |
#set(context, changes) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/puppet/resource_api/simple_provider.rb', line 9 def set(context, changes) changes.each do |name, change| is = if context.type.feature?('simple_get_filter') change.key?(:is) ? change[:is] : (get(context, [name]) || []).find { |r| r[:name] == name } else change.key?(:is) ? change[:is] : (get(context) || []).find { |r| r[:name] == name } end context.type.check_schema(is) unless change.key?(:is) should = change[:should] raise 'SimpleProvider cannot be used with a Type that is not ensurable' unless context.type.ensurable? 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
45 46 47 |
# File 'lib/puppet/resource_api/simple_provider.rb', line 45 def update(_context, _name, _should) raise "#{self.class} has not implemented `update`" end |