Skip to content

Commit 231ab5a

Browse files
committed
Merge pull request boxen#24 from boxen/rewrite
Rewrite
2 parents ecf11e5 + 1c5e7c7 commit 231ab5a

14 files changed

+307
-163
lines changed

Gemfile.lock

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,25 @@ GEM
1616
puppet-lint (~> 0.3)
1717
puppetlabs_spec_helper (~> 0.4)
1818
rspec-puppet (~> 0.1)
19-
diff-lcs (1.2.4)
20-
facter (1.7.2)
19+
diff-lcs (1.2.5)
20+
facter (1.7.3)
2121
faraday (0.8.8)
2222
multipart-post (~> 1.2.0)
2323
faraday_middleware (0.9.0)
2424
faraday (>= 0.7.4, < 0.9)
2525
hashie (2.0.5)
2626
hiera (1.2.1)
2727
json_pure
28-
highline (1.6.19)
29-
json (1.8.0)
30-
json_pure (1.8.0)
28+
highline (1.6.20)
29+
json (1.8.1)
30+
json_pure (1.8.1)
3131
librarian-puppet (0.9.10)
3232
json
3333
thor (~> 0.15)
3434
metaclass (0.0.1)
3535
mocha (0.14.0)
3636
metaclass (~> 0.0.1)
37-
multi_json (1.7.9)
37+
multi_json (1.8.2)
3838
multipart-post (1.2.0)
3939
netrc (0.7.7)
4040
octokit (1.25.0)
@@ -44,7 +44,7 @@ GEM
4444
hashie (~> 2.0)
4545
multi_json (~> 1.3)
4646
netrc (~> 0.7.7)
47-
puppet (3.2.4)
47+
puppet (3.3.2)
4848
facter (~> 1.6)
4949
hiera (~> 1.0)
5050
rgen (~> 0.6.5)
@@ -55,15 +55,15 @@ GEM
5555
rspec (>= 2.9.0)
5656
rspec-puppet (>= 0.1.1)
5757
rake (10.1.0)
58-
rgen (0.6.5)
58+
rgen (0.6.6)
5959
rspec (2.14.1)
6060
rspec-core (~> 2.14.0)
6161
rspec-expectations (~> 2.14.0)
6262
rspec-mocks (~> 2.14.0)
63-
rspec-core (2.14.5)
64-
rspec-expectations (2.14.2)
63+
rspec-core (2.14.7)
64+
rspec-expectations (2.14.4)
6565
diff-lcs (>= 1.1.3, < 2.0)
66-
rspec-mocks (2.14.3)
66+
rspec-mocks (2.14.4)
6767
rspec-puppet (0.1.6)
6868
rspec
6969
thor (0.18.1)

