forked from sensu/sensu-chef
/
service.rb
69 lines (62 loc) · 2.17 KB
/
service.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
def sensu_ctl
"/opt/sensu/bin/sensu-ctl"
end
def service_pipe
"/opt/sensu/sv/#{new_resource.service}/supervise/ok"
end
def service_path
"/opt/sensu/service/#{new_resource.service}"
end
def load_current_resource
@service_enabled = ::File.symlink?(service_path) && ::FileTest.pipe?(service_pipe)
end
action :enable do
case new_resource.init_style
when "sysv"
service new_resource.service do
provider node.platform_family =~ /debian/ ? Chef::Provider::Service::Init::Debian : Chef::Provider::Service::Init::Redhat
supports :status => true, :restart => true
action [:enable, :start]
subscribes :restart, resources("ruby_block[sensu_service_trigger]"), :delayed
end
when "runit"
ruby_block "block_until_runsv_#{new_resource.service}_available" do
block do
Chef::Log.debug("waiting until named pipe #{service_pipe} exists")
until ::FileTest.pipe?(service_pipe)
sleep(1)
Chef::Log.debug(".")
end
end
action :nothing
end
execute "sensu-ctl_#{new_resource.service}_enable" do
command "#{sensu_ctl} #{new_resource.service} enable"
not_if { @service_enabled }
notifies :create, "ruby_block[block_until_runsv_#{new_resource.service}_available]", :immediately
end
service new_resource.service do
start_command "#{sensu_ctl} #{new_resource.service} start"
stop_command "#{sensu_ctl} #{new_resource.service} stop"
status_command "#{sensu_ctl} #{new_resource.service} status"
restart_command "#{sensu_ctl} #{new_resource.service} restart"
supports :restart => true, :status => true
action [:start]
subscribes :restart, resources("ruby_block[sensu_service_trigger]"), :delayed
end
end
end
action :disable do
case new_resource.init_style
when "sysv"
service new_resource.service do
provider node.platform_family =~ /debian/ ? Chef::Provider::Service::Init::Debian : Chef::Provider::Service::Init::Redhat
action [:disable]
end
when "runit"
execute "sensu-ctl_#{new_resource.service}_disable" do
command "#{sensu_ctl} #{new_resource.service} disable"
only_if { @service_enabled }
end
end
end