class Chef::Provider::Service::Redhat
Constants
- CHKCONFIG_MISSING
- CHKCONFIG_ON
Attributes
current_run_levels[RW]
@api private
service_missing[RW]
@api private
Public Class Methods
new(new_resource, run_context)
click to toggle source
Calls superclass method
Chef::Provider::Service::Init.new
# File lib/chef/provider/service/redhat.rb, line 42 def initialize(new_resource, run_context) super @init_command = "/sbin/service #{new_resource.service_name}" @service_missing = false @current_run_levels = [] end
supports?(resource, action)
click to toggle source
# File lib/chef/provider/service/redhat.rb, line 38 def self.supports?(resource, action) Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:initd) end
Public Instance Methods
define_resource_requirements()
click to toggle source
# File lib/chef/provider/service/redhat.rb, line 54 def define_resource_requirements shared_resource_requirements requirements.assert(:all_actions) do |a| chkconfig_file = "/sbin/chkconfig" a.assertion { ::File.exists? chkconfig_file } a.failure_message Chef::Exceptions::Service, "#{chkconfig_file} does not exist!" end requirements.assert(:enable) do |a| a.assertion { !@service_missing } a.failure_message Chef::Exceptions::Service, "#{new_resource}: Service is not known to chkconfig." a.whyrun "Assuming service would be enabled. The init script is not presently installed." end requirements.assert(:start, :reload, :restart) do |a| a.assertion do new_resource.init_command || custom_command_for_action?(action) || !@service_missing end a.failure_message Chef::Exceptions::Service, "#{new_resource}: No custom command for #{action} specified and unable to locate the init.d script!" a.whyrun "Assuming service would be enabled. The init script is not presently installed." end end
disable_service()
click to toggle source
# File lib/chef/provider/service/redhat.rb, line 120 def disable_service shell_out! "/sbin/chkconfig #{levels}#{new_resource.service_name} off" end
enable_service()
click to toggle source
# File lib/chef/provider/service/redhat.rb, line 112 def enable_service unless run_levels.nil? || 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
levels()
click to toggle source
@api private
# File lib/chef/provider/service/redhat.rb, line 108 def levels (run_levels.nil? || run_levels.empty?) ? "" : "--level #{run_levels.join('')} " end
load_current_resource()
click to toggle source
Calls superclass method
Chef::Provider::Service::Simple#load_current_resource
# File lib/chef/provider/service/redhat.rb, line 78 def load_current_resource supports[:status] = true if supports[:status].nil? super if ::File.exists?("/sbin/chkconfig") chkconfig = shell_out!("/sbin/chkconfig --list #{current_resource.service_name}", :returns => [0, 1]) unless run_levels.nil? || run_levels.empty? all_levels_match = true chkconfig.stdout.split(/\s+/)[1..-1].each do |level| index = level.split(":").first status = level.split(":").last if level =~ CHKCONFIG_ON @current_run_levels << index.to_i all_levels_match = false unless run_levels.include?(index.to_i) else all_levels_match = false if run_levels.include?(index.to_i) end end current_resource.enabled(all_levels_match) else current_resource.enabled(!!(chkconfig.stdout =~ CHKCONFIG_ON)) end @service_missing = !!(chkconfig.stderr =~ CHKCONFIG_MISSING) end current_resource end
run_levels()
click to toggle source
@api private
# File lib/chef/provider/service/redhat.rb, line 50 def run_levels new_resource.run_levels end