newer pg module
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / manifests / server / extension.pp
1 # Activate an extension on a postgresql database
2 define postgresql::server::extension (
3   $database,
4   $extension        = $name,
5   String[1] $ensure = 'present',
6   $package_name     = undef,
7   $package_ensure   = undef,
8   $connect_settings = $postgresql::server::default_connect_settings,
9 ) {
10   $user             = $postgresql::server::user
11   $group            = $postgresql::server::group
12   $psql_path        = $postgresql::server::psql_path
13
14   case $ensure {
15     'present': {
16       $command = "CREATE EXTENSION \"${extension}\""
17       $unless_comp = '='
18       $package_require = []
19       $package_before = Postgresql_psql["Add ${extension} extension to ${database}"]
20     }
21
22     'absent': {
23       $command = "DROP EXTENSION \"${extension}\""
24       $unless_comp = '!='
25       $package_require = Postgresql_psql["Add ${extension} extension to ${database}"]
26       $package_before = []
27     }
28
29     default: {
30       fail("Unknown value for ensure '${ensure}'.")
31     }
32   }
33
34
35   postgresql_psql {"Add ${extension} extension to ${database}":
36
37     psql_user        => $user,
38     psql_group       => $group,
39     psql_path        => $psql_path,
40     connect_settings => $connect_settings,
41
42     db               => $database,
43     command          => $command,
44     unless           => "SELECT t.count FROM (SELECT count(extname) FROM pg_extension WHERE extname = '${extension}') as t WHERE t.count ${unless_comp} 1",
45     require          => Postgresql::Server::Database[$database],
46   }
47
48   if $package_name {
49     $_package_ensure = $package_ensure ? {
50       undef   => $ensure,
51       default => $package_ensure,
52     }
53
54     ensure_packages($package_name, {
55       ensure  => $_package_ensure,
56       tag     => 'postgresql',
57       require => $package_require,
58       before  => $package_before,
59     })
60   }
61 }