|
1 | 1 | # Activate an extension on a postgresql database |
2 | 2 | define postgresql::server::extension ( |
3 | 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, |
| 4 | + $extension = $name, |
| 5 | + Optional[String[1]] $version = undef, |
| 6 | + String[1] $ensure = 'present', |
| 7 | + $package_name = undef, |
| 8 | + $package_ensure = undef, |
| 9 | + $connect_settings = $postgresql::server::default_connect_settings, |
9 | 10 | ) { |
10 | 11 | $user = $postgresql::server::user |
11 | 12 | $group = $postgresql::server::group |
|
42 | 43 | db => $database, |
43 | 44 | command => $command, |
44 | 45 | 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($database != undef and defined(Postgresql::Server::Database[$database])) { |
| 49 | + Postgresql::Server::Database[$database]->Postgresql_psql["Add ${extension} extension to ${database}"] |
46 | 50 | } |
47 | 51 |
|
48 | 52 | if $package_name { |
|
58 | 62 | before => $package_before, |
59 | 63 | }) |
60 | 64 | } |
| 65 | + if $version { |
| 66 | + if $version == 'latest' { |
| 67 | + $alter_extension_sql = "ALTER EXTENSION \"${extension}\" UPDATE" |
| 68 | + $update_unless = "SELECT 1 FROM pg_available_extensions WHERE name = '${extension}' AND default_version = installed_version" |
| 69 | + } else { |
| 70 | + $alter_extension_sql = "ALTER EXTENSION \"${extension}\" UPDATE TO '${version}'" |
| 71 | + $update_unless = "SELECT 1 FROM pg_extension WHERE extname='${extension}' AND extversion='${version}'" |
| 72 | + } |
| 73 | + postgresql_psql { "${database}: ${alter_extension_sql}": |
| 74 | + db => $database, |
| 75 | + psql_user => $user, |
| 76 | + psql_group => $group, |
| 77 | + psql_path => $psql_path, |
| 78 | + connect_settings => $connect_settings, |
| 79 | + command => $alter_extension_sql, |
| 80 | + unless => $update_unless, |
| 81 | + } |
| 82 | + if($database != undef and defined(Postgresql::Server::Database[$database])) { |
| 83 | + Postgresql::Server::Database[$database]->Postgresql_psql["${database}: ${alter_extension_sql}"] |
| 84 | + } |
| 85 | + } |
61 | 86 | } |
0 commit comments