def execute(session, args)
ppid = session.path(:ppid)
File::open(ppid, "w") { |f| f.puts "#{Process::pid}"}
monitor = false
oldusr1 = trap("SIGUSR1") do
monitor = true
end
Cft::Puppet::genstate(session.path(:pp_after))
Cft::RPM::genstate(session.path(:rpm_after))
Cft::RPM::genshadow(session.path(:rpm_shadow),
session.path(:rpm_before),
session.path(:rpm_after))
File::delete(session.pid)
slept = 0
while not monitor and slept < 10
slept += 0.5
sleep 0.5
end
if slept >= 10
puts "Timed out waiting for daemon to shut down"
return 1
end
File::delete(ppid)
puts "Stopped session #{session.name}"
return 0
end