[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35

James Turnbull james at lovedthanlost.net
Wed Jul 14 10:29:43 UTC 2010


The following commit has been merged in the upstream branch:
commit b6f90dfcd96123c245b6f5fd93753790006387c0
Merge: e26e8319186c57a41ea7ca58b0e8e853e9b452e3 f7e14356ad7781fafa52a459d3c24372fa6c0900
Author: James Turnbull <james at lovedthanlost.net>
Date:   Wed Jan 13 08:07:30 2010 +1100

    Merge branch '0.25.x'
    
    Conflicts:
    	lib/puppet/ssl/host.rb
    	spec/spec_helper.rb

diff --combined lib/puppet/application/puppet.rb
index b4c06d2,2929d54..e4baf5d
--- a/lib/puppet/application/puppet.rb
+++ b/lib/puppet/application/puppet.rb
@@@ -49,7 -49,7 +49,7 @@@ Puppet::Application.new(:puppet) d
          end
  
          begin
-             catalog = PSON.parse(text)
+             catalog = Puppet::Resource::Catalog.convert_from(Puppet::Resource::Catalog.default_format,text)
              unless catalog.is_a?(Puppet::Resource::Catalog)
                  catalog = Puppet::Resource::Catalog.pson_create(catalog)
              end
@@@ -127,12 -127,13 +127,12 @@@
              # And apply it
              transaction = catalog.apply
  
 -            status = 0
              if not Puppet[:noop] and options[:detailed_exitcodes] then
                  transaction.generate_report
 -                status |= 2 if transaction.report.metrics["changes"][:total] > 0
 -                status |= 4 if transaction.report.metrics["resources"][:failed] > 0
 +                exit(transaction.report.exit_status)
 +            else
 +                exit(0)
              end
 -            exit(status)
          rescue => detail
              if Puppet[:trace]
                  puts detail.backtrace
diff --combined lib/puppet/defaults.rb
index 050fcaa,6b9c43b..ca4b9b8
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
@@@ -160,7 -160,7 +160,7 @@@ module Puppe
          :http_proxy_port => [3128,
              "The HTTP proxy port to use for outgoing connections"],
          :http_enable_post_connection_check => [true,
-             "Boolean; wheter or not puppetd should validate the server
+             "Boolean; whether or not puppetd should validate the server
              SSL certificate against the request hostname."],
          :filetimeout => [ 15,
              "The minimum time to wait (in seconds) between checking for updates in
@@@ -196,7 -196,10 +196,10 @@@
          :config_version => ["", "How to determine the configuration version.  By default, it will be the
              time that the configuration is parsed, but you can provide a shell script to override how the
              version is determined.  The output of this script will be added to every log message in the
-             reports, allowing you to correlate changes on your hosts to the source version on the server."]
+             reports, allowing you to correlate changes on your hosts to the source version on the server."],
+         :zlib => [true, 
+             "Boolean; whether to use the zlib library",
+         ]
      )
  
      hostname = Facter["hostname"].value
@@@ -288,7 -291,6 +291,7 @@@
      )
  
      setdefaults(:ca,
 +        :ca_name => ["$certname", "The name to use the Certificate Authority certificate."],
          :cadir => {  :default => "$ssldir/ca",
              :owner => "service",
              :group => "service",
@@@ -671,9 -673,6 +674,9 @@@
              used when networked databases are used."],
          :dbsocket => [ "", "The database socket location. Only used when networked
              databases are used.  Will be ignored if the value is an empty string."],
 +        :dbconnections => [ 0, "The number of database connections. Only used when
 +            networked databases are used.  Will be ignored if the value is an empty
 +            string or is less than 1."],
          :railslog => {:default => "$logdir/rails.log",
              :mode => 0600,
              :owner => "service",
diff --combined lib/puppet/network/http/webrick.rb
index e0fe8b6,cea7631..1a3f5dd
--- a/lib/puppet/network/http/webrick.rb
+++ b/lib/puppet/network/http/webrick.rb
@@@ -44,7 -44,8 +44,8 @@@ class Puppet::Network::HTTP::WEBric
                      sock.accept
                      @server.run(sock)
                  }
-            }
+             }
+             sleep 0.1 until @server.status == :Running
          end
      end
  
@@@ -104,7 -105,7 +105,7 @@@
          results[:SSLStartImmediately] = true
          results[:SSLEnable] = true
  
 -        unless Puppet::SSL::Certificate.find("ca")
 +        unless Puppet::SSL::Certificate.find(Puppet::SSL::CA_NAME)
              raise Puppet::Error, "Could not find CA certificate"
          end
  
diff --combined lib/puppet/rails.rb
index 34ca58c,98c0e3d..1e02408
--- a/lib/puppet/rails.rb
+++ b/lib/puppet/rails.rb
@@@ -29,7 -29,9 +29,9 @@@ module Puppet::Rail
          ActiveRecord::Base.verify_active_connections!
  
          begin
-             ActiveRecord::Base.establish_connection(database_arguments())
+             args = database_arguments
+             Puppet.info "Connecting to #{args[:adapter]} database: #{args[:database]}"
+             ActiveRecord::Base.establish_connection(args)
          rescue => detail
              if Puppet[:trace]
                  puts detail.backtrace
@@@ -46,25 -48,16 +48,26 @@@
  
          case adapter
          when "sqlite3"
-             args[:dbfile] = Puppet[:dblocation]
+             args[:database] = Puppet[:dblocation]
          when "mysql", "postgresql"
              args[:host]     = Puppet[:dbserver] unless Puppet[:dbserver].empty?
              args[:username] = Puppet[:dbuser] unless Puppet[:dbuser].empty?
              args[:password] = Puppet[:dbpassword] unless Puppet[:dbpassword].empty?
              args[:database] = Puppet[:dbname]
+             args[:reconnect]= true
  
              socket          = Puppet[:dbsocket]
              args[:socket]   = socket unless socket.empty?
 +	        
 +            connections     = Puppet[:dbconnections].to_i
 +            args[:pool]     = connections if connections > 0 
 +        when "oracle_enhanced":
 +	        args[:database] = Puppet[:dbname] unless Puppet[:dbname].empty?
 +	        args[:username] = Puppet[:dbuser] unless Puppet[:dbuser].empty?
 +	        args[:password] = Puppet[:dbpassword] unless Puppet[:dbpassword].empty?
 +
 +            connections     = Puppet[:dbconnections].to_i
 +            args[:pool]     = connections if connections > 0
          else
              raise ArgumentError, "Invalid db adapter %s" % adapter
          end
diff --combined lib/puppet/ssl/host.rb
index 98061c5,75e51e5..5de2c5a
--- a/lib/puppet/ssl/host.rb
+++ b/lib/puppet/ssl/host.rb
@@@ -10,7 -10,6 +10,7 @@@ require 'puppet/util/cacher
  class Puppet::SSL::Host
      # Yay, ruby's strange constant lookups.
      Key = Puppet::SSL::Key
 +    CA_NAME = Puppet::SSL::CA_NAME
      Certificate = Puppet::SSL::Certificate
      CertificateRequest = Puppet::SSL::CertificateRequest
      CertificateRevocationList = Puppet::SSL::CertificateRevocationList
@@@ -31,6 -30,7 +31,6 @@@
          end
      end
  
 -    CA_NAME = "ca"
      # This is the constant that people will use to mark that a given host is
      # a certificate authority.
      def self.ca_name
@@@ -94,12 -94,7 +94,7 @@@
  
      # Remove all traces of a given host
      def self.destroy(name)
-         [Key, Certificate, CertificateRequest].inject(false) do |result, klass|
-             if klass.destroy(name)
-                 result = true
-             end
-             result
-         end
+         [Key, Certificate, CertificateRequest].collect { |part| part.destroy(name) }.any? { |x| x }
      end
  
      # Search for more than one host, optionally only specifying
@@@ -107,12 -102,7 +102,7 @@@
      # This just allows our non-indirected class to have one of
      # indirection methods.
      def self.search(options = {})
-         classes = [Key, CertificateRequest, Certificate]
-         if klass = options[:for]
-             classlist = [klass].flatten
-         else
-             classlist = [Key, CertificateRequest, Certificate]
-         end
+         classlist = [options[:for] || [Key, CertificateRequest, Certificate]].flatten
  
          # Collect the results from each class, flatten them, collect all of the names, make the name list unique,
          # then create a Host instance for each one.
@@@ -127,8 -117,7 +117,7 @@@
      end
  
      def key
-         return nil unless @key ||= Key.find(name)
-         @key
+         @key ||= Key.find(name)
      end
  
      # This is the private key; we can create it from scratch
@@@ -146,8 -135,7 +135,7 @@@
      end
  
      def certificate_request
-         return nil unless @certificate_request ||= CertificateRequest.find(name)
-         @certificate_request
+         @certificate_request ||= CertificateRequest.find(name)
      end
  
      # Our certificate request requires the key but that's all.
@@@ -166,26 -154,19 +154,19 @@@
      end
  
      def certificate
-         unless @certificate
-             generate_key unless key
- 
+         @certificate ||= (
              # get the CA cert first, since it's required for the normal cert
              # to be of any use.
-             return nil unless Certificate.find(CA_NAME) unless ca?
-             return nil unless @certificate = Certificate.find(name)
- 
-             unless certificate_matches_key?
-                 raise Puppet::Error, "Retrieved certificate does not match private key; please remove certificate from server and regenerate it with the current key"
+             if not (key or generate_key) or not (ca? or Certificate.find("ca")) or not (cert = Certificate.find(name)) or cert.expired?
+                 nil
+             elsif not cert.content.check_private_key(key.content)
+                 Certificate.expire(name)
+                 Puppet.warning "Retrieved certificate does not match private key"
+                 nil
+             else
+                 cert
              end
-         end
-         @certificate
-     end
- 
-     def certificate_matches_key?
-         return false unless key
-         return false unless certificate
- 
-         return certificate.content.check_private_key(key.content)
+             )
      end
  
      # Generate all necessary parts of our ssl host.
@@@ -224,7 -205,7 +205,7 @@@
              @ssl_store.add_file(Puppet[:localcacert])
  
              # If there's a CRL, add it to our store.
 -            if crl = Puppet::SSL::CertificateRevocationList.find("ca")
 +            if crl = Puppet::SSL::CertificateRevocationList.find(CA_NAME)
                  @ssl_store.flags = OpenSSL::X509::V_FLAG_CRL_CHECK_ALL|OpenSSL::X509::V_FLAG_CRL_CHECK
                  @ssl_store.add_crl(crl.content)
              end
diff --combined lib/puppet/util/rdoc/generators/puppet_generator.rb
index 1a4219f,58c0aca..31181f0
--- a/lib/puppet/util/rdoc/generators/puppet_generator.rb
+++ b/lib/puppet/util/rdoc/generators/puppet_generator.rb
@@@ -1,5 -1,7 +1,7 @@@
  require 'rdoc/generators/html_generator'
  require 'puppet/util/rdoc/code_objects'
+ require 'digest/md5'
+ 
  module Generators
  
      # This module holds all the classes needed to generate the HTML documentation
@@@ -136,15 -138,6 +138,15 @@@
                  @allfiles << { "file" => file, "modules" => modules, "classes" => classes, "methods" => methods, "nodes" => nodes }
              end
  
 +            # scan all classes to create the childs references
 +            @allclasses.values.each do |klass|
 +                if superklass = klass.context.superclass
 +                    if superklass = AllReferences[superklass] and (superklass.is_a?(HTMLPuppetClass) or superklass.is_a?(HTMLPuppetNode))
 +                        superklass.context.add_child(klass.context)
 +                    end
 +                end
 +            end
 +
              @classes = @allclasses.values
          end
  
@@@ -329,26 -322,6 +331,26 @@@
  
      end
  
 +    # This module is used to generate a referenced full name list of ContextUser
 +    module ReferencedListBuilder
 +        def build_referenced_list(list)
 +            res = []
 +            list.each do |i|
 +                ref = AllReferences[i.name] || @context.find_symbol(i.name)
 +                ref = ref.viewer if ref and ref.respond_to?(:viewer)
 +                name = i.respond_to?(:full_name) ? i.full_name : i.name
 +                h_name = CGI.escapeHTML(name)
 +                if ref and ref.document_self
 +                    path = url(ref.path)
 +                    res << { "name" => h_name, "aref" => path }
 +                else
 +                    res << { "name" => h_name }
 +                end
 +            end
 +            res
 +        end
 +    end
 +
      # This module is used to hold/generate a list of puppet resources
      # this is used in HTMLPuppetClass and HTMLPuppetNode
      module ResourceContainer
@@@ -364,7 -337,7 +366,7 @@@
              resources.each do |r|
                  res << {
                    "name" => CGI.escapeHTML(r.name),
-                   "aref" => "#{path_prefix}\##{r.aref}"
+                   "aref" => CGI.escape(path_prefix)+"\#"+CGI.escape(r.aref)
                  }
              end
              res
@@@ -389,7 -362,7 +391,7 @@@
      end
  
      class HTMLPuppetClass < HtmlClass
 -        include ResourceContainer
 +        include ResourceContainer, ReferencedListBuilder
  
          def value_hash
              super
@@@ -405,34 -378,12 +407,34 @@@
                      secdata["resource_list"] = rdl unless rdl.empty?
                  end
              end
 +
 +            rl = build_require_list(@context)
 +            @values["requires"] = rl unless rl.empty?
 +
 +            rl = build_realize_list(@context)
 +            @values["realizes"] = rl unless rl.empty?
 +
 +            cl = build_child_list(@context)
 +            @values["childs"] = cl unless cl.empty?
 +
              @values
          end
 +
 +        def build_require_list(context)
 +            build_referenced_list(context.requires)
 +        end
 +
 +        def build_realize_list(context)
 +            build_referenced_list(context.realizes)
 +        end
 +
 +        def build_child_list(context)
 +            build_referenced_list(context.childs)
 +        end
      end
  
      class HTMLPuppetNode < ContextUser
 -        include ResourceContainer
 +        include ResourceContainer, ReferencedListBuilder
  
          attr_reader :path
  
@@@ -465,7 -416,7 +467,7 @@@
              if path['<<']
                  path.gsub!(/<<\s*(\w*)/) { "from-#$1" }
              end
-             File.join(prefix, path.split("::")) + ".html"
+             File.join(prefix, path.split("::").collect { |p| Digest::MD5.hexdigest(p) }) + ".html"
          end
  
          def parent_name
@@@ -503,15 -454,6 +505,15 @@@
              il = build_include_list(@context)
              @values["includes"] = il unless il.empty?
  
 +            rl = build_require_list(@context)
 +            @values["requires"] = rl unless rl.empty?
 +
 +            rl = build_realize_list(@context)
 +            @values["realizes"] = rl unless rl.empty?
 +
 +            cl = build_child_list(@context)
 +            @values["childs"] = cl unless cl.empty?
 +
              @values["sections"] = @context.sections.map do |section|
  
                  secdata = {
@@@ -568,7 -510,7 +570,7 @@@
              h_name = CGI.escapeHTML(name)
  
              @values["classmod"]  = "Node"
-             @values["title"]     = "#{@values['classmod']}: #{h_name}"
+             @values["title"]     = CGI.escapeHTML("#{@values['classmod']}: #{h_name}")
  
              c = @context
              c = c.parent while c and !c.diagram
@@@ -614,18 -556,6 +616,18 @@@
              @values['infiles'] = files
          end
  
 +        def build_require_list(context)
 +            build_referenced_list(context.requires)
 +        end
 +
 +        def build_realize_list(context)
 +            build_referenced_list(context.realizes)
 +        end
 +
 +        def build_child_list(context)
 +            build_referenced_list(context.childs)
 +        end
 +
          def <=>(other)
              self.name <=> other.name
          end
diff --combined lib/puppet/util/settings.rb
index f2c513b,df07d5c..e6e1333
--- a/lib/puppet/util/settings.rb
+++ b/lib/puppet/util/settings.rb
@@@ -64,20 -64,25 +64,25 @@@ class Puppet::Util::Setting
      # Remove all set values, potentially skipping cli values.
      def clear(exceptcli = false)
          @sync.synchronize do
-             @values.each do |name, values|
-                 @values.delete(name) unless exceptcli and name == :cli
-             end
+             unsafe_clear(exceptcli)
+         end
+     end
+     
+     # Remove all set values, potentially skipping cli values.
+     def unsafe_clear(exceptcli = false)
+         @values.each do |name, values|
+             @values.delete(name) unless exceptcli and name == :cli
+         end
  
-             # Don't clear the 'used' in this case, since it's a config file reparse,
-             # and we want to retain this info.
-             unless exceptcli
-                 @used = []
-             end
+         # Don't clear the 'used' in this case, since it's a config file reparse,
+         # and we want to retain this info.
+         unless exceptcli
+             @used = []
+         end
  
-             @cache.clear
+         @cache.clear
  
-             @name = nil
-         end
+         @name = nil
      end
  
      # This is mostly just used for testing.
@@@ -157,14 -162,6 +162,14 @@@
          set_value(str, value, :cli)
      end
  
 +    def without_noop
 +        old_noop = value(:noop,:cli)
 +        set_value(:noop, false, :cli)
 +        yield
 +    ensure
 +        set_value(:noop, old_noop, :cli)
 +    end
 +
      def include?(name)
          name = name.intern if name.is_a? String
          @config.include?(name)
@@@ -325,23 -322,25 +330,25 @@@
          # and reparsed if necessary.
          set_filetimeout_timer()
  
-         # Retrieve the value now, so that we don't lose it in the 'clear' call.
-         file = self[:config]
- 
-         return unless FileTest.exist?(file)
- 
-         # We have to clear outside of the sync, because it's
-         # also using synchronize().
-         clear(true)
- 
          @sync.synchronize do
-             unsafe_parse(file)
+             unsafe_parse(self[:config])
          end
      end
  
      # Unsafely parse the file -- this isn't thread-safe and causes plenty of problems if used directly.
      def unsafe_parse(file)
-         parse_file(file).each do |area, values|
+         return unless FileTest.exist?(file)
+         begin
+             data = parse_file(file)
+         rescue => details
+             puts details.backtrace if Puppet[:trace]
+             Puppet.err "Could not parse #{file}: #{details}"
+             return
+         end
+ 
+         unsafe_clear(true)
+ 
+         data.each do |area, values|
              @values[area] = values
          end
  
@@@ -433,9 -432,7 +440,7 @@@
      def reparse
          if file and file.changed?
              Puppet.notice "Reparsing %s" % file.file
-             @sync.synchronize do
-                 parse
-             end
+             parse
              reuse()
          end
      end
@@@ -640,7 -637,7 +645,7 @@@ Generated on #{Time.now}
                  return
              end
  
 -            begin
 +            without_noop do
                  catalog.host_config = false
                  catalog.apply do |transaction|
                      if transaction.any_failed?
diff --combined man/man8/puppet.conf.8
index 75577b9,70d916c..2f07eb0
--- a/man/man8/puppet.conf.8
+++ b/man/man8/puppet.conf.8
@@@ -1,53 -1,30 +1,30 @@@
  .TH Configuration Reference  "" "" ""
  .SH NAME
- Configuration Reference \-
- 
+ Configuration Reference \- 
  .\" Man page generated from reStructeredText.
- This page is autogenerated; any changes will get overwritten
- .I (last generated on Mon May 05 09:33:01 +1000 2008)
- 
+ \fPThis page is autogenerated; any changes will get overwritten\fP \fI(last generated on Wed Dec 30 19:31:12 \-0500 2009)\fP
  
  
  .\" topic: Contents
- .\"
+ .\" 
  .\" Specifying Configuration Parameters
- .\"
+ .\" 
  .\" Signals
- .\"
+ .\" 
  .\" Configuration Parameter Reference
  
  .SH Specifying Configuration Parameters
  
  .SS On The Command\-Line
- Every Puppet executable (with the exception of
- .\" visit_literal
- puppetdoc
- .\" depart_literal
- ) accepts all of
+ Every Puppet executable (with the exception of \fBpuppetdoc\fP) accepts all of
  the parameters below, but not all of the arguments make sense for every executable.
- Each parameter has a section listed with it in parentheses; often, that section
- will map to an executable (e.g.,
- .\" visit_literal
- puppetd
- .\" depart_literal
- ), in which case it probably only
- makes sense for that one executable.  If
- .\" visit_literal
- main
- .\" depart_literal
-  is listed as the section,
- it is most likely an option that is valid for everyone.
  
  I have tried to be as thorough as possible in the descriptions of the
  arguments, so it should be obvious whether an argument is appropriate or not.
  
  These parameters can be supplied to the executables either as command\-line
  options or in the configuration file.  For instance, the command\-line
- invocation below would set the configuration directory to
- .\" visit_literal
- /private/puppet
- .\" depart_literal
- :
+ invocation below would set the configuration directory to \fB/private/puppet\fP:
  
  
  .nf
@@@ -69,72 -46,24 +46,24 @@@ the client configuration
  .SS Configuration Files
  As mentioned above, the configuration parameters can also be stored in a
  configuration file, located in the configuration directory.  As root, the
- default configuration directory is
- .\" visit_literal
- /etc/puppet
- .\" depart_literal
- , and as a regular user, the
- default configuration directory is
- .\" visit_literal
- ~user/.puppet
- .\" depart_literal
- .  As of 0.23.0, all
- executables look for
- .\" visit_literal
- puppet.conf
- .\" depart_literal
-  in their configuration directory
+ default configuration directory is \fB/etc/puppet\fP, and as a regular user, the
+ default configuration directory is \fB~user/.puppet\fP.  As of 0.23.0, all
+ executables look for \fBpuppet.conf\fP in their configuration directory
  (although they previously looked for separate files).  For example,
+ \fBpuppet.conf\fP is located at \fB/etc/puppet/puppet.conf\fP as root and
+ \fB~user/.puppet/puppet.conf\fP as a regular user by default.
  
- .\" visit_literal
- puppet.conf
- .\" depart_literal
-  is located at
- .\" visit_literal
- /etc/puppet/puppet.conf
- .\" depart_literal
-  as root and
- 
- .\" visit_literal
- ~user/.puppet/puppet.conf
- .\" depart_literal
-  as a regular user by default.
- 
- All executables will set any parameters set within the
- .\" visit_literal
- main
- .\" depart_literal
-  section,
+ All executables will set any parameters set within the \fBmain\fP section,
  while each executable will also look for a section named for the executable
- and load those parameters.  For example,
- .\" visit_literal
- puppetd
- .\" depart_literal
-  will look for a
- section named
- .\" visit_literal
- puppetd
- .\" depart_literal
- , and
- .\" visit_literal
- puppetmasterd
- .\" depart_literal
-  looks for a section
- named
- .\" visit_literal
- puppetmasterd
- .\" depart_literal
- .  This allows you to use a single configuration file
+ and load those parameters.  For example, \fBpuppetd\fP will look for a
+ section named \fBpuppetd\fP, and \fBpuppetmasterd\fP looks for a section
+ named \fBpuppetmasterd\fP.  This allows you to use a single configuration file
  to customize the settings for all of your executables.
  
  
  .SS File Format
  The file follows INI\-style formatting.  Here is an example of a very simple
- 
- .\" visit_literal
- puppet.conf
- .\" depart_literal
-  file:
+ \fBpuppet.conf\fP file:
  
  
  .nf
@@@ -142,12 -71,8 +71,8 @@@
      confdir = /private/puppet
      storeconfigs = true
  .fi
- Note that boolean parameters must be explicitly specified as
- .I true
-  or
- 
- .I false
-  as seen above.
+ Note that boolean parameters must be explicitly specified as \fItrue\fP or
+ \fIfalse\fP as seen above.
  
  If you need to change file parameters (e.g., reset the mode or owner), do
  so within curly braces on the same line:
@@@ -159,9 -84,7 +84,7 @@@
  .fi
  If you\'re starting out with a fresh configuration, you may wish to let
  the executable generate a template configuration file for you by invoking
- the executable in question with the
- .I \-\-genconfig
-  command.  The executable
+ the executable in question with the \fI\-\-genconfig\fP command.  The executable
  will print a template configuration to standard output, which can be
  redirected to a file like so:
  
@@@ -170,19 -93,10 +93,10 @@@
  $ puppetd \-\-genconfig > /etc/puppet/puppet.conf
  .fi
  Note that this invocation will replace the contents of any pre\-existing
- 
- .I puppet.conf
-  file, so make a backup of your present config if it contains
+ \fIpuppet.conf\fP file, so make a backup of your present config if it contains
  valuable information.
  
- All parameters will be under a single section heading matching the name of
- the process used to generate the configuraiton (\'puppetd\', in this case).
- 
- Like the
- .I \-\-genconfig
-  argument, the executables also accept a
- .I \-\-genmanifest
- 
+ Like the \fI\-\-genconfig\fP argument, the executables also accept a \fI\-\-genmanifest\fP
  argument, which will generate a manifest that can be used to manage all of
  Puppet\'s directories and files and prints it to standard output.  This can
  likewise be redirected to a file:
@@@ -191,16 -105,8 +105,8 @@@
  .nf
  $ puppetd \-\-genmanifest > /etc/puppet/manifests/site.pp
  .fi
- Puppet can also create user and group accounts for itself (one
- .I puppet
-  group
- and one
- .I puppet
-  user) if it is invoked as
- .I root
-  with the
- .I \-\-mkusers
-  argument:
+ Puppet can also create user and group accounts for itself (one \fIpuppet\fP group
+ and one \fIpuppet\fP user) if it is invoked as \fIroot\fP with the \fI\-\-mkusers\fP argument:
  
  
  .nf
@@@ -208,54 -114,14 +114,14 @@@ $ puppetd \-\-mkuser
  .fi
  
  .SH Signals
- The
- .\" visit_literal
- puppetd
- .\" depart_literal
-  and
- .\" visit_literal
- puppetmasterd
- .\" depart_literal
-  executables catch some signals for special
- handling.  Both daemons catch (
- .\" visit_literal
- SIGHUP
- .\" depart_literal
- ), which forces the server to restart
- tself.  Predictably, interrupt and terminate (
- .\" visit_literal
- SIGINT
- .\" depart_literal
-  and
- .\" visit_literal
- SIGHUP
- .\" depart_literal
- ) will shut
- down the server, whether it be an instance of
- .\" visit_literal
- puppetd
- .\" depart_literal
-  or
- .\" visit_literal
- puppetmasterd
- .\" depart_literal
- .
- 
- Sending the
- .\" visit_literal
- SIGUSR1
- .\" depart_literal
-  signal to an instance of
- .\" visit_literal
- puppetd
- .\" depart_literal
-  will cause it to
+ The \fBpuppetd\fP and \fBpuppetmasterd\fP executables catch some signals for special
+ handling.  Both daemons catch (\fBSIGHUP\fP), which forces the server to restart
+ tself.  Predictably, interrupt and terminate (\fBSIGINT\fP and \fBSIGTERM\fP) will shut
+ down the server, whether it be an instance of \fBpuppetd\fP or \fBpuppetmasterd\fP.
+ 
+ Sending the \fBSIGUSR1\fP signal to an instance of \fBpuppetd\fP will cause it to
  immediately begin a new configuration transaction with the server.  This
- signal has no effect on
- .\" visit_literal
- puppetmasterd
- .\" depart_literal
- .
+ signal has no effect on \fBpuppetmasterd\fP.
  
  
  .SH Configuration Parameter Reference
@@@ -263,192 -129,217 +129,217 @@@ Below is a list of all documented param
  Puppet executables, but the executables will ignore any inappropriate values.
  
  
+ .SS async_storeconfigs
+ Whether to use a queueing system to provide asynchronous database integration. Requires that \fBpuppetqd\fP be running and that \'PSON\' support for ruby be installed.
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: false
+ 
+ .UNINDENT
+ 
  .SS authconfig
- The configuration file that defines the rights to the different namespaces and methods.  This can be used as a coarse\-grained authorization system for both
- .\" visit_literal
- puppetd
- .\" depart_literal
-  and
- .\" visit_literal
- puppetmasterd
- .\" depart_literal
- .
+ The configuration file that defines the rights to the different namespaces and methods.  This can be used as a coarse\-grained authorization system for both \fBpuppetd\fP and \fBpuppetmasterd\fP.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $confdir/namespaceauth.conf
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/namespaceauth.conf
  
+ .UNINDENT
  
  .SS autoflush
  Whether log files should always flush to disk.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS autosign
  Whether to enable autosign.  Valid values are true (which autosigns any key request, and is a very bad idea), false (which never autosigns any key request), and the path to a file, which uses that configuration file to determine which keys to sign.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $confdir/autosign.conf
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/autosign.conf
  
+ .UNINDENT
  
  .SS bindaddress
- The address to bind to.  Mongrel servers default to 127.0.0.1 and WEBrick defaults to 0.0.0.0.
+ The address a listening server should bind to.  Mongrel servers default to 127.0.0.1 and WEBrick defaults to 0.0.0.0.
  
  
  .SS bucketdir
  Where FileBucket files are stored.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/bucket
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/bucket
  
+ .UNINDENT
  
  .SS ca
  Wether the master should function as a certificate authority.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: true
+ .IP \(bu 2
+ \fPDefault\fP: true
  
+ .UNINDENT
  
  .SS ca_days
- How long a certificate should be valid.  This parameter is deprecated, use ca_ttl instead
+ How long a certificate should be valid. This parameter is deprecated, use ca_ttl instead
  
  
  .SS ca_md
  The type of hash used in certificates.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: md5
+ .IP \(bu 2
+ \fPDefault\fP: md5
  
+ .UNINDENT
  
  .SS ca_port
  The port to use for the certificate authority.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $masterport
+ .IP \(bu 2
+ \fPDefault\fP: $masterport
  
+ .UNINDENT
  
  .SS ca_server
  The server to use for certificate authority requests.  It\'s a separate server because it cannot and does not need to horizontally scale.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $server
+ .IP \(bu 2
+ \fPDefault\fP: $server
  
+ .UNINDENT
  
  .SS ca_ttl
- The default TTL for new certificates; valid values  must be an integer, optionally followed by one of the units  \'y\' (years of 365 days), \'d\' (days), \'h\' (hours), or  \'s\' (seconds). The unit defaults to seconds. If this parameter is set, ca_days is ignored. Examples are \'3600\' (one hour)  and \'1825d\', which is the same as \'5y\' (5 years)
+ The default TTL for new certificates; valid values must be an integer, optionally followed by one of the units \'y\' (years of 365 days), \'d\' (days), \'h\' (hours), or \'s\' (seconds). The unit defaults to seconds. If this parameter is set, ca_days is ignored. Examples are \'3600\' (one hour) and \'1825d\', which is the same as \'5y\' (5 years)
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 5y
+ .IP \(bu 2
+ \fPDefault\fP: 5y
  
+ .UNINDENT
  
  .SS cacert
  The CA certificate.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/ca_crt.pem
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/ca_crt.pem
  
+ .UNINDENT
  
  .SS cacrl
- The certificate revocation list (CRL) for the CA. Set this to \'false\' if you do not want to use a CRL.
+ The certificate revocation list (CRL) for the CA. Will be used if present but otherwise ignored.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/ca_crl.pem
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/ca_crl.pem
  
+ .UNINDENT
  
  .SS cadir
  The root directory for the certificate authority.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $ssldir/ca
+ .IP \(bu 2
+ \fPDefault\fP: $ssldir/ca
  
+ .UNINDENT
  
  .SS cakey
  The CA private key.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/ca_key.pem
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/ca_key.pem
  
+ .UNINDENT
  
  .SS capass
  Where the CA stores the password for the private key
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $caprivatedir/ca.pass
+ .IP \(bu 2
+ \fPDefault\fP: $caprivatedir/ca.pass
  
+ .UNINDENT
  
  .SS caprivatedir
  Where the CA stores private certificate information.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/private
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/private
  
+ .UNINDENT
  
  .SS capub
  The CA public key.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/ca_pub.pem
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/ca_pub.pem
  
+ .UNINDENT
  
  .SS casesensitive
  Whether matching in case statements and selectors should be case\-sensitive.  Case insensitivity is handled by downcasing all values before comparison.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
+ 
+ .UNINDENT
+ 
+ .SS catalog_format
+ (Deprecated for \'preferred_serialization_format\') What format to use to dump the catalog.  Only supports \'marshal\' and \'yaml\'.  Only matters on the client, since it asks the server for a specific format.
  
  
  .SS cert_inventory
  A Complete listing of all certificates
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/inventory.txt
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/inventory.txt
  
+ .UNINDENT
  
  .SS certdir
  The certificate directory.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $ssldir/certs
+ .IP \(bu 2
+ \fPDefault\fP: $ssldir/certs
  
+ .UNINDENT
  
  .SS certdnsnames
  The DNS names on the Server certificate as a colon\-separated list. If it\'s anything other than an empty string, it will be used as an alias in the created certificate.  By default, only the server gets an alias set up, and only for \'puppet\'.
@@@ -457,95 -348,79 +348,79 @@@
  .SS certname
  The name to use when handling certificates.  Defaults to the fully qualified domain name.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: absinthe.lovedthanlost.net
+ .IP \(bu 2
+ \fPDefault\fP: pelin.lovedthanlost.net
  
+ .UNINDENT
  
  .SS classfile
- The file in which puppetd stores a list of the classes associated with the retrieved configuration.  Can be loaded in the separate
- .\" visit_literal
- puppet
- .\" depart_literal
-  executable using the
- .\" visit_literal
- \-\-loadclasses
- .\" depart_literal
-  option.
+ The file in which puppetd stores a list of the classes associated with the retrieved configuration.  Can be loaded in the separate \fBpuppet\fP executable using the \fB\-\-loadclasses\fP option.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $statedir/classes.txt
+ .IP \(bu 2
+ \fPDefault\fP: $statedir/classes.txt
  
+ .UNINDENT
  
  .SS clientbucketdir
  Where FileBucket files are stored locally.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/clientbucket
+ 
+ .UNINDENT
+ 
+ .SS clientyamldir
+ The directory in which client\-side YAML data is stored.
+ 
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/clientbucket
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/client_yaml
  
+ .UNINDENT
  
  .SS code
- Code to parse directly.  This is essentially only used by
- .\" visit_literal
- puppet
- .\" depart_literal
- , and should only be set if you\'re writing your own Puppet executable
+ Code to parse directly.  This is essentially only used by \fBpuppet\fP, and should only be set if you\'re writing your own Puppet executable
  
  
  .SS color
- Whether to use colors when logging to the console. Valid values are
- .\" visit_literal
- ansi
- .\" depart_literal
-  (equivalent to
- .\" visit_literal
- true
- .\" depart_literal
- ),
- .\" visit_literal
- html
- .\" depart_literal
-  (mostly used during testing with TextMate), and
- .\" visit_literal
- false
- .\" depart_literal
- , which produces no color.
- 
- 
- .TP 2
- \(bu
- Default: ansi
+ Whether to use colors when logging to the console. Valid values are \fBansi\fP (equivalent to \fBtrue\fP), \fBhtml\fP (mostly used during testing with TextMate), and \fBfalse\fP, which produces no color.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: ansi
+ 
+ .UNINDENT
  
  .SS confdir
- The main Puppet configuration directory.  The default for this parameter is calculated based on the user.  If the process is runnig as root or the user that
- .\" visit_literal
- puppetmasterd
- .\" depart_literal
-  is supposed to run as, it defaults to a system directory, but if it\'s running as any other user, it defaults to being in
- .\" visit_literal
- ~
- .\" depart_literal
- .
+ The main Puppet configuration directory.  The default for this parameter is calculated based on the user.  If the process is runnig as root or the user that \fBpuppetmasterd\fP is supposed to run as, it defaults to a system directory, but if it\'s running as any other user, it defaults to being in \fB~\fP.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: /etc/puppet
+ .IP \(bu 2
+ \fPDefault\fP: /etc/puppet
  
+ .UNINDENT
  
  .SS config
  The configuration file for puppetdoc.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/puppet.conf
  
- .TP 2
- \(bu
- Default: $confdir/puppet.conf
+ .UNINDENT
+ 
+ .SS config_version
+ How to determine the configuration version.  By default, it will be the time that the configuration is parsed, but you can provide a shell script to override how the version is determined.  The output of this script will be added to every log message in the reports, allowing you to correlate changes on your hosts to the source version on the server.
  
  
  .SS configprint
@@@ -555,87 -430,92 +430,96 @@@ Print the value of a specific configura
  .SS configtimeout
  How long the client should wait for the configuration to be retrieved before considering it a failure.  This can help reduce flapping if too many clients contact the server at one time.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 120
+ .IP \(bu 2
+ \fPDefault\fP: 120
  
+ .UNINDENT
  
  .SS csrdir
  Where the CA stores certificate requests
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/requests
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/requests
  
+ .UNINDENT
  
  .SS daemonize
  Send the process into the background.  This is the default.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: true
+ .IP \(bu 2
+ \fPDefault\fP: true
  
+ .UNINDENT
  
  .SS dbadapter
  The type of database to use.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: sqlite3
+ .IP \(bu 2
+ \fPDefault\fP: sqlite3
  
+ .UNINDENT
  
 +.SS dbconnections
 +The number of database connections. Only used when networked databases are used.  Will be ignored if the value is an empty string or is less than 1.
 +
 +
  .SS dblocation
  The database cache for client configurations.  Used for querying within the language.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $statedir/clientconfigs.sqlite3
+ .IP \(bu 2
+ \fPDefault\fP: $statedir/clientconfigs.sqlite3
  
+ .UNINDENT
  
  .SS dbmigrate
  Whether to automatically migrate the database.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS dbname
  The name of the database to use.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppet
+ .IP \(bu 2
+ \fPDefault\fP: puppet
  
+ .UNINDENT
  
  .SS dbpassword
  The database password for Client caching. Only used when networked databases are used.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppet
+ .IP \(bu 2
+ \fPDefault\fP: puppet
  
+ .UNINDENT
  
  .SS dbserver
  The database server for Client caching. Only used when networked databases are used.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: localhost
+ .IP \(bu 2
+ \fPDefault\fP: localhost
  
+ .UNINDENT
  
  .SS dbsocket
  The database socket location. Only used when networked databases are used.  Will be ignored if the value is an empty string.
@@@ -644,331 -524,342 +528,342 @@@
  .SS dbuser
  The database user for Client caching. Only used when networked databases are used.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppet
+ .IP \(bu 2
+ \fPDefault\fP: puppet
  
+ .UNINDENT
  
  .SS diff
  Which diff command to use when printing differences between files.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: diff
+ .IP \(bu 2
+ \fPDefault\fP: diff
  
+ .UNINDENT
  
  .SS diff_args
  Which arguments to pass to the diff command when printing differences between files.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: \-u
+ 
+ .UNINDENT
  
  .SS downcasefacts
  Whether facts should be made all lowercase when sent to the server.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS dynamicfacts
  Facts that are dynamic; these facts will be ignored when deciding whether changed facts should result in a recompile.  Multiple facts should be comma\-separated.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: memorysize,memoryfree,swapsize,swapfree
+ .IP \(bu 2
+ \fPDefault\fP: memorysize,memoryfree,swapsize,swapfree
  
+ .UNINDENT
  
  .SS environment
- The environment Puppet is running in.  For clients (e.g.,
- .\" visit_literal
- puppetd
- .\" depart_literal
- ) this determines the environment itself, which is used to find modules and much more.  For servers (i.e.,
- .\" visit_literal
- puppetmasterd
- .\" depart_literal
- ) this provides the default environment for nodes we know nothing about.
+ The environment Puppet is running in.  For clients (e.g., \fBpuppetd\fP) this determines the environment itself, which is used to find modules and much more.  For servers (i.e., \fBpuppetmasterd\fP) this provides the default environment for nodes we know nothing about.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: production
- 
- 
- .SS environments
- The valid environments for Puppet clients. This is more useful as a server\-side setting than client, but any environment chosen must be in this list.  Values should be separated by a comma.
- 
- 
- .TP 2
- \(bu
- Default: production,development
+ .IP \(bu 2
+ \fPDefault\fP: production
  
+ .UNINDENT
  
  .SS evaltrace
  Whether each resource should log when it is being evaluated.  This allows you to interactively see exactly what is being done.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS external_nodes
- An external command that can produce node information.  The output must be a YAML dump of a hash, and that hash must have one or both of
- .\" visit_literal
- classes
- .\" depart_literal
-  and
- .\" visit_literal
- parameters
- .\" depart_literal
- , where
- .\" visit_literal
- classes
- .\" depart_literal
-  is an array and
- .\" visit_literal
- parameters
- .\" depart_literal
-  is a hash.  For unknown nodes, the commands should exit with a non\-zero exit code. This command makes it straightforward to store your node mapping information in other data sources like databases.
- 
- 
- .TP 2
- \(bu
- Default: none
+ An external command that can produce node information.  The output must be a YAML dump of a hash, and that hash must have one or both of \fBclasses\fP and \fBparameters\fP, where \fBclasses\fP is an array and \fBparameters\fP is a hash.  For unknown nodes, the commands should exit with a non\-zero exit code. This command makes it straightforward to store your node mapping information in other data sources like databases.
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: none
  
+ .UNINDENT
  
  .SS factdest
  Where Puppet should store facts that it pulls down from the central server.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/facts
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/facts/
  
+ .UNINDENT
  
  .SS factpath
  Where Puppet should look for facts.  Multiple directories should be colon\-separated, like normal PATH variables.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/facts
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/facts/
  
+ .UNINDENT
  
  .SS factsignore
  What files to ignore when pulling down facts.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: .svn CVS
+ .IP \(bu 2
+ \fPDefault\fP: .svn CVS
  
+ .UNINDENT
  
  .SS factsource
- From where to retrieve facts.  The standard Puppet
- .\" visit_literal
- file
- .\" depart_literal
-  type is used for retrieval, so anything that is a valid file source can be used here.
+ From where to retrieve facts.  The standard Puppet \fBfile\fP type is used for retrieval, so anything that is a valid file source can be used here.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppet://$server/facts
+ .IP \(bu 2
+ \fPDefault\fP: puppet://$server/facts/
  
+ .UNINDENT
  
  .SS factsync
  Whether facts should be synced with the central server.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS fileserverconfig
  Where the fileserver configuration is stored.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $confdir/fileserver.conf
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/fileserver.conf
  
+ .UNINDENT
  
  .SS filetimeout
  The minimum time to wait (in seconds) between checking for updates in configuration files.  This timeout determines how quickly Puppet checks whether a file (such as manifests or templates) has changed on disk.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 15
+ .IP \(bu 2
+ \fPDefault\fP: 15
  
+ .UNINDENT
  
  .SS genconfig
  Whether to just print a configuration to stdout and exit.  Only makes sense when used interactively.  Takes into account arguments specified on the CLI.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS genmanifest
  Whether to just print a manifest to stdout and exit.  Only makes sense when used interactively.  Takes into account arguments specified on the CLI.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS graph
  Whether to create dot graph files for the different configuration graphs.  These dot files can be interpreted by tools like OmniGraffle or dot (which is part of ImageMagick).
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS graphdir
  Where to store dot\-outputted graphs.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $statedir/graphs
+ .IP \(bu 2
+ \fPDefault\fP: $statedir/graphs
  
+ .UNINDENT
  
  .SS group
  The group puppetmasterd should run as.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppet
+ .IP \(bu 2
+ \fPDefault\fP: puppet
  
+ .UNINDENT
  
  .SS hostcert
  Where individual hosts store and look for their certificates.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $certdir/$certname.pem
+ .IP \(bu 2
+ \fPDefault\fP: $certdir/$certname.pem
  
+ .UNINDENT
+ 
+ .SS hostcrl
+ Where the host\'s certificate revocation list can be found. This is distinct from the certificate authority\'s CRL.
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $ssldir/crl.pem
+ 
+ .UNINDENT
  
  .SS hostcsr
- Where individual hosts store and look for their certificates.
+ Where individual hosts store and look for their certificate requests.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $ssldir/csr_$certname.pem
+ .IP \(bu 2
+ \fPDefault\fP: $ssldir/csr_$certname.pem
  
+ .UNINDENT
  
  .SS hostprivkey
  Where individual hosts store and look for their private key.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $privatekeydir/$certname.pem
+ .IP \(bu 2
+ \fPDefault\fP: $privatekeydir/$certname.pem
  
+ .UNINDENT
  
  .SS hostpubkey
  Where individual hosts store and look for their public key.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $publickeydir/$certname.pem
+ .IP \(bu 2
+ \fPDefault\fP: $publickeydir/$certname.pem
  
+ .UNINDENT
  
  .SS http_enable_post_connection_check
  Boolean; wheter or not puppetd should validate the server SSL certificate against the request hostname.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: true
+ .IP \(bu 2
+ \fPDefault\fP: true
  
+ .UNINDENT
  
  .SS http_proxy_host
  The HTTP proxy host to use for outgoing connections.  Note: You may need to use a FQDN for the server hostname when using a proxy.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: none
+ .IP \(bu 2
+ \fPDefault\fP: none
  
+ .UNINDENT
  
  .SS http_proxy_port
  The HTTP proxy port to use for outgoing connections
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 3128
+ .IP \(bu 2
+ \fPDefault\fP: 3128
  
+ .UNINDENT
  
  .SS httplog
  Where the puppetd web server logs.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $logdir/http.log
+ .IP \(bu 2
+ \fPDefault\fP: $logdir/http.log
  
+ .UNINDENT
  
  .SS ignorecache
  Ignore cache and always recompile the configuration.  This is useful for testing new configurations, where the local cache may in fact be stale even if the timestamps are up to date \- if the facts change or if the server changes.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS ignoreimport
  A parameter that can be used in commit hooks, since it enables you to parse\-check a single file rather than requiring that all files exist.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS ignoreschedules
  Boolean; whether puppetd should ignore schedules.  This is useful for initial puppetd runs.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS keylength
  The bit length of keys.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 1024
+ .IP \(bu 2
+ \fPDefault\fP: 1024
  
+ .UNINDENT
  
  .SS ldapattrs
  The LDAP attributes to include when querying LDAP for nodes.  All returned attributes are set as variables in the top\-level scope. Multiple values should be comma\-separated.  The value \'all\' returns all attributes.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: all
+ .IP \(bu 2
+ \fPDefault\fP: all
  
+ .UNINDENT
  
  .SS ldapbase
  The search base for LDAP searches.  It\'s impossible to provide a meaningful default here, although the LDAP libraries might have one already set.  Generally, it should be the \'ou=Hosts\' branch under your main directory.
@@@ -977,86 -868,96 +872,96 @@@
  .SS ldapclassattrs
  The LDAP attributes to use to define Puppet classes.  Values should be comma\-separated.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppetclass
+ .IP \(bu 2
+ \fPDefault\fP: puppetclass
  
+ .UNINDENT
  
  .SS ldapnodes
- Whether to search for node configurations in LDAP.  See http://reductivelabs.com/puppet/trac/wiki/LdapNodes/ for more information.
+ Whether to search for node configurations in LDAP.  See \fI\%http://reductivelabs.com/trac/puppet/wiki/LDAPNodes\fP for more information.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS ldapparentattr
  The attribute to use to define the parent node.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: parentnode
+ .IP \(bu 2
+ \fPDefault\fP: parentnode
  
+ .UNINDENT
  
  .SS ldappassword
  The password to use to connect to LDAP.
  
  
  .SS ldapport
- The LDAP port.  Only used if
- .\" visit_literal
- ldapnodes
- .\" depart_literal
-  is enabled.
+ The LDAP port.  Only used if \fBldapnodes\fP is enabled.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 389
+ .IP \(bu 2
+ \fPDefault\fP: 389
  
+ .UNINDENT
  
  .SS ldapserver
- The LDAP server.  Only used if
- .\" visit_literal
- ldapnodes
- .\" depart_literal
-  is enabled.
+ The LDAP server.  Only used if \fBldapnodes\fP is enabled.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: ldap
+ .IP \(bu 2
+ \fPDefault\fP: ldap
  
+ .UNINDENT
  
  .SS ldapssl
  Whether SSL should be used when searching for nodes. Defaults to false because SSL usually requires certificates to be set up on the client side.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: false
  
- .TP 2
- \(bu
- Default: false
+ .UNINDENT
  
+ .SS ldapstackedattrs
+ The LDAP attributes that should be stacked to arrays by adding the values in all hierarchy elements of the tree.  Values should be comma\-separated.
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: puppetvar
+ 
+ .UNINDENT
  
  .SS ldapstring
  The search string used to find an LDAP node.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: (&(objectclass=puppetClient)(cn=%s))
+ .IP \(bu 2
+ \fPDefault\fP: (&(objectclass=puppetClient)(cn=%s))
  
+ .UNINDENT
  
  .SS ldaptls
  Whether TLS should be used when searching for nodes. Defaults to false because TLS usually requires certificates to be set up on the client side.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS ldapuser
  The user to use to connect to LDAP.  Must be specified as a full DN.
@@@ -1065,676 -966,816 +970,816 @@@
  .SS lexical
  Whether to use lexical scoping (vs. dynamic).
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS libdir
  An extra search path for Puppet.  This is only useful for those files that Puppet will load on demand, and is only guaranteed to work for those cases.  In fact, the autoload mechanism is responsible for making sure this directory is in Ruby\'s search path
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/lib
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/lib
  
+ .UNINDENT
  
  .SS listen
- Whether puppetd should listen for connections.  If this is true, then by default only the
- .\" visit_literal
- runner
- .\" depart_literal
-  server is started, which allows remote authorized and authenticated nodes to connect and trigger
- .\" visit_literal
- puppetd
- .\" depart_literal
-  runs.
+ Whether puppetd should listen for connections.  If this is true, then by default only the \fBrunner\fP server is started, which allows remote authorized and authenticated nodes to connect and trigger \fBpuppetd\fP runs.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS localcacert
  Where each client stores the CA certificate.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $certdir/ca.pem
+ .IP \(bu 2
+ \fPDefault\fP: $certdir/ca.pem
  
+ .UNINDENT
  
  .SS localconfig
  Where puppetd caches the local configuration.  An extension indicating the cache format is added automatically.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $statedir/localconfig
+ .IP \(bu 2
+ \fPDefault\fP: $statedir/localconfig
  
+ .UNINDENT
  
  .SS logdir
  The Puppet log directory.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/log
+ 
+ .UNINDENT
+ 
+ .SS manage_internal_file_permissions
+ Whether Puppet should manage the owner, group, and mode of files  it uses internally
  
- .TP 2
- \(bu
- Default: $vardir/log
+ .INDENT 0.0
  
+ .IP \(bu 2
+ \fPDefault\fP: true
+ 
+ .UNINDENT
  
  .SS manifest
  The entry\-point manifest for puppetmasterd.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $manifestdir/site.pp
+ .IP \(bu 2
+ \fPDefault\fP: $manifestdir/site.pp
  
+ .UNINDENT
  
  .SS manifestdir
  Where puppetmasterd looks for its manifests.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $confdir/manifests
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/manifests
  
+ .UNINDENT
  
  .SS masterhttplog
  Where the puppetmasterd web server logs.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $logdir/masterhttp.log
+ .IP \(bu 2
+ \fPDefault\fP: $logdir/masterhttp.log
  
+ .UNINDENT
  
  .SS masterlog
  Where puppetmasterd logs.  This is generally not used, since syslog is the default log destination.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $logdir/puppetmaster.log
+ .IP \(bu 2
+ \fPDefault\fP: $logdir/puppetmaster.log
  
+ .UNINDENT
  
  .SS masterport
  Which port puppetmasterd listens on.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 8140
+ .IP \(bu 2
+ \fPDefault\fP: 8140
  
+ .UNINDENT
  
  .SS maximum_uid
  The maximum allowed UID.  Some platforms use negative UIDs but then ship with tools that do not know how to handle signed ints, so the UIDs show up as huge numbers that can then not be fed back into the system.  This is a hackish way to fail in a slightly more useful way when that happens.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 4294967290
+ .IP \(bu 2
+ \fPDefault\fP: 4294967290
  
+ .UNINDENT
  
  .SS mkusers
  Whether to create the necessary user and group that puppetd will run as.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS modulepath
  The search path for modules as a colon\-separated list of directories.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $confdir/modules:/usr/share/puppet/modules
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/modules:/usr/share/puppet/modules
  
+ .UNINDENT
  
  .SS name
- The name of the service, if we are running as one.  The default is essentially $0 without the path or
- .\" visit_literal
- .rb
- .\" depart_literal
- .
+ The name of the service, if we are running as one.  The default is essentially $0 without the path or \fB.rb\fP.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppetdoc
+ .IP \(bu 2
+ \fPDefault\fP: puppetdoc
  
+ .UNINDENT
  
  .SS node_name
- How the puppetmaster determines the client\'s identity  and sets the \'hostname\', \'fqdn\' and \'domain\' facts for use in the manifest,  in particular for determining which \'node\' statement applies to the client.  Possible values are \'cert\' (use the subject\'s CN in the client\'s  certificate) and \'facter\' (use the hostname that the client  reported in its facts)
+ How the puppetmaster determines the client\'s identity and sets the \'hostname\', \'fqdn\' and \'domain\' facts for use in the manifest, in particular for determining which \'node\' statement applies to the client. Possible values are \'cert\' (use the subject\'s CN in the client\'s certificate) and \'facter\' (use the hostname that the client reported in its facts)
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: cert
+ .IP \(bu 2
+ \fPDefault\fP: cert
  
+ .UNINDENT
  
  .SS node_terminus
  Where to find information about nodes.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: plain
+ .IP \(bu 2
+ \fPDefault\fP: plain
  
+ .UNINDENT
  
  .SS noop
  Whether puppetd should be run in noop mode.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS paramcheck
  Whether to validate parameters during parsing.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: true
+ .IP \(bu 2
+ \fPDefault\fP: true
  
+ .UNINDENT
  
  .SS parseonly
  Just check the syntax of the manifests.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS passfile
  Where puppetd stores the password for its private key. Generally unused.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $privatedir/password
+ .IP \(bu 2
+ \fPDefault\fP: $privatedir/password
  
+ .UNINDENT
  
  .SS path
  The shell search path.  Defaults to whatever is inherited from the parent process.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: none
+ .IP \(bu 2
+ \fPDefault\fP: none
  
+ .UNINDENT
  
  .SS pidfile
  The pid file
  
+ .INDENT 0.0
  
- .SS plugindest
- Where Puppet should store plugins that it pulls down from the central server.
- 
- 
- .TP 2
- \(bu
- Default: $libdir
+ .IP \(bu 2
+ \fPDefault\fP: $rundir/$name.pid
  
+ .UNINDENT
  
- .SS pluginpath
- Where Puppet should look for plugins.  Multiple directories should be colon\-separated, like normal PATH variables.  As of 0.23.1, this option is deprecated; download your custom libraries to the $libdir instead.
+ .SS plugindest
+ Where Puppet should store plugins that it pulls down from the central server.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/plugins
+ .IP \(bu 2
+ \fPDefault\fP: $libdir
  
+ .UNINDENT
  
  .SS pluginsignore
  What files to ignore when pulling down plugins.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: .svn CVS
+ .IP \(bu 2
+ \fPDefault\fP: .svn CVS .git
  
+ .UNINDENT
  
  .SS pluginsource
- From where to retrieve plugins.  The standard Puppet
- .\" visit_literal
- file
- .\" depart_literal
-  type is used for retrieval, so anything that is a valid file source can be used here.
+ From where to retrieve plugins.  The standard Puppet \fBfile\fP type is used for retrieval, so anything that is a valid file source can be used here.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppet://$server/plugins
+ .IP \(bu 2
+ \fPDefault\fP: puppet://$server/plugins
  
+ .UNINDENT
  
  .SS pluginsync
  Whether plugins should be synced with the central server.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: false
+ 
+ .UNINDENT
  
- .TP 2
- \(bu
- Default: false
+ .SS preferred_serialization_format
+ The preferred means of serializing ruby instances for passing over the wire.  This won\'t guarantee that all instances will be serialized using this method, since not all classes can be guaranteed to support this format, but it will be used for all classes that support it.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: pson
+ 
+ .UNINDENT
  
  .SS privatedir
  Where the client stores private certificate information.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $ssldir/private
+ .IP \(bu 2
+ \fPDefault\fP: $ssldir/private
  
+ .UNINDENT
  
  .SS privatekeydir
  The private key directory.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $ssldir/private_keys
+ .IP \(bu 2
+ \fPDefault\fP: $ssldir/private_keys
  
+ .UNINDENT
  
  .SS publickeydir
  The public key directory.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $ssldir/public_keys
+ .IP \(bu 2
+ \fPDefault\fP: $ssldir/public_keys
  
+ .UNINDENT
  
  .SS puppetdlockfile
  A lock file to temporarily stop puppetd from doing anything.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $statedir/puppetdlock
+ .IP \(bu 2
+ \fPDefault\fP: $statedir/puppetdlock
  
+ .UNINDENT
  
  .SS puppetdlog
  The log file for puppetd.  This is generally not used.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $logdir/puppetd.log
+ .IP \(bu 2
+ \fPDefault\fP: $logdir/puppetd.log
  
+ .UNINDENT
  
  .SS puppetport
  Which port puppetd listens on.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: 8139
+ 
+ .UNINDENT
+ 
+ .SS queue_source
+ Which type of queue to use for asynchronous processing.  If your stomp server requires authentication, you can include it in the URI as long as your stomp client library is at least 1.1.1
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: stomp://localhost:61613/
+ 
+ .UNINDENT
+ 
+ .SS queue_type
+ Which type of queue to use for asynchronous processing.
  
- .TP 2
- \(bu
- Default: 8139
+ .INDENT 0.0
  
+ .IP \(bu 2
+ \fPDefault\fP: stomp
+ 
+ .UNINDENT
  
  .SS rails_loglevel
- The log level for Rails connections.  The value must be a valid log level within Rails.  Production environments normally use
- .\" visit_literal
- info
- .\" depart_literal
-  and other environments normally use
- .\" visit_literal
- debug
- .\" depart_literal
- .
+ The log level for Rails connections.  The value must be a valid log level within Rails.  Production environments normally use \fBinfo\fP and other environments normally use \fBdebug\fP.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: info
+ .IP \(bu 2
+ \fPDefault\fP: info
  
+ .UNINDENT
  
  .SS railslog
  Where Rails\-specific logs are sent
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $logdir/rails.log
+ .IP \(bu 2
+ \fPDefault\fP: $logdir/rails.log
  
+ .UNINDENT
  
  .SS report
  Whether to send reports after every transaction.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: false
+ 
+ .UNINDENT
+ 
+ .SS report_port
+ The port to communicate with the report_server.
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $masterport
  
- .TP 2
- \(bu
- Default: false
+ .UNINDENT
  
+ .SS report_server
+ The server to which to send transaction reports.
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $server
+ 
+ .UNINDENT
  
  .SS reportdir
  The directory in which to store reports received from the client.  Each client gets a separate subdirectory.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/reports
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/reports
  
+ .UNINDENT
  
  .SS reportfrom
  The \'from\' email address for the reports.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: report at absinthe.lovedthanlost.net
+ .IP \(bu 2
+ \fPDefault\fP: \fI\%report at pelin.lovedthanlost.net\fP
  
+ .UNINDENT
  
  .SS reports
  The list of reports to generate.  All reports are looked for in puppet/reports/<name>.rb, and multiple report names should be comma\-separated (whitespace is okay).
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: store
+ .IP \(bu 2
+ \fPDefault\fP: store
  
+ .UNINDENT
  
  .SS reportserver
- The server to which to send transaction reports.
+ (Deprecated for \'report_server\') The server to which to send transaction reports.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $server
+ .IP \(bu 2
+ \fPDefault\fP: $server
  
+ .UNINDENT
  
  .SS req_bits
  The bit length of the certificates.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 2048
+ .IP \(bu 2
+ \fPDefault\fP: 2048
  
+ .UNINDENT
  
- .SS rrddir
- The directory where RRD database files are stored. Directories for each reporting host will be created under this directory.
+ .SS requestdir
+ Where host certificate requests are stored.
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $ssldir/certificate_requests
  
+ .UNINDENT
  
- .TP 2
- \(bu
- Default: $vardir/rrd
+ .SS rest_authconfig
+ The configuration file that defines the rights to the different rest indirections.  This can be used as a fine\-grained authorization system for \fBpuppetmasterd\fP.
  
+ .INDENT 0.0
  
- .SS rrdgraph
- Whether RRD information should be graphed.
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/auth.conf
+ 
+ .UNINDENT
+ 
+ .SS rrddir
+ The directory where RRD database files are stored. Directories for each reporting host will be created under this directory.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/rrd
  
+ .UNINDENT
  
  .SS rrdinterval
  How often RRD should expect data. This should match how often the hosts report back to the server.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $runinterval
+ .IP \(bu 2
+ \fPDefault\fP: $runinterval
  
+ .UNINDENT
  
  .SS rundir
  Where Puppet PID files are kept.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/run
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/run
  
+ .UNINDENT
  
  .SS runinterval
  How often puppetd applies the client configuration; in seconds.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: 1800
+ .IP \(bu 2
+ \fPDefault\fP: 1800
  
+ .UNINDENT
  
  .SS sendmail
  Where to find the sendmail binary with which to send email.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: /usr/sbin/sendmail
+ 
+ .UNINDENT
  
  .SS serial
  Where the serial number for certificates is stored.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/serial
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/serial
  
+ .UNINDENT
  
  .SS server
  The server to which server puppetd should connect
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppet
+ .IP \(bu 2
+ \fPDefault\fP: puppet
  
+ .UNINDENT
  
  .SS servertype
  The type of server to use.  Currently supported options are webrick and mongrel.  If you use mongrel, you will need a proxy in front of the process or processes, since Mongrel cannot speak SSL.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: webrick
+ .IP \(bu 2
+ \fPDefault\fP: webrick
  
+ .UNINDENT
  
  .SS show_diff
- Whether to print a contextual diff when files are being replaced.  The diff is printed on stdout, so this option is meaningless unless you are running Puppet interactively. This feature currently requires the
- .\" visit_literal
- diff/lcs
- .\" depart_literal
-  Ruby library.
+ Whether to print a contextual diff when files are being replaced.  The diff is printed on stdout, so this option is meaningless unless you are running Puppet interactively. This feature currently requires the \fBdiff/lcs\fP Ruby library.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS signeddir
  Where the CA stores signed certificates.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $cadir/signed
+ .IP \(bu 2
+ \fPDefault\fP: $cadir/signed
  
+ .UNINDENT
  
  .SS smtpserver
  The server through which to send email reports.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: none
+ .IP \(bu 2
+ \fPDefault\fP: none
  
+ .UNINDENT
  
  .SS splay
  Whether to sleep for a pseudo\-random (but consistent) amount of time before a run.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS splaylimit
  The maximum time to delay before runs.  Defaults to being the same as the run interval.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $runinterval
+ .IP \(bu 2
+ \fPDefault\fP: $runinterval
  
+ .UNINDENT
  
  .SS ssl_client_header
- The header containing an authenticated client\'s SSL DN.  Only used with Mongrel.  This header must be set by the proxy to the authenticated client\'s SSL DN (e.g.,
- .\" visit_literal
- /CN=puppet.reductivelabs.com
- .\" depart_literal
- ). See http://reductivelabs.com/puppet/trac/wiki/UsingMongrel for more information.
+ The header containing an authenticated client\'s SSL DN.  Only used with Mongrel.  This header must be set by the proxy to the authenticated client\'s SSL DN (e.g., \fB/CN=puppet.reductivelabs.com\fP). See \fI\%http://reductivelabs.com/puppet/trac/wiki/UsingMongrel\fP for more information.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: HTTP_X_CLIENT_DN
+ .IP \(bu 2
+ \fPDefault\fP: HTTP_X_CLIENT_DN
  
+ .UNINDENT
  
  .SS ssl_client_verify_header
- The header containing the status message of the client verification. Only used with Mongrel.  This header must be set by the proxy to \'SUCCESS\' if the client successfully authenticated, and anything else otherwise. See http://reductivelabs.com/puppet/trac/wiki/UsingMongrel for more information.
+ The header containing the status message of the client verification. Only used with Mongrel.  This header must be set by the proxy to \'SUCCESS\' if the client successfully authenticated, and anything else otherwise. See \fI\%http://reductivelabs.com/puppet/trac/wiki/UsingMongrel\fP for more information.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: HTTP_X_CLIENT_VERIFY
+ .IP \(bu 2
+ \fPDefault\fP: HTTP_X_CLIENT_VERIFY
  
+ .UNINDENT
  
  .SS ssldir
  Where SSL certificates are kept.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $confdir/ssl
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/ssl
  
+ .UNINDENT
  
  .SS statedir
  The directory where Puppet state is stored.  Generally, this directory can be removed without causing harm (although it might result in spurious service restarts).
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $vardir/state
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/state
  
+ .UNINDENT
  
  .SS statefile
  Where puppetd and puppetmasterd store state associated with the running configuration.  In the case of puppetmasterd, this file reflects the state discovered through interacting with clients.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $statedir/state.yaml
+ .IP \(bu 2
+ \fPDefault\fP: $statedir/state.yaml
  
+ .UNINDENT
  
  .SS storeconfigs
  Whether to store each client\'s configuration.  This requires ActiveRecord from Ruby on Rails.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: false
+ 
+ .UNINDENT
+ 
+ .SS strict_hostname_checking
+ Whether to only search for the complete hostname as it is in the certificate when searching for node information in the catalogs.
  
- .TP 2
- \(bu
- Default: false
+ .INDENT 0.0
  
+ .IP \(bu 2
+ \fPDefault\fP: false
+ 
+ .UNINDENT
  
  .SS summarize
  Whether to print a transaction summary.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS syslogfacility
  What syslog facility to use when logging to syslog.  Syslog has a fixed list of valid facilities, and you must choose one of those; you cannot just make one up.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: daemon
+ .IP \(bu 2
+ \fPDefault\fP: daemon
  
+ .UNINDENT
  
  .SS tagmap
  The mapping between reporting tags and email addresses.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: $confdir/tagmail.conf
+ .IP \(bu 2
+ \fPDefault\fP: $confdir/tagmail.conf
  
+ .UNINDENT
  
  .SS tags
  Tags to use to find resources.  If this is set, then only resources tagged with the specified tags will be applied. Values must be comma\-separated.
  
  
  .SS templatedir
- Where Puppet looks for template files.
+ Where Puppet looks for template files.  Can be a list of colon\-seperated directories.
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/templates
  
+ .UNINDENT
  
- .TP 2
- \(bu
- Default: $vardir/templates
+ .SS thin_storeconfigs
+ Boolean; wether storeconfigs store in the database only the facts and exported resources. If true, then storeconfigs performance will be higher and still allow exported/collected resources, but other usage external to Puppet might not work
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: false
+ 
+ .UNINDENT
  
  .SS trace
  Whether to print stack traces on some errors
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: false
+ .IP \(bu 2
+ \fPDefault\fP: false
  
+ .UNINDENT
  
  .SS typecheck
  Whether to validate types during parsing.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: true
+ .IP \(bu 2
+ \fPDefault\fP: true
  
+ .UNINDENT
  
  .SS usecacheonfailure
  Whether to use the cached configuration when the remote configuration will not compile.  This option is useful for testing new configurations, where you want to fix the broken configuration rather than reverting to a known\-good one.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: true
+ .IP \(bu 2
+ \fPDefault\fP: true
  
+ .UNINDENT
  
  .SS user
  The user puppetmasterd should run as.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: puppet
+ .IP \(bu 2
+ \fPDefault\fP: puppet
  
+ .UNINDENT
  
  .SS vardir
- Where Puppet stores dynamic and growing data.  The default for this parameter is calculated specially, like confdir.
+ Where Puppet stores dynamic and growing data.  The default for this parameter is calculated specially, like \fI\%confdir\fP.
  
+ .INDENT 0.0
  
- .TP 2
- \(bu
- Default: /var/puppet
+ .IP \(bu 2
+ \fPDefault\fP: /var/puppet
  
+ .UNINDENT
  
  .SS yamldir
  The directory in which YAML data is stored, usually in a subdirectory.
  
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: $vardir/yaml
  
- .TP 2
- \(bu
- Default: $vardir/yaml
+ .UNINDENT
  
+ .SS zlib
+ Boolean; whether to use the zlib library
+ 
+ .INDENT 0.0
+ 
+ .IP \(bu 2
+ \fPDefault\fP: true
+ 
+ .UNINDENT
  
  .sp
  .ce
@@@ -1742,10 -1783,8 +1787,8 @@@
  
  .ce 0
  .sp
- 
- .I This page autogenerated on Mon May 05 09:33:01 +1000 2008
- 
+ \fIThis page autogenerated on Wed Dec 30 19:31:12 \-0500 2009\fP
  
  
- .\" Generated by docutils manpage writer on 2008-05-05 09:33.
- .\"
+ .\" Generated by docutils manpage writer on 2009-12-30 19:31.
+ .\" 
diff --combined spec/integration/bin/puppetmasterd.rb
index 2dcd593,27b0f52..579a42d
--- a/spec/integration/bin/puppetmasterd.rb
+++ b/spec/integration/bin/puppetmasterd.rb
@@@ -51,7 -51,8 +51,8 @@@ describe "puppetmasterd" d
          args = arguments + addl_args
  
          bin = File.join(File.dirname(__FILE__), "..", "..", "..", "sbin", "puppetmasterd")
-         output = %x{#{bin} #{args}}.chomp
+         lib = File.join(File.dirname(__FILE__), "..", "..", "..", "lib")
+         output = %x{/usr/bin/env ruby -I #{lib} #{bin} #{args}}.chomp
      end
  
      def stop
@@@ -72,7 -73,7 +73,7 @@@
      it "should be serving status information over xmlrpc" do
          start
  
-         sleep 0.5
+         sleep 5
  
          client = Puppet::Network::Client.status.new(:Server => "localhost", :Port => @@port)
  
@@@ -107,27 -108,4 +108,27 @@@
      end
  
      it "should exit with return code 1 after parsing if --parseonly is set and there are errors"
 +
 +    describe "when run for the first time" do
 +        before do
 +            @ssldir = File.join(@dir, 'ssl')
 +            FileUtils.rm_r(@ssldir) if File.exists?(@ssldir)
 +        end
 +
 +        describe "with noop" do
 +            it "should create its ssl directory" do
 +                File.directory?(@ssldir).should be_false
 +                start(' --noop')
 +                File.directory?(@ssldir).should be_true
 +            end
 +        end
 +
 +        describe "without noop" do
 +            it "should create its ssl directory" do
 +                File.directory?(@ssldir).should be_false
 +                start
 +                File.directory?(@ssldir).should be_true
 +            end
 +        end
 +    end
  end
diff --combined spec/unit/application/puppet.rb
index 8fb364c,7703bac..be200bb
--- a/spec/unit/application/puppet.rb
+++ b/spec/unit/application/puppet.rb
@@@ -283,104 -283,100 +283,85 @@@ describe "Puppet" d
                  @puppet.main
              end
  
 -            it "should generate a report if not noop" do
 -                Puppet.stubs(:[]).with(:noop).returns(false)
 -                @puppet.options.stubs(:[]).with(:detailed_exitcodes).returns(true)
 -                metrics = stub 'metrics', :[] => { :total => 10, :failed => 0}
 -                report = stub 'report', :metrics => metrics
 -                @transaction.stubs(:report).returns(report)
 -
 -                @transaction.expects(:generate_report)
 -
 -                @puppet.main
 -            end
 -
              describe "with detailed_exitcodes" do
 -                before :each do
 +                it "should exit with report's computed exit status" do
                      Puppet.stubs(:[]).with(:noop).returns(false)
                      @puppet.options.stubs(:[]).with(:detailed_exitcodes).returns(true)
 -                end
 -
 -                it "should exit with exit code of 2 if changes" do
 -                    report = stub 'report', :metrics => { "changes" => {:total => 1}, "resources" => {:failed => 0} }
 -                    @transaction.stubs(:generate_report).returns(report)
 +                    report = stub 'report', :exit_status => 666
                      @transaction.stubs(:report).returns(report)
 -                    @puppet.expects(:exit).with(2)
 +                    @puppet.expects(:exit).with(666)
  
                      @puppet.main
                  end
  
 -                it "should exit with exit code of 4 if failures" do
 -                    report = stub 'report', :metrics => { "changes" => {:total => 0}, "resources" => {:failed => 1} }
 -                    @transaction.stubs(:generate_report).returns(report)
 +                it "should always exit with 0 if option is disabled" do
 +                    Puppet.stubs(:[]).with(:noop).returns(false)
 +                    @puppet.options.stubs(:[]).with(:detailed_exitcodes).returns(false)
 +                    report = stub 'report', :exit_status => 666
                      @transaction.stubs(:report).returns(report)
 -                    @puppet.expects(:exit).with(4)
 +                    @puppet.expects(:exit).with(0)
  
                      @puppet.main
                  end
  
 -                it "should exit with exit code of 6 if changes and failures" do
 -                    report = stub 'report', :metrics => { "changes" => {:total => 1}, "resources" => {:failed => 1} }
 -                    @transaction.stubs(:generate_report).returns(report)
 +                it "should always exit with 0 if --noop" do
 +                    Puppet.stubs(:[]).with(:noop).returns(true)
 +                    @puppet.options.stubs(:[]).with(:detailed_exitcodes).returns(true)
 +                    report = stub 'report', :exit_status => 666
                      @transaction.stubs(:report).returns(report)
 -                    @puppet.expects(:exit).with(6)
 +                    @puppet.expects(:exit).with(0)
  
                      @puppet.main
                  end
              end
          end
  
          describe "the 'apply' command" do
-             confine "PSON library is missing; cannot test applying catalogs" => Puppet.features.pson?
- 
-             before do
-                 #Puppet::Resource::Catalog.stubs(:pson_create).returns Puppet::Resource::Catalog.new
-                 PSON.stubs(:parse).returns Puppet::Resource::Catalog.new
-             end
- 
              it "should read the catalog in from disk if a file name is provided" do
                  @puppet.options[:catalog] = "/my/catalog.pson"
- 
                  File.expects(:read).with("/my/catalog.pson").returns "something"
- 
+                 Puppet::Resource::Catalog.stubs(:convert_from).with(:pson,'something').returns Puppet::Resource::Catalog.new
                  @puppet.apply
              end
  
              it "should read the catalog in from stdin if '-' is provided" do
                  @puppet.options[:catalog] = "-"
- 
                  $stdin.expects(:read).returns "something"
- 
+                 Puppet::Resource::Catalog.stubs(:convert_from).with(:pson,'something').returns Puppet::Resource::Catalog.new
                  @puppet.apply
              end
  
-             it "should deserialize the catalog from pson" do
+             it "should deserialize the catalog from the default format" do
                  @puppet.options[:catalog] = "/my/catalog.pson"
- 
-                 File.expects(:read).returns "something"
-                 PSON.expects(:parse).with("something").returns Puppet::Resource::Catalog.new
- 
+                 File.stubs(:read).with("/my/catalog.pson").returns "something"
+                 Puppet::Resource::Catalog.stubs(:default_format).returns :rot13_piglatin
+                 Puppet::Resource::Catalog.stubs(:convert_from).with(:rot13_piglatin,'something').returns Puppet::Resource::Catalog.new
                  @puppet.apply
              end
  
              it "should fail helpfully if deserializing fails" do
                  @puppet.options[:catalog] = "/my/catalog.pson"
- 
-                 File.expects(:read).returns "something"
-                 PSON.expects(:parse).raises ArgumentError
- 
+                 File.stubs(:read).with("/my/catalog.pson").returns "something syntacically invalid"
                  lambda { @puppet.apply }.should raise_error(Puppet::Error)
              end
  
              it "should convert plain data structures into a catalog if deserialization does not do so" do
                  @puppet.options[:catalog] = "/my/catalog.pson"
- 
-                 File.expects(:read).returns "something"
-                 PSON.expects(:parse).with("something").returns({:foo => "bar"})
+                 File.stubs(:read).with("/my/catalog.pson").returns "something"
+                 Puppet::Resource::Catalog.stubs(:convert_from).with(:pson,"something").returns({:foo => "bar"})
                  Puppet::Resource::Catalog.expects(:pson_create).with({:foo => "bar"}).returns(Puppet::Resource::Catalog.new)
- 
                  @puppet.apply
              end
  
              it "should convert the catalog to a RAL catalog and use a Configurer instance to apply it" do
                  @puppet.options[:catalog] = "/my/catalog.pson"
- 
-                 File.expects(:read).returns "something"
- 
+                 File.stubs(:read).with("/my/catalog.pson").returns "something"
                  catalog = Puppet::Resource::Catalog.new
-                 PSON.expects(:parse).returns catalog
- 
+                 Puppet::Resource::Catalog.stubs(:convert_from).with(:pson,'something').returns catalog
                  catalog.expects(:to_ral).returns "mycatalog"
  
                  configurer = stub 'configurer'
                  Puppet::Configurer.expects(:new).returns configurer
- 
                  configurer.expects(:run).with(:catalog => "mycatalog")
  
                  @puppet.apply
diff --combined spec/unit/application/puppetd.rb
index 04c6daf,ec2fd54..9b8d1be
--- a/spec/unit/application/puppetd.rb
+++ b/spec/unit/application/puppetd.rb
@@@ -173,6 -173,7 +173,7 @@@ describe "puppetd" d
              Puppet.stubs(:info)
              FileTest.stubs(:exists?).returns(true)
              Puppet.stubs(:[])
+             Puppet.stubs(:[]).with(:libdir).returns("/dev/null/lib")
              Puppet.settings.stubs(:print_config?)
              Puppet.settings.stubs(:print_config)
              Puppet::SSL::Host.stubs(:ca_location=)
@@@ -205,10 -206,6 +206,10 @@@
                  @puppetd.options.expects(:[]=).with(:onetime,true)
                  @puppetd.setup_test
              end
 +            it "should set options[:detailed_exitcodes] to true" do
 +                @puppetd.options.expects(:[]=).with(:detailed_exitcodes,true)
 +                @puppetd.setup_test
 +            end
              it "should set waitforcert to 0" do
                  @puppetd.options.expects(:[]=).with(:waitforcert,0)
                  @puppetd.setup_test
@@@ -457,7 -454,6 +458,7 @@@
  
              before :each do
                  @puppetd.options.stubs(:[]).with(:client).returns(:client)
 +                @puppetd.options.stubs(:[]).with(:detailed_exitcodes).returns(false)
                  @puppetd.stubs(:exit).with(0)
                  Puppet.stubs(:newservice)
              end
@@@ -489,29 -485,6 +490,29 @@@
                  @puppetd.onetime
              end
  
 +            describe "and --detailed-exitcodes" do
 +                before :each do
 +                    @puppetd.options.stubs(:[]).with(:detailed_exitcodes).returns(true)
 +                end
 +
 +                it "should exit with report's computed exit status" do
 +                    Puppet.stubs(:[]).with(:noop).returns(false)
 +                    report = stub 'report', :exit_status => 666
 +                    @agent.stubs(:run).returns(report)
 +                    @puppetd.expects(:exit).with(666)
 +
 +                    @puppetd.onetime
 +                end
 +
 +                it "should always exit with 0 if --noop" do
 +                    Puppet.stubs(:[]).with(:noop).returns(true)
 +                    report = stub 'report', :exit_status => 666
 +                    @agent.stubs(:run).returns(report)
 +                    @puppetd.expects(:exit).with(0)
 +
 +                    @puppetd.onetime
 +                end
 +            end
          end
  
          describe "without --onetime" do
diff --combined spec/unit/parser/resource/reference.rb
index 064c51b,19fe076..a09c436
--- a/spec/unit/parser/resource/reference.rb
+++ b/spec/unit/parser/resource/reference.rb
@@@ -49,6 -49,13 +49,13 @@@ describe Puppet::Parser::Resource::Refe
          ref = @type.new(:type => "file", :title => "/tmp/yay/")
          ref.to_s.should == "File[/tmp/yay]"
      end
+ 
+     it "should canonize resource reference values without order dependencies" do
+         args = [[:title, "/tmp/yay/"], [:type, "file"]]
+         ref = @type.new(args)
+         ref.to_s.should == "File[/tmp/yay]"
+     end
+ 
  end
  
  describe Puppet::Parser::Resource::Reference, " when modeling defined types" do
@@@ -89,7 -96,7 +96,7 @@@
          scope = @compiler.topscope.class.new(:parent => @compiler.topscope, :namespace => "other", :parser => @parser)
  
          ref = @type.new(:type => "class", :title => "top", :scope => scope)
 -        ref.definedtype.classname.should equal(top.classname)
 +        ref.definedtype.name.should equal(top.name)
      end
  
      it "should only look for fully qualified definitions" do
@@@ -99,6 -106,6 +106,6 @@@
          scope = @compiler.topscope.class.new(:parent => @compiler.topscope, :namespace => "other", :parser => @parser)
  
          ref = @type.new(:type => "top", :title => "foo", :scope => scope)
 -        ref.definedtype.classname.should equal(top.classname)
 +        ref.definedtype.name.should equal(top.name)
      end
  end
diff --combined spec/unit/rails.rb
index da6db15,f61288f..089f48d
--- a/spec/unit/rails.rb
+++ b/spec/unit/rails.rb
@@@ -42,7 -42,7 +42,7 @@@ describe Puppet::Rails, "when initializ
          ActiveRecord::Base.stubs(:allow_concurrency=)
          ActiveRecord::Base.stubs(:verify_active_connections!)
          ActiveRecord::Base.stubs(:establish_connection)
-         Puppet::Rails.stubs(:database_arguments)
+         Puppet::Rails.stubs(:database_arguments).returns({})
  
          Puppet::Rails.connect
      end
@@@ -64,7 -64,7 +64,7 @@@
      end
  
      it "should call ActiveRecord::Base.establish_connection with database_arguments" do
-         Puppet::Rails.expects(:database_arguments)
+         Puppet::Rails.expects(:database_arguments).returns({})
          ActiveRecord::Base.expects(:establish_connection)
  
          Puppet::Rails.connect
@@@ -74,23 -74,23 +74,23 @@@ en
  describe Puppet::Rails, "when initializing a sqlite3 connection" do
      confine "Cannot test without ActiveRecord" => Puppet.features.rails?
  
-     it "should provide the adapter, log_level, and dbfile arguments" do
+     it "should provide the adapter, log_level, and database arguments" do
          Puppet.settings.expects(:value).with(:dbadapter).returns("sqlite3")
          Puppet.settings.expects(:value).with(:rails_loglevel).returns("testlevel")
          Puppet.settings.expects(:value).with(:dblocation).returns("testlocation")
  
          Puppet::Rails.database_arguments.should == {
-             :adapter => "sqlite3",
+             :adapter   => "sqlite3",
              :log_level => "testlevel",
-             :dbfile => "testlocation"
+             :database  => "testlocation"
          }
      end
  end
  
 -describe Puppet::Rails, "when initializing a mysql or postgresql connection" do
 +describe Puppet::Rails, "when initializing a mysql connection" do
      confine "Cannot test without ActiveRecord" => Puppet.features.rails?
  
-     it "should provide the adapter, log_level, and host, username, password, and database arguments" do
+     it "should provide the adapter, log_level, and host, username, password, database, and reconnect arguments" do
          Puppet.settings.stubs(:value).with(:dbadapter).returns("mysql")
          Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel")
          Puppet.settings.stubs(:value).with(:dbserver).returns("testserver")
@@@ -105,11 -105,12 +105,12 @@@
              :host => "testserver",
              :username => "testuser",
              :password => "testpassword",
-             :database => "testname"
+             :database => "testname",
+             :reconnect => true
          }
      end
  
-     it "should provide the adapter, log_level, and host, username, password, database, and socket arguments" do
+     it "should provide the adapter, log_level, and host, username, password, database, socket, and reconnect arguments" do
          Puppet.settings.stubs(:value).with(:dbadapter).returns("mysql")
          Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel")
          Puppet.settings.stubs(:value).with(:dbserver).returns("testserver")
@@@ -125,108 -126,8 +126,109 @@@
              :username => "testuser",
              :password => "testpassword",
              :database => "testname",
-             :socket => "testsocket"
+             :socket => "testsocket",
+             :reconnect => true
          }
      end
 +
 +    it "should provide the adapter, log_level, and host, username, password, database, socket, and connections arguments" do
 +        Puppet.settings.stubs(:value).with(:dbadapter).returns("mysql")
 +        Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel")
 +        Puppet.settings.stubs(:value).with(:dbserver).returns("testserver")
 +        Puppet.settings.stubs(:value).with(:dbuser).returns("testuser")
 +        Puppet.settings.stubs(:value).with(:dbpassword).returns("testpassword")
 +        Puppet.settings.stubs(:value).with(:dbname).returns("testname")
 +        Puppet.settings.stubs(:value).with(:dbsocket).returns("testsocket")
 +        Puppet.settings.stubs(:value).with(:dbconnections).returns(1)
 +
 +        Puppet::Rails.database_arguments.should == {
 +            :adapter => "mysql",
 +            :log_level => "testlevel",
 +            :host => "testserver",
 +            :username => "testuser",
 +            :password => "testpassword",
 +            :database => "testname",
 +            :socket => "testsocket",
 +            :pool => 1
 +        }
 +    end
 +end
 +
 +describe Puppet::Rails, "when initializing a postgresql connection" do
 +    confine "Cannot test without ActiveRecord" => Puppet.features.rails?
 +
 +    it "should provide the adapter, log_level, and host, username, password, and database arguments" do
 +        Puppet.settings.stubs(:value).with(:dbadapter).returns("postgresql")
 +        Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel")
 +        Puppet.settings.stubs(:value).with(:dbserver).returns("testserver")
 +        Puppet.settings.stubs(:value).with(:dbuser).returns("testuser")
 +        Puppet.settings.stubs(:value).with(:dbpassword).returns("testpassword")
 +        Puppet.settings.stubs(:value).with(:dbname).returns("testname")
 +        Puppet.settings.stubs(:value).with(:dbsocket).returns("")
 +
 +        Puppet::Rails.database_arguments.should == {
 +            :adapter => "postgresql",
 +            :log_level => "testlevel",
 +            :host => "testserver",
 +            :username => "testuser",
 +            :password => "testpassword",
 +            :database => "testname"
 +        }
 +    end
 +
 +    it "should provide the adapter, log_level, and host, username, password, database, and socket arguments" do
 +        Puppet.settings.stubs(:value).with(:dbadapter).returns("postgresql")
 +        Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel")
 +        Puppet.settings.stubs(:value).with(:dbserver).returns("testserver")
 +        Puppet.settings.stubs(:value).with(:dbuser).returns("testuser")
 +        Puppet.settings.stubs(:value).with(:dbpassword).returns("testpassword")
 +        Puppet.settings.stubs(:value).with(:dbname).returns("testname")
 +        Puppet.settings.stubs(:value).with(:dbsocket).returns("testsocket")
 +
 +        Puppet::Rails.database_arguments.should == {
 +            :adapter => "postgresql",
 +            :log_level => "testlevel",
 +            :host => "testserver",
 +            :username => "testuser",
 +            :password => "testpassword",
 +            :database => "testname",
 +            :socket => "testsocket"
 +        }
 +    end
 +end
 +
 +describe Puppet::Rails, "when initializing an Oracle connection" do
 +    confine "Cannot test without ActiveRecord" => Puppet.features.rails?
 +
 +    it "should provide the adapter, log_level, and username, password, and database arguments" do
 +        Puppet.settings.stubs(:value).with(:dbadapter).returns("oracle_enhanced")
 +        Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel")
 +        Puppet.settings.stubs(:value).with(:dbuser).returns("testuser")
 +        Puppet.settings.stubs(:value).with(:dbpassword).returns("testpassword")
 +        Puppet.settings.stubs(:value).with(:dbname).returns("testname")
 +
 +        Puppet::Rails.database_arguments.should == {
 +            :adapter => "oracle_enhanced",
 +            :log_level => "testlevel",
 +            :username => "testuser",
 +            :password => "testpassword",
 +            :database => "testname"
 +        }
 +    end
 +
 +    it "should provide the adapter, log_level, and host, username, password, database, and socket arguments" do
 +        Puppet.settings.stubs(:value).with(:dbadapter).returns("oracle_enhanced")
 +        Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel")
 +        Puppet.settings.stubs(:value).with(:dbuser).returns("testuser")
 +        Puppet.settings.stubs(:value).with(:dbpassword).returns("testpassword")
 +        Puppet.settings.stubs(:value).with(:dbname).returns("testname")
 +
 +        Puppet::Rails.database_arguments.should == {
 +            :adapter => "oracle_enhanced",
 +            :log_level => "testlevel",
 +            :username => "testuser",
 +            :password => "testpassword",
 +            :database => "testname",
 +        }
 +    end
  end
diff --combined spec/unit/ssl/host.rb
index 51223e6,9174f2e..6d72490
--- a/spec/unit/ssl/host.rb
+++ b/spec/unit/ssl/host.rb
@@@ -90,55 -90,6 +90,6 @@@ describe Puppet::SSL::Host d
          Puppet::SSL::Host.localhost.should equal(two)
      end
  
-     it "should be able to verify its certificate matches its key" do
-         Puppet::SSL::Host.new("foo").should respond_to(:certificate_matches_key?)
-     end
- 
-     it "should consider the certificate invalid if it cannot find a key" do
-         host = Puppet::SSL::Host.new("foo")
-         host.expects(:key).returns nil
- 
-         host.should_not be_certificate_matches_key
-     end
- 
-     it "should consider the certificate invalid if it cannot find a certificate" do
-         host = Puppet::SSL::Host.new("foo")
-         host.expects(:key).returns mock("key")
-         host.expects(:certificate).returns nil
- 
-         host.should_not be_certificate_matches_key
-     end
- 
-     it "should consider the certificate invalid if the SSL certificate's key verification fails" do
-         host = Puppet::SSL::Host.new("foo")
- 
-         key = mock 'key', :content => "private_key"
-         sslcert = mock 'sslcert'
-         certificate = mock 'cert', :content => sslcert
- 
-         host.stubs(:key).returns key
-         host.stubs(:certificate).returns certificate
- 
-         sslcert.expects(:check_private_key).with("private_key").returns false
- 
-         host.should_not be_certificate_matches_key
-     end
- 
-     it "should consider the certificate valid if the SSL certificate's key verification succeeds" do
-         host = Puppet::SSL::Host.new("foo")
- 
-         key = mock 'key', :content => "private_key"
-         sslcert = mock 'sslcert'
-         certificate = mock 'cert', :content => sslcert
- 
-         host.stubs(:key).returns key
-         host.stubs(:certificate).returns certificate
- 
-         sslcert.expects(:check_private_key).with("private_key").returns true
- 
-         host.should be_certificate_matches_key
-     end
- 
      describe "when specifying the CA location" do
          before do
              [Puppet::SSL::Key, Puppet::SSL::Certificate, Puppet::SSL::CertificateRequest, Puppet::SSL::CertificateRevocationList].each do |klass|
@@@ -408,14 -359,15 +359,15 @@@
      describe "when managing its certificate" do
          before do
              @realcert = mock 'certificate'
-             @cert = stub 'cert', :content => @realcert
+             @realcert.stubs(:check_private_key).with('private key').returns true
+ 
+             @cert = stub 'cert', :content => @realcert, :expired? => false
  
-             @host.stubs(:key).returns mock("key")
-             @host.stubs(:certificate_matches_key?).returns true
+             @host.stubs(:key).returns stub("key",:content => 'private key' )
          end
  
          it "should find the CA certificate if it does not have a certificate" do
 -            Puppet::SSL::Certificate.expects(:find).with("ca").returns mock("cacert")
 +            Puppet::SSL::Certificate.expects(:find).with(Puppet::SSL::CA_NAME).returns mock("cacert")
              Puppet::SSL::Certificate.stubs(:find).with("myname").returns @cert
  
              @host.certificate
@@@ -424,13 -376,13 +376,13 @@@
          it "should not find the CA certificate if it is the CA host" do
              @host.expects(:ca?).returns true
              Puppet::SSL::Certificate.stubs(:find)
 -            Puppet::SSL::Certificate.expects(:find).with("ca").never
 +            Puppet::SSL::Certificate.expects(:find).with(Puppet::SSL::CA_NAME).never
  
              @host.certificate
          end
  
          it "should return nil if it cannot find a CA certificate" do
 -            Puppet::SSL::Certificate.expects(:find).with("ca").returns nil
 +            Puppet::SSL::Certificate.expects(:find).with(Puppet::SSL::CA_NAME).returns nil
              Puppet::SSL::Certificate.expects(:find).with("myname").never
  
              @host.certificate.should be_nil
@@@ -453,22 -405,32 +405,32 @@@
          end
  
          it "should find the certificate in the Certificate class and return the Puppet certificate instance" do
 -            Puppet::SSL::Certificate.expects(:find).with("ca").returns mock("cacert")
 +            Puppet::SSL::Certificate.expects(:find).with(Puppet::SSL::CA_NAME).returns mock("cacert")
              Puppet::SSL::Certificate.expects(:find).with("myname").returns @cert
  
              @host.certificate.should equal(@cert)
          end
  
-         it "should fail if the found certificate does not match the private key" do
-             @host.expects(:certificate_matches_key?).returns false
+         it "should immediately expire the cached copy if the found certificate does not match the private key" do
+             @realcert.expects(:check_private_key).with('private key').returns false
+ 
+             Puppet::SSL::Certificate.stubs(:find).returns @cert
+             Puppet::SSL::Certificate.expects(:expire).with("myname")
+ 
+             @host.certificate
+         end
+ 
+         it "should not return a certificate if it does not match the private key" do
+             @realcert.expects(:check_private_key).with('private key').returns false
  
              Puppet::SSL::Certificate.stubs(:find).returns @cert
+             Puppet::SSL::Certificate.stubs(:expire).with("myname")
  
-             lambda { @host.certificate }.should raise_error(Puppet::Error)
+             @host.certificate.should == nil
          end
  
          it "should return any previously found certificate" do
 -            Puppet::SSL::Certificate.expects(:find).with("ca").returns mock("cacert")
 +            Puppet::SSL::Certificate.expects(:find).with(Puppet::SSL::CA_NAME).returns mock("cacert")
              Puppet::SSL::Certificate.expects(:find).with("myname").returns(@cert).once
  
              @host.certificate.should equal(@cert)
@@@ -654,14 -616,14 +616,14 @@@
  
          it "should catch and log errors during CSR saving" do
              @host.expects(:certificate).times(2).returns(nil).then.returns "foo"
-             @host.expects(:generate).times(2).raises(RuntimeError).then.returns nil
+             @host.expects(:generate).raises(RuntimeError).then.returns nil
              @host.stubs(:sleep)
              @host.wait_for_cert(1)
          end
  
          it "should sleep and retry after failures saving the CSR if waitforcert is enabled" do
              @host.expects(:certificate).times(2).returns(nil).then.returns "foo"
-             @host.expects(:generate).times(2).raises(RuntimeError).then.returns nil
+             @host.expects(:generate).raises(RuntimeError).then.returns nil
              @host.expects(:sleep).with(1)
              @host.wait_for_cert(1)
          end
diff --combined spec/unit/util/settings.rb
index 7527031,5642813..4855df4
--- a/spec/unit/util/settings.rb
+++ b/spec/unit/util/settings.rb
@@@ -579,6 -579,25 +579,25 @@@ describe Puppet::Util::Settings d
              # and we should now have the new value in memory
              @settings[:two].should == "disk-replace"
          end
+ 
+         it "should retain in-memory values if the file has a syntax error" do
+             # Init the value
+             text = "[main]\none = initial-value\n"
+             @settings.expects(:read_file).returns(text)
+             @settings.parse
+             @settings[:one].should == "initial-value"
+ 
+             # Now replace the value with something bogus
+             text = "[main]\nkenny = killed-by-what-follows\n1 is 2, blah blah florp\n"
+             @settings.expects(:read_file).returns(text)
+             @settings.parse
+ 
+             # The originally-overridden value should not be replaced with the default
+             @settings[:one].should == "initial-value"
+ 
+             # and we should not have the new value in memory
+             @settings[:kenny].should be_nil
+         end
      end
  
      it "should provide a method for creating a catalog of resources from its configuration" do
@@@ -718,7 -737,6 +737,7 @@@
          before do
              @settings = Puppet::Util::Settings.new
              @settings.stubs(:service_user_available?).returns true
 +            @settings.setdefaults :main, :noop => [false, ""]
              @settings.setdefaults :main, :maindir => ["/maindir", "a"], :seconddir => ["/seconddir", "a"]
              @settings.setdefaults :main, :user => ["suser", "doc"], :group => ["sgroup", "doc"]
              @settings.setdefaults :other, :otherdir => {:default => "/otherdir", :desc => "a", :owner => "service", :group => "service", :mode => 0755}
@@@ -1000,20 -1018,4 +1019,20 @@@
  
          it "should cache the result"
      end
 +
 +    describe "#without_noop" do
 +        before do
 +            @settings = Puppet::Util::Settings.new
 +            @settings.setdefaults :main, :noop => [true, ""]
 +        end
 +
 +        it "should set noop to false for the duration of the block" do
 +            @settings.without_noop { @settings.value(:noop, :cli).should be_false }
 +        end
 +
 +        it "should ensure that noop is returned to its previous value" do
 +            @settings.without_noop { raise } rescue nil
 +            @settings.value(:noop, :cli).should be_true
 +        end
 +    end
  end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list