summaryrefslogtreecommitdiff
path: root/lib/chef/provider
diff options
context:
space:
mode:
authorAJ Christensen <aj@junglist.gen.nz>2008-09-25 03:28:01 +1200
committerAJ Christensen <aj@junglist.gen.nz>2008-10-01 09:34:28 +1300
commit5c89c995cb0bbecfbd15badba571b60b46b75134 (patch)
tree8c7526c620c47ed21e6a081a5f03b5952ae11da8 /lib/chef/provider
parent922bed81a0504a7fe08f8edafd3419a7906cd03b (diff)
downloadchef-5c89c995cb0bbecfbd15badba571b60b46b75134.tar.gz
Working Debian service provider for enabling/disabling services.
TODO: Base and Init providers that support status and start/stopping init scripts.
Diffstat (limited to 'lib/chef/provider')
-rw-r--r--lib/chef/provider/service.rb39
-rw-r--r--lib/chef/provider/service/base.rb18
-rw-r--r--lib/chef/provider/service/debian.rb56
-rw-r--r--lib/chef/provider/service/init.rb26
4 files changed, 62 insertions, 77 deletions
diff --git a/lib/chef/provider/service.rb b/lib/chef/provider/service.rb
index 79041727eb..de33984328 100644
--- a/lib/chef/provider/service.rb
+++ b/lib/chef/provider/service.rb
@@ -30,19 +30,11 @@ class Chef
end
def action_enable
- do_service = false
- if @current_resource.enabled == nil
- do_service = true
- elsif @new_resource.enabled != nil
- if @new_resource.enabled != @current_resource.enabled
- do_service = true
- end
- end
-
- if do_package
+ if @current_resource.enabled == false
+ Chef::Log.debug("Trying to enable #{@new_resource}")
status = enable_service(@new_resource.service_name)
if status
- @new_resource.enabled = true
+ @new_resource.enabled == true
Chef::Log.info("Enabled service #{@new_resource} successfully")
end
end
@@ -50,25 +42,32 @@ class Chef
def action_disable
if @current_resource.enabled == true
- disable_service(@new_resource.service_name)
- @new_resource.enabled = false
- Chef::Log.info("Disabled service #{@new_resource} succesfully")
+ Chef::Log.debug("Trying to disable #{@new_resource}")
+ status = disable_service(@new_resource.service_name)
+ if status
+ @new_resource.enabled == false
+ Chef::Log.info("Disabled service #{@new_resource} succesfully")
+ end
end
end
def action_start
if @current_resource.running == false
- start_service(@new_resource.service_name)
- @new_resource.running = true
- Chef::Log.info("Started service #{@new_resource} succesfully")
+ status = start_service(@new_resource.service_name)
+ if status
+ @new_resource.running == true
+ Chef::Log.info("Started service #{@new_resource} succesfully")
+ end
end
end
def action_stop
if @current_resource.running == true
- start_service(@new_resource.service_name)
- @new_resource.running = false
- Chef::Log.info("Stopped service #{@new_resource} succesfully")
+ status = stop_service(@new_resource.service_name)
+ if status
+ @new_resource.running == false
+ Chef::Log.info("Stopped service #{@new_resource} succesfully")
+ end
end
end
diff --git a/lib/chef/provider/service/base.rb b/lib/chef/provider/service/base.rb
index d194c33fc7..178878296e 100644
--- a/lib/chef/provider/service/base.rb
+++ b/lib/chef/provider/service/base.rb
@@ -21,22 +21,12 @@ require File.join(File.dirname(__FILE__), "..", "..", "mixin", "command")
class Chef
class Provider
- class Service
- class Base < Chef::Provider::Service
+ class Base < Chef::Provider::Service
- def load_current_resource
- @current_resource
- end
+ def load_current_resource
+ true
+ end
- def start_service
- run_command(:command => "/etc/init.d/#{name} start")
- end
-
- def stop_service
- run_command(:command => "/etc/init.d/#{name} stop")
- end
-
- end
end
end
end
diff --git a/lib/chef/provider/service/debian.rb b/lib/chef/provider/service/debian.rb
index a8944163f6..2a4c385a55 100644
--- a/lib/chef/provider/service/debian.rb
+++ b/lib/chef/provider/service/debian.rb
@@ -21,38 +21,36 @@ require File.join(File.dirname(__FILE__), "..", "..", "mixin", "command")
class Chef
class Provider
- class Service
- class Debian < Chef::Provider::Service::Init
-
- def load_current_resource
- @current_resource = Chef::Resource::Service.new(@new_resource.name)
- @current_resource.service_name(@new_resource.service_name)
-
- status = popen4("update-rc.d -n -f #{@new_resource.service_name}") do |pid, stdin, stdout, stderr|
- stdin.close
- if stdout.gets(nil) =~ /etc\/rc[\dS].d\/S|not installed/
- @current_resource.enabled(true)
- else
- @current_resource.enabled(false)
- end
- end
-
- unless status.exitstatus = 0
- raise Chef::Exception::Service, "update-rc.d -n -f #{@new_resource.service_name} failed - #{status.inspect}"
+ class Debian < Chef::Provider::Service
+ def load_current_resource
+ @current_resource = Chef::Resource::Service.new(@new_resource.name)
+ @current_resource.service_name(@new_resource.service_name)
+
+ status = popen4("update-rc.d -n -f #{@current_resource.service_name} remove") do |pid, stdin, stdout, stderr|
+ stdin.close
+ if stdout.gets(nil) =~ /etc\/rc[\dS].d\/S|not installed/
+ Chef::Log.debug("#{@current_resource} is currently enabled")
+ @current_resource.enabled(true)
+ else
+ Chef::Log.debug("#{@current_resource} is currently disabled")
+ @current_resource.enabled(false)
end
+ end
- @current_resource
- end
-
- def enable_service(name)
- run_command(:command => "update-rc.d #{name} defaults")
+ unless status.exitstatus == 0
+ raise Chef::Exception::Service, "update-rc.d -n -f #{@current_resource.service_name} failed - #{status.inspect}"
end
-
- def disable_service(name)
- run_command(:command => "update-rc.d -f #{name} remove")
- run_command(:command => "update-rc.d #{name} stop 00 1 2 3 4 5 6 .")
- end
-
+
+ @current_resource
+ end
+
+ def enable_service(name)
+ run_command(:command => "update-rc.d #{name} defaults")
+ end
+
+ def disable_service(name)
+ run_command(:command => "update-rc.d -f #{name} remove")
+ #run_command(:command => "update-rc.d #{name} stop 00 1 2 3 4 5 6 .")
end
end
end
diff --git a/lib/chef/provider/service/init.rb b/lib/chef/provider/service/init.rb
index aa673e15e8..95275499f8 100644
--- a/lib/chef/provider/service/init.rb
+++ b/lib/chef/provider/service/init.rb
@@ -21,22 +21,20 @@ require File.join(File.dirname(__FILE__), "..", "..", "mixin", "command")
class Chef
class Provider
- class Service
- class Init < Chef::Provider::Service::Base
-
- def load_current_resource
- @current_resource
- end
-
- def start_service
- run_command(:command => "/etc/init.d/#{name} start")
- end
-
- def stop_service
- run_command(:command => "/etc/init.d/#{name} stop")
- end
+ class Init < Chef::Provider::Service
+ def load_current_resource
+ true
end
+
+ def start_service
+ run_command(:command => "/etc/init.d/#{name} start")
+ end
+
+ def stop_service
+ run_command(:command => "/etc/init.d/#{name} stop")
+ end
+
end
end
end