diff options
author | Luke Kanies <luke@madstop.com> | 2009-02-02 17:19:07 -0600 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2009-02-06 18:08:43 -0600 |
commit | c0fcb2137e66af8ba60a959faa221034c6832b69 (patch) | |
tree | 10f62605333979ea64445dca5d4d66d58237de97 /bin | |
parent | 700e823f7c33eb3c5b4d9e467742fd24f63bbeef (diff) | |
download | puppet-c0fcb2137e66af8ba60a959faa221034c6832b69.tar.gz puppet-c0fcb2137e66af8ba60a959faa221034c6832b69.tar.xz puppet-c0fcb2137e66af8ba60a959faa221034c6832b69.zip |
Creating and using a new Puppet::Daemon class
This replaces the short-lived EventManager class, all of
the service- and timer-related code in puppet.rb, and moves
code from agent.rb, server.rb, and other places into one
class responsible for starting, stopping, pids, and more.
The Daemon module is no longer in existence, so it's been
removed from the classes that were using it.
Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/puppetd | 58 | ||||
-rwxr-xr-x | bin/puppetmasterd | 19 |
2 files changed, 25 insertions, 52 deletions
diff --git a/bin/puppetd b/bin/puppetd index 2a71a9a08..4c7f1d131 100755 --- a/bin/puppetd +++ b/bin/puppetd @@ -163,9 +163,14 @@ end require 'puppet' require 'puppet/agent' +require 'puppet/daemon' require 'puppet/configurer' require 'getoptlong' +# Create this now, so it has access to ARGV +daemon = Puppet::Daemon.new +daemon.argv = ARGV.dup + options = [ [ "--centrallogging", GetoptLong::NO_ARGUMENT ], [ "--disable", GetoptLong::NO_ARGUMENT ], @@ -214,7 +219,7 @@ begin options[:disable] = true when "--serve" if Puppet::Network::Handler.handler(arg) - options[:serve][arg.to_sym] = {} + options[:serve] << arg.to_sym else raise "Could not find handler for %s" % arg end @@ -349,12 +354,14 @@ if options[:enable] or options[:disable] exit(0) end +daemon.agent = agent + server = nil # It'd be nice to daemonize later, but we have to daemonize before the # waitforcert happens. if Puppet[:daemonize] - agent.daemonize + daemon.daemonize end host = Puppet::SSL::Host.new @@ -380,40 +387,20 @@ if Puppet[:listen] and ! options[:onetime] handlers = nil if options[:serve].empty? - handlers = {:Runner => {}} + handlers = [:Runner] else handlers = options[:serve] end - handlers.each do |name, hash| - Puppet.info "Starting handler for %s" % name - end - - args[:Handlers] = handlers - args[:Port] = Puppet[:puppetport] - - require 'puppet/network/http_server/webrick' - - begin - server = Puppet::Network::HTTPServer::WEBrick.new(args) - rescue => detail - $stderr.puts detail - puts detail.backtrace - exit(1) - end + require 'puppet/network/server' + # No REST handlers yet. + server = Puppet::Network::Server.new(:handlers => [:facts], :xmlrpc_handlers => handlers, :port => Puppet[:puppetport]) - objects << server + daemon.server = server elsif options[:onetime] and Puppet[:listen] Puppet.notice "Ignoring --listen on onetime run" end -if options[:client] - objects << agent -end - -# Set traps for INT and TERM -Puppet.settraps - # If --onetime is specified, we don't run 'start', which means we don't # create a pidfile. if options[:onetime] @@ -422,8 +409,7 @@ if options[:onetime] exit(43) end - # Add the service, so the traps work correctly. - Puppet.newservice(agent) + daemon.set_signal_traps begin agent.run @@ -435,17 +421,7 @@ if options[:onetime] end exit(0) else - if server - Puppet.newservice(server) - end + Puppet.notice "Starting Puppet client version %s" % [Puppet.version] - if options[:client] - Puppet.notice "Starting Puppet client version %s" % [Puppet.version] - Puppet.newservice(agent) - end - - Puppet.settraps - - Puppet.start + daemon.start end - diff --git a/bin/puppetmasterd b/bin/puppetmasterd index 74ec821d4..3abdb77ea 100755 --- a/bin/puppetmasterd +++ b/bin/puppetmasterd @@ -70,8 +70,13 @@ end require 'getoptlong' require 'puppet' +require 'puppet/daemon' require 'puppet/network/server' +# Create this first-off, so we have ARGV +daemon = Puppet::Daemon.new +daemon.argv = ARGV.dup + options = [ [ "--debug", "-d", GetoptLong::NO_ARGUMENT ], [ "--help", "-h", GetoptLong::NO_ARGUMENT ], @@ -197,7 +202,7 @@ if Puppet[:ca] xmlrpc_handlers << :CA end -server = Puppet::Network::Server.new(:handlers => rest_handlers, :xmlrpc_handlers => xmlrpc_handlers) +daemon.server = Puppet::Network::Server.new(:handlers => rest_handlers, :xmlrpc_handlers => xmlrpc_handlers) # Make sure we've got a localhost ssl cert Puppet::SSL::Host.localhost @@ -218,16 +223,8 @@ if Process.uid == 0 end end -# Tell Puppet to manage this service for us, which has it starting and stopping -# as appropriate. -Puppet.newservice(server) - -Puppet.settraps - -if Puppet[:daemonize] - server.daemonize -end +daemon.daemonize if Puppet[:daemonize] Puppet.notice "Starting Puppet server version %s" % [Puppet.version] -Puppet.start +daemon.start |