if ! vos examine db.$USERNAME >/dev/null 2>/dev/null; then
vos create -server afs -partition a -name db.$USERNAME -maxquota 5000
fs mkmount -dir /afs/.hcoop.net/common/.databases/$USERNAME -vol db.$USERNAME -rw
+ vos release common.databases
fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl databases l
fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl system:backup rl
fi
case $1 in
adduser)
- echo "I would create PostgreSQL user $2."
+ USERNAME=$2
+ DIR=/afs/hcoop.net/common/databases/$USERNAME/postgres
+
+ kinit -k -t /etc/keytabs/root.admin.keytab root/admin
+ aklog
+
+ if ! vos examine db.$USERNAME >/dev/null 2>/dev/null; then
+ vos create -server afs -partition a -name db.$USERNAME -maxquota 5000
+ fs mkmount -dir /afs/.hcoop.net/common/.databases/$USERNAME -vol db.$USERNAME -rw
+ vos release common.databases
+ fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl databases l
+ fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl system:backup rl
+ fi
+
+ if ! [ -d $DIR ]; then
+ sudo -u postgres psql -c "CREATE USER $USERNAME" template1
+ mkdir -p $DIR
+ chown postgres:postgres $DIR
+ fs setacl -dir $DIR -acl postgres write
+ fs setacl -dir $DIR -acl databases none
+ fs setacl -dir $DIR -acl system:backup rl
+
+ sudo -u postgres psql -c "CREATE TABLESPACE user_$USERNAME OWNER $USERNAME LOCATION '$DIR'" template1
+ fi
;;
createdb)
- echo "I would create PostgreSQL table $2_$3 for user $2."
+ USERNAME=$2
+ DBNAME_BASE=$3
+ DBNAME="${USERNAME}_${DBNAME_BASE}"
+
+ sudo -u postgres createdb -O $USERNAME -D user_$USERNAME $DBNAME
;;
*)
echo "Usage: domtool-postgres [adduser <user> | createdb <user> <table>]"