diff options
-rw-r--r-- | lib/puppet/provider/package.rb | 31 | ||||
-rw-r--r-- | lib/puppet/type/package.rb | 18 |
2 files changed, 40 insertions, 9 deletions
diff --git a/lib/puppet/provider/package.rb b/lib/puppet/provider/package.rb new file mode 100644 index 000000000..24293e235 --- /dev/null +++ b/lib/puppet/provider/package.rb @@ -0,0 +1,31 @@ +# Created by Luke A. Kanies on 2007-06-05. +# Copyright (c) 2007. All rights reserved. + +class Puppet::Provider::Package < Puppet::Provider + # Prefetch our package list, yo. + def self.prefetch(packages) + instances.each do |prov| + if pkg = packages[prov.name] + pkg.provider = prov + end + end + end + + # Clear out the cached values. + def flush + @property_hash.clear + end + + # Look up the current status. + def properties + if @property_hash.empty? + @property_hash = query || {:ensure => :absent} + if @property_hash.empty? + @property_hash[:ensure] = :absent + end + end + @property_hash.dup + end +end + +# $Id$ diff --git a/lib/puppet/type/package.rb b/lib/puppet/type/package.rb index 38b5b1443..8072361a9 100644 --- a/lib/puppet/type/package.rb +++ b/lib/puppet/type/package.rb @@ -390,25 +390,25 @@ module Puppet # either through the language, in which case the hash's values should # be set in 'should', or through comparing against the system, in which # case the hash's values should be set in 'is' - def initialize(hash) + def initialize(params) self.initvars - type = nil + provider = nil [:provider, "use"].each { |label| - if hash.include?(label) - type = hash[label] - hash.delete(label) + if params.include?(label) + provider = params[label] + params.delete(label) end } - if type - self[:provider] = type + if provider + self[:provider] = provider else self.setdefaults(:provider) end - super + super(params) unless @parameters.include?(:provider) - raise Puppet::DevError, "No package type set" + raise Puppet::DevError, "No package provider set" end end |