summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/provider/service/daemontools.rb17
-rw-r--r--lib/puppet/provider/service/runit.rb6
-rwxr-xr-xspec/unit/provider/service/daemontools.rb21
-rwxr-xr-xspec/unit/provider/service/runit.rb3
4 files changed, 31 insertions, 16 deletions
diff --git a/lib/puppet/provider/service/daemontools.rb b/lib/puppet/provider/service/daemontools.rb
index f6eb5099f..2c6c6dbc7 100644
--- a/lib/puppet/provider/service/daemontools.rb
+++ b/lib/puppet/provider/service/daemontools.rb
@@ -2,7 +2,7 @@
#
# author Brice Figureau <brice-puppet@daysofwonder.com>
Puppet::Type.type(:service).provide :daemontools, :parent => :base do
- desc """Daemontools service management.
+ desc "Daemontools service management.
This provider manages daemons running supervised by D.J.Bernstein daemontools.
It tries to detect the service directory, with by order of preference:
@@ -37,7 +37,7 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
If a service has ensure => \"stopped\", it will only down the service, not
remove the /path/to/service link.
- """
+ "
commands :svc => "/usr/bin/svc", :svstat => "/usr/bin/svstat"
@@ -124,11 +124,6 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
return :stopped
end
- def startcmd
- self.enable if ! FileTest.symlink?(self.service)
- [command(:svc), "-u", self.service ]
- end
-
def setupservice
begin
if resource[:manifest]
@@ -144,10 +139,12 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
def enabled?
case self.status
- when :running:
+ when :running
+ # obviously if the daemon is running then it is enabled
return :true
else
- return :false
+ # the service is enabled if it is linked
+ return FileTest.symlink?(self.service) ? :true : :false
end
end
@@ -191,7 +188,7 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
end
def start
- enable unless enabled?
+ enable unless enabled? == :true
svc "-u", self.service
end
diff --git a/lib/puppet/provider/service/runit.rb b/lib/puppet/provider/service/runit.rb
index b2c8900b6..0182ec7d2 100644
--- a/lib/puppet/provider/service/runit.rb
+++ b/lib/puppet/provider/service/runit.rb
@@ -2,7 +2,7 @@
#
# author Brice Figureau <brice-puppet@daysofwonder.com>
Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
- desc """Runit service management.
+ desc "Runit service management.
This provider manages daemons running supervised by Runit.
It tries to detect the service directory, with by order of preference:
@@ -31,7 +31,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
* status
-"""
+"
commands :sv => "/usr/bin/sv"
@@ -93,7 +93,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
# relay to the startcmd
def start
- enable unless enabled?
+ enable unless enabled? == :true
ucommand( :start )
end
diff --git a/spec/unit/provider/service/daemontools.rb b/spec/unit/provider/service/daemontools.rb
index 4156afb1f..a2198bb9d 100755
--- a/spec/unit/provider/service/daemontools.rb
+++ b/spec/unit/provider/service/daemontools.rb
@@ -65,7 +65,7 @@ describe provider_class do
describe "when starting" do
it "should use 'svc' to start the service" do
- @provider.stubs(:enabled?).returns true
+ @provider.stubs(:enabled?).returns :true
@provider.expects(:svc).with("-u", "/etc/service/myservice")
@provider.start
@@ -74,7 +74,7 @@ describe provider_class do
it "should enable the service if it is not enabled" do
@provider.stubs(:svc)
- @provider.expects(:enabled?).returns false
+ @provider.expects(:enabled?).returns :false
@provider.expects(:enable)
@provider.start
@@ -124,6 +124,23 @@ describe provider_class do
end
end
+ describe "when checking if the service is enabled?" do
+ it "should return true if it is running" do
+ @provider.stubs(:status).returns(:running)
+
+ @provider.enabled?.should == :true
+ end
+
+ [true, false].each do |t|
+ it "should return #{t} if the symlink exists" do
+ @provider.stubs(:status).returns(:stopped)
+ FileTest.stubs(:symlink?).returns(t)
+
+ @provider.enabled?.should == "#{t}".to_sym
+ end
+ end
+ end
+
describe "when checking status" do
it "should call the external command 'svstat /etc/service/myservice'" do
@provider.expects(:svstat).with(File.join(@servicedir,"myservice"))
diff --git a/spec/unit/provider/service/runit.rb b/spec/unit/provider/service/runit.rb
index 4a7a238a9..ad0ad67f1 100755
--- a/spec/unit/provider/service/runit.rb
+++ b/spec/unit/provider/service/runit.rb
@@ -64,13 +64,14 @@ describe provider_class do
@provider.stubs(:sv)
@provider.stubs(:ucommand)
- @provider.expects(:enabled?).returns false
+ @provider.expects(:enabled?).returns :false
@provider.expects(:enable)
@provider.start
end
it "should execute external command 'sv start /etc/service/myservice'" do
+ @provider.stubs(:enabled?).returns :true
@provider.expects(:ucommand).with(:start).returns("")
@provider.start
end