diff --git a/lib/ansible/modules/database/misc/redis.py b/lib/ansible/modules/database/misc/redis.py index 7557fb1200a..51871c722b1 100644 --- a/lib/ansible/modules/database/misc/redis.py +++ b/lib/ansible/modules/database/misc/redis.py @@ -1,90 +1,72 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -# + # Copyright: Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import absolute_import, division, print_function __metaclass__ = type - ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ['preview'], 'supported_by': 'community'} - DOCUMENTATION = ''' --- module: redis short_description: Various redis commands, slave and flush description: - Unified utility to interact with redis instances. - 'slave' sets a redis instance in slave or master mode. - 'flush' flushes all the instance or a specified db. - 'config' (new in 1.6), ensures a configuration setting on an instance. version_added: "1.3" options: command: description: - The selected redis command + - C(config) (new in 1.6), ensures a configuration setting on an instance. + - C(flush) flushes all the instance or a specified db. + - C(slave) sets a redis instance in slave or master mode. required: true - default: null - choices: [ "slave", "flush", "config" ] + choices: [ config, flush, slave ] login_password: description: - The password used to authenticate with (usually not used) - required: false - default: null login_host: description: - The host running the database - required: false default: localhost login_port: description: - The port to connect to - required: false default: 6379 master_host: description: - The host of the master instance [slave command] - required: false default: null master_port: description: - The port of the master instance [slave command] - required: false - default: null slave_mode: description: - the mode of the redis instance [slave command] - required: false default: slave - choices: [ "master", "slave" ] + choices: [ master, slave ] db: description: - The database to flush (used in db mode) [flush command] - required: false - default: null flush_mode: description: - Type of flush (all the dbs in a redis instance or a specific one) [flush command] - required: false default: all - choices: [ "all", "db" ] + choices: [ all, db ] name: - version_added: 1.6 description: - A redis config key. - required: false - default: null - value: version_added: 1.6 + value: description: - A redis config value. - required: false - default: null + version_added: 1.6 notes: @@ -99,40 +81,41 @@ author: "Xabier Larrakoetxea (@slok)" ''' EXAMPLES = ''' -# Set local redis instance to be slave of melee.island on port 6377 -- redis: +- name: Set local redis instance to be slave of melee.island on port 6377 + redis: command: slave master_host: melee.island master_port: 6377 -# Deactivate slave mode -- redis: +- name: Deactivate slave mode + redis: command: slave slave_mode: master -# Flush all the redis db -- redis: +- name: Flush all the redis db + redis: command: flush flush_mode: all -# Flush only one db in a redis instance -- redis: +- name: Flush only one db in a redis instance + redis: command: flush db: 1 flush_mode: db -# Configure local redis to have 10000 max clients -- redis: +- name: Configure local redis to have 10000 max clients + redis: command: config name: maxclients value: 10000 -# Configure local redis to have lua time limit of 100 ms -- redis: +- name: Configure local redis to have lua time limit of 100 ms + redis: command: config name: lua-time-limit value: 100 ''' + import traceback try: @@ -146,10 +129,7 @@ from ansible.module_utils.basic import AnsibleModule from ansible.module_utils._text import to_native -# =========================================== # Redis module specific support methods. -# - def set_slave_mode(client, master_host, master_port): try: return client.slaveof(master_host, master_port) @@ -175,26 +155,23 @@ def flush(client, db=None): return False -# =========================================== # Module execution. -# - def main(): module = AnsibleModule( - argument_spec = dict( - command=dict(default=None, choices=['slave', 'flush', 'config']), - login_password=dict(default=None, no_log=True), - login_host=dict(default='localhost'), - login_port=dict(default=6379, type='int'), - master_host=dict(default=None), - master_port=dict(default=None, type='int'), - slave_mode=dict(default='slave', choices=['master', 'slave']), - db=dict(default=None, type='int'), - flush_mode=dict(default='all', choices=['all', 'db']), - name=dict(default=None), - value=dict(default=None) + argument_spec=dict( + command=dict(type='str', choices=['config', 'flush', 'slave']), + login_password=dict(type='str', no_log=True), + login_host=dict(type='str', default='localhost'), + login_port=dict(type='int', default=6379), + master_host=dict(type='str'), + master_port=dict(type='int'), + slave_mode=dict(type='str', default='slave', choices=['master', 'slave']), + db=dict(type='int'), + flush_mode=dict(type='str', default='all', choices=['all', 'db']), + name=dict(type='str'), + value=dict(type='str') ), - supports_check_mode = True + supports_check_mode=True, ) if not redis_found: @@ -211,40 +188,32 @@ def main(): master_port = module.params['master_port'] mode = module.params['slave_mode'] - #Check if we have all the data + # Check if we have all the data if mode == "slave": # Only need data if we want to be slave if not master_host: - module.fail_json( - msg='In slave mode master host must be provided') + module.fail_json(msg='In slave mode master host must be provided') if not master_port: - module.fail_json( - msg='In slave mode master port must be provided') + module.fail_json(msg='In slave mode master port must be provided') - #Connect and check - r = redis.StrictRedis(host=login_host, - port=login_port, - password=login_password) + # Connect and check + r = redis.StrictRedis(host=login_host, port=login_port, password=login_password) try: r.ping() except Exception as e: - module.fail_json(msg="unable to connect to database: %s" % to_native(e), - exception=traceback.format_exc()) + module.fail_json(msg="unable to connect to database: %s" % to_native(e), exception=traceback.format_exc()) - #Check if we are already in the mode that we want + # Check if we are already in the mode that we want info = r.info() if mode == "master" and info["role"] == "master": module.exit_json(changed=False, mode=mode) - elif mode == "slave" and\ - info["role"] == "slave" and\ - info["master_host"] == master_host and\ - info["master_port"] == master_port: - status = { - 'status': mode, - 'master_host': master_host, - 'master_port': master_port, - } + elif mode == "slave" and info["role"] == "slave" and info["master_host"] == master_host and info["master_port"] == master_port: + status = dict( + status=mode, + master_host=master_host, + master_port=master_port, + ) module.exit_json(changed=False, mode=status) else: # Do the stuff @@ -274,22 +243,17 @@ def main(): db = module.params['db'] mode = module.params['flush_mode'] - #Check if we have all the data + # Check if we have all the data if mode == "db": if db is None: - module.fail_json( - msg="In db mode the db number must be provided") + module.fail_json(msg="In db mode the db number must be provided") - #Connect and check - r = redis.StrictRedis(host=login_host, - port=login_port, - password=login_password, - db=db) + # Connect and check + r = redis.StrictRedis(host=login_host, port=login_port, password=login_password, db=db) try: r.ping() except Exception as e: - module.fail_json(msg="unable to connect to database: %s" % to_native(e), - exception=traceback.format_exc()) + module.fail_json(msg="unable to connect to database: %s" % to_native(e), exception=traceback.format_exc()) # Do the stuff # (Check Check_mode before commands so the commands aren't evaluated @@ -309,22 +273,17 @@ def main(): name = module.params['name'] value = module.params['value'] - r = redis.StrictRedis(host=login_host, - port=login_port, - password=login_password) + r = redis.StrictRedis(host=login_host, port=login_port, password=login_password) try: r.ping() except Exception as e: - module.fail_json(msg="unable to connect to database: %s" % to_native(e), - exception=traceback.format_exc()) - + module.fail_json(msg="unable to connect to database: %s" % to_native(e), exception=traceback.format_exc()) try: old_value = r.config_get(name)[name] except Exception as e: - module.fail_json(msg="unable to read config: %s" % to_native(e), - exception=traceback.format_exc()) + module.fail_json(msg="unable to read config: %s" % to_native(e), exception=traceback.format_exc()) changed = old_value != value if module.check_mode or not changed: @@ -333,8 +292,7 @@ def main(): try: r.config_set(name, value) except Exception as e: - module.fail_json(msg="unable to write config: %s" % to_native(e), - exception=traceback.format_exc()) + module.fail_json(msg="unable to write config: %s" % to_native(e), exception=traceback.format_exc()) module.exit_json(changed=changed, name=name, value=value) else: module.fail_json(msg='A valid command must be provided') diff --git a/test/sanity/pep8/legacy-files.txt b/test/sanity/pep8/legacy-files.txt index ee29154a8eb..74981494c47 100644 --- a/test/sanity/pep8/legacy-files.txt +++ b/test/sanity/pep8/legacy-files.txt @@ -180,7 +180,6 @@ lib/ansible/modules/clustering/consul_session.py lib/ansible/modules/clustering/kubernetes.py lib/ansible/modules/clustering/pacemaker_cluster.py lib/ansible/modules/database/misc/kibana_plugin.py -lib/ansible/modules/database/misc/redis.py lib/ansible/modules/database/misc/riak.py lib/ansible/modules/database/mongodb/mongodb_parameter.py lib/ansible/modules/database/mongodb/mongodb_user.py