mysql_variables: add seealso, add return value (#63442)

This commit is contained in:
Andrey Klychkov 2019-10-14 11:28:00 +03:00 committed by John R Barker
parent d753168e9d
commit 0ca682384d
2 changed files with 41 additions and 15 deletions

View file

@ -18,34 +18,51 @@ module: mysql_variables
short_description: Manage MySQL global variables
description:
- Query / Set MySQL variables.
- Query / Set MySQL variables.
version_added: 1.3
author:
- Balazs Pocze (@banyek)
options:
variable:
description:
- Variable name to operate
type: str
required: True
value:
description:
- If set, then sets variable value to this
type: str
variable:
description:
- Variable name to operate
type: str
required: yes
value:
description:
- If set, then sets variable value to this
type: str
seealso:
- module: mysql_info
- name: MySQL SET command reference
description: Complete reference of the MySQL SET command documentation.
link: https://dev.mysql.com/doc/refman/8.0/en/set-statement.html
extends_documentation_fragment:
- mysql
'''
EXAMPLES = r'''
- name: Check for sync_binlog setting
- mysql_variables:
mysql_variables:
variable: sync_binlog
- name: Set read_only variable to 1
- mysql_variables:
mysql_variables:
variable: read_only
value: 1
'''
RETURN = r'''
queries:
description: List of executed queries which modified DB's state.
returned: if executed
type: list
sample: ["SET GLOBAL `read_only` = 1"]
version_added: '2.10'
'''
import os
import warnings
from re import match
@ -55,6 +72,8 @@ from ansible.module_utils.database import SQLParseError, mysql_quote_identifier
from ansible.module_utils.mysql import mysql_connect, mysql_driver, mysql_driver_fail_msg
from ansible.module_utils._text import to_native
executed_queries = []
def typedvalue(value):
"""
@ -102,6 +121,7 @@ def setvariable(cursor, mysqlvar, value):
query = "SET GLOBAL %s = " % mysql_quote_identifier(mysqlvar, 'vars')
try:
cursor.execute(query + "%s", (value,))
executed_queries.append(query + "%s" % value)
cursor.fetchall()
result = True
except Exception as e:
@ -151,8 +171,9 @@ def main():
connect_timeout=connect_timeout)
except Exception as e:
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, to_native(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, to_native(e))))
else:
module.fail_json(msg="unable to find %s. Exception message: %s" % (config_file, to_native(e)))
@ -173,7 +194,8 @@ def main():
result = to_native(e)
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, queries=executed_queries)
else:
module.fail_json(msg=result, changed=False)

View file

@ -71,6 +71,10 @@
login_unix_socket: '{{ mysql_socket }}'
register: result
- assert:
that:
- result.queries == ["SET GLOBAL `{{ set_name }}` = {{ set_value }}"]
- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
# ============================================================