Commit | Line | Data |
---|---|---|
d541c618 AC |
1 | #!/bin/sh -e |
2 | ||
3 | case $1 in | |
4 | adduser) | |
a215ab4e AC |
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 databases l | |
16 | fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl system:backup rl | |
17 | fi | |
18 | ||
19 | if ! [ -d $DIR ]; then | |
20 | sudo -u postgres psql -c "CREATE USER $USERNAME" template1 | |
21 | mkdir -p $DIR | |
22 | chown postgres:postgres $DIR | |
23 | fs setacl -dir $DIR -acl postgres write | |
24 | fs setacl -dir $DIR -acl databases none | |
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 | |
d541c618 AC |
29 | ;; |
30 | createdb) | |
a215ab4e AC |
31 | USERNAME=$2 |
32 | DBNAME_BASE=$3 | |
33 | DBNAME="${USERNAME}_${DBNAME_BASE}" | |
34 | ||
35 | sudo -u postgres createdb -O $USERNAME -D user_$USERNAME $DBNAME | |
d541c618 AC |
36 | ;; |
37 | *) | |
38 | echo "Usage: domtool-postgres [adduser <user> | createdb <user> <table>]" | |
39 | ;; | |
40 | esac |