Enable lingering for the contributors user
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / manifests / server / service.pp
1 # PRIVATE CLASS: do not call directly
2 class postgresql::server::service {
3   $service_ensure   = $postgresql::server::service_ensure
4   $service_enable   = $postgresql::server::service_enable
5   $service_manage   = $postgresql::server::service_manage
6   $service_name     = $postgresql::server::service_name
7   $service_provider = $postgresql::server::service_provider
8   $service_status   = $postgresql::server::service_status
9   $user             = $postgresql::server::user
10   $port             = $postgresql::server::port
11   $default_database = $postgresql::server::default_database
12   $psql_path        = $postgresql::params::psql_path
13
14   anchor { 'postgresql::server::service::begin': }
15
16   if $service_manage {
17
18     service { 'postgresqld':
19       ensure    => $service_ensure,
20       enable    => $service_enable,
21       name      => $service_name,
22       provider  => $service_provider,
23       hasstatus => true,
24       status    => $service_status,
25     }
26
27     if $service_ensure == 'running' {
28       # This blocks the class before continuing if chained correctly, making
29       # sure the service really is 'up' before continuing.
30       #
31       # Without it, we may continue doing more work before the database is
32       # prepared leading to a nasty race condition.
33       postgresql_conn_validator{ 'validate_service_is_running':
34         run_as    => $user,
35         db_name   => $default_database,
36         port      => $port,
37         sleep     => 1,
38         tries     => 60,
39         psql_path => $psql_path,
40         require   => Service['postgresqld'],
41         before    => Anchor['postgresql::server::service::end']
42       }
43       Postgresql::Server::Database <| title == $default_database |> -> Postgresql_conn_validator['validate_service_is_running']
44     }
45   }
46
47   anchor { 'postgresql::server::service::end': }
48 }