summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Bode <dan@reductivelabs.com>2010-07-04 19:06:04 -0400
committerMarkus Roberts <Markus@reality.com>2010-07-07 11:59:48 -0700
commit8d3ced5d63e06c4858f067d49f1e3dc7875630e9 (patch)
tree512af61187db530a6679c2a97b951a7eafe2ac87
parentcdd43825cee233af478d807cddda346e9d1fe142 (diff)
downloadpuppet-8d3ced5d63e06c4858f067d49f1e3dc7875630e9.tar.gz
puppet-8d3ced5d63e06c4858f067d49f1e3dc7875630e9.tar.xz
puppet-8d3ced5d63e06c4858f067d49f1e3dc7875630e9.zip
created init provider method self.get_services which accepts an array of filenames to exclude when processing defpath.
also updated redhat provider to pass in a list of services to ignore. didnt need to munch exclude to an array, include? is safe to call on strings
-rwxr-xr-xlib/puppet/provider/service/init.rb9
-rwxr-xr-xlib/puppet/provider/service/redhat.rb5
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/puppet/provider/service/init.rb b/lib/puppet/provider/service/init.rb
index c05a32677..58b7f9153 100755
--- a/lib/puppet/provider/service/init.rb
+++ b/lib/puppet/provider/service/init.rb
@@ -28,11 +28,13 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
# List all services of this type.
def self.instances
- self.defpath = [self.defpath] unless self.defpath.is_a? Array
+ get_services(self.defpath)
+ end
+ def self.get_services(defpath, exclude=[])
+ defpath = [defpath] unless defpath.is_a? Array
instances = []
-
- self.defpath.each do |path|
+ defpath.each do |path|
unless FileTest.directory?(path)
Puppet.debug "Service path %s does not exist" % path
next
@@ -47,6 +49,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
Dir.entries(path).each do |name|
fullpath = File.join(path, name)
next if name =~ /^\./
+ next if exclude.include? name
next if not FileTest.executable?(fullpath)
instances << new(:name => name, :path => path)
end
diff --git a/lib/puppet/provider/service/redhat.rb b/lib/puppet/provider/service/redhat.rb
index 45a9074e6..065efe65b 100755
--- a/lib/puppet/provider/service/redhat.rb
+++ b/lib/puppet/provider/service/redhat.rb
@@ -11,6 +11,11 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init, :source => :init
defaultfor :operatingsystem => [:redhat, :fedora, :suse, :centos, :sles, :oel, :ovm]
+ def self.instances
+ # this exclude list is all from /sbin/service (5.x), but I did not exclude kudzu
+ self.get_services(['/etc/init.d/'], ['functions', 'halt', 'killall', 'single', 'linuxconf'])
+ end
+
def self.defpath
superclass.defpath
end