Add methods to retrieve connector name and version

This commit is contained in:
Laurent Indermuehle 2023-01-26 14:01:16 +01:00
parent 3229ce4e55
commit 16676373fa
No known key found for this signature in database
GPG key ID: 93FA944C9F34DD09

View file

@ -34,7 +34,47 @@ mysql_driver_fail_msg = ('A MySQL module is required: for Python 2.7 either PyMy
'Consider setting ansible_python_interpreter to use '
'the intended Python version.')
from ansible_collections.community.mysql.plugins.module_utils.database import mysql_quote_identifier
def get_driver_name(mysql_driver):
""" (class) -> str
Return the name of the driver (pymysql or mysqlclient (MySQLdb))
or 'Unknown' if the driver name is not pymysql or MySQLdb. When adding a
connector here, also modify get_driver_version.
"""
if mysql_driver is None or not hasattr(mysql_driver, '__name__'):
return 'Unknown'
if mysql_driver.__name__ not in ['pymysql', 'MySQLdb']:
return 'Unknown'
return mysql_driver.__name__
def get_driver_version(mysql_driver):
""" (class) -> str
Return the version of pymysql or mysqlclient (MySQLdb).
If the driver name is unknown, this method also return 'Unknown'
"""
if mysql_driver is None:
return 'Unknown'
driver_name = get_driver_name(mysql_driver)
if driver_name == 'Unknown':
return 'Unknown'
if driver_name == 'pymysql':
# pymysql has two methods:
# - __version__ that returns the string: 0.7.11.None
# - VERSION that returns the tupple (0, 7, 11, None)
v = mysql_driver.VERSION[:3]
return '.'.join(map(str, v))
if driver_name == 'MySQLdb':
# version_info returns the tuple (2, 1, 1, 'final', 0)
v = mysql_driver.version_info[:3]
return '.'.join(map(str, v))
def parse_from_mysql_config_file(cnf):