diff options
Diffstat (limited to 'lib/puppet/metatype')
-rw-r--r-- | lib/puppet/metatype/evaluation.rb | 16 | ||||
-rw-r--r-- | lib/puppet/metatype/providers.rb | 11 |
2 files changed, 15 insertions, 12 deletions
diff --git a/lib/puppet/metatype/evaluation.rb b/lib/puppet/metatype/evaluation.rb index 36328c537..ff1eddb55 100644 --- a/lib/puppet/metatype/evaluation.rb +++ b/lib/puppet/metatype/evaluation.rb @@ -4,6 +4,11 @@ class Puppet::Type # This returns any changes resulting from testing, thus 'collect' rather # than 'each'. def evaluate + if self.provider.is_a?(Puppet::Provider) + unless provider.class.suitable? + raise Puppet::Error, "Provider %s is not functional on this platform" % provider.class.name + end + end #Puppet.err "Evaluating %s" % self.path.join(":") unless defined? @evalcount self.err "No evalcount defined on '%s' of type '%s'" % @@ -125,14 +130,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| diff --git a/lib/puppet/metatype/providers.rb b/lib/puppet/metatype/providers.rb index c302d9928..6308f7e54 100644 --- a/lib/puppet/metatype/providers.rb +++ b/lib/puppet/metatype/providers.rb @@ -188,15 +188,8 @@ class Puppet::Type provider_class = provider_class.class.name end - if provider = @resource.class.provider(provider_class) - unless provider.suitable? - raise ArgumentError, - "Provider '%s' is not functional on this platform" % - [provider_class] - end - else - raise ArgumentError, "Invalid %s provider '%s'" % - [@resource.class.name, provider_class] + unless provider = @resource.class.provider(provider_class) + raise ArgumentError, "Invalid %s provider '%s'" % [@resource.class.name, provider_class] end end |