lib/puppet/resource_api/glue.rb in puppet-resource_api-1.3.0 vs lib/puppet/resource_api/glue.rb in puppet-resource_api-1.4.0

- old
+ new

@@ -1,33 +1,10 @@ require 'yaml' module Puppet; end # rubocop:disable Style/Documentation module Puppet::ResourceApi # A trivial class to provide the functionality required to push data through the existing type/provider parts of puppet - class TypeShim - attr_reader :values, :typename, :namevars, :attr_def - - def initialize(resource_hash, typename, namevars, attr_def) - # internalize and protect - needs to go deeper - @values = resource_hash.dup.freeze - - @typename = typename - @namevars = namevars - @attr_def = attr_def - @resource = ResourceShim.new(@values, @typename, @namevars, @attr_def) - end - - def to_resource - @resource - end - - def name - @resource.title - end - end - - # A trivial class to provide the functionality required to push data through the existing type/provider parts of puppet class ResourceShim attr_reader :values, :typename, :namevars, :attr_def def initialize(resource_hash, typename, namevars, attr_def) @values = resource_hash.dup.freeze # whatevs @@ -35,11 +12,11 @@ @namevars = namevars @attr_def = attr_def end def title - values[@namevars.first] + values[:title] || values[@namevars.first] end def prune_parameters(*_args) # puts "not pruning #{args.inspect}" if args.length > 0 self @@ -47,25 +24,25 @@ def to_manifest (["#{@typename} { #{Puppet::Parameter.format_value_for_display(title)}: "] + filtered_keys.map do |k| cs = ' ' ce = '' - if attr_def[k][:behaviour] && attr_def[k][:behaviour] == :read_only + if attr_def[k] && attr_def[k][:behaviour] && attr_def[k][:behaviour] == :read_only cs = '#' ce = ' # Read Only' end - "#{cs} #{k} => #{Puppet::Parameter.format_value_for_display(values[k])},#{ce}" - end + ['}']).join("\n") + "#{cs} #{k} => #{Puppet::Parameter.format_value_for_display(values[k])},#{ce}" unless values[k].nil? + end + ['}']).compact.join("\n") end # Convert our resource to yaml for Hiera purposes. def to_hierayaml attributes = Hash[filtered_keys.map { |k| [k.to_s, values[k]] }] YAML.dump('type' => { title => attributes }).split("\n").drop(2).join("\n") + "\n" end # attribute names that are not title or namevars def filtered_keys - values.keys.reject { |k| k == :title || attr_def[k][:behaviour] == :namevar && @namevars.size == 1 } + values.keys.reject { |k| k == :title || !attr_def[k] || (attr_def[k][:behaviour] == :namevar && @namevars.size == 1) } end end end