From 9765a3017943b3250a27e72ba6d8c41c751e1f32 Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Mon, 2 May 2016 18:38:07 +0200 Subject: [PATCH 1/2] mysql_variables: fix inconsistent params, fixes ubuntu 16.04 support In the mysql_user module, login_host is defined as "localhost". Setting this to localhost also fixes Ubuntu 16.04 support. To make it more consistent in the future, the params in all mysql modules should move to module utils. I'll take care. Also fixed a few other things along. --- database/mysql/mysql_variables.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/database/mysql/mysql_variables.py b/database/mysql/mysql_variables.py index e46ceba5208..da2c49a580d 100644 --- a/database/mysql/mysql_variables.py +++ b/database/mysql/mysql_variables.py @@ -51,7 +51,6 @@ EXAMPLES = ''' ''' -import os import warnings from re import match @@ -118,9 +117,9 @@ def main(): module = AnsibleModule( argument_spec = dict( login_user=dict(default=None), - login_password=dict(default=None), - login_host=dict(default="127.0.0.1"), - login_port=dict(default="3306", type='int'), + login_password=dict(default=None, no_log=True), + login_host=dict(default="localhost"), + login_port=dict(default=3306, type='int'), login_unix_socket=dict(default=None), variable=dict(default=None), value=dict(default=None), @@ -128,19 +127,16 @@ def main(): ssl_key=dict(default=None), ssl_ca=dict(default=None), connect_timeout=dict(default=30, type='int'), - config_file=dict(default="~/.my.cnf") + config_file=dict(default="~/.my.cnf", type="path") ) ) user = module.params["login_user"] password = module.params["login_password"] - host = module.params["login_host"] - port = module.params["login_port"] ssl_cert = module.params["ssl_cert"] ssl_key = module.params["ssl_key"] ssl_ca = module.params["ssl_ca"] connect_timeout = module.params['connect_timeout'] config_file = module.params['config_file'] - config_file = os.path.expanduser(os.path.expandvars(config_file)) db = 'mysql' mysqlvar = module.params["variable"] @@ -187,4 +183,5 @@ def main(): from ansible.module_utils.basic import * from ansible.module_utils.database import * from ansible.module_utils.mysql import * -main() +if __name__ == '__main__': + main() \ No newline at end of file From 051744f7b53c70eb76aa3fdfe7bb588b43876e59 Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Mon, 2 May 2016 18:42:31 +0200 Subject: [PATCH 2/2] mysql_user: fix unresolved reference L282, module is used but not passed into function. Replaced check_mode reference and used module instead since check_mode is also in module. --- database/mysql/mysql_user.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/database/mysql/mysql_user.py b/database/mysql/mysql_user.py index 28649e610cd..fe1ef5a85be 100644 --- a/database/mysql/mysql_user.py +++ b/database/mysql/mysql_user.py @@ -247,7 +247,7 @@ def is_hash(password): ishash = True return ishash -def user_mod(cursor, user, host, host_all, password, encrypted, new_priv, append_privs, check_mode): +def user_mod(cursor, user, host, host_all, password, encrypted, new_priv, append_privs, module): changed = False grant_option = False @@ -272,7 +272,7 @@ def user_mod(cursor, user, host, host_all, password, encrypted, new_priv, append encrypted_string = (password) if is_hash(password): if current_pass_hash[0] != encrypted_string: - if check_mode: + if module.check_mode: return True if old_user_mgmt: cursor.execute("SET PASSWORD FOR %s@%s = %s", (user, host, password)) @@ -288,7 +288,7 @@ def user_mod(cursor, user, host, host_all, password, encrypted, new_priv, append cursor.execute("SELECT CONCAT('*', UCASE(SHA1(UNHEX(SHA1(%s)))))", (password,)) new_pass_hash = cursor.fetchone() if current_pass_hash[0] != new_pass_hash[0]: - if check_mode: + if module.check_mode: return True if old_user_mgmt: cursor.execute("SET PASSWORD FOR %s@%s = PASSWORD(%s)", (user, host, password)) @@ -308,7 +308,7 @@ def user_mod(cursor, user, host, host_all, password, encrypted, new_priv, append grant_option = True if db_table not in new_priv: if user != "root" and "PROXY" not in priv and not append_privs: - if check_mode: + if module.check_mode: return True privileges_revoke(cursor, user,host,db_table,priv,grant_option) changed = True @@ -317,7 +317,7 @@ def user_mod(cursor, user, host, host_all, password, encrypted, new_priv, append # we can perform a straight grant operation. for db_table, priv in new_priv.iteritems(): if db_table not in curr_priv: - if check_mode: + if module.check_mode: return True privileges_grant(cursor, user,host,db_table,priv) changed = True @@ -328,7 +328,7 @@ def user_mod(cursor, user, host, host_all, password, encrypted, new_priv, append for db_table in db_table_intersect: priv_diff = set(new_priv[db_table]) ^ set(curr_priv[db_table]) if (len(priv_diff) > 0): - if check_mode: + if module.check_mode: return True if not append_privs: privileges_revoke(cursor, user,host,db_table,curr_priv[db_table],grant_option) @@ -554,9 +554,9 @@ def main(): if user_exists(cursor, user, host, host_all): try: if update_password == 'always': - changed = user_mod(cursor, user, host, host_all, password, encrypted, priv, append_privs, module.check_mode) + changed = user_mod(cursor, user, host, host_all, password, encrypted, priv, append_privs, module) else: - changed = user_mod(cursor, user, host, host_all, None, encrypted, priv, append_privs, module.check_mode) + changed = user_mod(cursor, user, host, host_all, None, encrypted, priv, append_privs, module) except (SQLParseError, InvalidPrivsError, MySQLdb.Error), e: module.fail_json(msg=str(e))