Included Modules

Files

Class/Module Index [+]

Quicksearch

Chef::Provider::Service::Macosx

Constants

PLIST_DIRS

Public Instance Methods

define_resource_requirements() click to toggle source
# File lib/chef/provider/service/macosx.rb, line 43
def define_resource_requirements
  #super
  requirements.assert(:enable) do |a| 
    a.failure_message Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :enable"
  end

  requirements.assert(:disable) do |a| 
    a.failure_message Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :disable"
  end

  requirements.assert(:reload) do |a| 
    a.failure_message Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :reload"
  end

  requirements.assert(:all_actions) do |a| 
    a.assertion { @plist_size < 2 } 
    a.failure_message Chef::Exceptions::Service, "Several plist files match service name. Please use full service name."
  end

  requirements.assert(:all_actions) do |a| 
    a.assertion { @plist_size > 0 } 
    # No failrue here in original code - so we also will not
    # fail. Instead warn that the service is potentially missing
    a.whyrun "Assuming that the service would have been previously installed and is currently disabled." do 
      @current_resource.enabled(false)
      @current_resource.running(false)
    end
  end

end
load_current_resource() click to toggle source
# File lib/chef/provider/service/macosx.rb, line 33
def load_current_resource
  @current_resource = Chef::Resource::Service.new(@new_resource.name)
  @current_resource.service_name(@new_resource.service_name)
  @plist_size = 0
  @plist = find_service_plist
  set_service_status

  @current_resource
end
restart_service() click to toggle source
# File lib/chef/provider/service/macosx.rb, line 98
def restart_service
  if @new_resource.restart_command
    super
  else
    stop_service
    sleep 1
    start_service
  end
end
set_service_status() click to toggle source
# File lib/chef/provider/service/macosx.rb, line 109
def set_service_status
  return if @plist == nil

  @current_resource.enabled(!@plist.nil?)

  if @current_resource.enabled
    @owner_uid = ::File.stat(@plist).uid
    @owner_gid = ::File.stat(@plist).gid

    shell_out!("launchctl list", :user => @owner_uid, :group => @owner_gid).stdout.each_line do |line|
      case line
      when /(\d+|-)\s+(?:\d+|-)\s+(.*\.?)#{@current_resource.service_name}/
        pid = $1
        @current_resource.running(!pid.to_i.zero?)
      end
    end
  else
    @current_resource.running(false)
  end
end
start_service() click to toggle source
# File lib/chef/provider/service/macosx.rb, line 74
def start_service
  if @current_resource.running
    Chef::Log.debug("#{@new_resource} already running, not starting")
  else
    if @new_resource.start_command
      super
    else
      shell_out!("launchctl load -w '#{@plist}'", :user => @owner_uid, :group => @owner_gid)
    end
  end
end
stop_service() click to toggle source
# File lib/chef/provider/service/macosx.rb, line 86
def stop_service
  unless @current_resource.running
    Chef::Log.debug("#{@new_resource} not running, not stopping")
  else
    if @new_resource.stop_command
      super
    else
      shell_out!("launchctl unload '#{@plist}'", :user => @owner_uid, :group => @owner_gid)
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.