From a5695c8b24f17aa0c43fa0e7465b0cd599f52c48 Mon Sep 17 00:00:00 2001 From: Saurabh Sharma Date: Tue, 9 Aug 2016 01:06:18 +0530 Subject: [PATCH] error handling for importing non-existent db. Fixes ##2068 (#3617) * error handling for importing non-existent db * creating db on import state and suitable message on deleting db * handling all possible cases when db exists/not-exists --- .../modules/database/mysql/mysql_db.py | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/lib/ansible/modules/database/mysql/mysql_db.py b/lib/ansible/modules/database/mysql/mysql_db.py index e6351fc9b1b..f5ff1c95ef8 100644 --- a/lib/ansible/modules/database/mysql/mysql_db.py +++ b/lib/ansible/modules/database/mysql/mysql_db.py @@ -302,13 +302,15 @@ def main(): if db_exists(cursor, db): if state == "absent": if module.check_mode: - changed = True + module.exit_json(changed=True, db=db) else: try: changed = db_delete(cursor, db) except Exception: e = get_exception() module.fail_json(msg="error deleting database: " + str(e)) + module.exit_json(changed=changed, db=db) + elif state == "dump": if module.check_mode: module.exit_json(changed=True, db=db) @@ -320,6 +322,7 @@ def main(): module.fail_json(msg="%s" % stderr) else: module.exit_json(changed=True, db=db, msg=stdout) + elif state == "import": if module.check_mode: module.exit_json(changed=True, db=db) @@ -331,6 +334,12 @@ def main(): module.fail_json(msg="%s" % stderr) else: module.exit_json(changed=True, db=db, msg=stdout) + + elif state == "present": + if module.check_mode: + module.exit_json(changed=False, db=db) + module.exit_json(changed=False, db=db) + else: if state == "present": if module.check_mode: @@ -341,8 +350,34 @@ def main(): except Exception: e = get_exception() module.fail_json(msg="error creating database: " + str(e)) + module.exit_json(changed=changed, db=db) - module.exit_json(changed=changed, db=db) + elif state == "import": + if module.check_mode: + module.exit_json(changed=True, db=db) + else: + try: + changed = db_create(cursor, db, encoding, collation) + if changed: + rc, stdout, stderr = db_import(module, login_host, login_user, + login_password, db, target, all_databases, + login_port, config_file, socket, ssl_cert, ssl_key, ssl_ca) + if rc != 0: + module.fail_json(msg="%s" % stderr) + else: + module.exit_json(changed=True, db=db, msg=stdout) + except Exception, e: + module.fail_json(msg="error creating database: " + str(e)) + + elif state == "absent": + if module.check_mode: + module.exit_json(changed=False, db=db) + module.exit_json(changed=False, db=db) + + elif state == "dump": + if module.check_mode: + module.exit_json(changed=False, db=db) + module.fail_json(msg="Cannot dump database %s - not found" % (db)) # import module snippets from ansible.module_utils.basic import *