## confdroid_postgresql::bouncer::bouncer.pp
# Module name: confdroid_postgresql
# Author: 12ww1160 (12ww1160@confdroid.com)
# @summary Class manages the pgbouncer service
# @example  confdroid_postgresql::bouncer::bouncer_rule { 'test connection':
#     pl_bouncer_db_name    => 'test',
#     pl_bouncer_host       => '127.0.0.7',
#     pl_bouncer_host_port  => '5432',
#     pl_bouncer_user       => 'test_user',
#     pl_bouncer_order      => '001',
#   }
###############################################################################
class confdroid_postgresql::bouncer::bouncer (

) inherits confdroid_postgresql::params {
  if ($fqdn == $pl_server_fqdn) and ($pl_use_pg_bouncer == true) {
    # ensure directory exists
    file { $pl_bouncer_dir:
      ensure   => directory,
      owner    => 'root',
      group    => 'root',
      mode     => '0750',
      selrange => s0,
      selrole  => object_r,
      seltype  => etc_t,
      seluser  => system_u,
    }
    # create auth user file to be populated through placeholder
    file { $pl_bouncer_auth_file:
      ensure   => file,
      owner    => 'pgbouncer',
      group    => 'pgbouncer',
      mode     => '0440',
      selrange => s0,
      selrole  => object_r,
      seltype  => etc_t,
      seluser  => system_u,
      content  => template($pl_bouncer_auth_erb),
    }

    # create the pgbouncer.ini file
    concat { $pl_bouncer_ini_file:
      ensure => present,
      owner  => 'pgbouncer',
      mode   => '0600',
      #notify => Service[$pl_service],
    }

    # manage file header
    concat::fragment { 'bouncer_header':
      target  => $pl_bouncer_ini_file,
      content => template($pl_bouncer_ini_erb),
      order   => '000',
    }
  }
}
