Due to an incorrect tests, those providers weren't enabling themselves
when starting, thus failing to create the symlink necessary for them
to run.

Signed-off-by: Brice Figureau <[email protected]>
---
 lib/puppet/provider/service/daemontools.rb |   17 +++++++----------
 lib/puppet/provider/service/runit.rb       |    6 +++---
 spec/unit/provider/service/daemontools.rb  |   21 +++++++++++++++++++--
 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 f6eb509..2c6c6db 100644
--- a/lib/puppet/provider/service/daemontools.rb
+++ b/lib/puppet/provider/service/daemontools.rb
@@ -2,7 +2,7 @@
 #
 # author Brice Figureau <[email protected]>
 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 b2c8900..0182ec7 100644
--- a/lib/puppet/provider/service/runit.rb
+++ b/lib/puppet/provider/service/runit.rb
@@ -2,7 +2,7 @@
 #
 # author Brice Figureau <[email protected]>
 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 4156afb..a2198bb 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 4a7a238..ad0ad67 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
-- 
1.6.4


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to