From cacd802b3a3a3a2214cdd0783242a93835537b55 Mon Sep 17 00:00:00 2001 From: Robby Dyer Date: Wed, 30 Jul 2014 16:47:16 -0400 Subject: Ensure non-specified runlevels are disabled --- lib/chef/provider/service/redhat.rb | 17 ++++++++++++++--- 1 file 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 -- cgit v1.2.1