Repository URL to install this package:
Version:
1.0.0b1 ▾
|
pycklets
/
postgresql_database_exists.py
|
---|
# -*- coding: utf-8 -*-
from pyckles import AutoPycklet
class PostgresqlDatabaseExists(AutoPycklet):
"""Installs postgresql service on a host, and ensures a database with the provided name is present.
If ``db_user`` is provided, its value will be used as the owner of the database.
If PostgreSQL is already installed on a particular host, it's better to use the frecklet::postgresql-service
frecklet before this, configure the service, and use the ``no_setup_postgresql`` flag set to ``true``. Otherwise
PostgreSQL configuration might be overwritten by this.
When creating a user and providing a password, that password needs to be passed in encrypted (md5-hased) form.
On Linux, you can do that via:
```
echo "md5$(echo -n "${PASSWORD}${USERNAME}" | md5sum | cut -c -32)"
# for example:
echo "md5$(echo -n "mysecretpasswordfreckles" | md5sum | cut -c -32)"
```
And on Mac OS X you use the ``md5`` executable instead:
```
echo "md5$(echo -n "${PASSWORD}${USERNAME}" | md5 | cut -c -32)"
```
If a database dump file is provided, the database will be imported from it.
Otherwise an empty table will be created.
Args:
db_encoding: The encoding of the db (default: 'UTF-8').
db_import: Whether to use a sql dump file to create the database.
db_lc_collate: The collation order to use in the database.
db_lc_ctype: Character classification (LC_CTYPE) to use in the database.
db_name: The name of the database to use from the dump.
db_template: The template used to create the database.
db_user: The name of the database user ('role' in postgres).
db_user_password: The (hashed) password for the database user ('role' in PostgreSQL).
no_setup_postgresql: Don't attempt to install PostgreSQL service.
postgresql_group_id: The (optional) custom PostgreSQL group gid (when installing PostgreSQL).
postgresql_listen_addresses: The IPs the PostgreSQL server is listening on.
postgresql_pg_hba: A list of hosts to allow connections from.
postgresql_port: The port the PostgreSQL server is listening on.
postgresql_user_id: The (optional) custom PostgreSQL user uid (when installing PostgreSQL).
postgresql_version: The version of postgresql
"""
FRECKLET_ID = "postgresql-database-exists"
def __init__(
self,
db_encoding="UTF-8",
db_import=None,
db_lc_collate=None,
db_lc_ctype=None,
db_name=None,
db_template=None,
db_user=None,
db_user_password=None,
no_setup_postgresql=True,
postgresql_group_id=None,
postgresql_listen_addresses=None,
postgresql_pg_hba=None,
postgresql_port=None,
postgresql_user_id=None,
postgresql_version=None,
):
super(PostgresqlDatabaseExists, self).__init__(
var_names=[
"db_encoding",
"db_import",
"db_lc_collate",
"db_lc_ctype",
"db_name",
"db_template",
"db_user",
"db_user_password",
"no_setup_postgresql",
"postgresql_group_id",
"postgresql_listen_addresses",
"postgresql_pg_hba",
"postgresql_port",
"postgresql_user_id",
"postgresql_version",
]
)
self._db_encoding = db_encoding
self._db_import = db_import
self._db_lc_collate = db_lc_collate
self._db_lc_ctype = db_lc_ctype
self._db_name = db_name
self._db_template = db_template
self._db_user = db_user
self._db_user_password = db_user_password
self._no_setup_postgresql = no_setup_postgresql
self._postgresql_group_id = postgresql_group_id
self._postgresql_listen_addresses = postgresql_listen_addresses
self._postgresql_pg_hba = postgresql_pg_hba
self._postgresql_port = postgresql_port
self._postgresql_user_id = postgresql_user_id
self._postgresql_version = postgresql_version
@property
def db_encoding(self):
return self._db_encoding
@db_encoding.setter
def db_encoding(self, db_encoding):
self._db_encoding = db_encoding
@property
def db_import(self):
return self._db_import
@db_import.setter
def db_import(self, db_import):
self._db_import = db_import
@property
def db_lc_collate(self):
return self._db_lc_collate
@db_lc_collate.setter
def db_lc_collate(self, db_lc_collate):
self._db_lc_collate = db_lc_collate
@property
def db_lc_ctype(self):
return self._db_lc_ctype
@db_lc_ctype.setter
def db_lc_ctype(self, db_lc_ctype):
self._db_lc_ctype = db_lc_ctype
@property
def db_name(self):
return self._db_name
@db_name.setter
def db_name(self, db_name):
self._db_name = db_name
@property
def db_template(self):
return self._db_template
@db_template.setter
def db_template(self, db_template):
self._db_template = db_template
@property
def db_user(self):
return self._db_user
@db_user.setter
def db_user(self, db_user):
self._db_user = db_user
@property
def db_user_password(self):
return self._db_user_password
@db_user_password.setter
def db_user_password(self, db_user_password):
self._db_user_password = db_user_password
@property
def no_setup_postgresql(self):
return self._no_setup_postgresql
@no_setup_postgresql.setter
def no_setup_postgresql(self, no_setup_postgresql):
self._no_setup_postgresql = no_setup_postgresql
@property
def postgresql_group_id(self):
return self._postgresql_group_id
@postgresql_group_id.setter
def postgresql_group_id(self, postgresql_group_id):
self._postgresql_group_id = postgresql_group_id
@property
def postgresql_listen_addresses(self):
return self._postgresql_listen_addresses
@postgresql_listen_addresses.setter
def postgresql_listen_addresses(self, postgresql_listen_addresses):
self._postgresql_listen_addresses = postgresql_listen_addresses
@property
def postgresql_pg_hba(self):
return self._postgresql_pg_hba
@postgresql_pg_hba.setter
def postgresql_pg_hba(self, postgresql_pg_hba):
self._postgresql_pg_hba = postgresql_pg_hba
@property
def postgresql_port(self):
return self._postgresql_port
@postgresql_port.setter
def postgresql_port(self, postgresql_port):
self._postgresql_port = postgresql_port
@property
def postgresql_user_id(self):
return self._postgresql_user_id
@postgresql_user_id.setter
def postgresql_user_id(self, postgresql_user_id):
self._postgresql_user_id = postgresql_user_id
@property
def postgresql_version(self):
return self._postgresql_version
@postgresql_version.setter
def postgresql_version(self, postgresql_version):
self._postgresql_version = postgresql_version