Merge pull request #1110 from pcarlisle/ticket/3.x/15733-remove-mongrel

Ticket/3.x/15733 remove mongrel
Merge remote-tracking branch 'upstream/3.x'

* upstream/3.x:
  (#15733) Remove excess hash arguments for webrick
  (#15733) Use real arguments for Puppet::Network::Server
  (#15733) Simplify bindaddress logic for webrick
  (#15733) Remove servertype setting
  (#15733) Remove mongrel support
Merge branch 'hiera-puppet-for-merge' into maint/3.x/merge-hiera-puppet-into-core

Conflicts:
	.gitignore
	CHANGELOG
	LICENSE
	README.md
	Rakefile
	ext/debian/changelog.erb
	ext/debian/compat
	ext/debian/control
	ext/debian/copyright
	ext/debian/rules
	ext/osx/preflight.erb
	spec/spec_helper.rb
	spec/watchr.rb

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
Clean up the Hiera Puppet integration.

This updates the tests to work correctly in the Puppet environment, rather
than running as part of a separate repository and package.

It also moves the examples into a more appropriate location.

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
Make envpuppet print warning to stderr

Otherwise eval $(envpuppet) will fail strangely if the warning is
printed.
(#16120) ips package provider gets feature holdable.

Previously the ips package provider did not provide the feature holdable.
This update brings the feature holdable to ips packaging and adds test cases
to check for this feature.
(13914) Fix ownership of log files

The puppet master creates log files while running as the root user,
then switches to running as the puppet user. This commit ensures it
will still have permission to write to the log file after switching users.
Do not change ownership of log file if on Windows
Handle chown failure
Merge branch 'sciurus-13914' into 3.x
Merge remote-tracking branch 'origin/3.x'
Merge pull request #1108 from vrthra/packaging/ips_repo

packaging/ips_repo
Merge pull request #1106 from pcarlisle/ticket/3.x/13563-verify-crl

(#13563) Verify CSRs against the embedded public key
(#16275) Don't set $environment as a local fact

The environment set by set_local_facts was not always correct. Since the node
object should always have the correct environment now we should just use that.
Use Pathname.realpath instead of writing it...

The `expand_symlinks` function implemented the exact same behaviour as
Pathname.realpath did - expand the path, make it absolute, eliminate all
symlinks, and return the physical location of the file on disk.

Given that we can just replace one with the other and eliminate a dozen lines
of code.

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
Merge pull request #1112 from petere/envpuppet-warning

Make envpuppet print warning to stderr
Merge pull request #1115 from pcarlisle/ticket/3.x/16275-catalog-environment

(#16275) Don't set $environment as a local fact
(#7962) Added settings class for handling time intervals.

The DurationSetting converts strings with units into a number of
seconds, but more importantly guarantees that the setting will be an
integer. The following settings can now be specified as durations:

  configtimeout
  filetimeout
  waitforcert
  splaylimit
  runinterval
  rrdinterval
  ca_ttl

Since multiple settings can use this format, the description was removed
from `ca_ttl` to be added to the config section of puppet-docs.

Also note, since many of these settings specify sub-hour times, the unit
'm' was added for specifying times in minutes.
(#7962) Added rate-limiting logger utility

`Puppet::Util::Log::RateLimitedLogger` is a class that includes the
standard logging module and so responds to `info`, `warning`, etc. It
uses log messages themselves as keys to a hash that records the last time
they were logged and at which level. When a message is logged, it first
checks the record and ignores the call if the given time interval has
not yet elapsed since the last time it was logged.
(#7962) Added `from_instance()` method to base SSL class

Instead of creating certificates by turning OpenSSL::X509::Certificate
instances into strings then back into a new instance, just reuse them.
This method is on the base SSL class, so it can be used for keys,
certificate requests, etc.

The side effect of this change is that extracting the certificate 'name'
out of its subject is abstracted (`name_from_subject()`), and it no
longer calls downcase on the name. This is safe since it's downcased in
the base class constructor, and also provides a prettier 'name' if
needed.