summaryrefslogtreecommitdiffstats
path: root/lib/puppet/application
diff options
context:
space:
mode:
authorJesse Wolfe <jes5199@gmail.com>2010-05-12 15:19:33 -0700
committertest branch <puppet-dev@googlegroups.com>2010-02-17 06:50:53 -0800
commit8f4d644210e7a6afc9e08d65a0c60987171747c6 (patch)
treedb5570739e34e4177b8417ba65f9b8a53ea5d4bc /lib/puppet/application
parent6b26a7c0f1793a74ca778383125b7e4618fcc9e2 (diff)
downloadpuppet-8f4d644210e7a6afc9e08d65a0c60987171747c6.tar.gz
puppet-8f4d644210e7a6afc9e08d65a0c60987171747c6.tar.xz
puppet-8f4d644210e7a6afc9e08d65a0c60987171747c6.zip
Feature #2935: lazify require graph for applications
Because environments have to declare their mode before puppet tries to load defaults.rb, it reduces the complexity considerably to have application classes to load their lib dependencies at the last possible moment. Signed-off-by: Jesse Wolfe <jes5199@gmail.com>
Diffstat (limited to 'lib/puppet/application')
-rw-r--r--lib/puppet/application/agent.rb8
-rw-r--r--lib/puppet/application/apply.rb8
-rw-r--r--lib/puppet/application/cert.rb4
-rw-r--r--lib/puppet/application/doc.rb25
-rw-r--r--lib/puppet/application/filebucket.rb3
-rw-r--r--lib/puppet/application/kick.rb6
-rw-r--r--lib/puppet/application/master.rb6
-rw-r--r--lib/puppet/application/queue.rb6
8 files changed, 27 insertions, 39 deletions
diff --git a/lib/puppet/application/agent.rb b/lib/puppet/application/agent.rb
index 093e5b94d..8a8e3cad3 100644
--- a/lib/puppet/application/agent.rb
+++ b/lib/puppet/application/agent.rb
@@ -1,9 +1,4 @@
-require 'puppet'
require 'puppet/application'
-require 'puppet/agent'
-require 'puppet/daemon'
-require 'puppet/configurer'
-require 'puppet/network/client'
class Puppet::Application::Agent < Puppet::Application
@@ -39,6 +34,7 @@ class Puppet::Application::Agent < Puppet::Application
@explicit_waitforcert = false
@args = {}
+ require 'puppet/daemon'
@daemon = Puppet::Daemon.new
@daemon.argv = ARGV.dup
end
@@ -255,6 +251,8 @@ class Puppet::Application::Agent < Puppet::Application
# We need tomake the client either way, we just don't start it
# if --no-client is set.
+ require 'puppet/agent'
+ require 'puppet/configurer'
@agent = Puppet::Agent.new(Puppet::Configurer)
enable_disable_client(@agent) if options[:enable] or options[:disable]
diff --git a/lib/puppet/application/apply.rb b/lib/puppet/application/apply.rb
index fde0c9b8d..b6ce5aabf 100644
--- a/lib/puppet/application/apply.rb
+++ b/lib/puppet/application/apply.rb
@@ -1,8 +1,4 @@
-require 'puppet'
require 'puppet/application'
-require 'puppet/configurer'
-require 'puppet/network/handler'
-require 'puppet/network/client'
class Puppet::Application::Apply < Puppet::Application
@@ -41,8 +37,6 @@ class Puppet::Application::Apply < Puppet::Application
end
def apply
- require 'puppet/configurer'
-
if options[:catalog] == "-"
text = $stdin.read
else
@@ -60,6 +54,7 @@ class Puppet::Application::Apply < Puppet::Application
catalog = catalog.to_ral
+ require 'puppet/configurer'
configurer = Puppet::Configurer.new
configurer.run :catalog => catalog
end
@@ -127,6 +122,7 @@ class Puppet::Application::Apply < Puppet::Application
catalog.retrieval_duration = Time.now - starttime
+ require 'puppet/configurer'
configurer = Puppet::Configurer.new
configurer.execute_prerun_command
diff --git a/lib/puppet/application/cert.rb b/lib/puppet/application/cert.rb
index 80ccc46f9..33410eec5 100644
--- a/lib/puppet/application/cert.rb
+++ b/lib/puppet/application/cert.rb
@@ -1,6 +1,4 @@
-require 'puppet'
require 'puppet/application'
-require 'puppet/ssl/certificate_authority'
class Puppet::Application::Cert < Puppet::Application
@@ -9,6 +7,7 @@ class Puppet::Application::Cert < Puppet::Application
attr_accessor :mode, :all, :ca, :digest, :signed
def find_mode(opt)
+ require 'puppet/ssl/certificate_authority'
modes = Puppet::SSL::CertificateAuthority::Interface::INTERFACE_METHODS
tmp = opt.sub("--", '').to_sym
@mode = modes.include?(tmp) ? tmp : nil
@@ -34,6 +33,7 @@ class Puppet::Application::Cert < Puppet::Application
Puppet::Util::Log.level = :debug
end
+ require 'puppet/ssl/certificate_authority/interface'
Puppet::SSL::CertificateAuthority::Interface::INTERFACE_METHODS.reject {|m| m == :destroy }.each do |method|
option("--#{method}", "-%s" % method.to_s[0,1] ) do
find_mode("--#{method}")
diff --git a/lib/puppet/application/doc.rb b/lib/puppet/application/doc.rb
index 74cde98bd..326265e4c 100644
--- a/lib/puppet/application/doc.rb
+++ b/lib/puppet/application/doc.rb
@@ -1,11 +1,4 @@
-require 'puppet'
require 'puppet/application'
-require 'puppet/util/reference'
-require 'puppet/network/handler'
-require 'puppet/util/rdoc'
-
-$tab = " "
-Reference = Puppet::Util::Reference
class Puppet::Application::Doc < Puppet::Application
@@ -28,7 +21,8 @@ class Puppet::Application::Doc < Puppet::Application
option("--format FORMAT", "-f") do |arg|
method = "to_%s" % arg
- if Reference.method_defined?(method)
+ require 'puppet/util/reference'
+ if Puppet::Util::Reference.method_defined?(method)
options[:format] = method
else
raise "Invalid output format %s" % arg
@@ -36,7 +30,8 @@ class Puppet::Application::Doc < Puppet::Application
end
option("--mode MODE", "-m") do |arg|
- if Reference.modes.include?(arg) or arg.intern==:rdoc
+ require 'puppet/util/reference'
+ if Puppet::Util::Reference.modes.include?(arg) or arg.intern==:rdoc
options[:mode] = arg.intern
else
raise "Invalid output mode %s" % arg
@@ -44,7 +39,8 @@ class Puppet::Application::Doc < Puppet::Application
end
option("--list", "-l") do |arg|
- puts Reference.references.collect { |r| Reference.reference(r).doc }.join("\n")
+ require 'puppet/util/reference'
+ puts Puppet::Util::Reference.references.collect { |r| Puppet::Util::Reference.reference(r).doc }.join("\n")
exit(0)
end
@@ -77,6 +73,7 @@ class Puppet::Application::Doc < Puppet::Application
)
Puppet.settings[:document_all] = options[:all] || false
begin
+ require 'puppet/util/rdoc'
if @manifest
Puppet::Util::RDoc.manifestdoc(files)
else
@@ -94,6 +91,7 @@ class Puppet::Application::Doc < Puppet::Application
end
def trac
+ require 'puppet/util/reference'
options[:references].each do |name|
section = Puppet::Util::Reference.reference(name) or raise "Could not find section %s" % name
unless options[:mode] == :pdf
@@ -106,6 +104,7 @@ class Puppet::Application::Doc < Puppet::Application
text = ""
with_contents = false
exit_code = 0
+ require 'puppet/util/reference'
options[:references].sort { |a,b| a.to_s <=> b.to_s }.each do |name|
raise "Could not find reference %s" % name unless section = Puppet::Util::Reference.reference(name)
@@ -135,6 +134,7 @@ class Puppet::Application::Doc < Puppet::Application
with_contents = true
end
exit_code = 0
+ require 'puppet/util/reference'
options[:references].sort { |a,b| a.to_s <=> b.to_s }.each do |name|
raise "Could not find reference %s" % name unless section = Puppet::Util::Reference.reference(name)
@@ -182,8 +182,9 @@ class Puppet::Application::Doc < Puppet::Application
def setup_reference
if options[:all]
# Don't add dynamic references to the "all" list.
- options[:references] = Reference.references.reject do |ref|
- Reference.reference(ref).dynamic?
+ require 'puppet/util/reference'
+ options[:references] = Puppet::Util::Reference.references.reject do |ref|
+ Puppet::Util::Reference.reference(ref).dynamic?
end
end
diff --git a/lib/puppet/application/filebucket.rb b/lib/puppet/application/filebucket.rb
index 8e930f5e4..8f9e91771 100644
--- a/lib/puppet/application/filebucket.rb
+++ b/lib/puppet/application/filebucket.rb
@@ -1,6 +1,4 @@
-require 'puppet'
require 'puppet/application'
-require 'puppet/file_bucket/dipper'
class Puppet::Application::Filebucket < Puppet::Application
@@ -72,6 +70,7 @@ class Puppet::Application::Filebucket < Puppet::Application
exit(Puppet.settings.print_configs ? 0 : 1)
end
+ require 'puppet/file_bucket/dipper'
begin
if options[:local] or options[:bucket]
path = options[:bucket] || Puppet[:bucketdir]
diff --git a/lib/puppet/application/kick.rb b/lib/puppet/application/kick.rb
index 37d3e533f..0dd4d39ad 100644
--- a/lib/puppet/application/kick.rb
+++ b/lib/puppet/application/kick.rb
@@ -1,9 +1,5 @@
-require 'puppet'
require 'puppet/application'
-Puppet.warning "RubyGems not installed" unless Puppet.features.rubygems?
-Puppet.warning "Failed to load ruby LDAP library. LDAP functionality will not be available" unless Puppet.features.ldap?
-
class Puppet::Application::Kick < Puppet::Application
should_not_parse_config
@@ -52,6 +48,8 @@ class Puppet::Application::Kick < Puppet::Application
def main
require 'puppet/network/client'
+
+ Puppet.warning "Failed to load ruby LDAP library. LDAP functionality will not be available" unless Puppet.features.ldap?
require 'puppet/util/ldap/connection'
todo = @hosts.dup
diff --git a/lib/puppet/application/master.rb b/lib/puppet/application/master.rb
index 44c8c027b..993d7df44 100644
--- a/lib/puppet/application/master.rb
+++ b/lib/puppet/application/master.rb
@@ -1,8 +1,4 @@
-require 'puppet'
require 'puppet/application'
-require 'puppet/daemon'
-require 'puppet/network/server'
-require 'puppet/network/http/rack' if Puppet.features.rack?
class Puppet::Application::Master < Puppet::Application
@@ -37,6 +33,7 @@ class Puppet::Application::Master < Puppet::Application
end
# Create this first-off, so we have ARGV
+ require 'puppet/daemon'
@daemon = Puppet::Daemon.new
@daemon.argv = ARGV.dup
end
@@ -108,6 +105,7 @@ class Puppet::Application::Master < Puppet::Application
end
unless options[:rack]
+ require 'puppet/network/server'
@daemon.server = Puppet::Network::Server.new(:xmlrpc_handlers => xmlrpc_handlers)
@daemon.daemonize if Puppet[:daemonize]
else
diff --git a/lib/puppet/application/queue.rb b/lib/puppet/application/queue.rb
index 4b3aa57b5..ce5323505 100644
--- a/lib/puppet/application/queue.rb
+++ b/lib/puppet/application/queue.rb
@@ -1,8 +1,4 @@
-require 'puppet'
-require 'puppet/daemon'
require 'puppet/application'
-require 'puppet/resource/catalog'
-require 'puppet/indirector/catalog/queue'
require 'puppet/util'
class Puppet::Application::Queue < Puppet::Application
@@ -11,6 +7,7 @@ class Puppet::Application::Queue < Puppet::Application
attr_accessor :daemon
def preinit
+ require 'puppet/daemon'
@daemon = Puppet::Daemon.new
@daemon.argv = ARGV.dup
Puppet::Util::Log.newdestination(:console)
@@ -82,6 +79,7 @@ class Puppet::Application::Queue < Puppet::Application
exit(Puppet.settings.print_configs ? 0 : 1)
end
+ require 'puppet/resource/catalog'
Puppet::Resource::Catalog.terminus_class = :active_record
daemon.daemonize if Puppet[:daemonize]