(PUP-2303) Fix arguments of ArgumentError

Yo dawg, I heard you like ArgumentErrors so I put an
ArgumentError in your ArgumentError.

This makes errors in fileserver config much more readable and
easier to find.
(doc) Document key purging in the description of the ssh_authorized_key type

This commit puts an explanation of key purging over where people will likely be
looking for it. It also tightens up the description of the user type's
purge_ssh_keys attribute, and adds an example key to the ssh_authorized_key type
(since the way that type breaks up key lines is somewhat unintuitive).

The example public key is a dud, to prevent accidental access grants.
(PUP-2311) OpenBSD uninstall broken when multiple uninstall_options given
(PUP-2458) Tests for providers inheriting from providers of another type

It's sometimes desirable to create new providers that inherit from providers
of a different type to create more specialised types/providers from a common
base.  This adds tests around this already-present functionality.
(maint) Whitespace fixup in ext/debian/puppetmaster-passenger.postinst
(PUP-2395) Add apache2 dependency to puppetmaster-passenger

The postinst of the puppetmaster-passenger depends on the a2*
binaries to configure the package. This dependency moved from the
apache2-common package into the main apache2 package, so this commit
adds apache2 as a dependency of the puppetmaster-passenger package.
(PUP-2395) Update puppetmaster-passenger for httpd 2.4

In httpd 2.4 some of the conventions around a2ensite changed which broke
the postinst and postrm scripts. This commit brings in several changes from the
debian puppet packaging that have addressed this problem. An
apache2_puppetmaster_sitename function is used to determine the correct
sitename to use in sites-available. Thanks to Stig Sandbeck Mathisen for
the work in the debian puppet packaging.
(PUP-2395) Refactor puppetmaster-postinst sed calls

This commit brings over a change from the debian puppet packaging to
move all of the sed calls in to one sed invocation and to use a tempfile
instead of operating directly on the live apache vhost file.
(PUP-2395) Update puppetmaster-passenger postinst for passenger 4

Passenger 4 deprecated and removed several vhost directives, which would
break installations of the package on platforms with passenger 4. This
commit adds a condional sed call to delete those directives if the
passenger version is 4 or greater.
(PUP-1597) Fix contain functions lookup of class with leading ::

When the contain function creates edges it looked up resources
without removing the leading :: in the name. The catalog never stores
these, and thus an edge was formed between a resource and nil.

This commit simply removes the ::. There is no checking that a resource
is actually returned since they should all be there due to the call to
include them in the catalog (which would fail if it was not possible to
include them).

A test is also added for the erronous (and now fixed case).
(PUP-488) Add specs fur future Resource parameter/metaparameter access

This is just adding a little additional spec coverage for the future
parser Resource[foo][attribute] syntax where attribute is either a
parameter or a metaparameter.  It also checks some
virtual/realized/exported variations.

From debugging, it appears that the only values being accessed during
evaluation are those either set directly on the Puppet::Parser::Resource
instance's Puppet::Parser::Resource::Params, or the default
Puppet::Parser::Resource::Params which have been set in the current or
parent scopes during evaluation of a
Puppet::Pops::Model::ResourceDefaultsExpression for the given resource
type.  No attempt is made to lookup the type class's defined parameter
defaults.
(PUP-2508) Ensure env & trn-uuid are sent when configurer failures occur

Any failure in the configurer #run code might cause the ensure block to
evaluate early, and a report might be sent missing the details of what
the environment and transaction_uuid should be.

This patch moves where the report fields 'environment' and
'transaction_uuid' are set in the configurer code to ensure they are
populated early.

It also ensures the report environment is modified if the catalog or
server specifies it is different to the launched environment. This is
because we change this mid-flight, so our code simplies updates the
report environment when this happens.

Signed-off-by: Ken Barber <ken@bob.sh>
(PUP-2357) Add validation of 'idem' (no-effect) expr sequences
(PUP-2357) Add validation of non-productive expressions

This adds validation of non-productive expressions:
* when they do not appear last
* when they appear last in constructs that do not produce a value
Merge pull request #2622 from haus/ticket/stable/pup_2395_fixup_passenger_packaging

(PUP-2395) Fix puppetmaster-passenger for apache httpd 2.4
(PUP-2240) Add support for splat in case and selector expressions.

This functionality was missing from the original work on supporting
the splat (unfold operator).
(maint) Include 'f' prefix for fedora paths in the builds repo

Recent changes to acceptance install_utils fetch all repository data
to the coordinator node and then push that data to the test nodes rather
than expecting the test nodes to be able to reach our internal builds
server.  Two paths being used to fetch repo data were missing the
necessiry of including a 'f' in the version segment of the path when
fetching fedora repo data. This patch fixes this.
Merge branch 'stable'

* stable:
  (maint) Include 'f' prefix for fedora paths in the builds repo
  (PUP-2395) Update puppetmaster-passenger postinst for passenger 4
  (PUP-2395) Refactor puppetmaster-postinst sed calls
  (PUP-2395) Update puppetmaster-passenger for httpd 2.4
  (PUP-2395) Add apache2 dependency to puppetmaster-passenger
  (maint) Whitespace fixup in ext/debian/puppetmaster-passenger.postinst
(maint) Remove empty unused method from test.
Merge pull request #2627 from hlindberg/pup-2240_splat-case-and-select

(PUP-2240) Add support for splat in case and selector expressions.