Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
pycklets / postgresql_database_exists.py
Size: Mime:
# -*- 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