Postgres stuff plus re-add vos release
authorAdam Chlipala <adamc@hcoop.net>
Sat, 10 Feb 2007 22:08:34 +0000 (22:08 +0000)
committerAdam Chlipala <adamc@hcoop.net>
Sat, 10 Feb 2007 22:08:34 +0000 (22:08 +0000)
src/plugins/domtool-mysql
src/plugins/domtool-postgres

index d2c5298..2eeb1be 100755 (executable)
@@ -11,6 +11,7 @@ case $1 in
                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
                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
                        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
index 276637f..ded559d 100755 (executable)
@@ -2,10 +2,37 @@
 
 case $1 in
        adduser)
 
 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)
        ;;
        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>]"
        ;;
        *)
                echo "Usage: domtool-postgres [adduser <user> | createdb <user> <table>]"