summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-02-02 17:19:07 -0600
committerLuke Kanies <luke@madstop.com>2009-02-06 18:08:43 -0600
commitc0fcb2137e66af8ba60a959faa221034c6832b69 (patch)
tree10f62605333979ea64445dca5d4d66d58237de97 /bin
parent700e823f7c33eb3c5b4d9e467742fd24f63bbeef (diff)
downloadpuppet-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-xbin/puppetd58
-rwxr-xr-xbin/puppetmasterd19
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