summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobby Dyer <rdyer@tropo.com>2014-07-30 16:47:16 -0400
committerLamont Granquist <lamont@scriptkiddie.org>2015-08-18 13:41:25 -0700
commitcacd802b3a3a3a2214cdd0783242a93835537b55 (patch)
tree35444f9301559de6a4c2fdbc6052bb18c9cf19fb
parenta75e34ce89bb79cc5da493200cdb0c26d5912566 (diff)
downloadchef-cacd802b3a3a3a2214cdd0783242a93835537b55.tar.gz
Ensure non-specified runlevels are disabled
-rw-r--r--lib/chef/provider/service/redhat.rb17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/chef/provider/service/redhat.rb b/lib/chef/provider/service/redhat.rb
index 16b82c16d7..094981c1ac 100644
--- a/lib/chef/provider/service/redhat.rb
+++ b/lib/chef/provider/service/redhat.rb
@@ -39,6 +39,7 @@ class Chef
@init_command = "/sbin/service #{@new_resource.service_name}"
@new_resource.supports[:status] = true
@service_missing = false
+ @current_run_levels = []
@run_levels = @new_resource.run_levels
end
@@ -64,13 +65,19 @@ class Chef
if ::File.exists?("/sbin/chkconfig")
chkconfig = shell_out!("/sbin/chkconfig --list #{@current_resource.service_name}", :returns => [0,1])
unless @run_levels.nil? or @run_levels.empty?
+ all_levels_enabled = true
chkconfig.split(/\s+/)[1..-1].each do |level|
index = level.split(':').first
status = level.split(':').last
- is_enabled = false
- is_enabled = true if @run_levels.include?(index) and status =~ CHKCONFIG_ON
- @current_resource.enabled(is_enabled)
+ if @run_levels.include?(index)
+ if status =~ CHKCONFIG_ON
+ @current_run_levels << index
+ else
+ all_levels_enabled = false
+ end
+ end
end
+ @current_resource.enabled(all_levels_enabled)
else
@current_resource.enabled(!!(chkconfig.stdout =~ CHKCONFIG_ON))
end
@@ -85,6 +92,10 @@ class Chef
end
def enable_service()
+ unless @run_levels.nil? or @run_levels.empty?
+ disable_levels = @current_run_levels - @run_levels
+ shell_out! "/sbin/chkconfig --level #{disable_levels.join('')} #{@new_resource.service_name} off" unless disable_levels.empty?
+ end
shell_out! "/sbin/chkconfig #{levels}#{@new_resource.service_name} on"
end