summaryrefslogtreecommitdiff
path: root/library/messaging/rabbitmq_policy
diff options
context:
space:
mode:
Diffstat (limited to 'library/messaging/rabbitmq_policy')
-rw-r--r--library/messaging/rabbitmq_policy156
1 files changed, 0 insertions, 156 deletions
diff --git a/library/messaging/rabbitmq_policy b/library/messaging/rabbitmq_policy
deleted file mode 100644
index 800c3822d5..0000000000
--- a/library/messaging/rabbitmq_policy
+++ /dev/null
@@ -1,156 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-# (c) 2013, John Dewey <john@dewey.ws>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-DOCUMENTATION = '''
----
-module: rabbitmq_policy
-short_description: Manage the state of policies in RabbitMQ.
-description:
- - Manage the state of a virtual host in RabbitMQ.
-version_added: "1.5"
-author: John Dewey
-options:
- name:
- description:
- - The name of the policy to manage.
- required: true
- default: null
- vhost:
- description:
- - The name of the vhost to apply to.
- required: false
- default: /
- pattern:
- description:
- - A regex of queues to apply the policy to.
- required: true
- default: null
- tags:
- description:
- - A dict or string describing the policy.
- required: true
- default: null
- priority:
- description:
- - The priority of the policy.
- required: false
- default: 0
- node:
- description:
- - Erlang node name of the rabbit we wish to configure.
- required: false
- default: rabbit
- state:
- description:
- - The state of the policy.
- default: present
- choices: [present, absent]
-'''
-
-EXAMPLES = '''
-- name: ensure the default vhost contains the HA policy via a dict
- rabbitmq_policy: name=HA pattern='.*'
- args:
- tags:
- "ha-mode": all
-
-- name: ensure the default vhost contains the HA policy
- rabbitmq_policy: name=HA pattern='.*' tags="ha-mode=all"
-'''
-class RabbitMqPolicy(object):
- def __init__(self, module, name):
- self._module = module
- self._name = name
- self._vhost = module.params['vhost']
- self._pattern = module.params['pattern']
- self._tags = module.params['tags']
- self._priority = module.params['priority']
- self._node = module.params['node']
- self._rabbitmqctl = module.get_bin_path('rabbitmqctl', True)
-
- def _exec(self, args, run_in_check_mode=False):
- if not self._module.check_mode or (self._module.check_mode and run_in_check_mode):
- cmd = [self._rabbitmqctl, '-q', '-n', self._node]
- args.insert(1, '-p')
- args.insert(2, self._vhost)
- rc, out, err = self._module.run_command(cmd + args, check_rc=True)
- return out.splitlines()
- return list()
-
- def list(self):
- policies = self._exec(['list_policies'], True)
-
- for policy in policies:
- policy_name = policy.split('\t')[1]
- if policy_name == self._name:
- return True
- return False
-
- def set(self):
- import json
- args = ['set_policy']
- args.append(self._name)
- args.append(self._pattern)
- args.append(json.dumps(self._tags))
- args.append('--priority')
- args.append(self._priority)
- return self._exec(args)
-
- def clear(self):
- return self._exec(['clear_policy', self._name])
-
-
-def main():
- arg_spec = dict(
- name=dict(required=True),
- vhost=dict(default='/'),
- pattern=dict(required=True),
- tags=dict(type='dict', required=True),
- priority=dict(default='0'),
- node=dict(default='rabbit'),
- state=dict(default='present', choices=['present', 'absent']),
- )
-
- module = AnsibleModule(
- argument_spec=arg_spec,
- supports_check_mode=True
- )
-
- name = module.params['name']
- state = module.params['state']
- rabbitmq_policy = RabbitMqPolicy(module, name)
-
- changed = False
- if rabbitmq_policy.list():
- if state == 'absent':
- rabbitmq_policy.clear()
- changed = True
- else:
- changed = False
- elif state == 'present':
- rabbitmq_policy.set()
- changed = True
-
- module.exit_json(changed=changed, name=name, state=state)
-
-# import module snippets
-from ansible.module_utils.basic import *
-main()