diff options
Diffstat (limited to 'lib/puppet/application/apply.rb')
-rw-r--r-- | lib/puppet/application/apply.rb | 258 |
1 files changed, 129 insertions, 129 deletions
diff --git a/lib/puppet/application/apply.rb b/lib/puppet/application/apply.rb index cd4c75d75..bb4186dbd 100644 --- a/lib/puppet/application/apply.rb +++ b/lib/puppet/application/apply.rb @@ -2,164 +2,164 @@ require 'puppet/application' class Puppet::Application::Apply < Puppet::Application - should_parse_config - - option("--debug","-d") - option("--execute EXECUTE","-e") do |arg| - options[:code] = arg + should_parse_config + + option("--debug","-d") + option("--execute EXECUTE","-e") do |arg| + options[:code] = arg + end + option("--loadclasses","-L") + option("--verbose","-v") + option("--use-nodes") + option("--detailed-exitcodes") + + option("--apply catalog", "-a catalog") do |arg| + options[:catalog] = arg + end + + option("--logdest LOGDEST", "-l") do |arg| + begin + Puppet::Util::Log.newdestination(arg) + options[:logset] = true + rescue => detail + $stderr.puts detail.to_s end - option("--loadclasses","-L") - option("--verbose","-v") - option("--use-nodes") - option("--detailed-exitcodes") - - option("--apply catalog", "-a catalog") do |arg| - options[:catalog] = arg + end + + def run_command + if options[:catalog] + apply + elsif Puppet[:parseonly] + parseonly + else + main end + end - option("--logdest LOGDEST", "-l") do |arg| - begin - Puppet::Util::Log.newdestination(arg) - options[:logset] = true - rescue => detail - $stderr.puts detail.to_s - end + def apply + if options[:catalog] == "-" + text = $stdin.read + else + text = File.read(options[:catalog]) end - def run_command - if options[:catalog] - apply - elsif Puppet[:parseonly] - parseonly - else - main - end + begin + catalog = Puppet::Resource::Catalog.convert_from(Puppet::Resource::Catalog.default_format,text) + catalog = Puppet::Resource::Catalog.pson_create(catalog) unless catalog.is_a?(Puppet::Resource::Catalog) + rescue => detail + raise Puppet::Error, "Could not deserialize catalog from pson: #{detail}" end - def apply - if options[:catalog] == "-" - text = $stdin.read - else - text = File.read(options[:catalog]) - end + catalog = catalog.to_ral - begin - catalog = Puppet::Resource::Catalog.convert_from(Puppet::Resource::Catalog.default_format,text) - catalog = Puppet::Resource::Catalog.pson_create(catalog) unless catalog.is_a?(Puppet::Resource::Catalog) - rescue => detail - raise Puppet::Error, "Could not deserialize catalog from pson: #{detail}" - end + require 'puppet/configurer' + configurer = Puppet::Configurer.new + configurer.run :catalog => catalog + end - catalog = catalog.to_ral - - require 'puppet/configurer' - configurer = Puppet::Configurer.new - configurer.run :catalog => catalog + def parseonly + # Set our code or file to use. + if options[:code] or command_line.args.length == 0 + Puppet[:code] = options[:code] || STDIN.read + else + Puppet[:manifest] = command_line.args.shift end - - def parseonly - # Set our code or file to use. - if options[:code] or command_line.args.length == 0 - Puppet[:code] = options[:code] || STDIN.read - else - Puppet[:manifest] = command_line.args.shift - end - begin - Puppet::Node::Environment.new(Puppet[:environment]).known_resource_types - rescue => detail - Puppet.err detail - exit 1 - end - exit 0 + begin + Puppet::Node::Environment.new(Puppet[:environment]).known_resource_types + rescue => detail + Puppet.err detail + exit 1 + end + exit 0 + end + + def main + # Set our code or file to use. + if options[:code] or command_line.args.length == 0 + Puppet[:code] = options[:code] || STDIN.read + else + Puppet[:manifest] = command_line.args.shift end - def main - # Set our code or file to use. - if options[:code] or command_line.args.length == 0 - Puppet[:code] = options[:code] || STDIN.read - else - Puppet[:manifest] = command_line.args.shift - end + # Collect our facts. + unless facts = Puppet::Node::Facts.find(Puppet[:certname]) + raise "Could not find facts for #{Puppet[:certname]}" + end - # Collect our facts. - unless facts = Puppet::Node::Facts.find(Puppet[:certname]) - raise "Could not find facts for #{Puppet[:certname]}" - end + # Find our Node + unless node = Puppet::Node.find(Puppet[:certname]) + raise "Could not find node #{Puppet[:certname]}" + end - # Find our Node - unless node = Puppet::Node.find(Puppet[:certname]) - raise "Could not find node #{Puppet[:certname]}" - end + # Merge in the facts. + node.merge(facts.values) - # Merge in the facts. - node.merge(facts.values) - - # Allow users to load the classes that puppet agent creates. - if options[:loadclasses] - file = Puppet[:classfile] - if FileTest.exists?(file) - unless FileTest.readable?(file) - $stderr.puts "#{file} is not readable" - exit(63) - end - node.classes = File.read(file).split(/[\s\n]+/) - end + # Allow users to load the classes that puppet agent creates. + if options[:loadclasses] + file = Puppet[:classfile] + if FileTest.exists?(file) + unless FileTest.readable?(file) + $stderr.puts "#{file} is not readable" + 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) + 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 + # Translate it to a RAL catalog + catalog = catalog.to_ral - catalog.finalize + catalog.finalize - catalog.retrieval_duration = Time.now - starttime + catalog.retrieval_duration = Time.now - starttime - require 'puppet/configurer' - configurer = Puppet::Configurer.new - configurer.execute_prerun_command + require 'puppet/configurer' + configurer = Puppet::Configurer.new + configurer.execute_prerun_command - # And apply it - transaction = catalog.apply + # And apply it + transaction = catalog.apply - configurer.execute_postrun_command + configurer.execute_postrun_command - status = 0 - if not Puppet[:noop] and options[:detailed_exitcodes] - transaction.generate_report - exit(transaction.report.exit_status) - else - exit(0) - end - rescue => detail - puts detail.backtrace if Puppet[:trace] - $stderr.puts detail.message - exit(1) - end + status = 0 + if not Puppet[:noop] and options[:detailed_exitcodes] + transaction.generate_report + exit(transaction.report.exit_status) + else + exit(0) + end + rescue => detail + puts detail.backtrace if Puppet[:trace] + $stderr.puts detail.message + exit(1) end + end - def setup - exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs? + def setup + exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs? - # If noop is set, then also enable diffs - Puppet[:show_diff] = true if Puppet[:noop] + # If noop is set, then also enable diffs + Puppet[:show_diff] = true if Puppet[:noop] - Puppet::Util::Log.newdestination(:console) unless options[:logset] - client = nil - server = nil + Puppet::Util::Log.newdestination(:console) unless options[:logset] + client = nil + server = nil - trap(:INT) do - $stderr.puts "Exiting" - exit(1) - end + 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 + if options[:debug] + Puppet::Util::Log.level = :debug + elsif options[:verbose] + Puppet::Util::Log.level = :info end + end end |