diff options
-rw-r--r-- | lib/puppet/provider/service/daemontools.rb | 17 | ||||
-rw-r--r-- | lib/puppet/provider/service/runit.rb | 6 | ||||
-rwxr-xr-x | spec/unit/provider/service/daemontools.rb | 21 | ||||
-rwxr-xr-x | spec/unit/provider/service/runit.rb | 3 |
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 |