summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAnselm Strauss <anselm@beastie.ttyv0.net>2010-02-02 11:03:43 +0100
committertest branch <puppet-dev@googlegroups.com>2010-02-17 06:50:53 -0800
commit5f72eb9820717df5e85f749ff647d35388f443d7 (patch)
tree7bebef588d366a2466884d276eeb436698e65d87 /lib
parentc3cd24bca33e6918598a73fd04996592509ab229 (diff)
downloadpuppet-5f72eb9820717df5e85f749ff647d35388f443d7.tar.gz
puppet-5f72eb9820717df5e85f749ff647d35388f443d7.tar.xz
puppet-5f72eb9820717df5e85f749ff647d35388f443d7.zip
Re-included old BSD service provider, made new one default for FreeBSD
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/provider/service/bsd.rb54
-rw-r--r--lib/puppet/provider/service/freebsd.rb3
2 files changed, 56 insertions, 1 deletions
diff --git a/lib/puppet/provider/service/bsd.rb b/lib/puppet/provider/service/bsd.rb
new file mode 100644
index 000000000..fed65591d
--- /dev/null
+++ b/lib/puppet/provider/service/bsd.rb
@@ -0,0 +1,54 @@
+# Manage FreeBSD services.
+Puppet::Type.type(:service).provide :bsd, :parent => :init do
+ desc "FreeBSD's (and probably NetBSD?) form of ``init``-style service management.
+
+ Uses ``rc.conf.d`` for service enabling and disabling.
+
+"
+
+ confine :operatingsystem => [:freebsd, :netbsd, :openbsd]
+
+ @@rcconf_dir = '/etc/rc.conf.d'
+
+ def self.defpath
+ superclass.defpath
+ end
+
+ # remove service file from rc.conf.d to disable it
+ def disable
+ rcfile = File.join(@@rcconf_dir, @model[:name])
+ if File.exists?(rcfile)
+ File.delete(rcfile)
+ end
+ end
+
+ # if the service file exists in rc.conf.d then it's already enabled
+ def enabled?
+ rcfile = File.join(@@rcconf_dir, @model[:name])
+ if File.exists?(rcfile)
+ return :true
+ end
+
+ return :false
+ end
+
+ # enable service by creating a service file under rc.conf.d with the
+ # proper contents
+ def enable
+ if not File.exists?(@@rcconf_dir)
+ Dir.mkdir(@@rcconf_dir)
+ end
+ rcfile = File.join(@@rcconf_dir, @model[:name])
+ open(rcfile, 'w') { |f| f << "%s_enable=\"YES\"\n" % @model[:name] }
+ end
+
+ # Override stop/start commands to use one<cmd>'s and the avoid race condition
+ # where provider trys to stop/start the service before it is enabled
+ def startcmd
+ [self.initscript, :onestart]
+ end
+
+ def stopcmd
+ [self.initscript, :onestop]
+ end
+end
diff --git a/lib/puppet/provider/service/freebsd.rb b/lib/puppet/provider/service/freebsd.rb
index e124b208a..a98f8f853 100644
--- a/lib/puppet/provider/service/freebsd.rb
+++ b/lib/puppet/provider/service/freebsd.rb
@@ -1,8 +1,9 @@
-Puppet::Type.type(:service).provide :freebsd2, :parent => :init do
+Puppet::Type.type(:service).provide :freebsd, :parent => :init do
desc "Provider for FreeBSD. Makes use of rcvar argument of init scripts and parses/edits rc files."
confine :operatingsystem => [:freebsd]
+ defaultfor :operatingsystem => [:freebsd]
@@rcconf = '/etc/rc.conf'
@@rcconf_local = '/etc/rc.conf.local'