Defined Type: postgresql::server::schema

Defined in:
manifests/server/schema.pp

Overview

Type: postgresql::server::schema

Create a new schema. See README.md for more details.

Requires:

The database must exist and the PostgreSQL user should have enough privileges

Sample Usage:

postgresql::server::schema

db => 'template1',

Parameters:

  • db (Any) (defaults to: $postgresql::server::default_database)
  • owner (Any) (defaults to: undef)
  • schema (Any) (defaults to: $title)
  • connect_settings (Any) (defaults to: $postgresql::server::default_connect_settings)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'manifests/server/schema.pp', line 15

define postgresql::server::schema(
  $db = $postgresql::server::default_database,
  $owner  = undef,
  $schema = $title,
  $connect_settings = $postgresql::server::default_connect_settings,
) {
  $user      = $postgresql::server::user
  $group     = $postgresql::server::group
  $psql_path = $postgresql::server::psql_path
  $version   = $postgresql::server::_version

  # If the connection settings do not contain a port, then use the local server port
  if $connect_settings != undef and has_key( $connect_settings, 'PGPORT') {
    $port = undef
  } else {
    $port = $postgresql::server::port
  }

  Postgresql_psql {
    db         => $db,
    psql_user  => $user,
    psql_group => $group,
    psql_path  => $psql_path,
    port       => $port,
    connect_settings => $connect_settings,
  }

  $schema_title   = "Create Schema '${title}'"
  $authorization = $owner? {
    undef   => '',
    default => "AUTHORIZATION \"${owner}\"",
  }

  $schema_command = "CREATE SCHEMA \"${schema}\" ${authorization}"
  $unless         = "SELECT nspname FROM pg_namespace WHERE nspname='${schema}'"

  postgresql_psql { $schema_title:
    command => $schema_command,
    unless  => $unless,
    require => Class['postgresql::server'],
  }

  if($owner != undef and defined(Postgresql::Server::Role[$owner])) {
    Postgresql::Server::Role[$owner]->Postgresql_psql[$schema_title]
  }
}