summaryrefslogtreecommitdiffstats
path: root/lib/puppet/application/queue.rb
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-08-13 19:13:43 -0700
committertest branch <puppet-dev@googlegroups.com>2010-02-17 06:50:53 -0800
commit7a327775c14fc5fed3998918e9c69af939380617 (patch)
treed5e3e23ad757d037ec6455bddab5abeddc4798a1 /lib/puppet/application/queue.rb
parentb19a0442ed31cedd3846b9e26c25b5ea4b7ff22f (diff)
downloadpuppet-7a327775c14fc5fed3998918e9c69af939380617.tar.gz
puppet-7a327775c14fc5fed3998918e9c69af939380617.tar.xz
puppet-7a327775c14fc5fed3998918e9c69af939380617.zip
Renaming applications, mostly removing 'puppet'
Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'lib/puppet/application/queue.rb')
-rw-r--r--lib/puppet/application/queue.rb96
1 files changed, 96 insertions, 0 deletions
diff --git a/lib/puppet/application/queue.rb b/lib/puppet/application/queue.rb
new file mode 100644
index 000000000..13fb3e107
--- /dev/null
+++ b/lib/puppet/application/queue.rb
@@ -0,0 +1,96 @@
+require 'puppet'
+require 'puppet/daemon'
+require 'puppet/application'
+require 'puppet/resource/catalog'
+require 'puppet/indirector/catalog/queue'
+require 'puppet/util'
+
+Puppet::Application.new(:queue) do
+ extend Puppet::Util
+ should_parse_config
+
+ attr_accessor :daemon
+
+ preinit do
+ @daemon = Puppet::Daemon.new
+ @daemon.argv = ARGV.dup
+ Puppet::Util::Log.newdestination(:console)
+
+ # Do an initial trap, so that cancels don't get a stack trace.
+
+ # This exits with exit code 1
+ trap(:INT) do
+ $stderr.puts "Caught SIGINT; shutting down"
+ exit(1)
+ end
+
+ # This is a normal shutdown, so code 0
+ trap(:TERM) do
+ $stderr.puts "Caught SIGTERM; shutting down"
+ 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.notice "Starting puppetqd %s" % Puppet.version
+ 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)
+ benchmark(:notice, "Processing queued catalog for %s" % catalog.name) do
+ begin
+ catalog.save
+ rescue => detail
+ puts detail.backtrace if Puppet[:trace]
+ Puppet.err "Could not save queued catalog for %s: %s" % [catalog.name, detail]
+ end
+ end
+ end
+
+ Thread.list.each { |thread| thread.join }
+ 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]
+
+ # We want to make sure that we don't have a cache
+ # class set up, because if storeconfigs is enabled,
+ # we'll get a loop of continually caching the catalog
+ # for storage again.
+ Puppet::Resource::Catalog.cache_class = nil
+ end
+end