@@ -10,11 +10,13 @@ module Puppet::ResourceApi
1010 # and absence of resources.
1111 class SimpleProvider
1212 def set ( context , changes )
13+ namevars = context . type . namevars
14+
1315 changes . each do |name , change |
1416 is = if context . type . feature? ( 'simple_get_filter' )
15- change . key? ( :is ) ? change [ :is ] : ( get ( context , [ name ] ) || [ ] ) . find { |r | r [ :name ] == name }
17+ change . key? ( :is ) ? change [ :is ] : ( get ( context , [ name ] ) || [ ] ) . find { |r | SimpleProvider . build_name ( namevars , r ) == name }
1618 else
17- change . key? ( :is ) ? change [ :is ] : ( get ( context ) || [ ] ) . find { |r | r [ :name ] == name }
19+ change . key? ( :is ) ? change [ :is ] : ( get ( context ) || [ ] ) . find { |r | SimpleProvider . build_name ( namevars , r ) == name }
1820 end
1921 context . type . check_schema ( is ) unless change . key? ( :is )
2022
@@ -25,10 +27,10 @@ def set(context, changes)
2527 is = SimpleProvider . create_absent ( :name , name ) if is . nil?
2628 should = SimpleProvider . create_absent ( :name , name ) if should . nil?
2729
28- name_hash = if context . type . namevars . length > 1
30+ name_hash = if namevars . length > 1
2931 # pass a name_hash containing the values of all namevars
3032 name_hash = { }
31- context . type . namevars . each do |namevar |
33+ namevars . each do |namevar |
3234 name_hash [ namevar ] = change [ :should ] [ namevar ]
3335 end
3436 name_hash
@@ -74,5 +76,14 @@ def self.create_absent(namevar, title)
7476 result [ :ensure ] = 'absent'
7577 result
7678 end
79+
80+ # @api private
81+ def self . build_name ( namevars , resource_hash )
82+ if namevars . size > 1
83+ Hash [ namevars . map { |attr | [ attr , resource_hash [ attr ] ] } ]
84+ else
85+ resource_hash [ namevars [ 0 ] ]
86+ end
87+ end
7788 end
7889end
0 commit comments