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
14 anchor { 'postgresql::server::service::begin': }
18 service { 'postgresqld':
19 ensure => $service_ensure,
20 enable => $service_enable,
21 name => $service_name,
22 provider => $service_provider,
24 status => $service_status,
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.
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':
35 db_name => $default_database,
39 psql_path => $psql_path,
40 require => Service['postgresqld'],
41 before => Anchor['postgresql::server::service::end']
43 Postgresql::Server::Database <| title == $default_database |> -> Postgresql_conn_validator['validate_service_is_running']
47 anchor { 'postgresql::server::service::end': }