
    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_functiona6  
---
module: rabbitmq_upgrade
short_description: Execute rabbitmq-upgrade commands
description:
  - Allows to execute rabbitmq-upgrade commands
author: "Damian Dabrowski (@damiandabrowski5)"
version_added: '1.1.0'
options:
  action:
    description:
      - Specify action to be executed.
    type: str
    required: true
    choices: ['await_online_quorum_plus_one','await_online_synchronized_mirror','post_upgrade','drain','revive']
  node:
    description:
      - Erlang node name of the target rabbit node.
    type: str
    required: false
    default: rabbit
z
- name: Drain 'rabbit@node-1' node (in other words, put it into maintenance mode)
  community.rabbitmq.rabbitmq_upgrade:
    action: drain
    node: rabbit@node-1
N)AnsibleModulec                   D    e Zd Zd ZddZd Zd Zd Zd Zd Z	d Z
d	 Zy
)RabbitMqUpgradec                 <    || _         || _        || _        || _        y )N)moduleactionnoderesult)selfr
   r   r   r   s        w/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/rabbitmq/plugins/modules/rabbitmq_upgrade.py__init__zRabbitMqUpgrade.__init__.   s    	    c                    | j                   j                  r| j                   j                  rS|rQ| j                   j                  |d      g}| j                   j                  ||z   d      \  }}}|j	                         S t               S )NT)check_rc)r
   
check_modeget_bin_pathrun_command
splitlineslist)r   binaryargsforce_exec_in_check_modecmdrcouterrs           r   _execzRabbitMqUpgrade._exec4   sn    {{%%$++*@*@E];;++FD9:C;;223:2MLBS>>##vr   c                     | j                  ddddd| j                  gd      }t        j                  dj	                  |            }|d   }|ryy	)
Nzrabbitmq-diagnosticsz--formatterjsonstatus-nT is_under_maintenanceF)r    r   r"   loadsjoin)r   r   node_statusmaint_enableds       r   is_node_under_maintenancez)RabbitMqUpgrade.is_node_under_maintenance;   sR    jj/'4KTSjj.#$:;r   c                 ~    | j                  dddgd      }|D ]#  }|j                  d      \  }}|dk(  s|dk(  s# y y)	Nrabbitmqctllist_feature_flagsz-qT	maintenance_mode_statusenabledF)r    split)r   feature_flags
param_itemnamestates        r   is_maint_flag_enabledz%RabbitMqUpgrade.is_maint_flag_enabledD   sV    

=3G2NPTU' 	J$**40KD%00Ui5G	 r   c                     | j                         s| j                  j                  d       | j                         s/| j	                  ddd| j
                  g       d| j                  d<   y y )N1maintenance_mode_status feature_flag is disabled.msgrabbitmq-upgradedrainr$   Tchangedr7   r
   	fail_jsonr+   r    r   r   r   s    r   r=   zRabbitMqUpgrade.drainL   s]    ))+KK!!&Y!Z--/JJ)GT499+EF%)DKK	" 0r   c                     | j                         s| j                  j                  d       | j                         r/| j	                  ddd| j
                  g       d| j                  d<   y y )Nr9   r:   r<   reviver$   Tr>   r?   rA   s    r   rC   zRabbitMqUpgrade.reviveS   s]    ))+KK!!&Y!Z))+JJ)HdDII+FG%)DKK	" ,r   c                 H    | j                  ddg       d| j                  d<   y )Nr<   await_online_quorum_plus_oneTr>   r    r   rA   s    r   rE   z,RabbitMqUpgrade.await_online_quorum_plus_oneZ   s#    

%(F'GH!%Ir   c                 H    | j                  ddg       d| j                  d<   y )Nr<    await_online_synchronized_mirrorTr>   rF   rA   s    r   rH   z0RabbitMqUpgrade.await_online_synchronized_mirror^   s#    

%(J'KL!%Ir   c                 H    | j                  ddg       d| j                  d<   y )Nr<   post_upgradeTr>   rF   rA   s    r   rJ   zRabbitMqUpgrade.post_upgradeb   s"    

%'78!%Ir   N)F)__name__
__module____qualname__r   r    r+   r7   r=   rC   rE   rH   rJ    r   r   r   r   ,   s/    **&&&r   r   c                     t        t        g dd      t        dd            } t        | d      }|j                  d	   }|j                  d
   }t        d      }t        ||||      } t	        ||               |j
                  di | y )N)rE   rH   rJ   r=   rC   T)choicesrequiredstrrabbit)typedefault)r   r   )argument_specsupports_check_moder   r   F)r>   rN   )dictr   paramsr   getattr	exit_json)arg_specr
   r   r   r   rabbitmq_upgrades         r   mainr^   g   s    { uh/	H  F
 ]]8$F== D% F&vvtVD%Gf%'Fvr   __main__)
__future__r   r   r   rT   __metaclass__DOCUMENTATIONEXAMPLESr"   ansible.module_utils.basicr   objectr   r^   rK   rN   r   r   <module>rf      sO    A @.  48&f 8&v. zF r   