diff options
author | Robby Dyer <rdyer@tropo.com> | 2014-07-30 16:47:16 -0400 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2015-08-18 13:41:25 -0700 |
commit | cacd802b3a3a3a2214cdd0783242a93835537b55 (patch) | |
tree | 35444f9301559de6a4c2fdbc6052bb18c9cf19fb | |
parent | a75e34ce89bb79cc5da493200cdb0c26d5912566 (diff) | |
download | chef-cacd802b3a3a3a2214cdd0783242a93835537b55.tar.gz |
Ensure non-specified runlevels are disabled
-rw-r--r-- | lib/chef/provider/service/redhat.rb | 17 |
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 |