Method: Puppet::Type.hash2resource

Defined in:
lib/puppet/type.rb

.hash2resource(hash) ⇒ Puppet::Resource

TODO:

as opposed to a complex hash? Other raised exceptions?

Converts a simple hash into a Resource instance.

Parameters:

  • hash (Hash{Symbol, String => Object})

    resource attribute to value map to initialize the created resource from

Returns:

Raises:



1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
# File 'lib/puppet/type.rb', line 1202

def self.hash2resource(hash)
  hash = hash.inject({}) { |result, ary| result[ary[0].to_sym] = ary[1]; result }

  title = hash.delete(:title)
  title ||= hash[:name]
  title ||= hash[key_attributes.first] if key_attributes.length == 1

  raise Puppet::Error, "Title or name must be provided" unless title

  # Now create our resource.
  resource = Puppet::Resource.new(self, title)
  resource.catalog = hash.delete(:catalog)

  if sensitive = hash.delete(:sensitive_parameters)
    resource.sensitive_parameters = sensitive
  end

  hash.each do |param, value|
    resource[param] = value
  end
  resource
end