(#14723) Fix http report description
(maint) Disable upstart spec test on windows

replace_file is disabled on windows, so the upstart spec test fails when the
provider calls out to replace_file. This commit confines the test to
non-windows platforms, where replace_file is defined.
Merge pull request #826 from haus/disable_upstart_spec_windows

Disable upstart spec windows
(#14761) Add boot, reboot to excludes list for redhat provider

On sles, the reboot init script would be triggered during a `puppet resource
service` call, which would ignore the status argument and proceed to reboot the
system. It would also call the boot init script, which could hang the puppet
call indefinitely. This commit adds both the boot and reboot services to the
redhat provider's exclude list. It also updates the redhat provider spec test
to test for those changes.
Merge pull request #827 from haus/ticket/2.7rc/14761_add_excludes_for_sles_services_to_redhat_provider

Ticket/2.7rc/14761 add excludes for sles services to redhat provider
Updating CHANGELOG, conf/redhat/puppet.spec for puppet 2.7.15rc4
Merge branch '2.7rc' into 2.7.x
(maint) Add mailmap to identify contributors

Without this patch it can be difficult to track a single contributor
over time.  This is because we switched version control systems early in
the project and individual contributors have used different email
addresses over time.

This patch partially fixes the problem by mapping some contributors to
their current identities.
Test SSL setup code, not our stubbing of it.

This rewrites the tests to actually test code - previously, almost every
single object involved was a stub.

There shouldn't be any functional changes, other than tests that might
actually fail at some point, falling out of this.

The results are not the most awesome of tests, but they are markedly better
than before we started.

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
(#8858) Explicitly set SSL peer verification mode.

In Ruby 1.8 the Net::HTTP library defaults to skipping peer verification when
no mode is explicitly set.  Ruby 1.9, on the other hand, does not: it defaults
to verification of the peer certificate - leading to failure when we depended
on the default value in our HTTP setup.

This changes to explicitly set the verification mode, ensuring we get
consistent results across all Ruby versions.

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
Merge remote-tracking branch 'daniel-pittman/bug/2.7.x/8858-ruby-19-default-to-peer-verify-for-https' into 2.7.x

* daniel-pittman/bug/2.7.x/8858-ruby-19-default-to-peer-verify-for-https:
  (#8858) Explicitly set SSL peer verification mode.
  Test SSL setup code, not our stubbing of it.
Merge pull request #818 from lotheac/fix_http_report_desc

Fix http report desc
Updated manpages, CHANGELOG, puppet.spec, puppet.rb for 2.7.16rc1.
(#11868) Use Windows Installer interfaces to manage MSI packages

Previously, Puppet recorded MSI packages it had installed in a YAML file.
However, if the file was deleted or the system modified, e.g. Add/Remove
Programs, then Puppet did not know the package state had changed.

Also, if the name of the package resource did not change across versions,
e.g. VMware Tools, then puppet would report the package as insync even
though the installed version could be different than the one pointed to by
the source parameter.

This commit changes the msi package provider to use the Windows Installer
Automation interfaces to query the state of the system. It will now
accurately report on products, even those it did not install, including
Puppet itself (#13444). If a product is removed via Add/Remove Programs,
Puppet will re-install it the next time it runs.

This also means Puppet can now uninstall packages it didn't install.

When using the msi package resource, the resource title should match the
'ProductName' property in the MSI Property table, which is also the value
displayed in Add/Remove Programs, e.g.

  package { 'Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148':
    ensure => installed,
    ...
  }

In cases where the ProductName does not change across versions, e.g.
VMware Tools, you should use the PackageCode as the name of the resource:

  package { '{0E3AA38E-EAD3-4348-B5C5-051B6852CED6}':
    ensure => installed,
    ...
  }

You can obtain the PackageCode using:

  installer = WIN32OLE.new('WindowsInstaller.Installer')
  db = installer.OpenDatabase(path, 0)
  puts db.SummaryInformation.Property(9)

where <path> is the path to the MSI.

The msi provider does not automatically compare PackageCodes when
determining if the resource is insync, because the source MSI could be on
a network share, and we do not want to copy the potentially large file
just to see if changes need to be made.