
    Vh                     n    d dl mZmZmZ eZdZdZd dlZd dl	m
Z
  G d de      Zd Zed	k(  r e        yy)
    )absolute_importdivisionprint_functionam  
---
module: rabbitmq_parameter
short_description: Manage RabbitMQ parameters
description:
  - Manage dynamic, cluster-wide parameters for RabbitMQ
author: Chris Hoffman (@chrishoffman)
options:
  component:
    description:
      - Name of the component of which the parameter is being set
    type: str
    required: true
  name:
    description:
      - Name of the parameter being set
    type: str
    required: true
  value:
    description:
      - Value of the parameter, as a JSON term
    type: str
  vhost:
    description:
      - vhost to apply access privileges.
    type: str
    default: /
  node:
    description:
      - erlang node name of the rabbit we wish to configure
    type: str
    default: rabbit
  state:
    description:
      - Specify if parameter is to be added or removed
    type: str
    default: present
    choices: [ 'present', 'absent']
ag  
- name: Set the federation parameter 'local_username' to a value of 'guest' (in quotes)
  community.rabbitmq.rabbitmq_parameter:
    component: federation
    name: local-username
    value: '"guest"'
    state: present

- name: Create or update a shovel
  vars:
    payload:
      src-protocol: "amqp091"
      src-uri: "amqp://"
      src-queue: "src-queue"
      dest-protocol: "amqp091"
      dest-uri: "amqp://guest:guest@example.com"
      dest-queue: "dest-queue"
  community.rabbitmq.rabbitmq_parameter:
    component: shovel
    name: "shovel-name"
    value: "{{ payload | to_json }}"
    state: present
N)AnsibleModulec                   2    e Zd Zd ZddZd Zd Zd Zd Zy)	RabbitMqParameterc                     || _         || _        || _        || _        || _        || _        d | _        |j                  dd      | _        y )NrabbitmqctlT)	module	componentnamevaluevhostnode_valueget_bin_path_rabbitmqctl)selfr   r   r   r   r   r   s          y/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/rabbitmq/plugins/modules/rabbitmq_parameter.py__init__zRabbitMqParameter.__init__O   sH    "	

	"//tD    c                 *   | j                   j                  r| j                   j                  r^|r\| j                  dd| j                  g}| j                   j	                  ||z   d      \  }}}|j                         j                         S t               S )Nz-qz-nT)check_rc)r   
check_moder   r   run_commandstrip
splitlineslist)r   argsforce_exec_in_check_modecmdrcouterrs          r   _execzRabbitMqParameter._exec[   su    {{%%$++*@*@E]$$dD$))<C;;223:2MLBS99;))++vr   c                 6   | j                  dd| j                  gd      D cg c]  }|j                         s| }}|D ]R  }|j                  d      \  }}}|| j                  k(  s(|| j
                  k(  s8t        j                  |      | _         y yc c}w )Nlist_parameters-pT	F)	r%   r   r   splitr   r   jsonloadsr   )r   param
parameters
param_itemr   r   r   s          r   getzRabbitMqParameter.getb   s    )-5Fdjj4Y[_)`rdidododqer
r$ 	J%/%5%5d%;"ItUDNN*ttyy/@"jj/	  ss
   BBc           
          | j                  dd| j                  | j                  | j                  t	        j
                  | j                        g       y )Nset_parameterr(   )r%   r   r   r   r+   dumpsr   r   s    r   setzRabbitMqParameter.setm   s=    

OJJNNIIJJtzz*, 	-r   c                 l    | j                  dd| j                  | j                  | j                  g       y )Nclear_parameterr(   )r%   r   r   r   r4   s    r   deletezRabbitMqParameter.deleteu   s&    

%tTZZSTr   c                 4    | j                   | j                  k7  S )N)r   r   r4   s    r   has_modificationsz#RabbitMqParameter.has_modificationsx   s    zzT[[((r   N)F)	__name__
__module____qualname__r   r%   r0   r5   r8   r:    r   r   r   r   N   s"    
E	-U)r   r   c                     t        t        d      t        d      t        d       t        d      t        dddg      t        d      	      } t        | d
      }|j                  d   }|j                  d   }|j                  d   }t        |t              rt        j                  |      }|j                  d   }|j                  d   }|j                  d   }t        d      }t        ||||||      }	|	j                         rA|dk(  r|	j                          d|d<   n@|	j                         r0|	j                          d|d<   n|dk(  r|	j                          d|d<   ||d<   ||d<   ||d<   ||d<    |j                  di | y )NT)required)default/presentabsent)rA   choicesrabbit)r   r   r   r   stater   )argument_specsupports_check_moder   r   r   r   rG   r   F)changedrJ   r>   )dictr   params
isinstancestrr+   r,   r   r0   r8   r:   r5   	exit_json)
arg_specr   r   r   r   r   rG   r   resultrabbitmq_parameters
             r   mainrS   |   s   %4 4 39y(.CD(#H  F
 k*I== DMM'"E%

5!MM'"EMM'"E== D% F*69dE5RVWH%%' $F9!335"&&($(y!	)	  y#F;F6NF7OF7OFvr   __main__)
__future__r   r   r   type__metaclass__DOCUMENTATIONEXAMPLESr+   ansible.module_utils.basicr   objectr   rS   r;   r>   r   r   <module>r\      sQ    A @&P.  4+) +)\*Z zF r   