Charm: oneiric/postgresql
Revision: 15
Hook: db-relation-joined
#!/bin/bash
[[ -f "$(dirname $0)/common.sh" ]] && source "$(dirname $0)/common.sh"
service_password_file="/var/lib/juju/${database}.${user}.password"
create_password() {
password=`pwgen -s 16`
echo ${password} > ${service_password_file}
}
has_password() {
[ -f ${service_password_file} ] && password=`cat ${service_password_file}`
}
has_password || create_password
create_user() {
sudo -su postgres psql -c"create user ${user} with superuser password '${password}'"
if admin; then
sudo -su postgres psql -c"alter user ${user} createdb createuser"
fi
}
has_user() {
sudo -su postgres psql -c"select rolname from pg_roles;" | grep -q ${user}
}
has_user || create_user
create_database() {
sudo -su postgres psql -c"create database ${database} owner ${user}"
sudo -su postgres psql -c"grant all privileges on database ${database} to ${user}"
}
has_database() {
sudo -su postgres psql -c"select datname from pg_database;" | grep -q ${database}
}
admin || has_database || create_database
relation-set host=${host} \
user=${user} \
password=${password} \
database=${database}