diff --git a/playbooks/groups/mailman.yml b/playbooks/groups/mailman.yml index ce631ac651..eef4750215 100644 --- a/playbooks/groups/mailman.yml +++ b/playbooks/groups/mailman.yml @@ -99,6 +99,8 @@ - mailman - hyperkitty - kittystore + - name: test database creation + postgresql_db: name=test_hyperkitty owner=hyperkittyadmin encoding=UTF-8 # Real MM/HK-specific work diff --git a/roles/mailman/files/pg-give-rights.py b/roles/mailman/files/pg-give-rights.py index 08031515ac..b1efc5b2a4 100755 --- a/roles/mailman/files/pg-give-rights.py +++ b/roles/mailman/files/pg-give-rights.py @@ -14,32 +14,34 @@ import yaml import psycopg2 -def give_rights(dbhost, dbuser, dbpasswd, dbname): +def give_rights(dbhost, dbuser, dbpasswd, dbname, dbreguser=None): + if dbreguser is None: + dbreguser = dbname + "app" conn = psycopg2.connect(host=dbhost, user=dbuser, password=dbpasswd, database=dbname) cur = conn.cursor() # Database permissions - dbrightsquery = "GRANT CONNECT,TEMP ON DATABASE %s TO %sapp;" % (dbname, dbname) + dbrightsquery = "GRANT CONNECT,TEMP ON DATABASE %s TO %s;" % (dbname, dbreguser) print dbrightsquery cur.execute(dbrightsquery) # Table permissions cur.execute(""" - SELECT 'GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON "' || relname || '" TO %sapp;' + SELECT 'GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON "' || relname || '" TO %s;' FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace WHERE nspname = 'public' AND relkind IN ('r', 'v'); - """ % dbname) + """ % dbreguser) queries = [ q[0] for q in cur ] for query in queries: print query cur.execute(query) # Sequence permissions cur.execute(""" - SELECT 'GRANT USAGE,SELECT,UPDATE ON ' || relname || ' TO %sapp;' + SELECT 'GRANT USAGE,SELECT,UPDATE ON ' || relname || ' TO %s;' FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace WHERE nspname = 'public' AND relkind = 'S'; - """ % dbname) + """ % dbreguser) queries = [ q[0] for q in cur ] for query in queries: print query @@ -80,5 +82,14 @@ def main(): settings_admin.DATABASES["default"]["NAME"], ) + # HyperKitty unit test database + give_rights( + settings_admin.DATABASES["default"]["HOST"], + settings_admin.DATABASES["default"]["USER"], + settings_admin.DATABASES["default"]["PASSWORD"], + "test_" + settings_admin.DATABASES["default"]["NAME"], + settings_admin.DATABASES["default"]["NAME"] + "app", + ) + if __name__ == "__main__": main()