From c372007b49084bb15087e566dde9d91fa1f5381d Mon Sep 17 00:00:00 2001 From: John Dewey Date: Wed, 20 Nov 2013 17:07:08 -0800 Subject: [PATCH] The setting of params via dict or string by tags Updated per @mpdehaan suggestions. * Rather than passing in JSON, supply the policy options as a hash or string. * Bumped version_added to 1.5. --- library/messaging/rabbitmq_policy | 33 +++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/library/messaging/rabbitmq_policy b/library/messaging/rabbitmq_policy index d4e68c2d373..26d3a3c96a9 100644 --- a/library/messaging/rabbitmq_policy +++ b/library/messaging/rabbitmq_policy @@ -25,7 +25,7 @@ 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.0" +version_added: "1.5" author: John Dewey options: name: @@ -43,9 +43,9 @@ options: - A regex of queues to apply the policy to. required: true default: null - params: + tags: description: - - A json dict describing the policy. + - A dict or string describing the policy. required: true default: null priority: @@ -66,8 +66,14 @@ options: ''' EXAMPLES = ''' -# Ensure that the / vhost contains the HA policy. -- rabbitmq_policy: name=/ params='{"ha-mode":"all"}' policy=HA pattern='.*' +- 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): @@ -75,7 +81,7 @@ class RabbitMqPolicy(object): self._name = name self._vhost = module.params['vhost'] self._pattern = module.params['pattern'] - self._params = module.params['params'] + self._tags = module.params['tags'] self._priority = module.params['priority'] self._node = module.params['node'] self._rabbitmqctl = module.get_bin_path('rabbitmqctl', True) @@ -98,11 +104,22 @@ class RabbitMqPolicy(object): return True return False + def _dump_json(self, d): + import json + return json.dumps(d) + + def _make_params(self): + if type(self._tags) is dict: + return self._dump_json(self._tags) + else: + d = dict([x.split('=') for x in self._tags.split()]) + return self._dump_json(d) + def set(self): args = ['set_policy'] args.append(self._name) args.append(self._pattern) - args.append(self._params) + args.append(self._make_params()) args.append('--priority') args.append(self._priority) return self._exec(args) @@ -116,7 +133,7 @@ def main(): name=dict(required=True), vhost=dict(default='/'), pattern=dict(required=True), - params=dict(required=True), + tags=dict(required=True), priority=dict(default='0'), node=dict(default='rabbit'), state=dict(default='present', choices=['present', 'absent']),