diff options
author | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-02-14 17:15:08 +0100 |
---|---|---|
committer | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-02-16 20:12:10 +0100 |
commit | af219bf45fe58287f1b46bcfd98dfbe548958b33 (patch) | |
tree | ee7d809d7b09bd260dc8f9dcb49479240b0ed35c /bin/puppet | |
parent | d51398c3eb3c09a9912fff8b4b7656a9ddb6b873 (diff) | |
download | puppet-af219bf45fe58287f1b46bcfd98dfbe548958b33.tar.gz puppet-af219bf45fe58287f1b46bcfd98dfbe548958b33.tar.xz puppet-af219bf45fe58287f1b46bcfd98dfbe548958b33.zip |
Move puppet to the Application Controller paradigm
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
Diffstat (limited to 'bin/puppet')
-rwxr-xr-x | bin/puppet | 191 |
1 files changed, 2 insertions, 189 deletions
diff --git a/bin/puppet b/bin/puppet index e3a9c4f37..ec609ce6d 100755 --- a/bin/puppet +++ b/bin/puppet @@ -64,192 +64,5 @@ # Copyright (c) 2005 Reductive Labs, LLC # Licensed under the GNU Public License -require 'puppet' -require 'puppet/network/handler' -require 'puppet/network/client' -require 'getoptlong' - -options = [ - [ "--debug", "-d", GetoptLong::NO_ARGUMENT ], - [ "--help", "-h", GetoptLong::NO_ARGUMENT ], - [ "--logdest", "-l", GetoptLong::REQUIRED_ARGUMENT ], - [ "--execute", "-e", GetoptLong::REQUIRED_ARGUMENT ], - [ "--loadclasses", "-L", GetoptLong::NO_ARGUMENT ], - [ "--verbose", "-v", GetoptLong::NO_ARGUMENT ], - [ "--use-nodes", GetoptLong::NO_ARGUMENT ], - [ "--detailed-exitcodes", GetoptLong::NO_ARGUMENT ], - [ "--version", "-V", GetoptLong::NO_ARGUMENT ] -] - -# Add all of the config parameters as valid options. -Puppet.settings.addargs(options) - -result = GetoptLong.new(*options) - -options = { - :debug => false, - :verbose => false, - :noop => false, - :logfile => false, - :loadclasses => false, - :logset => false, - :code => nil, - :detailed_exits => false, -} - - -master = { - :Local => true -} - -begin - result.each { |opt,arg| - case opt - when "--version" - puts "%s" % Puppet.version - exit - when "--help" - if Puppet.features.usage? - RDoc::usage && exit - else - puts "No help available unless you have RDoc::usage installed" - exit - end - when "--use-nodes" - options[:UseNodes] = true - when "--verbose" - options[:verbose] = true - when "--debug" - options[:debug] = true - when "--execute" - options[:code] = arg - when "--loadclasses" - options[:loadclasses] = true - when "--detailed-exitcodes" - options[:detailed_exits] = true - when "--logdest" - begin - Puppet::Util::Log.newdestination(arg) - options[:logset] = true - rescue => detail - $stderr.puts detail.to_s - end - else - Puppet.settings.handlearg(opt, arg) - end - } -rescue GetoptLong::InvalidOption => detail - $stderr.puts "Try '#{$0} --help'" - exit(1) -end - -Puppet.parse_config - -# Now parse the config -if Puppet[:config] and File.exists? Puppet[:config] - Puppet.settings.parse(Puppet[:config]) -end - -if Puppet.settings.print_configs? - exit(Puppet.settings.print_configs ? 0 : 1) -end - -# If noop is set, then also enable diffs -if Puppet[:noop] - Puppet[:show_diff] = true -end - -unless options[:logset] - Puppet::Util::Log.newdestination(:console) -end - -client = nil -server = nil - -trap(:INT) do - $stderr.puts "Exiting" - exit(1) -end - -if options[:debug] - Puppet::Util::Log.level = :debug -elsif options[:verbose] - Puppet::Util::Log.level = :info -end - -# Set our code or file to use. -if options[:code] or ARGV.length == 0 - Puppet[:code] = options[:code] || STDIN.read -else - Puppet[:manifest] = ARGV.shift -end - -if Puppet[:parseonly] - begin - Puppet::Parser::Interpreter.new.parser(Puppet[:environment]) - rescue => detail - Puppet.err detail - exit 1 - end - exit 0 -end - -# Collect our facts. -facts = Puppet::Node::Facts.find(Puppet[:certname]) - -# Find our Node -unless node = Puppet::Node.find(Puppet[:certname]) - raise "Could not find node %s" % Puppet[:certname] -end - -# Merge in the facts. -node.merge(facts.values) - -# Allow users to load the classes that puppetd creates. -if options[:loadclasses] - file = Puppet[:classfile] - if FileTest.exists?(file) - unless FileTest.readable?(file) - $stderr.puts "%s is not readable" % file - exit(63) - end - - node.classes = File.read(file).split(/[\s\n]+/) - end -end - -begin - # Compile our catalog - starttime = Time.now - catalog = Puppet::Resource::Catalog.find(node.name, :use_node => node) - - # Translate it to a RAL catalog - catalog = catalog.to_ral - - catalog.host_config = true if Puppet[:graph] or Puppet[:report] - - catalog.finalize - - catalog.retrieval_duration = Time.now - starttime - - # And apply it - transaction = catalog.apply - - status = 0 - if not Puppet[:noop] and options[:detailed_exits] then - transaction.generate_report - status |= 2 if transaction.report.metrics["changes"][:total] > 0 - status |= 4 if transaction.report.metrics["resources"][:failed] > 0 - end - exit(status) -rescue => detail - if Puppet[:trace] - puts detail.backtrace - end - if detail.is_a?(XMLRPC::FaultException) - $stderr.puts detail.message - else - $stderr.puts detail - end - exit(1) -end +require 'puppet/application/puppet' +Puppet::Application[:puppet].run |