Merge pull request #2626 from kbarber/ticket/stable/pup-2508-no-environment-trn-uuid-compilation-failure

(PUP-2508) Ensure env & trn-uuid are sent when configurer failures occur
(maint) Remove dead code in configurer
(PUP-2522) Include transaction_uuid in node requests

This makes the transaction_uuid available for use by a node terminus, to make
it easier to track the full catalog lifecycle when using an ENC.
Merge branch 'stable'
(maint) Change dev-puppet-master script not to log debug and trace

It is more useful to set this yourself when calling the script,
depending on whether you want --verbose or --debug and/or --trace.
So just:

$ util/dev-puppet-master foo --debug --trace

Also fixed copying of auth.conf (from basic case running script from
repository root).
Merge pull request #2654 from peterhuene/pup/2182

(PUP-2182) Add virtual_packages feature to package type.
Merge branch 'stable'

* stable:
  (PUP-2182) Add virtual_packages feature to package type.

Conflicts:
	lib/puppet/provider/package/yum.rb
(PUP-2505) Implement DELETE verb for HTTP routing

Duplicates:
   PUP-2483 Deleting a certificate does not work with the API
   PUP-2516 Delete a clients certificate with HTTP API no longer working

HTTP API requests using the DELETE method are failing with "Server Error:
undefined method `each' for nil:NilClass"...

e.g.
 curl -k -X DELETE https://${PMASTER}:8140/production/certificate_status/$AGENT

Traced problem back to missing specification for :DELETE in @method_handlers
(PUP-2505) Add method to specify delete handlers

Amending pull request per review comment.  Adding handler for delete
method.
(PUP-2505) Add test for delete handling
(PUP-2505) Reject requests with unknown HTTP verbs

When we forgot to handle DELETE the error showed up as a 500 because the
code tried to call a method on nil. The correct response is a 405, since
the server does not handle that method. Now that GET, POST, PUT, HEAD,
and DELETE are all covered, it should be safe to respond with 405 in all
other cases.
(PUP-121) Add more tests, doc, and correct behavior

This generalizes the "make names absolute" to a transformation
of given arguments to class names strings suitable for lookup, and
also applying the transformation to Class and Resource reference types.
(PUP-2582) Update apache vhost SSL settings

Previously the apache vhost defined an SSLCipherSuite which included
several weak ciphers. This commit disables the following algorithms:
aNULL, eNULL, DES, 3DES, IDEA, SEED, DSS, PSK, RC4, MD5

Second, previously LOW, SSLv2, and EXP were removed, but not
killed from the list, which meant that they could be added again in
subsequent declarations.

Third, ALL:!ADH meant that AECDH was enabled. This commit uses !aNULL
to disable all anonymous authentication algorithms. It also explicitly
specifies !eNULL (anonymous encryption algorithms).

Fourth, we were only enabling SSLv3 and TLSv1, but not TLSv1.1 or
TLSv1.2. TLSv1.2 protects against attacks known to work against SSLv3
and TLSv1.0.

Finally, SSLHonorCipherOrder is set to on, because certain clients do
not send ciphers in the correct preferred order, and this setting will
help mitigate that problem.

Thanks to Aaron Zauner <azet@azet.org> for bringing this to our attention.
Merge branch 'pr/2657' into stable

* pr/2657:
  (PUP-2582) Update apache vhost SSL settings
Merge pull request #2652 from peterhuene/pup/2031

(PUP-2031) Fix broken range support in unless_uid parameter.
(PUP-2581) Make illegal names interchangeable to legal variable work

In interpolation when using expression mode ${} and having an illegal
name (e.g. _x) that resulted in a syntax error as the _x got translated
to a STRING token (a bare word not being a name). The interpolation
logic could then not transform it into a (valid) variable expression
(i.e. $_x).

The change is to let the lexer emit a WORD token for the illegal NAME.
The interpolation then changes that to a VARIBLE if it is the only
expression. If the WORD token escapes into the grammar, it is equivalent
to having used a quoted string in the source text.

Note that WORD only accepts unqualified input, anything with a : that is
not a valid NAME is still flagged as an error. Thus _x::y, x::_y are
both illegal NAME.
Merge remote-tracking branch 'zaphod42/issue/stable/pup-2505-delete-not-respected' into stable

* zaphod42/issue/stable/pup-2505-delete-not-respected:
  (PUP-2505) Reject requests with unknown HTTP verbs
  (PUP-2505) Add test for delete handling
  (PUP-2505) Add method to specify delete handlers
  (PUP-2505) Implement DELETE verb for HTTP routing
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (PUP-2582) Update apache vhost SSL settings
  (PUP-2505) Reject requests with unknown HTTP verbs
  (PUP-2505) Add test for delete handling
  (PUP-2505) Add method to specify delete handlers
  (PUP-2505) Implement DELETE verb for HTTP routing
(PUP-2519) Create the default directory environment

Directory environments are not guaranteed to exist; Puppet provides a
fallback staticly loaded environment for the default production
environment if it does not exist, but we would prefer to set up a real
directory environment if possible to provide a better experience for new
installations.

This commit adjusts the Puppet::Settings catalog to create the default directory
environment in the first `environmentpath` directory if that directory
exists.

Now that the production directory environment is created implicitly by
the Puppet settings catalog when we have an environmentpath, the
can_enumerate_environments test needs to expect that the production
environment will be there along with the two we have explicitly created.
(PUP-2519) Ignore module directories if env does not exist

Puppet::Util::Autoload will attempt to look up module directories in the
given or configured environment, but there is no guarantee that the
environment exists when using directory environments, and Autoload's
module_directories method fails if a nil environment is being handled.

Given that puppet applications now directly set the current environment
during their initialization and we have adjusted other points in puppet
that used to lookup the configured environment to instead use the
current environment, module_directories now skips and returns an empty
array if no environment is found during bootstrapping.