added extra arguments for database creation

mysql_db: added 'encoding' and 'collation' args
postgresql_db: added 'owner', 'template' and 'encoding' args
This commit is contained in:
Petros Moisiadis 2012-07-31 12:56:29 +03:00
parent 4782bc1949
commit 6767accc2d
2 changed files with 26 additions and 6 deletions

View file

@ -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)

View file

@ -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)