Convert all databases modules to python3 and 2.4 syntax (#3688)

This commit is contained in:
Michael Scherer 2016-05-18 16:07:21 +02:00 committed by Toshio Kuratomi
parent 69ea617093
commit 20342860ad
7 changed files with 56 additions and 30 deletions

View file

@ -22,8 +22,8 @@ script:
- python2.4 -m compileall -fq cloud/amazon/_ec2_ami_search.py cloud/amazon/ec2_facts.py - python2.4 -m compileall -fq cloud/amazon/_ec2_ami_search.py cloud/amazon/ec2_facts.py
- python2.6 -m compileall -fq . - python2.6 -m compileall -fq .
- python2.7 -m compileall -fq . - python2.7 -m compileall -fq .
- python3.4 -m compileall -fq system/ commands/ source_control/ inventory/ files/ - python3.4 -m compileall -fq system/ commands/ source_control/ inventory/ files/ databases/
- python3.5 -m compileall -fq system/ commands/ source_control/ inventory/ files/ - python3.5 -m compileall -fq system/ commands/ source_control/ inventory/ files/ databases/
- ansible-validate-modules --exclude 'utilities/' . - ansible-validate-modules --exclude 'utilities/' .
#- ansible-validate-modules --exclude 'cloud/amazon/ec2_lc\.py|cloud/amazon/ec2_scaling_policy\.py|cloud/amazon/ec2_scaling_policy\.py|cloud/amazon/ec2_asg\.py|cloud/azure/azure\.py|packaging/os/rhn_register\.py|network/openswitch/ops_template\.py|system/hostname\.py|utilities/' . #- ansible-validate-modules --exclude 'cloud/amazon/ec2_lc\.py|cloud/amazon/ec2_scaling_policy\.py|cloud/amazon/ec2_scaling_policy\.py|cloud/amazon/ec2_asg\.py|cloud/azure/azure\.py|packaging/os/rhn_register\.py|network/openswitch/ops_template\.py|system/hostname\.py|utilities/' .
#- ./test-docs.sh core #- ./test-docs.sh core

View file

@ -289,7 +289,8 @@ def main():
try: try:
cursor = mysql_connect(module, login_user, login_password, config_file, ssl_cert, ssl_key, ssl_ca, cursor = mysql_connect(module, login_user, login_password, config_file, ssl_cert, ssl_key, ssl_ca,
connect_timeout=connect_timeout) connect_timeout=connect_timeout)
except Exception, e: except Exception:
e = get_exception()
if os.path.exists(config_file): if os.path.exists(config_file):
module.fail_json(msg="unable to connect to database, check login_user and login_password are correct or %s has the credentials. Exception message: %s" % (config_file, e)) module.fail_json(msg="unable to connect to database, check login_user and login_password are correct or %s has the credentials. Exception message: %s" % (config_file, e))
else: else:
@ -305,7 +306,8 @@ def main():
else: else:
try: try:
changed = db_delete(cursor, db) changed = db_delete(cursor, db)
except Exception, e: except Exception:
e = get_exception()
module.fail_json(msg="error deleting database: " + str(e)) module.fail_json(msg="error deleting database: " + str(e))
elif state == "dump": elif state == "dump":
if module.check_mode: if module.check_mode:
@ -336,7 +338,8 @@ def main():
else: else:
try: try:
changed = db_create(cursor, db, encoding, collation) changed = db_create(cursor, db, encoding, collation)
except Exception, e: except Exception:
e = get_exception()
module.fail_json(msg="error creating database: " + str(e)) module.fail_json(msg="error creating database: " + str(e))
module.exit_json(changed=changed, db=db) module.exit_json(changed=changed, db=db)

View file

@ -534,7 +534,8 @@ def main():
if not cursor: if not cursor:
cursor = mysql_connect(module, login_user, login_password, config_file, ssl_cert, ssl_key, ssl_ca, db, cursor = mysql_connect(module, login_user, login_password, config_file, ssl_cert, ssl_key, ssl_ca, db,
connect_timeout=connect_timeout) connect_timeout=connect_timeout)
except Exception, e: except Exception:
e = get_exception()
module.fail_json(msg="unable to connect to database, check login_user and login_password are correct or %s has the credentials. Exception message: %s" % (config_file, e)) module.fail_json(msg="unable to connect to database, check login_user and login_password are correct or %s has the credentials. Exception message: %s" % (config_file, e))
if not sql_log_bin: if not sql_log_bin:
@ -543,11 +544,13 @@ def main():
if priv is not None: if priv is not None:
try: try:
mode = get_mode(cursor) mode = get_mode(cursor)
except Exception, e: except Exception:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
try: try:
priv = privileges_unpack(priv, mode) priv = privileges_unpack(priv, mode)
except Exception, e: except Exception:
e = get_exception()
module.fail_json(msg="invalid privileges string: %s" % str(e)) module.fail_json(msg="invalid privileges string: %s" % str(e))
if state == "present": if state == "present":
@ -558,14 +561,16 @@ def main():
else: else:
changed = user_mod(cursor, user, host, host_all, None, encrypted, priv, append_privs, module) changed = user_mod(cursor, user, host, host_all, None, encrypted, priv, append_privs, module)
except (SQLParseError, InvalidPrivsError, MySQLdb.Error), e: except (SQLParseError, InvalidPrivsError, MySQLdb.Error):
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
else: else:
if host_all: if host_all:
module.fail_json(msg="host_all parameter cannot be used when adding a user") module.fail_json(msg="host_all parameter cannot be used when adding a user")
try: try:
changed = user_add(cursor, user, host, host_all, password, encrypted, priv, module.check_mode) changed = user_add(cursor, user, host, host_all, password, encrypted, priv, module.check_mode)
except (SQLParseError, InvalidPrivsError, MySQLdb.Error), e: except (SQLParseError, InvalidPrivsError, MySQLdb.Error):
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
elif state == "absent": elif state == "absent":
if user_exists(cursor, user, host, host_all): if user_exists(cursor, user, host, host_all):

View file

@ -109,7 +109,8 @@ def setvariable(cursor, mysqlvar, value):
cursor.execute(query + "%s", (value,)) cursor.execute(query + "%s", (value,))
cursor.fetchall() cursor.fetchall()
result = True result = True
except Exception, e: except Exception:
e = get_exception()
result = str(e) result = str(e)
return result return result
@ -153,7 +154,8 @@ def main():
try: try:
cursor = mysql_connect(module, user, password, config_file, ssl_cert, ssl_key, ssl_ca, db, cursor = mysql_connect(module, user, password, config_file, ssl_cert, ssl_key, ssl_ca, db,
connect_timeout=connect_timeout) connect_timeout=connect_timeout)
except Exception, e: except Exception:
e = get_exception()
if os.path.exists(config_file): if os.path.exists(config_file):
module.fail_json(msg="unable to connect to database, check login_user and login_password are correct or %s has the credentials. Exception message: %s" % (config_file, e)) module.fail_json(msg="unable to connect to database, check login_user and login_password are correct or %s has the credentials. Exception message: %s" % (config_file, e))
else: else:
@ -172,7 +174,8 @@ def main():
module.exit_json(msg="Variable already set to requested value", changed=False) module.exit_json(msg="Variable already set to requested value", changed=False)
try: try:
result = setvariable(cursor, mysqlvar, value_wanted) result = setvariable(cursor, mysqlvar, value_wanted)
except SQLParseError, e: except SQLParseError:
e = get_exception()
result = str(e) result = str(e)
if result is True: if result is True:
module.exit_json(msg="Variable change succeeded prev_value=%s" % value_actual, changed=True) module.exit_json(msg="Variable change succeeded prev_value=%s" % value_actual, changed=True)
@ -184,4 +187,4 @@ from ansible.module_utils.basic import *
from ansible.module_utils.database import * from ansible.module_utils.database import *
from ansible.module_utils.mysql import * from ansible.module_utils.mysql import *
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View file

@ -280,7 +280,8 @@ def main():
.ISOLATION_LEVEL_AUTOCOMMIT) .ISOLATION_LEVEL_AUTOCOMMIT)
cursor = db_connection.cursor( cursor = db_connection.cursor(
cursor_factory=psycopg2.extras.DictCursor) cursor_factory=psycopg2.extras.DictCursor)
except Exception, e: except Exception:
e = get_exception()
module.fail_json(msg="unable to connect to database: %s" % e) module.fail_json(msg="unable to connect to database: %s" % e)
try: try:
@ -295,21 +296,25 @@ def main():
if state == "absent": if state == "absent":
try: try:
changed = db_delete(cursor, db) changed = db_delete(cursor, db)
except SQLParseError, e: except SQLParseError:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
elif state == "present": elif state == "present":
try: try:
changed = db_create(cursor, db, owner, template, encoding, changed = db_create(cursor, db, owner, template, encoding,
lc_collate, lc_ctype) lc_collate, lc_ctype)
except SQLParseError, e: except SQLParseError:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
except NotSupportedError, e: except NotSupportedError:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
except SystemExit: except SystemExit:
# Avoid catching this on Python 2.4 # Avoid catching this on Python 2.4
raise raise
except Exception, e: except Exception:
e = get_exception()
module.fail_json(msg="Database query failed: %s" % e) module.fail_json(msg="Database query failed: %s" % e)
module.exit_json(changed=changed, db=db) module.exit_json(changed=changed, db=db)

