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
|
# File 'lib/puppet/parser/functions/dynatrace_functions.rb', line 3
newfunction(:stop_processes, :type => :rvalue) do |args|
proc_pattern = args[0]
proc_user = args[1]
platform_family = args[2]
timeout = args[4]
signal = args[5]
pids = find_pids(proc_pattern, proc_user, platform_family)
killed = false
unless pids.empty?
Process.kill signal, *pids
begin
Timeout.timeout(timeout, DynatraceTimeout) do
loop do
pids = find_pids(proc_pattern, proc_user, platform_family)
if pids.empty?
killed = true
break
end
sleep 1
end
end
rescue DynatraceTimeout
raise "Process(es) #{pids} did not stop"
end
end
killed
end
|