You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
#!/bin/bash
|
|
|
|
## When writing relation script, remember:
|
|
## - they should be idempotents
|
|
## - they can be launched while the dockers is already up
|
|
## - they are launched from the host
|
|
## - the target of the link is launched first, and get a chance to ``relation-set``
|
|
## - both side of the scripts get to use ``relation-get``.
|
|
|
|
## could generate this also if not set
|
|
DBNAME=$(relation-get dbname)
|
|
|
|
[ "$(relation-get password 2>/dev/null)" ] && exit 0
|
|
|
|
. lib/common
|
|
|
|
set -e
|
|
|
|
USER=$(relation-get user)
|
|
PASSWORD="$(gen_password)"
|
|
POSTGIS=$(relation-get postgis 2>/dev/null) || true
|
|
UNACCENT=$(relation-get unaccent 2>/dev/null) || true
|
|
|
|
|
|
ensure_db_docker_running
|
|
|
|
db_has_database "$DBNAME" || UNACCENT="$UNACCENT" POSTGIS="$POSTGIS" db_create "$DBNAME"
|
|
if ! db_has_user "$USER"; then
|
|
info "Creating a new user $USER."
|
|
db_create_user "$USER" "$PASSWORD"
|
|
else
|
|
info "Updating password of user $USER."
|
|
db_change_password "$USER" "$PASSWORD"
|
|
fi
|
|
db_grant_rights "$DBNAME" "$USER"
|
|
|
|
pgpass_line="*:*:*:$USER:$PASSWORD"
|
|
pgpass_file="$CONFIGSTORE/$BASE_CHARM_NAME/root/.pgpass"
|
|
|
|
if [ -e "$pgpass_file" ]; then
|
|
sed -ri "/^.+:.+:.+:$USER:.*$/d" "$pgpass_file"
|
|
fi
|
|
mkdir -p "$(dirname "$pgpass_file")"
|
|
echo "$pgpass_line" >> "$pgpass_file"
|
|
chmod 600 "$pgpass_file"
|
|
|
|
relation-set password "$PASSWORD"
|