Merge pull request #435 from cmurphy/master

Start synchronizing module files
Fix trailing }.
Merge pull request #436 from apenney/fix-typo

Fix trailing }.
Merge pull request #439 from cmurphy/master

Synchronize .travis.yml
Merge pull request #443 from cmurphy/master

Add validate and lint tasks to travis script
Remove all the old acceptance tests.
Convert specs to RSpec 2.99.1 syntax with Transpec

This conversion is done by Transpec 2.3.1 with the following command:
    transpec -f -c "bundle exec rake spec"

* 82 conversions
    from: it { should ... }
      to: it { is_expected.to ... }

* 21 conversions
    from: == expected
      to: eq(expected)

* 20 conversions
    from: obj.should
      to: expect(obj).to

* 5 conversions
    from: its([:key]) { }
      to: describe '[:key]' do subject { super()[:key] }; it { } end

* 1 conversion
    from: it { should_not ... }
      to: it { is_expected.not_to ... }

* 1 conversion
    from: its(:attr) { }
      to: describe '#attr' do subject { super().attr }; it { } end

For more details: https://github.com/yujinakayama/transpec#supported-conversions
Rework the acceptance and unit tests.
Merge pull request #449 from apenney/spec_tests_rewrite

Spec tests rewrite
Remove the ensure => absent uninstall code.

This is likely to be a controversial change so I wanted to put some
explanation of our reasoning into the commit message.  This gets
kind of complex so I'll start with the problem and then the reasoning.

Problem:

We rely heavily on the ability to uninstall and reinstall postgres
throughout our testing code, testing features like "can I move from the
distribution packages to the upstream packages through the module" and
over time we've learnt that the uninstall code simply doesn't work a lot
of the time.  It leaves traces of postgres behind or fails to remove
certain packages on Ubuntu, and generally causes bits to be left on your
system that you didn't expect.

When we then reinstall things fail because it's not a true clean slate,
and this causes us enormous problems during test.  We've spent weeks and
months working on these tests and they simply don't hold up well across
the full range of PE platforms.

Reasoning:

Due to all these problems we've decided to take a stance on uninstalling
in general.  We feel that in 2014 it's completely reasonable and normal
to have a good provisioning pipeline combined with your configuration
management and the "correct" way to uninstall a fully installed service
like postgresql is to simply reprovision the server without it in the
first place.  As a general rule this is how I personally like to work
and I think is a good practice.

WAIT A MINUTE:

We understand that there are environments and situations in which it's
not easy to do that.  What if you accidently deployed Postgres on
100,000 nodes?  When this work is finished I'm going to take a look at
building some example 'profiles' to be found under examples/ within this
module that can uninstall postgres on popular platforms.  These can be
modified and used in your specific case to uninstall postgresql.  They
will be much more brute force and reliant on deleting entire directories
and require you to do more work up front in specifying where things are
installed but we think it'll prove to be a much cleaner mechanism for
this kind of thing rather than trying to weave it into the main module
logic itself.
Merge pull request #442 from apenney/remove-uninstall-code

Remove the ensure => absent uninstall code.
MODULES-1213 link pg_config binary into /usr/bin if not already in /usr/bin or /usr/local/bin
MODULES-1213 remove inadvertantly added vagrant-wrapper gem
MODULES-1213 fix typo
Fix Fedora support by configuring systemd, not /etc/sysconfig
Merge pull request #453 from kbarber/maint/master/latest-fedora-no-sysconfig

Fix Fedora support by configuring systemd, not /etc/sysconfig
Merge 3.4.x changes into master.
Merge pull request #454 from apenney/merge-from-34

Merge 3.4.x changes into master.
defined type for creating database schemas

This defined type helps create database schemas, and assign them to an
`owner`. It is closely modeled after Postgresql::Server::Tablespace.
It uses PostgreSQL's builtin IF NOT EXISTS to guarantee idempotency.
(>= 9.3, else it checks pg_namespace).

n.b.: This defined type *requires* that a `db` is passed. This is a
concious design decision, since we find it rather useless to create such
schemas in the default `postgres` database, and if *were* useful, one
can always "over-specify".

This addresses MODULES-1098.
doc: use postgresql::*server*::tablespace in example