Fixed unhandled --ignoreschedules in puppet kick
(maint) Add dependency information for yard and redcarpet

Without this patch `bundle exec yard server --reload` doesn't work.
This is a problem because people who are developing Puppet need to be
able to access the API documentation easily and the yard server is one
such way.  This patch addresses the problem by adding a dependency on
yard and redcarpet for the development group only.  This will prevent
the yard and redcarpet gem from sucking in a large number of
dependencies when running in a CI environment because these environments
are expected to omit development only dependencies when bootstrapping
using `bundle install --path vendor --without development`
(#11276) Load default root certs on Windows

On Windows calling OpenSSL::X509::Store#set_default_paths does nothing. As
a result, puppet is unable to make authenticated SSL connections to
well-known SSL servers, like forge.puppetlabs.com.

This commit adds a RootCerts class that loads the root certs from the
Windows system cert store, and monkey patches the
OpenSSL::X509::Store#set_default_paths to behave as expected on Windows.

Note the actual semantics for set_default_paths are slightly different,
in that on *nix, it sets the paths that openssl will look for trusted root
certs, whereas this patch loads them into the X509::Store object on
Windows. But the net effect is the same, we're specifying the set of root
certs that we trust when authenticating SSL servers.

This commit monkey patches openssl, because there isn't a central way to
create SSL contexts in ruby. Specifically, open-uri hides the process of
setting up the SSL context, so the caller doesn't have to "worry" about
it. In doing so, it calls set_default_paths expecting that is all that is
needed. But it makes it next to impossible for the caller to add other
root certs.

Specifically, the module tool uses open-uri to download tar.gz content,
but that said the issue is not specific to the module tool.

This commit also adds an SSL acceptance test.
(#17474) Make it possible to return `false` from a terminus

This manifested as an inability to retrieve the value `false` from hiera using
data bindings. The find method on Puppet::Indirection interpreted this as no
value being returned.
(maint) Update network_device spec to check for nil

Commit fe95a39 added a default value of false for instantiation of
network transport types. I omitted that value and defaulted to nil since
they're equivalent but didn't update the tests. This commits checks for
nil instead of false.
Merge pull request #1464 from adrienthebo/fixup_1329

Update network_device spec to check for nil
Merge branch 'jeffmccune-yard_gemfile'

* jeffmccune-yard_gemfile:
  (maint) Add dependency information for yard and redcarpet
(main) Add puppet-acceptance/ to .gitignore
Merge branch 'pull-1192'
Revert "Merge branch 'jeffmccune-yard_gemfile'"

This reverts commit 09f097e73917b43336c9dd55dc90474e495f32c4, reversing
changes made to 8f105246bc75c7cb7c77a4e2a14cb5ae211ea055.

This is being reverted because the yard gem cannot be installed properly
on Windows.

Talking to @joshcooper, we're going to revert this now and figure out a
better way to handle dependencies like this that have issues on some
platforms.  Hopefully there's a way to satisfy a dependency on all
platforms by default and exclude only those we know to be problematic.
tweak the nagios grammar.ry so it reflects the parser

The grammar.ry didn't match the parser.rb; what was in parser.rb was

    module_eval <<'.,.,', 'grammar.ry', 42
        def _reduce_10( val, _values, result )
    result = {val[0] => val[1]}
        result
    end
    .,.,

Which couldn't have come from that grammar.ry which specified:

    var: PARAM VALUE icomment returns { result = {val[0],val[1]} }
(#19148) don't embed a Racc parser in naginator

Naginator embeds a parser engine which clashes with the one the DSL is
using.  This leads to noisy runs like this:

    $ puppet apply -e 'nagios_host {"foo":}'
    racc/parser.rb:27: warning: already initialized constant Racc_Runtime_Version
    racc/parser.rb:28: warning: already initialized constant Racc_Runtime_Revision
    racc/parser.rb:30: warning: already initialized constant Racc_Runtime_Core_Version_R
    racc/parser.rb:31: warning: already initialized constant Racc_Runtime_Core_Revision_R
    racc/parser.rb:35: warning: already initialized constant Racc_Runtime_Core_Revision_C
    racc/parser.rb:39: warning: already initialized constant Racc_Main_Parsing_Routine
    racc/parser.rb:40: warning: already initialized constant Racc_YY_Parse_Method
    racc/parser.rb:41: warning: already initialized constant Racc_Runtime_Core_Version
    racc/parser.rb:42: warning: already initialized constant Racc_Runtime_Core_Revision
    racc/parser.rb:43: warning: already initialized constant Racc_Runtime_Type
    Finished catalog run in 0.08 seconds

The fix is simply to not embed the parser engine, and use the same one as the puppet DSL.
(maint) Cleanup whitespace errors

No change in behavior, just cleaning up some white space errors found
with git diff --check.
Merge branch 'richardc-fix/master/19148'

* richardc-fix/master/19148:
  (maint) Cleanup whitespace errors
  (#19148) don't embed a Racc parser in naginator
  tweak the nagios grammar.ry so it reflects the parser

closes #1466
(#14544) Make puppet apply --write-catalog-summary produce resources and classes state files

MCollective requires a classes.txt and resources.txt to function.  The
agent application writes this by default but the apply application has
no way to write these files.

With the increased popularity of running puppet masterless opting
instead to only run puppet apply on every node this is becoming a
problem for mcollective users who wish to run this mode of puppet
configuration management

This commits adds a new flag to the apply application -
--write-catalog-summary - which enables the creation of these 2 files
leaving it off by default to avoid apply from stepping on the toes of an
agent unless the user specifically request this behavior
Merge branch 'ripienaar-feature/master/14544'

* ripienaar-feature/master/14544:
  (#14544) Make puppet apply --write-catalog-summary produce resources and classes state files

closes #1465
Merge pull request #1439 from joshcooper/ticket/master/18978-windows-cacerts

(#18978) Load default root certs on Windows
(#18978) Fix stray commas

I experimented with some changes and forgot to undo them completely before
submitting PR 1439. This commit removes the stray commas that caused
CertOpenSystemStore to be an array instead of an Win32API object.
Merge branch 'ticket/17474-indirection-false' of https://github.com/pcarlisle/puppet

* 'ticket/17474-indirection-false' of https://github.com/pcarlisle/puppet:
  (#17474) Make it possible to return `false` from a terminus
(#7911) Allow managing local groups when duplicate names exist in a remote NSS database e.g. LDAP.

Some applications require local accounts and the useradd/groupadd commands currently used by the provider will not create a local account if they already exist remotely.  The libuser commands luseradd/lgroupadd will allow a local name to duplicate a remote name.  So these commands are used to force the local account creation.  The libuser commands parse /etc/libuser.conf to determine which modules to use for creating users.  Files must be the module used to get the desired local account managment.  Because of this, it is necessary for Puppet to ship a libuser.conf file, which will only be used during a Puppet run, to ensure local account managment.  The libuser.conf file used by the luseradd/lgroupadd commands can be overrideen by setting the environment variable LIBUSER_CONF. Which is what Puppet does to make sure its version of the configuration file is used