Source code for pydiploy.require.databases.postgres
# -*- coding: utf-8 -*-
"""
postgresql
==========
Required functions for postgresql database
"""
import fabric
import fabtools
from fabric.api import env
from pydiploy.decorators import do_verbose
@do_verbose
[docs]def postgres_pkg(update=False):
""" Installs dependencies for postgresql """
fabtools.require.deb.packages(['libpq-dev'], update=update)
@do_verbose
[docs]def install_postgres_server(update=False):
""" Installs postgres server on remote """
# TODO: if deployed app is a django webapp extract settings file to build
# env vars !!!
fabtools.require.postgres.server()
@do_verbose
[docs]def add_postgres_user(name, password, superuser=False, createdb=False,
createrole=False, inherit=True, login=True,
connection_limit=None, encrypted_password=False,
verbose=True):
""" Installs postgres server on remote """
if "verbose_output" in env:
verbose = env.verbose_output
msg = ''
if not fabtools.postgres.user_exists(name):
fabtools.require.postgres.user(name, password, superuser, createdb,
createrole, inherit, login,
connection_limit, encrypted_password)
msg = 'Add %s user for postgresql !' % fabric.colors.green(name)
else:
msg = 'User %s already exists !' % fabric.colors.red(name)
if verbose:
fabric.api.puts(msg)
@do_verbose
[docs]def add_postgres_database(name, owner, template='template0', encoding='UTF8',
locale='fr_FR.UTF-8', verbose=True):
""" Adds postgresql database on remote """
if "verbose_output" in env:
verbose = env.verbose_output
msg = ''
if not fabtools.postgres.database_exists(name):
fabtools.require.postgres.database(name, owner, template, encoding,
locale)
msg = 'Add %s database for owner %s !' % (
fabric.colors.green(name), fabric.colors.green(owner))
else:
msg = 'Database %s for owner %s already exists !' % (
fabric.colors.red(name), fabric.colors.red(owner))
if verbose:
fabric.api.puts(msg)