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
52 53 54 |
# File 'lib/puppet/resource_api/simple_provider.rb', line 52 def create(_context, _name, _should) raise "#{self.class} has not implemented `create`" end |
#delete(_context, _name) ⇒ Object
60 61 62 |
# File 'lib/puppet/resource_api/simple_provider.rb', line 60 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 40 41 42 43 44 45 46 47 48 49 50 |
# 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? name_hash = if context.type.namevars.length > 1 # pass a name_hash containing the values of all namevars name_hash = { title: name } context.type.namevars.each do |namevar| name_hash[namevar] = change[:should][namevar] end name_hash else name end if is[:ensure].to_s == 'absent' && should[:ensure].to_s == 'present' context.creating(name) do create(context, name_hash, should) end elsif is[:ensure].to_s == 'present' && should[:ensure].to_s == 'present' context.updating(name) do update(context, name_hash, should) end elsif is[:ensure].to_s == 'present' && should[:ensure].to_s == 'absent' context.deleting(name) do delete(context, name_hash) end end end end |
#update(_context, _name, _should) ⇒ Object
56 57 58 |
# File 'lib/puppet/resource_api/simple_provider.rb', line 56 def update(_context, _name, _should) raise "#{self.class} has not implemented `update`" end |