Add dychotomy handling for mysql_replication

This commit is contained in:
Jorge-Rodriguez 2021-03-07 16:04:10 +02:00
parent 290795f560
commit 4b08069061
No known key found for this signature in database
GPG key ID: 43153D1EFD8F7D90
3 changed files with 21 additions and 19 deletions

View file

@ -0,0 +1,7 @@
from ansible_collections.community.mysql.plugins.module_utils.mysql import get_server_version
from distutils.version import LooseVersion
def uses_replica_terminology(cursor):
"""Checks if REPLICA must be used instead of SLAVE"""
return LooseVersion(get_server_version(cursor)) >= LooseVersion('10.5.1')

View file

@ -0,0 +1,7 @@
from ansible_collections.community.mysql.plugins.module_utils.mysql import get_server_version
from distutils.version import LooseVersion
def uses_replica_terminology(cursor):
"""Checks if REPLICA must be used instead of SLAVE"""
return LooseVersion(get_server_version(cursor)) >= LooseVersion('8.0.22')

View file

@ -259,24 +259,6 @@ from distutils.version import LooseVersion
executed_queries = []
def uses_replica_terminology(cursor):
"""Checks if REPLICA must be used instead of SLAVE"""
cursor.execute("SELECT VERSION() AS version")
result = cursor.fetchone()
if isinstance(result, dict):
version_str = result['version']
else:
version_str = result[0]
version = LooseVersion(version_str)
if 'mariadb' in version_str.lower():
return version >= LooseVersion('10.5.1')
else:
return version >= LooseVersion('8.0.22')
def get_master_status(cursor):
cursor.execute("SHOW MASTER STATUS")
masterstatus = cursor.fetchone()
@ -502,9 +484,15 @@ def main():
else:
module.fail_json(msg="unable to find %s. Exception message: %s" % (config_file, to_native(e)))
cursor.execute("SELECT VERSION()")
if 'mariadb' in cursor.fetchone()[0].lower():
from ansible_collections.community.mysql.plugins.module_utils.implementations.mariadb import replication as impl
else:
from ansible_collections.community.mysql.plugins.module_utils.implementations.mysql import replication as impl
# Since MySQL 8.0.22 and MariaDB 10.5.1,
# "REPLICA" must be used instead of "SLAVE"
if uses_replica_terminology(cursor):
if impl.uses_replica_terminology(cursor):
replica_term = 'REPLICA'
if master_use_gtid == 'slave_pos':
module.deprecate('master_use_gtid "slave_pos" value is deprecated, use "replica_pos" instead.',