summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/metatype/instances.rb18
-rw-r--r--lib/puppet/metatype/providers.rb42
-rwxr-xr-xlib/puppet/network/handler/resource.rb2
-rw-r--r--lib/puppet/provider.rb38
-rw-r--r--lib/puppet/provider/nameservice/netinfo.rb12
-rwxr-xr-xlib/puppet/provider/package/apple.rb22
-rwxr-xr-xlib/puppet/provider/package/blastwave.rb4
-rwxr-xr-xlib/puppet/provider/package/darwinport.rb5
-rwxr-xr-xlib/puppet/provider/package/dpkg.rb4
-rwxr-xr-xlib/puppet/provider/package/gem.rb4
-rwxr-xr-xlib/puppet/provider/package/openbsd.rb11
-rw-r--r--lib/puppet/provider/package/pkgdmg.rb8
-rw-r--r--lib/puppet/provider/package/portage.rb4
-rwxr-xr-xlib/puppet/provider/package/rpm.rb4
-rwxr-xr-xlib/puppet/provider/package/sun.rb4
-rwxr-xr-xlib/puppet/provider/parsedfile.rb62
-rwxr-xr-xlib/puppet/provider/service/init.rb14
-rw-r--r--lib/puppet/provider/zone/solaris.rb11
-rw-r--r--lib/puppet/transaction.rb22
-rwxr-xr-xlib/puppet/type/exec.rb4
-rwxr-xr-xlib/puppet/type/group.rb16
-rw-r--r--lib/puppet/type/package.rb17
-rw-r--r--lib/puppet/type/pfile.rb2
-rwxr-xr-xlib/puppet/type/pfilebucket.rb4
-rw-r--r--lib/puppet/type/resources.rb6
-rwxr-xr-xlib/puppet/type/schedule.rb4
-rw-r--r--lib/puppet/type/service.rb14
-rwxr-xr-xlib/puppet/type/tidy.rb4
-rwxr-xr-xlib/puppet/type/user.rb16
-rw-r--r--lib/puppet/type/yumrepo.rb2
30 files changed, 159 insertions, 221 deletions
diff --git a/lib/puppet/metatype/instances.rb b/lib/puppet/metatype/instances.rb
index 2d408f750..be7d1be1c 100644
--- a/lib/puppet/metatype/instances.rb
+++ b/lib/puppet/metatype/instances.rb
@@ -248,6 +248,24 @@ class Puppet::Type
return trans
end
+ # Retrieve all known instances. Either requires providers or must be overridden.
+ def self.instances
+ unless defined?(@providers) and ! @providers.empty?
+ raise Puppet::DevError, "%s has no providers and has not overridden 'instances'" % self.name
+ end
+
+ # Put the default provider first, then the rest of the suitable providers.
+ sources = []
+ [defaultprovider, suitableprovider].flatten.uniq.collect do |provider|
+ next if sources.include?(provider.source)
+
+ sources << provider.source
+ provider.instances.collect do |instance|
+ create(:name => instance.name, :provider => instance, :check => :all)
+ end
+ end.flatten.compact
+ end
+
# Create the path for logging and such.
def pathbuilder
if defined? @parent and @parent
diff --git a/lib/puppet/metatype/providers.rb b/lib/puppet/metatype/providers.rb
index 33506e06f..72459d3af 100644
--- a/lib/puppet/metatype/providers.rb
+++ b/lib/puppet/metatype/providers.rb
@@ -86,26 +86,6 @@ class Puppet::Type
return obj
end
- # Create a list method that just calls our providers.
- def self.mkprovider_list
- unless respond_to?(:list)
- meta_def(:list) do
- suitableprovider.find_all { |p| p.respond_to?(:list) }.collect { |prov|
- prov.list.each { |h| h[:provider] = prov.name }
- }.flatten.collect do |hash|
- if hash.is_a?(Hash)
- hash2obj(hash)
- elsif hash.is_a?(self)
- hash
- else
- raise Puppet::DevError, "Provider %s returned object of type %s in list" %
- [prov.name, hash.class]
- end
- end
- end
- end
- end
-
# Retrieve a provider by name.
def self.provider(name)
name = Puppet::Util.symbolize(name)
@@ -172,7 +152,6 @@ class Puppet::Type
def self.providify
return if @paramhash.has_key? :provider
- mkprovider_list()
newparam(:provider) do
desc "The specific backend for #{self.name.to_s} to use. You will
seldom need to specify this -- Puppet will usually discover the
@@ -197,17 +176,21 @@ class Puppet::Type
@resource.class.defaultprovider.name
}
- validate do |value|
- value = value[0] if value.is_a? Array
- if provider = @resource.class.provider(value)
+ validate do |provider_class|
+ provider_class = provider_class[0] if provider_class.is_a? Array
+ if provider_class.is_a?(Puppet::Provider)
+ 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" %
- [value]
+ [provider_class]
end
else
raise ArgumentError, "Invalid %s provider '%s'" %
- [@resource.class.name, value]
+ [@resource.class.name, provider_class]
end
end
@@ -244,10 +227,13 @@ class Puppet::Type
end
def provider=(name)
- if klass = self.class.provider(name)
+ if name.is_a?(Puppet::Provider)
+ @provider = name
+ @provider.resource = self
+ elsif klass = self.class.provider(name)
@provider = klass.new(self)
else
- raise UnknownProviderError, "Could not find %s provider of %s" %
+ raise ArgumentError, "Could not find %s provider of %s" %
[name, self.class.name]
end
end
diff --git a/lib/puppet/network/handler/resource.rb b/lib/puppet/network/handler/resource.rb
index 349f73537..ca492bd81 100755
--- a/lib/puppet/network/handler/resource.rb
+++ b/lib/puppet/network/handler/resource.rb
@@ -145,7 +145,7 @@ class Puppet::Network::Handler
bucket = Puppet::TransBucket.new
bucket.type = typeklass.name
- typeklass.list.each do |obj|
+ typeklass.instances.each do |obj|
next if ignore.include? obj.name
#object = Puppet::TransObject.new(obj.name, typeklass.name)
diff --git a/lib/puppet/provider.rb b/lib/puppet/provider.rb
index 1f18ae730..a725611d0 100644
--- a/lib/puppet/provider.rb
+++ b/lib/puppet/provider.rb
@@ -109,6 +109,12 @@ class Puppet::Provider
end
end
+ # The method for returning a list of provider instances. Note that it returns providers, preferably with values already
+ # filled in, not resources.
+ def self.instances
+ raise Puppet::DevError, "Provider %s has not defined the 'instances' class method" % self.name
+ end
+
# Create the methods for a given command.
def self.make_command_methods(name)
# Now define a method for that command
@@ -323,16 +329,34 @@ class Puppet::Provider
self.class.command(name)
end
- def initialize(resource)
- @resource = resource
-
- # LAK 2007-05-09: Keep the model stuff around for backward compatibility
- @model = resource
- @property_hash = {}
+ def initialize(resource = nil)
+ if resource.is_a?(Hash)
+ @property_hash = resource.dup
+ elsif resource
+ @resource = resource if resource
+ # LAK 2007-05-09: Keep the model stuff around for backward compatibility
+ @model = resource
+ @property_hash = {}
+ else
+ @property_hash = {}
+ end
end
def name
- @resource.name
+ if n = @property_hash[:name]
+ return n
+ elsif self.resource
+ resource.name
+ else
+ raise Puppet::DevError, "No resource and no name in property hash"
+ end
+ end
+
+ # Set passed params as the current values.
+ def set(params)
+ params.each do |param, value|
+ @property_hash[symbolize(param)] = value
+ end
end
def to_s
diff --git a/lib/puppet/provider/nameservice/netinfo.rb b/lib/puppet/provider/nameservice/netinfo.rb
index c44f105e8..0323807e8 100644
--- a/lib/puppet/provider/nameservice/netinfo.rb
+++ b/lib/puppet/provider/nameservice/netinfo.rb
@@ -45,6 +45,12 @@ class NetInfo < Puppet::Provider::NameService
end
end
+ def self.instances
+ report(@resource_type.validproperties).collect do |hash|
+ self.new(hash)
+ end
+ end
+
# Convert a NetInfo line into a hash of data.
def self.line2hash(line, params)
values = line.split(/\t/)
@@ -61,12 +67,6 @@ class NetInfo < Puppet::Provider::NameService
hash
end
- def self.list
- report(@resource_type.validproperties).collect do |hash|
- @resource_type.hash2obj(hash)
- end
- end
-
# What field the value is stored under.
def self.netinfokey(name)
name = symbolize(name)
diff --git a/lib/puppet/provider/package/apple.rb b/lib/puppet/provider/package/apple.rb
index ce845670f..e9fb00482 100755
--- a/lib/puppet/provider/package/apple.rb
+++ b/lib/puppet/provider/package/apple.rb
@@ -11,7 +11,17 @@ Puppet::Type.type(:package).provide :apple do
defaultfor :operatingsystem => :darwin
- def self.listbyname
+ def self.instances
+ instance_by_name.collect do |name|
+ self.new(
+ :name => name,
+ :provider => :apple,
+ :ensure => :installed
+ )
+ end
+ end
+
+ def self.instance_by_name
Dir.entries("/Library/Receipts").find_all { |f|
f =~ /\.pkg$/
}.collect { |f|
@@ -22,16 +32,6 @@ Puppet::Type.type(:package).provide :apple do
}
end
- def self.list
- listbyname.collect do |name|
- Puppet.type(:package).installedpkg(
- :name => name,
- :provider => :apple,
- :ensure => :installed
- )
- end
- end
-
def query
if FileTest.exists?("/Library/Receipts/#{@resource[:name]}.pkg")
return {:name => @resource[:name], :ensure => :present}
diff --git a/lib/puppet/provider/package/blastwave.rb b/lib/puppet/provider/package/blastwave.rb
index 9f544dbd5..07f904eef 100755
--- a/lib/puppet/provider/package/blastwave.rb
+++ b/lib/puppet/provider/package/blastwave.rb
@@ -23,10 +23,10 @@ Puppet::Type.type(:package).provide :blastwave, :parent => :sun do
end
end
- def self.list(hash = {})
+ def self.instances(hash = {})
blastlist(hash).collect do |bhash|
bhash.delete(:avail)
- Puppet::Type.type(:package).installedpkg(bhash)
+ new(bhash)
end
end
diff --git a/lib/puppet/provider/package/darwinport.rb b/lib/puppet/provider/package/darwinport.rb
index 70e6ed388..8c0bbb891 100755
--- a/lib/puppet/provider/package/darwinport.rb
+++ b/lib/puppet/provider/package/darwinport.rb
@@ -31,12 +31,11 @@ Puppet::Type.type(:package).provide :darwinport do
}
end
- def self.list
+ def self.instances
packages = []
eachpkgashash do |hash|
- pkg = Puppet.type(:package).installedpkg(hash)
- packages << pkg
+ packages << new(hash)
end
return packages
diff --git a/lib/puppet/provider/package/dpkg.rb b/lib/puppet/provider/package/dpkg.rb
index d309ae9e5..e09638669 100755
--- a/lib/puppet/provider/package/dpkg.rb
+++ b/lib/puppet/provider/package/dpkg.rb
@@ -6,7 +6,7 @@ Puppet::Type.type(:package).provide :dpkg do
commands :dpkg => "/usr/bin/dpkg"
commands :dpkgquery => "/usr/bin/dpkg-query"
- def self.list
+ def self.instances
packages = []
# list out all of the packages
@@ -29,7 +29,7 @@ Puppet::Type.type(:package).provide :dpkg do
hash[:provider] = self.name
- packages.push Puppet.type(:package).installedpkg(hash)
+ packages << new(hash)
else
Puppet.warning "Failed to match dpkg-query line %s" %
line.inspect
diff --git a/lib/puppet/provider/package/gem.rb b/lib/puppet/provider/package/gem.rb
index c902bcbe5..fb5e243e9 100755
--- a/lib/puppet/provider/package/gem.rb
+++ b/lib/puppet/provider/package/gem.rb
@@ -56,9 +56,9 @@ Puppet::Type.type(:package).provide :gem do
end
end
- def self.list(justme = false)
+ def self.instances(justme = false)
gemlist(:local => true).collect do |hash|
- Puppet::Type.type(:package).installedpkg(hash)
+ new(hash)
end
end
diff --git a/lib/puppet/provider/package/openbsd.rb b/lib/puppet/provider/package/openbsd.rb
index e910a41ba..0e238f546 100755
--- a/lib/puppet/provider/package/openbsd.rb
+++ b/lib/puppet/provider/package/openbsd.rb
@@ -7,7 +7,7 @@ Puppet::Type.type(:package).provide :openbsd do
defaultfor :operatingsystem => :openbsd
confine :operatingsystem => :openbsd
- def self.list
+ def self.instances
packages = []
begin
@@ -29,8 +29,7 @@ Puppet::Type.type(:package).provide :openbsd do
hash[:provider] = self.name
- pkg = Puppet.type(:package).installedpkg(hash)
- packages << pkg
+ packages << new(hash)
else
# Print a warning on lines we can't match, but move
# on, since it should be non-fatal
@@ -38,12 +37,6 @@ Puppet::Type.type(:package).provide :openbsd do
end
}
end
- # Mark as absent any packages we didn't find
- Puppet.type(:package).each do |pkg|
- unless packages.include? pkg
- pkg.is = [:ensure, :absent]
- end
- end
return packages
rescue Puppet::ExecutionFailure
diff --git a/lib/puppet/provider/package/pkgdmg.rb b/lib/puppet/provider/package/pkgdmg.rb
index e3d211fef..e0864764a 100644
--- a/lib/puppet/provider/package/pkgdmg.rb
+++ b/lib/puppet/provider/package/pkgdmg.rb
@@ -23,7 +23,7 @@ Puppet::Type.type(:package).provide :pkgdmg do
commands :curl => "/usr/bin/curl"
# JJM We store a cookie for each installed .pkg.dmg in /var/db
- def self.listbyname
+ def self.instance_by_name
Dir.entries("/var/db").find_all { |f|
f =~ /^\.puppet_pkgdmg_installed_/
}.collect do |f|
@@ -33,9 +33,9 @@ Puppet::Type.type(:package).provide :pkgdmg do
end
end
- def self.list
- listbyname.collect do |name|
- Puppet.type(:package).installedpkg(
+ def self.instances
+ instance_by_name.collect do |name|
+ new(
:name => name,
:provider => :pkgdmg,
:ensure => :installed
diff --git a/lib/puppet/provider/package/portage.rb b/lib/puppet/provider/package/portage.rb
index dd69f23a4..3b4c1a44f 100644
--- a/lib/puppet/provider/package/portage.rb
+++ b/lib/puppet/provider/package/portage.rb
@@ -7,7 +7,7 @@ Puppet::Type.type(:package).provide :portage do
defaultfor :operatingsystem => :gentoo
- def self.list
+ def self.instances
result_format = /(\S+) (\S+) \[(.*)\] \[[^0-9]*([^\s:]*)(:\S*)?\] ([\S]*) (.*)/
result_fields = [:category, :name, :ensure, :version_available, :slot, :vendor, :description]
@@ -28,7 +28,7 @@ Puppet::Type.type(:package).provide :portage do
package[:provider] = :portage
package[:ensure] = package[:ensure].split.last
- packages.push(Puppet.type(:package).installedpkg(package))
+ packages << new(package)
end
end
diff --git a/lib/puppet/provider/package/rpm.rb b/lib/puppet/provider/package/rpm.rb
index 13f2589d7..3b9ac8b15 100755
--- a/lib/puppet/provider/package/rpm.rb
+++ b/lib/puppet/provider/package/rpm.rb
@@ -10,7 +10,7 @@ Puppet::Type.type(:package).provide :rpm do
commands :rpm => "rpm"
- def self.list
+ def self.instances
packages = []
# list out all of the packages
@@ -30,7 +30,7 @@ Puppet::Type.type(:package).provide :rpm do
hash[field] = value
}
hash[:provider] = self.name
- packages.push Puppet.type(:package).installedpkg(hash)
+ packages << new(hash)
else
raise "failed to match rpm line %s" % line
end
diff --git a/lib/puppet/provider/package/sun.rb b/lib/puppet/provider/package/sun.rb
index ea169548d..c5b954881 100755
--- a/lib/puppet/provider/package/sun.rb
+++ b/lib/puppet/provider/package/sun.rb
@@ -9,7 +9,7 @@ Puppet::Type.type(:package).provide :sun do
defaultfor :operatingsystem => :solaris
- def self.list
+ def self.instances
packages = []
hash = {}
names = {
@@ -40,7 +40,7 @@ Puppet::Type.type(:package).provide :sun do
when /^$/:
hash[:provider] = :sun
- packages.push Puppet.type(:package).installedpkg(hash)
+ packages << new(hash)
hash.clear
when /\s*(\w+):\s+(.+)/:
name = $1
diff --git a/lib/puppet/provider/parsedfile.rb b/lib/puppet/provider/parsedfile.rb
index 09233069b..43c53601e 100755
--- a/lib/puppet/provider/parsedfile.rb
+++ b/lib/puppet/provider/parsedfile.rb
@@ -107,17 +107,13 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
end
# Return a list of all of the records we can find.
- def self.list
+ def self.instances
prefetch()
@records.find_all { |r| r[:record_type] == self.name }.collect { |r|
- clean(r)
+ new(clean(r))
}
end
- def self.list_by_name
- list.collect { |r| r[:name] }
- end
-
# Override the default method with a lot more functionality.
def self.mk_resource_methods
[resource_type.validproperties, resource_type.parameters].flatten.each do |attr|
@@ -175,11 +171,24 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
# set. We need to turn those three locations into a list of files,
# prefetch each one, and make sure they're associated with each appropriate
# resource instance.
- def self.prefetch
+ def self.prefetch(resources = nil)
# Reset the record list.
@records = []
- targets().each do |target|
- prefetch_target(target)
+ targets(resources).each do |target|
+ @records += prefetch_target(target)
+ end
+
+ if resources
+ @records.each do |record|
+ if name = record[:name] and resource = resources[name]
+ resource.provider = new(record)
+ elsif respond_to?(:match)
+ if instance = match(record, resources)
+ record[:name] = instance[:name]
+ instance.provider = new(record)
+ end
+ end
+ end
end
end
@@ -196,25 +205,10 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
end
unless target_records
- raise Puppet::DevError, "Prefetch hook for provider %s returned nil" %
- self.name
+ raise Puppet::DevError, "Prefetching %s for provider %s returned nil" % [target, self.name]
end
- @records += target_records
-
- # Set current property on any existing resource instances.
- target_records(target).find_all { |i| i.is_a?(Hash) }.each do |record|
- # Find any resource instances whose names match our instances.
- if instance = self.resource_type[record[:name]]
- next unless instance.provider.is_a?(self)
- instance.provider.property_hash = record
- elsif respond_to?(:match)
- if instance = match(record)
- record[:name] = instance[:name]
- instance.provider.property_hash = record
- end
- end
- end
+ target_records
end
# Is there an existing record with this name?
@@ -256,7 +250,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
# Find a list of all of the targets that we should be reading. This is
# used to figure out what targets we need to prefetch.
- def self.targets
+ def self.targets(resources = nil)
targets = []
# First get the default target
unless self.default_target
@@ -268,17 +262,13 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
targets += @target_objects.keys
# Lastly, check the file from any resource instances
- self.resource_type.each do |resource|
- targets << resource.value(:target)
-
- # This is only the case for properties, and targets should always
- # be properties.
- #if resource.respond_to?(:is)
- # targets << resource.is(:target)
- #end
+ if resources
+ resources.each do |name, resource|
+ targets << resource.value(:target)
+ end
end
- targets.uniq.reject { |t| t.nil? }
+ targets.uniq.compact
end
def self.to_file(records)
diff --git a/lib/puppet/provider/service/init.rb b/lib/puppet/provider/service/init.rb
index c5bcc26eb..79e5a2c69 100755
--- a/lib/puppet/provider/service/init.rb
+++ b/lib/puppet/provider/service/init.rb
@@ -29,7 +29,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
end
# List all services of this type.
- def self.list(name)
+ def self.instances(name)
# We need to find all paths specified for our type or any parent types
paths = Puppet.type(:service).paths(name)
@@ -44,7 +44,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
end
end
- paths.each do |path|
+ paths.collect do |path|
unless FileTest.directory?(path)
Puppet.notice "Service path %s does not exist" % path
next
@@ -59,14 +59,8 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
Dir.entries(path).reject { |e|
fullpath = File.join(path, e)
e =~ /^\./ or ! FileTest.executable?(fullpath)
- }.each do |name|
- if obj = Puppet::Type.type(:service)[name]
- obj[:check] = check
- else
- Puppet::Type.type(:service).create(
- :name => name, :check => check, :path => path
- )
- end
+ }.collect do |name|
+ new(:name => name, :path => path)
end
end
end
diff --git a/lib/puppet/provider/zone/solaris.rb b/lib/puppet/provider/zone/solaris.rb
index 7ace69047..d178679fe 100644
--- a/lib/puppet/provider/zone/solaris.rb
+++ b/lib/puppet/provider/zone/solaris.rb
@@ -21,18 +21,11 @@ Puppet::Type.type(:zone).provide(:solaris) do
return hash
end
- def self.list
+ def self.instances
adm(:list, "-cp").split("\n").collect do |line|
hash = line2hash(line)
- obj = nil
- unless obj = @resource[hash[:name]]
- obj = @resource.create(:name => hash[:name])
- end
-
- obj.setstatus(hash)
-
- obj
+ new(hash)
end
end
diff --git a/lib/puppet/transaction.rb b/lib/puppet/transaction.rb
index 7c046c898..d27f4038a 100644
--- a/lib/puppet/transaction.rb
+++ b/lib/puppet/transaction.rb
@@ -473,16 +473,20 @@ class Transaction
# Prefetch any providers that support it. We don't support prefetching
# types, just providers.
def prefetch
- @resources.collect { |obj|
- if pro = obj.provider
- pro.class
- else
- nil
+ prefetchers = {}
+ @resources.each do |resource|
+ if provider = resource.provider and provider.class.respond_to?(:prefetch)
+ prefetchers[provider.class] ||= {}
+ prefetchers[provider.class][resource.title] = resource
end
- }.reject { |o| o.nil? }.uniq.each do |klass|
- # XXX We need to do something special here in case of failure.
- if klass.respond_to?(:prefetch)
- klass.prefetch
+ end
+
+ # Now call prefetch, passing in the resources so that the provider instances can be replaced.
+ prefetchers.each do |provider, resources|
+ begin
+ provider.prefetch(resources)
+ rescue => detail
+ Puppet.err "Could not prefetch % provider %s: %s" % [resources[0].class.name, provider.name, detail]
end
end
end
diff --git a/lib/puppet/type/exec.rb b/lib/puppet/type/exec.rb
index e5071b484..dabd98830 100755
--- a/lib/puppet/type/exec.rb
+++ b/lib/puppet/type/exec.rb
@@ -444,8 +444,8 @@ module Puppet
end
end
- def self.list
- self.collect { |i| i }
+ def self.instances
+ []
end
# Verify that we pass all of the checks. The argument determines whether
diff --git a/lib/puppet/type/group.rb b/lib/puppet/type/group.rb
index 5e82140e7..8ca687904 100755
--- a/lib/puppet/type/group.rb
+++ b/lib/puppet/type/group.rb
@@ -120,22 +120,6 @@ module Puppet
defaultto false
end
- def self.list_by_name
- users = []
- defaultprovider.listbyname do |user|
- users << user
- end
- return users
- end
-
- def self.list
- defaultprovider.list
-
- self.collect do |user|
- user
- end
- end
-
def retrieve
if self.provider and @provider.exists?
return super
diff --git a/lib/puppet/type/package.rb b/lib/puppet/type/package.rb
index 2c3cdc41d..d116238a1 100644
--- a/lib/puppet/type/package.rb
+++ b/lib/puppet/type/package.rb
@@ -361,23 +361,6 @@ module Puppet
return object
end
- # List all package instances
- def self.list
- # XXX For now, just list the default provider, but we should list
- # all suitables or something, but we need to not list a parent
- # type if a child type gets listed.
- #suitableprovider.each do |provider|
- # p provider.name
- # provider.list
- #end
-
- defaultprovider.list
-
- self.collect do |pkg|
- pkg
- end
- end
-
# Iterate across all packages of a given type and mark them absent
# if they are not in the list
def self.markabsent(pkgtype, packages)
diff --git a/lib/puppet/type/pfile.rb b/lib/puppet/type/pfile.rb
index bec0a4dd2..3a07a9342 100644
--- a/lib/puppet/type/pfile.rb
+++ b/lib/puppet/type/pfile.rb
@@ -259,7 +259,7 @@ module Puppet
end
# List files, but only one level deep.
- def self.list(base = "/")
+ def self.instances(base = "/")
unless FileTest.directory?(base)
return []
end
diff --git a/lib/puppet/type/pfilebucket.rb b/lib/puppet/type/pfilebucket.rb
index ec1803ff8..fd0f131a1 100755
--- a/lib/puppet/type/pfilebucket.rb
+++ b/lib/puppet/type/pfilebucket.rb
@@ -70,8 +70,8 @@ module Puppet
end
end
- def self.list
- self.collect do |obj| obj.name end
+ def self.instances
+ []
end
def bucket
diff --git a/lib/puppet/type/resources.rb b/lib/puppet/type/resources.rb
index ca88a7c31..39fa1bc34 100644
--- a/lib/puppet/type/resources.rb
+++ b/lib/puppet/type/resources.rb
@@ -31,8 +31,8 @@ Puppet::Type.newtype(:resources) do
validate do |value|
if [:true, true, "true"].include?(value)
- unless @resource.resource_type.respond_to?(:list)
- raise ArgumentError, "Purging resources of type %s is not supported, since they cannot be listed" % @resource[:name]
+ unless @resource.resource_type.respond_to?(:instances)
+ raise ArgumentError, "Purging resources of type %s is not supported, since they cannot be queried from the system" % @resource[:name]
end
unless @resource.resource_type.validproperty?(:ensure)
raise ArgumentError, "Purging is only supported on types that accept 'ensure'"
@@ -91,7 +91,7 @@ Puppet::Type.newtype(:resources) do
return [] unless self.purge?
hascheck = false
method =
- resource_type.list.find_all do |resource|
+ resource_type.instances.find_all do |resource|
! resource.managed?
end.find_all do |resource|
check(resource)
diff --git a/lib/puppet/type/schedule.rb b/lib/puppet/type/schedule.rb
index 08bada3a7..2e3c126e4 100755
--- a/lib/puppet/type/schedule.rb
+++ b/lib/puppet/type/schedule.rb
@@ -307,8 +307,8 @@ module Puppet
end
end
- def self.list
- self.collect do |obj| obj end
+ def self.instances
+ []
end
def self.mkdefaultschedules
diff --git a/lib/puppet/type/service.rb b/lib/puppet/type/service.rb
index c582b17ee..2df311633 100644
--- a/lib/puppet/type/service.rb
+++ b/lib/puppet/type/service.rb
@@ -265,20 +265,6 @@ module Puppet
newvalues(:true, :false)
end
- # List all available services
- def self.list
- defprov = defaultprovider
-
- names = []
- if defprov.respond_to? :list
- defprov.list(defprov.name)
- else
- Puppet.debug "Type %s does not respond to list" % defprov.name
- end
-
- self.collect { |s| s }
- end
-
# Add a new path to our list of paths that services could be in.
def self.newpath(type, path)
type = type.intern if type.is_a? String
diff --git a/lib/puppet/type/tidy.rb b/lib/puppet/type/tidy.rb
index 8d9cda170..75a68170d 100755
--- a/lib/puppet/type/tidy.rb
+++ b/lib/puppet/type/tidy.rb
@@ -254,8 +254,8 @@ module Puppet
validate do
end
- def self.list
- self.collect { |t| t }
+ def self.instances
+ []
end
@depthfirst = true
diff --git a/lib/puppet/type/user.rb b/lib/puppet/type/user.rb
index 87a57cddd..a9634b6f7 100755
--- a/lib/puppet/type/user.rb
+++ b/lib/puppet/type/user.rb
@@ -322,22 +322,6 @@ module Puppet
autos
end
- def self.list_by_name
- users = []
- defaultprovider.listbyname do |user|
- users << user
- end
- return users
- end
-
- def self.list
- defaultprovider.list
-
- self.collect do |user|
- user
- end
- end
-
def retrieve
absent = false
properties().inject({}) { |prophash, property|
diff --git a/lib/puppet/type/yumrepo.rb b/lib/puppet/type/yumrepo.rb
index 395a33068..5efb3a307 100644
--- a/lib/puppet/type/yumrepo.rb
+++ b/lib/puppet/type/yumrepo.rb
@@ -80,7 +80,7 @@ module Puppet
# Where to put files for brand new sections
@defaultrepodir = nil
- def self.list
+ def self.instances
l = []
check = validproperties
clear