Skip to content

Commit 2f39ccd

Browse files
committed
Merge pull request puppetlabs#634 from DavidS/add-plpython-docs-classes
Add plpython and postgresql-docs classes
2 parents 5dc78b7 + f9c0d91 commit 2f39ccd

File tree

8 files changed

+235
-87
lines changed

8 files changed

+235
-87
lines changed

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,12 @@ Classes:
131131
* [postgresql::globals](#class-postgresqlglobals)
132132
* [postgresql::lib::devel](#class-postgresqllibdevel)
133133
* [postgresql::lib::java](#class-postgresqllibjava)
134+
* [postgresql::lib::docs](#class-postgresqllibdocs)
134135
* [postgresql::lib::perl](#class-postgresqllibperl)
135136
* [postgresql::lib::python](#class-postgresqllibpython)
136137
* [postgresql::server](#class-postgresqlserver)
137138
* [postgresql::server::plperl](#class-postgresqlserverplperl)
139+
* [postgresql::server::plpython](#class-postgresqlserverplpython)
138140
* [postgresql::server::contrib](#class-postgresqlservercontrib)
139141
* [postgresql::server::postgis](#class-postgresqlserverpostgis)
140142

@@ -205,12 +207,18 @@ This setting can be used to override the default postgresql devel package name.
205207
####`java_package_name`
206208
This setting can be used to override the default postgresql java package name. If not specified, the module will use whatever package name is the default for your OS distro.
207209

210+
####`docs_package_name`
211+
This setting can be used to override the default postgresql docs package name. If not specified, the module will use whatever package name is the default for your OS distro.
212+
208213
####`perl_package_name`
209214
This setting can be used to override the default postgresql Perl package name. If not specified, the module will use whatever package name is the default for your OS distro.
210215

211216
####`plperl_package_name`
212217
This setting can be used to override the default postgresql PL/perl package name. If not specified, the module will use whatever package name is the default for your OS distro.
213218

219+
####`plpython_package_name`
220+
This setting can be used to override the default postgresql PL/python package name. If not specified, the module will use whatever package name is the default for your OS distro.
221+
214222
####`python_package_name`
215223
This setting can be used to override the default postgresql Python package name. If not specified, the module will use whatever package name is the default for your OS distro.
216224

@@ -315,6 +323,9 @@ Value to pass through to the `package` resource when creating the server instanc
315323
####`plperl_package_name`
316324
This sets the default package name for the PL/Perl extension. Defaults to utilising the operating system default.
317325

326+
####`plpython_package_name`
327+
This sets the default package name for the PL/Python extension. Defaults to utilising the operating system default.
328+
318329
####`service_manage`
319330
This setting selects whether Puppet should manage the service. Defaults to `true`.
320331

@@ -456,6 +467,15 @@ The name of the postgresql java package.
456467
####`package_ensure`
457468
The ensure parameter passed on to postgresql java package resource.
458469

470+
###Class: postgresql::lib::docs
471+
This class installs postgresql bindings for Postgres-Docs. Alter the following parameters if you have a custom version you would like to install (Note: don't forget to make sure to add any necessary yum or apt repositories if specifying a custom version):
472+
473+
####`package_name`
474+
The name of the postgresql docs package.
475+
476+
####`package_ensure`
477+
The ensure parameter passed on to postgresql docs package resource.
478+
459479

460480
###Class: postgresql::lib::perl
461481
This class installs the postgresql Perl libraries. For customer requirements you can customise the following parameters:
@@ -466,6 +486,14 @@ The name of the postgresql perl package.
466486
####`package_ensure`
467487
The ensure parameter passed on to postgresql perl package resource.
468488

489+
###Class: postgresql::server::plpython
490+
This class installs the PL/Python procedural language for postgresql.
491+
492+
####`package_name`
493+
The name of the postgresql PL/Python package.
494+
495+
####`package_ensure`
496+
The ensure parameter passed on to postgresql PL/Python package resource.
469497

470498
###Class: postgresql::lib::python
471499
This class installs the postgresql Python libraries. For customer requirements you can customise the following parameters:

manifests/globals.pp

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,57 @@
11
# Class for setting cross-class global overrides. See README.md for more
22
# details.
33
class postgresql::globals (
4-
$client_package_name = undef,
5-
$server_package_name = undef,
6-
$contrib_package_name = undef,
7-
$devel_package_name = undef,
8-
$java_package_name = undef,
9-
$perl_package_name = undef,
10-
$plperl_package_name = undef,
11-
$python_package_name = undef,
12-
$postgis_package_name = undef,
4+
$client_package_name = undef,
5+
$server_package_name = undef,
6+
$contrib_package_name = undef,
7+
$devel_package_name = undef,
8+
$java_package_name = undef,
9+
$docs_package_name = undef,
10+
$perl_package_name = undef,
11+
$plperl_package_name = undef,
12+
$plpython_package_name = undef,
13+
$python_package_name = undef,
14+
$postgis_package_name = undef,
1315

14-
$service_name = undef,
15-
$service_provider = undef,
16-
$service_status = undef,
17-
$default_database = undef,
16+
$service_name = undef,
17+
$service_provider = undef,
18+
$service_status = undef,
19+
$default_database = undef,
1820

19-
$validcon_script_path = undef,
21+
$validcon_script_path = undef,
2022

21-
$initdb_path = undef,
22-
$createdb_path = undef,
23-
$psql_path = undef,
24-
$pg_hba_conf_path = undef,
25-
$pg_ident_conf_path = undef,
26-
$postgresql_conf_path = undef,
27-
$recovery_conf_path = undef,
23+
$initdb_path = undef,
24+
$createdb_path = undef,
25+
$psql_path = undef,
26+
$pg_hba_conf_path = undef,
27+
$pg_ident_conf_path = undef,
28+
$postgresql_conf_path = undef,
29+
$recovery_conf_path = undef,
2830

29-
$pg_hba_conf_defaults = undef,
31+
$pg_hba_conf_defaults = undef,
3032

31-
$datadir = undef,
32-
$confdir = undef,
33-
$bindir = undef,
34-
$xlogdir = undef,
35-
$logdir = undef,
33+
$datadir = undef,
34+
$confdir = undef,
35+
$bindir = undef,
36+
$xlogdir = undef,
37+
$logdir = undef,
3638

37-
$user = undef,
38-
$group = undef,
39+
$user = undef,
40+
$group = undef,
3941

40-
$version = undef,
41-
$postgis_version = undef,
42+
$version = undef,
43+
$postgis_version = undef,
4244

43-
$needs_initdb = undef,
45+
$needs_initdb = undef,
4446

45-
$encoding = undef,
46-
$locale = undef,
47+
$encoding = undef,
48+
$locale = undef,
4749

48-
$manage_pg_hba_conf = undef,
49-
$manage_pg_ident_conf = undef,
50-
$manage_recovery_conf = undef,
50+
$manage_pg_hba_conf = undef,
51+
$manage_pg_ident_conf = undef,
52+
$manage_recovery_conf = undef,
5153

52-
$manage_package_repo = undef
54+
$manage_package_repo = undef,
5355
) {
5456
# We are determining this here, because it is needed by the package repo
5557
# class.

manifests/lib/docs.pp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# This class installs the postgresql-docs See README.md for more
2+
# details.
3+
class postgresql::lib::docs (
4+
$package_name = $postgresql::params::docs_package_name,
5+
$package_ensure = 'present',
6+
) inherits postgresql::params {
7+
8+
validate_string($package_name)
9+
10+
package { 'postgresql-docs':
11+
ensure => $package_ensure,
12+
name => $package_name,
13+
tag => 'postgresql',
14+
}
15+
16+
}

manifests/params.pp

Lines changed: 55 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -30,35 +30,39 @@
3030
$package_version = "${version_parts[0]}${version_parts[1]}"
3131

3232
if $version == $postgresql::globals::default_version {
33-
$client_package_name = pick($client_package_name, 'postgresql')
34-
$server_package_name = pick($server_package_name, 'postgresql-server')
35-
$contrib_package_name = pick($contrib_package_name,'postgresql-contrib')
36-
$devel_package_name = pick($devel_package_name, 'postgresql-devel')
37-
$java_package_name = pick($java_package_name, 'postgresql-jdbc')
38-
$plperl_package_name = pick($plperl_package_name, 'postgresql-plperl')
39-
$service_name = pick($service_name, 'postgresql')
40-
$bindir = pick($bindir, '/usr/bin')
41-
$datadir = $::operatingsystem ? {
33+
$client_package_name = pick($client_package_name, 'postgresql')
34+
$server_package_name = pick($server_package_name, 'postgresql-server')
35+
$contrib_package_name = pick($contrib_package_name,'postgresql-contrib')
36+
$devel_package_name = pick($devel_package_name, 'postgresql-devel')
37+
$java_package_name = pick($java_package_name, 'postgresql-jdbc')
38+
$docs_package_name = pick($docs_package_name, 'postgresql-docs')
39+
$plperl_package_name = pick($plperl_package_name, 'postgresql-plperl')
40+
$plpython_package_name = pick($plpython_package_name, 'postgresql-plpython')
41+
$service_name = pick($service_name, 'postgresql')
42+
$bindir = pick($bindir, '/usr/bin')
43+
$datadir = $::operatingsystem ? {
4244
'Amazon' => pick($datadir, '/var/lib/pgsql9/data'),
4345
default => pick($datadir, '/var/lib/pgsql/data'),
4446
}
45-
$confdir = pick($confdir, $datadir)
47+
$confdir = pick($confdir, $datadir)
4648
} else {
47-
$client_package_name = pick($client_package_name, "postgresql${package_version}")
48-
$server_package_name = pick($server_package_name, "postgresql${package_version}-server")
49-
$contrib_package_name = pick($contrib_package_name,"postgresql${package_version}-contrib")
50-
$devel_package_name = pick($devel_package_name, "postgresql${package_version}-devel")
51-
$java_package_name = pick($java_package_name, "postgresql${package_version}-jdbc")
52-
$plperl_package_name = pick($plperl_package_name, "postgresql${package_version}-plperl")
53-
$service_name = pick($service_name, "postgresql-${version}")
54-
$bindir = pick($bindir, "/usr/pgsql-${version}/bin")
55-
$datadir = $::operatingsystem ? {
49+
$client_package_name = pick($client_package_name, "postgresql${package_version}")
50+
$server_package_name = pick($server_package_name, "postgresql${package_version}-server")
51+
$contrib_package_name = pick($contrib_package_name,"postgresql${package_version}-contrib")
52+
$devel_package_name = pick($devel_package_name, "postgresql${package_version}-devel")
53+
$java_package_name = pick($java_package_name, "postgresql${package_version}-jdbc")
54+
$docs_package_name = pick($docs_package_name, "postgresql${package_version}-docs")
55+
$plperl_package_name = pick($plperl_package_name, "postgresql${package_version}-plperl")
56+
$plpython_package_name = pick($plpython_package_name, "postgresql${package_version}-plpython")
57+
$service_name = pick($service_name, "postgresql-${version}")
58+
$bindir = pick($bindir, "/usr/pgsql-${version}/bin")
59+
$datadir = $::operatingsystem ? {
5660
'Amazon' => pick($datadir, "/var/lib/pgsql9/${version}/data"),
5761
default => pick($datadir, "/var/lib/pgsql/${version}/data"),
5862
}
59-
$confdir = pick($confdir, $datadir)
63+
$confdir = pick($confdir, $datadir)
6064
}
61-
$psql_path = pick($psql_path, "${bindir}/psql")
65+
$psql_path = pick($psql_path, "${bindir}/psql")
6266

6367
$service_status = $service_status
6468
$service_reload = "service ${service_name} reload"
@@ -84,26 +88,27 @@
8488

8589
# Archlinux doesn't have a client-package but has a libs package which
8690
# pulls in postgresql server
87-
$client_package_name = pick($client_package_name, 'postgresql')
88-
$server_package_name = pick($server_package_name, 'postgresql-libs')
89-
$java_package_name = pick($java_package_name, 'postgresql-jdbc')
91+
$client_package_name = pick($client_package_name, 'postgresql')
92+
$server_package_name = pick($server_package_name, 'postgresql-libs')
93+
$java_package_name = pick($java_package_name, 'postgresql-jdbc')
9094
# Archlinux doesn't have develop packages
91-
$devel_package_name = pick($devel_package_name, 'postgresql-devel')
95+
$devel_package_name = pick($devel_package_name, 'postgresql-devel')
9296
# Archlinux does have postgresql-contrib but it isn't maintained
93-
$contrib_package_name = pick($contrib_package_name,'undef')
97+
$contrib_package_name = pick($contrib_package_name,'undef')
9498
# Archlinux postgresql package provides plperl
95-
$plperl_package_name = pick($plperl_package_name, 'undef')
96-
$service_name = pick($service_name, 'postgresql')
97-
$bindir = pick($bindir, '/usr/bin')
98-
$datadir = pick($datadir, '/var/lib/postgres/data')
99-
$confdir = pick($confdir, $datadir)
100-
$psql_path = pick($psql_path, "${bindir}/psql")
99+
$plperl_package_name = pick($plperl_package_name, 'undef')
100+
$plpython_package_name = pick($plpython_package_name, 'undef')
101+
$service_name = pick($service_name, 'postgresql')
102+
$bindir = pick($bindir, '/usr/bin')
103+
$datadir = pick($datadir, '/var/lib/postgres/data')
104+
$confdir = pick($confdir, $datadir)
105+
$psql_path = pick($psql_path, "${bindir}/psql")
101106

102-
$service_status = $service_status
103-
$service_reload = "service ${service_name} reload"
104-
$python_package_name = pick($python_package_name, 'python-psycopg2')
107+
$service_status = $service_status
108+
$service_reload = "service ${service_name} reload"
109+
$python_package_name = pick($python_package_name, 'python-psycopg2')
105110
# Archlinux does not have a perl::DBD::Pg package
106-
$perl_package_name = pick($perl_package_name, 'undef')
111+
$perl_package_name = pick($perl_package_name, 'undef')
107112
}
108113

109114
'Debian': {
@@ -126,31 +131,32 @@
126131
}
127132
}
128133

129-
$client_package_name = pick($client_package_name, "postgresql-client-${version}")
130-
$server_package_name = pick($server_package_name, "postgresql-${version}")
131-
$contrib_package_name = pick($contrib_package_name, "postgresql-contrib-${version}")
134+
$client_package_name = pick($client_package_name, "postgresql-client-${version}")
135+
$server_package_name = pick($server_package_name, "postgresql-${version}")
136+
$contrib_package_name = pick($contrib_package_name, "postgresql-contrib-${version}")
132137
if versioncmp($postgis_version, '2') < 0 {
133138
$postgis_package_name = pick($postgis_package_name, "postgresql-${version}-postgis")
134139
} else {
135140
$postgis_package_name = pick($postgis_package_name, "postgresql-${version}-postgis-${postgis_version}")
136141
}
137-
$devel_package_name = pick($devel_package_name, 'libpq-dev')
138-
$java_package_name = pick($java_package_name, 'libpostgresql-jdbc-java')
139-
$perl_package_name = pick($perl_package_name, 'libdbd-pg-perl')
140-
$plperl_package_name = pick($plperl_package_name, "postgresql-plperl-${version}")
141-
$python_package_name = pick($python_package_name, 'python-psycopg2')
142+
$devel_package_name = pick($devel_package_name, 'libpq-dev')
143+
$java_package_name = pick($java_package_name, 'libpostgresql-jdbc-java')
144+
$perl_package_name = pick($perl_package_name, 'libdbd-pg-perl')
145+
$plperl_package_name = pick($plperl_package_name, "postgresql-plperl-${version}")
146+
$plpython_package_name = pick($plpython_package_name, "postgresql-plpython-${version}")
147+
$python_package_name = pick($python_package_name, 'python-psycopg2')
142148

143-
$bindir = pick($bindir, "/usr/lib/postgresql/${version}/bin")
144-
$datadir = pick($datadir, "/var/lib/postgresql/${version}/main")
145-
$confdir = pick($confdir, "/etc/postgresql/${version}/main")
149+
$bindir = pick($bindir, "/usr/lib/postgresql/${version}/bin")
150+
$datadir = pick($datadir, "/var/lib/postgresql/${version}/main")
151+
$confdir = pick($confdir, "/etc/postgresql/${version}/main")
146152
if $::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '8.0') >= 0 {
147153
# Jessie uses systemd
148154
$service_status = pick($service_status, "/usr/sbin/service ${service_name}@*-main status")
149155
} else {
150156
$service_status = pick($service_status, "/etc/init.d/${service_name} status | /bin/egrep -q 'Running clusters: .+|online'")
151157
}
152-
$service_reload = "service ${service_name} reload"
153-
$psql_path = pick($psql_path, '/usr/bin/psql')
158+
$service_reload = "service ${service_name} reload"
159+
$psql_path = pick($psql_path, '/usr/bin/psql')
154160
}
155161

156162
'FreeBSD': {

manifests/server.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
$package_ensure = $postgresql::params::package_ensure,
88

99
$plperl_package_name = $postgresql::params::plperl_package_name,
10+
$plpython_package_name = $postgresql::params::plpython_package_name,
1011

1112
$service_ensure = $postgresql::params::service_ensure,
1213
$service_enable = $postgresql::params::service_enable,

manifests/server/plpython.pp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# This class installs the PL/Python procedural language for postgresql. See
2+
# README.md for more details.
3+
class postgresql::server::plpython(
4+
$package_ensure = 'present',
5+
$package_name = $postgresql::server::plpython_package_name,
6+
) {
7+
package { 'postgresql-plpython':
8+
ensure => $package_ensure,
9+
name => $package_name,
10+
tag => 'postgresql',
11+
}
12+
13+
anchor { 'postgresql::server::plpython::start': }->
14+
Class['postgresql::server::install']->
15+
Package['postgresql-plpython']->
16+
Class['postgresql::server::service']->
17+
anchor { 'postgresql::server::plpython::end': }
18+
19+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
require 'spec_helper'
2+
3+
describe 'postgresql::lib::docs', :type => :class do
4+
5+
describe 'on a redhat based os' do
6+
let :facts do {
7+
:osfamily => 'RedHat',
8+
:operatingsystem => 'RedHat',
9+
:operatingsystemrelease => '6.4',
10+
}
11+
end
12+
it { is_expected.to contain_package('postgresql-docs').with(
13+
:name => 'postgresql-docs',
14+
:ensure => 'present',
15+
:tag => 'postgresql'
16+
)}
17+
describe 'when parameters are supplied' do
18+
let :params do
19+
{:package_ensure => 'latest', :package_name => 'somepackage'}
20+
end
21+
it { is_expected.to contain_package('postgresql-docs').with(
22+
:name => 'somepackage',
23+
:ensure => 'latest',
24+
:tag => 'postgresql'
25+
)}
26+
end
27+
end
28+
29+
end

0 commit comments

Comments
 (0)