class Chef::Provider::Service::Aix

Attributes

status_load_success[R]

Public Class Methods

new(new_resource, run_context) click to toggle source
Calls superclass method Chef::Provider::Service::new
# File lib/chef/provider/service/aix.rb, line 29
def initialize(new_resource, run_context)
  super
end

Public Instance Methods

define_resource_requirements() click to toggle source
# File lib/chef/provider/service/aix.rb, line 83
def define_resource_requirements
  # FIXME? need reload from service.rb
  shared_resource_requirements
end
load_current_resource() click to toggle source
# File lib/chef/provider/service/aix.rb, line 33
def load_current_resource
  @current_resource = Chef::Resource::Service.new(@new_resource.name)
  @current_resource.service_name(@new_resource.service_name)

  @status_load_success = true
  @priority_success = true
  @is_resource_group = false

  determine_current_status!

  @current_resource
end
reload_service() click to toggle source
# File lib/chef/provider/service/aix.rb, line 67
def reload_service
  if @is_resource_group
    shell_out!("refresh -g #{@new_resource.service_name}")
  else
    shell_out!("refresh -s #{@new_resource.service_name}")
  end
end
restart_service() click to toggle source
# File lib/chef/provider/service/aix.rb, line 62
def restart_service
  stop_service
  start_service
end
shared_resource_requirements() click to toggle source
# File lib/chef/provider/service/aix.rb, line 75
def shared_resource_requirements
  super
  requirements.assert(:all_actions) do |a|
    a.assertion { @status_load_success }
    a.whyrun ["Service status not available. Assuming a prior action would have installed the service.", "Assuming status of not running."]
  end
end
start_service() click to toggle source
# File lib/chef/provider/service/aix.rb, line 46
def start_service
  if @is_resource_group
    shell_out!("startsrc -g #{@new_resource.service_name}")
  else
    shell_out!("startsrc -s #{@new_resource.service_name}")
  end
end
stop_service() click to toggle source
# File lib/chef/provider/service/aix.rb, line 54
def stop_service
  if @is_resource_group
    shell_out!("stopsrc -g #{@new_resource.service_name}")
  else
    shell_out!("stopsrc -s #{@new_resource.service_name}")
  end
end

Protected Instance Methods

determine_current_status!() click to toggle source
# File lib/chef/provider/service/aix.rb, line 90
def determine_current_status!
  logger.trace "#{@new_resource} using lssrc to check the status"
  begin
    if is_resource_group?
      # Groups as a whole have no notion of whether they're running
      @current_resource.running false
    else
      service = shell_out!("lssrc -s #{@new_resource.service_name}").stdout
      if service.split(" ").last == "active"
        @current_resource.running true
      else
        @current_resource.running false
      end
    end
    logger.trace "#{@new_resource} running: #{@current_resource.running}"
    # ShellOut sometimes throws different types of Exceptions than ShellCommandFailed.
    # Temporarily catching different types of exceptions here until we get Shellout fixed.
    # TODO: Remove the line before one we get the ShellOut fix.
  rescue Mixlib::ShellOut::ShellCommandFailed, SystemCallError
    @status_load_success = false
    @current_resource.running false
    nil
  end
end
is_resource_group?() click to toggle source
# File lib/chef/provider/service/aix.rb, line 115
def is_resource_group?
  so = shell_out("lssrc -g #{@new_resource.service_name}")
  if so.exitstatus == 0
    logger.trace("#{@new_resource.service_name} is a group")
    @is_resource_group = true
  end
end