View file

@ -573,7 +573,8 @@ def main():
module.fail_json(msg='Python module "psycopg2" must be installed.') module.fail_json(msg='Python module "psycopg2" must be installed.')
try: try:
conn = Connection(p) conn = Connection(p)
except psycopg2.Error, e: except psycopg2.Error:
e = get_exception()
module.fail_json(msg='Could not connect to database: %s' % e) module.fail_json(msg='Could not connect to database: %s' % e)
try: try:
@ -613,11 +614,13 @@ def main():
schema_qualifier=p.schema schema_qualifier=p.schema
) )
except Error, e: except Error:
e = get_exception()
conn.rollback() conn.rollback()
module.fail_json(msg=e.message) module.fail_json(msg=e.message)
except psycopg2.Error, e: except psycopg2.Error:
e = get_exception()
conn.rollback() conn.rollback()
# psycopg2 errors come in connection encoding, reencode # psycopg2 errors come in connection encoding, reencode
msg = e.message.decode(conn.encoding).encode(sys.getdefaultencoding(), msg = e.message.decode(conn.encoding).encode(sys.getdefaultencoding(),

View file

@ -290,7 +290,8 @@ def user_alter(cursor, module, user, password, role_attr_flags, encrypted, expir
try: try:
cursor.execute(' '.join(alter), query_password_data) cursor.execute(' '.join(alter), query_password_data)
except psycopg2.InternalError, e: except psycopg2.InternalError:
e = get_exception()
if e.pgcode == '25006': if e.pgcode == '25006':
# Handle errors due to read-only transactions indicated by pgcode 25006 # Handle errors due to read-only transactions indicated by pgcode 25006
# ERROR: cannot execute ALTER ROLE in a read-only transaction # ERROR: cannot execute ALTER ROLE in a read-only transaction
@ -298,7 +299,7 @@ def user_alter(cursor, module, user, password, role_attr_flags, encrypted, expir
module.fail_json(msg=e.pgerror) module.fail_json(msg=e.pgerror)
return changed return changed
else: else:
raise psycopg2.InternalError, e raise psycopg2.InternalError(e)
# Grab new role attributes. # Grab new role attributes.
cursor.execute(select, {"user": user}) cursor.execute(select, {"user": user})
@ -575,7 +576,8 @@ def main():
no_password_changes = module.params["no_password_changes"] no_password_changes = module.params["no_password_changes"]
try: try:
role_attr_flags = parse_role_attrs(module.params["role_attr_flags"]) role_attr_flags = parse_role_attrs(module.params["role_attr_flags"])
except InvalidFlagsError, e: except InvalidFlagsError:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
if module.params["encrypted"]: if module.params["encrypted"]:
encrypted = "ENCRYPTED" encrypted = "ENCRYPTED"
@ -607,7 +609,8 @@ def main():
try: try:
db_connection = psycopg2.connect(**kw) db_connection = psycopg2.connect(**kw)
cursor = db_connection.cursor(cursor_factory=psycopg2.extras.DictCursor) cursor = db_connection.cursor(cursor_factory=psycopg2.extras.DictCursor)
except Exception, e: except Exception:
e = get_exception()
module.fail_json(msg="unable to connect to database: %s" % e) module.fail_json(msg="unable to connect to database: %s" % e)
kw = dict(user=user) kw = dict(user=user)
@ -618,16 +621,19 @@ def main():
if user_exists(cursor, user): if user_exists(cursor, user):
try: try:
changed = user_alter(cursor, module, user, password, role_attr_flags, encrypted, expires, no_password_changes) changed = user_alter(cursor, module, user, password, role_attr_flags, encrypted, expires, no_password_changes)
except SQLParseError, e: except SQLParseError:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
else: else:
try: try:
changed = user_add(cursor, user, password, role_attr_flags, encrypted, expires) changed = user_add(cursor, user, password, role_attr_flags, encrypted, expires)
except SQLParseError, e: except SQLParseError:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
try: try:
changed = grant_privileges(cursor, user, privs) or changed changed = grant_privileges(cursor, user, privs) or changed
except SQLParseError, e: except SQLParseError:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
else: else:
if user_exists(cursor, user): if user_exists(cursor, user):
@ -638,7 +644,8 @@ def main():
try: try:
changed = revoke_privileges(cursor, user, privs) changed = revoke_privileges(cursor, user, privs)
user_removed = user_delete(cursor, user) user_removed = user_delete(cursor, user)
except SQLParseError, e: except SQLParseError:
e = get_exception()
module.fail_json(msg=str(e)) module.fail_json(msg=str(e))
changed = changed or user_removed changed = changed or user_removed
if fail_on_user and not user_removed: if fail_on_user and not user_removed: