Makes ansible fail if login_port is defined and login_host is either not defined, or defined as localhost. This is because if login_host is localhost then MySQLdb will use the socket instead of TCP. This leads to confusion for ansible users as, when a port is defined it gets ignored if login_host is localhost. This is to fix the bug reported by wrosario #8070. Info on MysqlDb can be read here http://mysql-python.sourceforge.net/MySQLdb.html

reviewable/pr18780/r1
Jonathan Mainguy 11 years ago
parent 3c4dbd61fc
commit f4690464b4

@ -50,7 +50,7 @@ options:
default: localhost default: localhost
login_port: login_port:
description: description:
- Port of the MySQL server - Port of the MySQL server. Requires login_host be defined as other then localhost if login_port is used
required: false required: false
default: 3306 default: 3306
login_unix_socket: login_unix_socket:
@ -308,6 +308,8 @@ def main():
try: try:
if module.params["login_unix_socket"]: if module.params["login_unix_socket"]:
db_connection = MySQLdb.connect(host=module.params["login_host"], unix_socket=module.params["login_unix_socket"], user=login_user, passwd=login_password, db=connect_to_db) db_connection = MySQLdb.connect(host=module.params["login_host"], unix_socket=module.params["login_unix_socket"], user=login_user, passwd=login_password, db=connect_to_db)
elif module.params["login_port"] != "3306" and module.params["login_host"] == "localhost":
module.fail_json(msg="login_host is required when login_port is defined, login_host cannot be localhost when login_port is defined")
else: else:
db_connection = MySQLdb.connect(host=module.params["login_host"], port=int(module.params["login_port"]), user=login_user, passwd=login_password, db=connect_to_db) db_connection = MySQLdb.connect(host=module.params["login_host"], port=int(module.params["login_port"]), user=login_user, passwd=login_password, db=connect_to_db)
cursor = db_connection.cursor() cursor = db_connection.cursor()

Loading…
Cancel
Save