summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/provider/package.rb31
-rw-r--r--lib/puppet/type/package.rb18
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