From 6767accc2dae1cb42475cc035dc1ddca997060f0 Mon Sep 17 00:00:00 2001 From: Petros Moisiadis Date: Tue, 31 Jul 2012 12:56:29 +0300 Subject: [PATCH] added extra arguments for database creation mysql_db: added 'encoding' and 'collation' args postgresql_db: added 'owner', 'template' and 'encoding' args --- mysql_db | 14 +++++++++++--- postgresql_db | 18 +++++++++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/mysql_db b/mysql_db index 080b115f4ad..47cf0bee315 100755 --- a/mysql_db +++ b/mysql_db @@ -39,8 +39,12 @@ def db_delete(cursor, db): cursor.execute(query) return True -def db_create(cursor, db): - query = "CREATE DATABASE %s" % db +def db_create(cursor, db, encoding, collation): + if encoding: + encoding = " CHARACTER SET %s" % encoding + if collation: + collation = " COLLATE %s" % collation + query = "CREATE DATABASE %s%s%s" % (db, encoding, collation) res = cursor.execute(query) return True @@ -67,6 +71,8 @@ def main(): login_password=dict(default=None), login_host=dict(default="localhost"), db=dict(required=True), + encoding=dict(default=""), + collation=dict(default=""), state=dict(default="present", choices=["absent", "present"]), ) ) @@ -75,6 +81,8 @@ def main(): module.fail_json(msg="the python mysqldb module is required") db = module.params["db"] + encoding = module.params["encoding"] + collation = module.params["collation"] state = module.params["state"] # Either the caller passes both a username and password with which to connect to @@ -105,7 +113,7 @@ def main(): changed = db_delete(cursor, db) else: if state == "present": - changed = db_create(cursor, db) + changed = db_create(cursor, db, encoding, collation) module.exit_json(changed=changed, db=db) diff --git a/postgresql_db b/postgresql_db index 890096dee2d..baa1fb568b2 100755 --- a/postgresql_db +++ b/postgresql_db @@ -36,8 +36,14 @@ def db_delete(cursor, db): cursor.execute(query) return True -def db_create(cursor, db): - query = "CREATE DATABASE %s" % db +def db_create(cursor, db, owner, template, encoding): + if owner: + owner = " OWNER %s" % owner + if template: + template = " TEMPLATE %s" % template + if encoding: + encoding = " ENCODING '%s'" % encoding + query = "CREATE DATABASE %s%s%s%s" % (db, owner, template, encoding) cursor.execute(query) return True @@ -52,6 +58,9 @@ def main(): login_password=dict(default=""), login_host=dict(default=""), db=dict(required=True), + owner=dict(default=""), + template=dict(default=""), + encoding=dict(default=""), state=dict(default="present", choices=["absent", "present"]), ) ) @@ -60,6 +69,9 @@ def main(): module.fail_json(msg="the python psycopg2 module is required") db = module.params["db"] + owner = module.params["owner"] + template = module.params["template"] + encoding = module.params["encoding"] state = module.params["state"] changed = False try: @@ -79,7 +91,7 @@ def main(): changed = db_delete(cursor, db) else: if state == "present": - changed = db_create(cursor, db) + changed = db_create(cursor, db, owner, template, encoding) except Exception as e: module.fail_json(msg="Database query failed: %s" % e)