Source code for provy.more.debian.database.postgresql
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Roles in this namespace are meant to provide `PostgreSQL <http://www.postgresql.org/>`_ database management utilities for Debian distributions.
'''
from provy.more.base.database.postgresql import BasePostgreSQLRole
from provy.more.debian.package.aptitude import AptitudeRole
[docs]class PostgreSQLRole(BasePostgreSQLRole):
'''
This role provides `PostgreSQL <http://www.postgresql.org/>`_ database management utilities for Debian distributions.
Take a look at :class:`provy.more.base.database.postgresql.BasePostgreSQLRole` for more available methods.
Example:
::
from provy.core import Role
from provy.more.debian import PostgreSQLRole
class MySampleRole(Role):
def provision(self):
with self.using(PostgreSQLRole) as role:
role.ensure_user("john")
role.ensure_database("foo", owner="john")
'''
[docs] def provision(self):
'''
Installs `PostgreSQL <http://www.postgresql.org/>`_ and its dependencies.
This method should be called upon if overriden in base classes, or PostgreSQL won't work properly in the remote server.
Example:
::
class MySampleRole(Role):
def provision(self):
self.provision_role(PostgreSQLRole) # no need to call this if using with block.
'''
with self.using(AptitudeRole) as role:
role.ensure_package_installed('postgresql')
role.ensure_package_installed('postgresql-server-dev-%s' % self.__get_version())
def __get_version(self):
distro = self.get_distro_info()
if distro.distributor_id.lower() == 'ubuntu':
version = '9.2'
else:
version = '8.4'
return version