blob: 05bb21fe98f63e1a7e4defdd33c8127aba48102f (
plain)
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
70
71
72
73
74
75
76
|
require 'puppet'
require 'puppet/daemon'
require 'puppet/application'
require 'puppet/resource/catalog'
require 'puppet/indirector/catalog/queue'
Puppet::Application.new(:puppetqd) do
should_parse_config
attr_accessor :daemon
preinit do
@daemon = Puppet::Daemon.new
@daemon.argv = ARGV.dup
# Do an initial trap, so that cancels don't get a stack trace.
trap(:INT) do
$stderr.puts "Cancelling startup"
exit(0)
end
{
:verbose => false,
:debug => false
}.each do |opt,val|
options[opt] = val
end
end
option("--debug","-d")
option("--verbose","-v")
command(:main) do
Puppet::Resource::Catalog::Queue.subscribe do |catalog|
# Once you have a Puppet::Resource::Catalog instance, calling save() on it should suffice
# to put it through to the database via its active_record indirector (which is determined
# by the terminus_class = :active_record setting above)
Puppet.notice "Processing queued catalog for %s" % catalog.name
catalog.save
end
sleep_forever()
end
# Handle the logging settings.
def setup_logs
if options[:debug] or options[:verbose]
Puppet::Util::Log.newdestination(:console)
if options[:debug]
Puppet::Util::Log.level = :debug
else
Puppet::Util::Log.level = :info
end
end
end
setup do
unless Puppet.features.stomp?
raise ArgumentError, "Could not load the 'stomp' library, which must be present for queueing to work. You must install the required library."
end
setup_logs
if Puppet.settings.print_configs?
exit(Puppet.settings.print_configs ? 0 : 1)
end
Puppet::Resource::Catalog.terminus_class = :active_record
daemon.daemonize if Puppet[:daemonize]
end
def sleep_forever
while true do sleep 1000 end
end
end
|