From 4bfc4efd969b01843137a6c51591435d05c19c5f Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Mon, 10 Mar 2008 13:34:38 -0700 Subject: Modifying the way ensure is handled so that it supports having it be a parameter. This is only useful if you want a composite resource that just generates other resources and passes the value on. --- lib/puppet/metatype/evaluation.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/puppet/metatype/evaluation.rb b/lib/puppet/metatype/evaluation.rb index 36328c537..8d435333f 100644 --- a/lib/puppet/metatype/evaluation.rb +++ b/lib/puppet/metatype/evaluation.rb @@ -125,14 +125,19 @@ class Puppet::Type # the other properties matter. changes = [] ensureparam = @parameters[:ensure] - if @parameters.include?(:ensure) && !currentvalues.include?(ensureparam) + + # This allows resource types to have 'ensure' be a parameter, which allows them to + # just pass the parameter on to other generated resources. + ensureparam = nil unless ensureparam.is_a?(Puppet::Property) + if ensureparam && !currentvalues.include?(ensureparam) raise Puppet::DevError, "Parameter ensure defined but missing from current values" end - if @parameters.include?(:ensure) and ! ensureparam.insync?(currentvalues[ensureparam]) + + if ensureparam and ! ensureparam.insync?(currentvalues[ensureparam]) changes << Puppet::PropertyChange.new(ensureparam, currentvalues[ensureparam]) # Else, if the 'ensure' property is correctly absent, then do # nothing - elsif @parameters.include?(:ensure) and currentvalues[ensureparam] == :absent + elsif ensureparam and currentvalues[ensureparam] == :absent return [] else changes = properties().find_all { |property| -- cgit