4f857658c50671eee97020b19f296678a4002a9a
[hcoop/domtool2.git] / src / plugins / domtool-postgres
1 #!/bin/sh -e
2
3 case $1 in
4 adduser)
5 USERNAME=$2
6 DIR=/afs/hcoop.net/common/databases/$USERNAME/postgres
7
8 kinit -k -t /etc/keytabs/root.admin.keytab root/admin
9 aklog
10
11 if ! vos examine db.$USERNAME >/dev/null 2>/dev/null; then
12 vos create -server afs -partition a -name db.$USERNAME -maxquota 5000
13 fs mkmount -dir /afs/.hcoop.net/common/.databases/$USERNAME -vol db.$USERNAME -rw
14 vos release common.databases
15 fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl system:postgres l
16 fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl system:mysql l
17 fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl system:backup rl
18 fi
19
20 if ! [ -d $DIR ]; then
21 sudo -u postgres psql -c "CREATE USER $USERNAME" template1
22 mkdir -p $DIR
23 chown postgres:postgres $DIR
24 fs setacl -dir $DIR -acl system:postgres write
25 fs setacl -dir $DIR -acl system:backup rl
26
27 sudo -u postgres psql -c "CREATE TABLESPACE user_$USERNAME OWNER $USERNAME LOCATION '$DIR'" template1
28 fi
29 ;;
30 createdb)
31 USERNAME=$2
32 DBNAME_BASE=$3
33 DBNAME="${USERNAME}_${DBNAME_BASE}"
34
35 sudo -u postgres createdb -O $USERNAME -D user_$USERNAME $DBNAME
36 ;;
37 *)
38 echo "Usage: domtool-postgres [adduser <user> | createdb <user> <table>]"
39 ;;
40 esac