manifests/config.pp

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,54 @@
1-
# Internal: Configure postgresql.
2-
#
3-
# Examples
4-
#
5-
# include postgresql::config
6-
class postgresql::config {
7-
require boxen::config
8-
9-
$executable = "${boxen::config::home}/homebrew/bin/postgres"
10-
$datadir = "${boxen::config::datadir}/postgresql"
11-
$logdir = "${boxen::config::logdir}/postgresql"
12-
$port = 15432
1+
# Internal: Manage configuration files for postgresql
2+
class postgresql::config(
3+
$ensure = $postgresql::params::ensure,
4+
5+
$executable = $postgresql::params::executable,
6+
7+
$host = $postgresql::params::host,
8+
$port = $postgresql::params::port,
9+
$datadir = $postgresql::params::datadir,
10+
$logdir = $postgresql::params::logdir,
11+
) inherits postgresql::params {
12+
13+
include sysctl
14+
15+
$dir_ensure = $ensure ? {
16+
present => directory,
17+
default => absent,
18+
}
19+
20+
file {
21+
[
22+
$datadir,
23+
$logdir
24+
]:
25+
ensure => $dir_ensure;
26+
}
27+
28+
sysctl::set {
29+
'kern.sysv.shmmax':
30+
value => 1610612736 ;
31+
'kern.sysv.shmall':
32+
value => 393216
33+
}
34+
35+
if $::operatingsystem == 'Darwin' {
36+
include boxen::config
37+
38+
boxen::env_script { 'postgresql':
39+
content => template('postgresql/env.sh.erb'),
40+
priority => 'lower',
41+
}
42+
43+
file { "${boxen::config::envdir}/postgresql.sh":
44+
ensure => absent,
45+
}
46+
47+
48+
file { '/Library/LaunchDaemons/dev.postgresql.plist':
49+
content => template('postgresql/dev.postgresql.plist.erb'),
50+
group => 'wheel',
51+
owner => 'root',
52+
}
53+
}
1354
}

manifests/init.pp

Lines changed: 33 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -3,74 +3,52 @@
33
# Examples
44
#
55
# include postgresql
6-
class postgresql {
7-
include postgresql::config
8-
include homebrew
9-
include sysctl
6+
class postgresql(
7+
$ensure = $postgresql::params::ensure,
108

11-
file { [
12-
$postgresql::config::datadir,
13-
$postgresql::config::logdir,
14-
]:
15-
ensure => directory
16-
}
9+
$executable = $postgresql::params::executable,
1710

18-
file { '/Library/LaunchDaemons/dev.postgresql.plist':
19-
content => template('postgresql/dev.postgresql.plist.erb'),
20-
group => 'wheel',
21-
notify => Service['dev.postgresql'],
22-
owner => 'root'
23-
}
11+
$host = $postgresql::params::host,
12+
$port = $postgresql::params::port,
13+
$datadir = $postgresql::params::datadir,
14+
$logdir = $postgresql::params::logdir,
2415

25-
sysctl::set { 'kern.sysv.shmmax':
26-
value => 1610612736
27-
}
16+
$package = $postgresql::params::package,
17+
$version = $postgresql::params::version,
2818

29-
sysctl::set { 'kern.sysv.shmall':
30-
value => 393216
31-
}
19+
$service = $postgresql::params::service,
20+
$enable = $postgresql::params::enable,
21+
) inherits postgresql::params {
3222

33-
homebrew::formula { 'postgresql':
34-
before => Package['boxen/brews/postgresql'],
35-
}
23+
class { 'postgresql::config':
24+
ensure => $ensure,
3625

37-
package { 'boxen/brews/postgresql':
38-
ensure => '9.2.4-boxen2',
39-
notify => Service['dev.postgresql']
40-
}
26+
executable => $executable,
4127

42-
exec { 'init-postgresql-db':
43-
command => "initdb -E UTF-8 ${postgresql::config::datadir}",
44-
creates => "${postgresql::config::datadir}/PG_VERSION",
45-
require => Package['boxen/brews/postgresql']
28+
host => $host,
29+
port => $port,
30+
datadir => $datadir,
31+
logdir => $logdir,
4632
}
4733

48-
service { 'dev.postgresql':
49-
ensure => running,
50-
require => Exec['init-postgresql-db']
51-
}
34+
~>
35+
class { 'postgresql::package':
36+
ensure => $ensure,
5237

53-
service { 'com.boxen.postgresql': # replaced by dev.postgresql
54-
before => Service['dev.postgresql'],
55-
enable => false
38+
package => $package,
39+
version => $version,
5640
}
5741

58-
boxen::env_script { 'postgresql':
59-
content => template('postgresql/env.sh.erb'),
60-
priority => 'lower',
61-
}
42+
~>
43+
class { 'postgresql::service':
44+
ensure => $ensure,
6245

63-
file { "${boxen::config::envdir}/postgresql.sh":
64-
ensure => absent,
65-
}
46+
service => $service,
47+
enable => $enable,
6648

67-
$nc = "nc -z localhost ${postgresql::config::port}"
68-
69-
exec { 'wait-for-postgresql':
70-
command => "while ! ${nc}; do sleep 1; done",
71-
provider => shell,
72-
timeout => 30,
73-
unless => $nc,
74-
require => Service['dev.postgresql']
49+
datadir => $datadir,
50+
host => $host,
51+
port => $port,
7552
}
53+
7654
}

manifests/package.pp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Internal: install the pg packages
2+
class postgresql::package(
3+
$ensure = $postgresql::params::ensure,
4+
5+
$package = $postgresql::params::package,
6+
$version = $postgresql::params::version,
7+
) inherits postgresql::params {
8+
9+
$package_ensure = $ensure ? {
10+
present => $version,
11+
default => absent,
12+
}
13+
14+
if $::operatingsystem == 'Darwin' {
15+
homebrew::formula { 'postgresql': }
16+
}
17+
18+
package { $package:
19+
ensure => $package_ensure
20+
}
21+
22+
}

manifests/params.pp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Internal: defaults
2+
class postgresql::params {
3+
4+
case $::operatingsystem {
5+
Darwin: {
6+
include boxen::config
7+
8+
$executable = "${boxen::config::home}/homebrew/bin/postgres"
9+
$datadir = "${boxen::config::datadir}/postgresql"
10+
$logdir = "${boxen::config::logdir}/postgresql"
11+
$port = 15432
12+
13+
$package = 'boxen/brews/postgresql'
14+
$version = '9.2.4-boxen2'
15+
16+
$service = 'dev.postgresql'
17+
}
18+
19+
Ubuntu: {
20+
$executable = undef # only used on Darwin
21+
$datadir = '/var/lib/postgresql'
22+
$logdir = '/var/log/postgresql'
23+
$port = 5432
24+
25+
$package = 'postgresql-server-9.1'
26+
$version = installed
27+
28+
$service = 'postgresql-9.1'
29+
}
30+
31+
default: {
32+
fail('Unsupported operating system!')
33+
}
34+
}
35+
36+
$ensure = present
37+
$host = $::ipaddress_lo0
38+
$enable = true
39+
40+
}

manifests/service.pp

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Internal: manages postgresql service
2+
class postgresql::service(
3+
$ensure = $postgresql::params::ensure,
4+
5+
$service = $postgresql::params::service,
6+
$enable = $postgresql::params::enable,
7+
8+
$datadir = $postgresql::params::datadir,
9+
$host = $postgresql::params::host,
10+
$port = $postgresql::params::port,
11+
) inherits postgresql::params {
12+
13+
$svc_ensure = $ensure ? {
14+
present => running,
15+
default => stopped,
16+
}
17+
18+
$nc = "nc -z ${host} ${port}"
19+
20+
if $::operatingsystem == 'Darwin' {
21+
service { 'com.boxen.postgresql':
22+
ensure => stopped,
23+
before => Service[$service],
24+
enable => false
25+
}
26+
}
27+
28+
exec { 'init-postgresql-db':
29+
command => "initdb -E UTF-8 ${datadir}",
30+
creates => "${datadir}/PG_VERSION",
31+
}
32+
33+
->
34+
service { $service:
35+
ensure => $svc_ensure,
36+
enable => $enable,
37+
}
38+
39+
->
40+
exec { 'wait-for-postgresql':
41+
command => "while ! ${nc}; do sleep 1; done",
42+
provider => shell,
43+
timeout => 30,
44+
unless => $nc,
45+
}
46+
47+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
require 'spec_helper'
2+
3+
describe 'postgresql::config' do
4+
let(:facts) { default_test_facts }
5+
6+
it do
7+
should include_class('boxen::config')
8+
9+
%w(data/postgresql log/postgresql).each do |d|
10+
should contain_file("/test/boxen/#{d}").with_ensure(:directory)
11+
end
12+
13+
contain_sysctl__set("kern.sysv.shmmax")
14+
contain_sysctl__set("kern.sysv.shmall")
15+
16+
should include_class("boxen::config")
17+
should contain_boxen__env_script("postgresql")
18+
should contain_file("/Library/LaunchDaemons/dev.postgresql.plist")
19+
end
20+
21+
context "Ubuntu" do
22+
let(:facts) { default_test_facts.merge(:operatingsystem => "Ubuntu") }
23+
24+
it do
25+
should_not include_class("boxen::config")
26+
27+
should_not contain_boxen__env_script("postgresql")
28+
should_not contain_file("/Library/LaunchDaemons/dev.postgresql.plist")
29+
end
30+
end
31+
end

0 commit comments

Comments
 (0)