mirror of
https://github.com/inspec/inspec
synced 2025-02-17 06:28:40 +00:00
extend upstart implementation to support systemv services
This commit is contained in:
parent
b33717fa55
commit
7b179872bd
1 changed files with 32 additions and 28 deletions
|
@ -150,38 +150,42 @@ class Upstart < ServiceManager
|
|||
def info(service_name)
|
||||
# get the status of upstart service
|
||||
cmd = inspec.command("initctl status #{service_name}")
|
||||
return nil if cmd.exit_status != 0
|
||||
|
||||
# @see: http://upstart.ubuntu.com/cookbook/#job-states
|
||||
# grep for running to indicate the service is there
|
||||
match_running = /running/.match(cmd.stdout)
|
||||
!match_running.nil? ? (running = true) : (running = false)
|
||||
if cmd.exit_status.to_i == 0
|
||||
# @see: http://upstart.ubuntu.com/cookbook/#job-states
|
||||
# grep for running to indicate the service is there
|
||||
match_running = /running/.match(cmd.stdout)
|
||||
!match_running.nil? ? (running = true) : (running = false)
|
||||
|
||||
# check if a service is enabled
|
||||
# http://upstart.ubuntu.com/cookbook/#determine-if-a-job-is-disabled
|
||||
# $ initctl show-config $job | grep -q "^ start on" && echo enabled || echo disabled
|
||||
# Ubuntu 10.04 show-config is not supported
|
||||
# @see http://manpages.ubuntu.com/manpages/maverick/man8/initctl.8.html
|
||||
config = inspec.command("initctl show-config #{service_name}")
|
||||
match_enabled = /^\s*start on/.match(config.stdout)
|
||||
!match_enabled.nil? ? (enabled = true) : (enabled = false)
|
||||
# check if a service is enabled
|
||||
# http://upstart.ubuntu.com/cookbook/#determine-if-a-job-is-disabled
|
||||
# $ initctl show-config $job | grep -q "^ start on" && echo enabled || echo disabled
|
||||
# Ubuntu 10.04 show-config is not supported
|
||||
# @see http://manpages.ubuntu.com/manpages/maverick/man8/initctl.8.html
|
||||
config = inspec.command("initctl show-config #{service_name}")
|
||||
match_enabled = /^\s*start on/.match(config.stdout)
|
||||
!match_enabled.nil? ? (enabled = true) : (enabled = false)
|
||||
|
||||
# implement fallback for Ubuntu 10.04
|
||||
if inspec.os[:family] == 'ubuntu' &&
|
||||
inspec.os[:release].to_f >= 10.04 &&
|
||||
inspec.os[:release].to_f < 12.04 &&
|
||||
cmd.exit_status == 0
|
||||
enabled = true
|
||||
# implement fallback for Ubuntu 10.04
|
||||
if inspec.os[:family] == 'ubuntu' &&
|
||||
inspec.os[:release].to_f >= 10.04 &&
|
||||
inspec.os[:release].to_f < 12.04 &&
|
||||
cmd.exit_status == 0
|
||||
enabled = true
|
||||
end
|
||||
|
||||
return {
|
||||
name: service_name,
|
||||
description: nil,
|
||||
installed: true,
|
||||
running: running,
|
||||
enabled: enabled,
|
||||
type: 'upstart',
|
||||
}
|
||||
# fallback for systemv services, those are not handled via `initctl`
|
||||
else
|
||||
return SysV.new(inspec).info(service_name)
|
||||
end
|
||||
|
||||
{
|
||||
name: service_name,
|
||||
description: nil,
|
||||
installed: true,
|
||||
running: running,
|
||||
enabled: enabled,
|
||||
type: 'upstart',
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue