class Services

Public Class Methods

build_list(selectors, run_level, filters) click to toggle source
# File lib/sos/services.rb, line 21
def self.build_list(selectors, run_level, filters)
  # Returns each service on a line with
  # name:state

  selector = selectors.split(',').join('|')

  list=''
  redhat = %x{cat /etc/redhat-release}
  case redhat
  when /Red Hat Enterprise Linux/
    if redhat =~ /release 6/
      list = %x{ chkconfig --list | awk '/#{selector}/ {print $1":"$#{run_level+2}}'}
      list.gsub!(/:\d:/,':')
    end
  when /Fedora/
    list = %x{ systemctl list-unit-files | awk '/#{selector}/ {print}'}
    list.gsub!(/\.service[\s]*/,':')
  end

  if filters != []
    filtered = ''
    list.each_line { |line|
      filters.each { |filter| filtered << line if line =~ /#{filter}/ }
    }
    list = filtered
  end
  list
end
new(service_list, services_logs) click to toggle source
# File lib/sos/services.rb, line 50
def initialize(service_list, services_logs)
  @services = []
  service_list.each_line  { |line|
    name, state = line.chop.split(':')
    log = services_logs[name] ? services_logs[name] : ''
    @services << Service.new(name, state, log)
  }
  @services
end

Public Instance Methods

by_name() click to toggle source
# File lib/sos/services.rb, line 60
def by_name
  list = []
  @services.each { |service|
    list << service
  }
  list
end
enabled() click to toggle source
# File lib/sos/services.rb, line 68
def enabled
  list = []
  @services.each { |service|
    list << service if service.state
  }
  list
end