added extra arguments for database creation

mysql_db: added 'encoding' and 'collation' args
postgresql_db: added 'owner', 'template' and 'encoding' args
reviewable/pr18780/r1
Petros Moisiadis 12 years ago
parent 4782bc1949
commit 6767accc2d

@ -39,8 +39,12 @@ def db_delete(cursor, db):
cursor.execute(query) cursor.execute(query)
return True return True
def db_create(cursor, db): def db_create(cursor, db, encoding, collation):
query = "CREATE DATABASE %s" % db 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) res = cursor.execute(query)
return True return True
@ -67,6 +71,8 @@ def main():
login_password=dict(default=None), login_password=dict(default=None),
login_host=dict(default="localhost"), login_host=dict(default="localhost"),
db=dict(required=True), db=dict(required=True),
encoding=dict(default=""),
collation=dict(default=""),
state=dict(default="present", choices=["absent", "present"]), state=dict(default="present", choices=["absent", "present"]),
) )
) )
@ -75,6 +81,8 @@ def main():
module.fail_json(msg="the python mysqldb module is required") module.fail_json(msg="the python mysqldb module is required")
db = module.params["db"] db = module.params["db"]
encoding = module.params["encoding"]
collation = module.params["collation"]
state = module.params["state"] state = module.params["state"]
# Either the caller passes both a username and password with which to connect to # 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) changed = db_delete(cursor, db)
else: else:
if state == "present": if state == "present":
changed = db_create(cursor, db) changed = db_create(cursor, db, encoding, collation)
module.exit_json(changed=changed, db=db) module.exit_json(changed=changed, db=db)

@ -36,8 +36,14 @@ def db_delete(cursor, db):
cursor.execute(query) cursor.execute(query)
return True return True
def db_create(cursor, db): def db_create(cursor, db, owner, template, encoding):
query = "CREATE DATABASE %s" % db 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) cursor.execute(query)
return True return True
@ -52,6 +58,9 @@ def main():
login_password=dict(default=""), login_password=dict(default=""),
login_host=dict(default=""), login_host=dict(default=""),
db=dict(required=True), db=dict(required=True),
owner=dict(default=""),
template=dict(default=""),
encoding=dict(default=""),
state=dict(default="present", choices=["absent", "present"]), state=dict(default="present", choices=["absent", "present"]),
) )
) )
@ -60,6 +69,9 @@ def main():
module.fail_json(msg="the python psycopg2 module is required") module.fail_json(msg="the python psycopg2 module is required")
db = module.params["db"] db = module.params["db"]
owner = module.params["owner"]
template = module.params["template"]
encoding = module.params["encoding"]
state = module.params["state"] state = module.params["state"]
changed = False changed = False
try: try:
@ -79,7 +91,7 @@ def main():
changed = db_delete(cursor, db) changed = db_delete(cursor, db)
else: else:
if state == "present": if state == "present":
changed = db_create(cursor, db) changed = db_create(cursor, db, owner, template, encoding)
except Exception as e: except Exception as e:
module.fail_json(msg="Database query failed: %s" % e) module.fail_json(msg="Database query failed: %s" % e)

Loading…
Cancel
Save