
    Vh<)                    b    d Z ddlmZ dZddlmZ ddlmZ ddl	m
Z
mZ ddlmZ  G d d	e      Zy
)zV
    Counter enabled Ansible callback plugin (See DOCUMENTATION for more information)
    )annotationsa8  
author: Unknown (!UNKNOWN)
name: counter_enabled
type: stdout
short_description: adds counters to the output items (tasks and hosts/task)
description:
  - Use this callback when you need a kind of progress bar on a large environments.
  - You will know how many tasks has the playbook to run, and which one is actually running.
  - You will know how many hosts may run a task, and which of them is actually running.
extends_documentation_fragment:
  - default_callback
requirements:
  - set as stdout callback in C(ansible.cfg) (C(stdout_callback = counter_enabled))
)	constants)CallbackBase)colorize	hostcolor)TaskIncludec                       e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZ fdZddZd	 Zd
 Zd Zd Zd ZddZd Zd Z xZS )CallbackModulez
    This is the default callback interface, which simply prints messages
    to stdout when new callback events are received.
    g       @stdoutz!community.general.counter_enabled   r   c                F    t         t        |           d| _        d| _        y )N )superr
   __init__	_playbook_play)self	__class__s    v/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/callback/counter_enabled.pyr   zCallbackModule.__init__2   s    nd,.
    c                n    | j                   j                         j                  | j                   ||      S )N)playhosttask)r   get_variable_managerget_vars)r   r   r   s      r   	_all_varszCallbackModule._all_vars8   s6     zz..099 : 
 	
r   c                    || _         y )N)r   )r   playbooks     r   v2_playbook_on_startz#CallbackModule.v2_playbook_on_startA   s	    !r   c                   |j                         j                         }|sd}nd| d}|| _        | j                  j	                  |       || _        | j
                  | _        | j                  t        | j                         d   d         z   | _        t        | j                         d   d         | _	        t        | j                  j                         d         | _        d| _        y )	Nr   zPLAY []varsansible_play_batchansible_play_hosts_allr   r   )get_namestripr   _displaybanner_current_batch_total_previous_batch_totallenr   _host_total	get_tasks_task_total_task_counter)r   r   namemsgs       r   v2_playbook_on_play_startz(CallbackModule.v2_playbook_on_play_startD   s    }}$$&C4&"C
S!
%)%>%>"$($>$>T^^EUV\E]^rEsAt$t!t~~/78PQRtzz335a89r   c                   | j                   j                  d       t        |j                  j	                               }|D ]  }|j                  |      }| j                   j                  t        ||       dt        d|d   t        j                         dt        d|d   t        j                         dt        d|d   t        j                         dt        d|d   t        j                         dt        d	|d	   t        j                         dt        d
|d
   t        j                         d       | j                   j                  t        ||d       dt        d|d   d        dt        d|d   d        dt        d|d   d        dt        d|d   d        dt        d	|d	   d        dt        d
|d
   d        d        | j                   j                  dd       | j                  j!                  dt        j"                        r?|j$                  r1| j                   j                  d       t        |j$                  j	                               D ]Y  }|dk(  r	| j'                  |j$                  |   d      j)                  dd      }| j                   j                  d| d|        [ d|j$                  v rk| j                   j                  dd       | j'                  |j$                  d   d      j)                  dd      }| j                   j                  d|        | j                   j                  dd       y y y )Nz
PLAY RECAPz : ok changedunreachablefailedfailuresrescuedignoredT)screen_onlyF)log_onlyr   show_custom_statszCUSTOM STATS: _runr   )indent
	z: z	RUN: )r(   r)   sorted	processedkeys	summarizedisplayr   r   CCOLOR_OKCOLOR_CHANGEDCOLOR_UNREACHABLECOLOR_ERROR
COLOR_WARN_plugin_optionsgetSHOW_CUSTOM_STATScustom_dump_resultsreplace)r   statshostsr   statk_custom_stats_custom_stats_runs           r   v2_playbook_on_statsz#CallbackModule.v2_playbook_on_statsV   s|   \*u++-. 	D??4(DMM!!T4()XdDJ

-S,TTUV^_hjnoxjy{|  |K  |K  WL  VM  MNM4+>@S@STUUVW_`hjnoyjz|}  }J  }J  XK  WL  LMItI

CDAhyZ^_hZiklkwkwFxEy{ !	 "  MM!!T4/0HT4:t4T3UUVW_`ikopykz  }A  XB  WC  CDM4+>EFaQY[_`j[kmqHrGsstItI=>aTXYbTcei@j?km 	 " 	" 	bd3 ##$79L9LMRWR^R^MM  !12 ELL--/0 A; $ 2 25<<?1 2 M U UVZ\^ _%%1#R&?@	A %%%bd%;$($6$6u||F7KTU$6$V$^$^_ceg$h!%%0A/B&CDMM!!"$!7! S_Mr   c           
     V   d}|j                   sEt        j                  r5dj                  d |j                  j                         D              }d| }| j                  j                  d| j                   d| j                   d|j                         j                          | d       | j                  j                  d	k\  r@|j                         }|r.| j                  j                  d
| t        j                         | j                   | _        | xj                  dz  c_        y )Nr   z, c              3  &   K   | ]	  \  }}d   yw)z{k}={v}N ).0rX   vs      r   	<genexpr>z;CallbackModule.v2_playbook_on_task_start.<locals>.<genexpr>   s     FDAqiFs   r6   zTASK / [r"      ztask path: colorr   )no_logrI   DISPLAY_ARGS_TO_STDOUTjoinargsitemsr(   r)   r0   r/   r&   r'   	verbosityget_pathrH   COLOR_DEBUGr+   _host_counter)r   r   is_conditionalrj   paths        r   v2_playbook_on_task_startz(CallbackModule.v2_playbook_on_task_start   s     {{q7799FDIIOO4EFGDtf:DuT%7%7$8$:J:J9K2dmmoNcNcNeMfgkfllmno==""a'==?D%%D6&:!--%P!77ar   c           	     H   | xj                   dz  c_         |j                  j                  dd       }| j                  j                  dk(  r>| j
                  |j                  j                  k7  r| j                  |j                         t        |j                  t              ry |j                  j                  dd      r|r?d| j                    d| j                   d|j                  j                          d	|d
    d	}n8d| j                    d| j                   d|j                  j                          d}t        j                  }n|r?d| j                    d| j                   d|j                  j                          d	|d
    d	}n8d| j                    d| j                   d|j                  j                          d}t        j                   }| j#                  |j                         |j                  j$                  r d|j                  v r| j'                  |       y | j)                  |j                  |j                  j*                         | j-                  |      r!|d| j/                  |j                         z  }| j0                  j3                  ||       y )Nr   _ansible_delegated_varsfreer7   Fz	changed: rb   rc    -> ansible_hostr"   zok: results => re   )ro   _resultrP   r   strategy_last_task_banner_task_uuid_print_task_banner
isinstancer   r-   _hostr&   rI   rK   rJ   _handle_warningsloop_process_items_clean_resultsaction_run_is_verboserS   r(   rH   )r   resultdelegated_varsr2   rf   s        r   v2_runner_on_okzCallbackModule.v2_runner_on_ok   s^   a++,EtL::&(T-C-Cv||GYGY-Y##FLL1fllK0^^	51!$"4"4!5Qt7G7G6H6<<K`K`KbJccghv  xF  iG  hH  HI  J!$"4"4!5Qt7G7G6H6<<K`K`KbJccdeOOET//0$2B2B1C2fllF[F[F]E^^bcq  sA  dB  cC  CD  ET//0$2B2B1C2fllF[F[F]E^^_`JJEfnn-<<fnn!<'0C0CD##F+d00@ABBMM!!#U!3r   c                   | xj                   dz  c_         |j                  j                  dd       }| j                  |j                  |j                  j
                         | j                  j                  dk(  r>| j                  |j                  j                  k7  r| j                  |j                         | j                  |j                         | j                  |j                         |j                  j                  r!d|j                  v r| j                  |       n|r| j                  j!                  d| j                    d| j"                   d|j$                  j'                          d|d	    d
| j)                  |j                         
t*        j,                         n|| j                  j!                  d| j                    d| j"                   d|j$                  j'                          d
| j)                  |j                         t*        j,                         |r,| j                  j!                  dt*        j.                         y y )Nr   rt   ru   rx   fatal: rb   rc   rv   rw   z]: FAILED! => re   z...ignoring)ro   rz   rP   r   r}   r   r   r{   r|   r~   r   _handle_exceptionr   r   r   r(   rH   r-   r   r&   rS   rI   rM   
COLOR_SKIP)r   r   ignore_errorsr   s       r   v2_runner_on_failedz"CallbackModule.v2_runner_on_failed   s   a++,EtLFNNFLL,?,?@::&(T-C-Cv||GYGY-Y##FLL1v~~.fnn-<<fnn!<' %%d00143C3C2DBv||G\G\G^F__c%n56nTEWEWX^XfXfEgDhj-- &  %%d00143C3C2DBv||G\G\G^F__mnr  oA  oA  BH  BP  BP  oQ  nR  S-- & 
 MM!!-q||!D r   c                *   | xj                   dz  c_         | j                  j                  dt        j                        rS| j                  |j                  |j                  j                         | j                  j                  dk(  r>| j                  |j                  j                  k7  r| j                  |j                         |j                  j                  r d|j                  v r| j                  |       y d| j                    d| j                    d|j"                  j%                          d}| j'                  |      r!|d	| j)                  |j                         z  }| j*                  j-                  |t        j.                  
       y y )Nr   show_skipped_hostsru   rx   z
skipping: rb   rc   r"   ry   re   )ro   rO   rP   rI   DISPLAY_SKIPPED_HOSTSr   rz   r}   r   r   r{   r|   r~   r   r   r   r-   r   r&   r   rS   r(   rH   r   )r   r   r2   s      r   v2_runner_on_skippedz#CallbackModule.v2_runner_on_skipped   s6   a##$8!:Q:QR0C0CDzz""f,1G1G6<<K]K]1]''5||  Y&..%@##F+"4#5#5"6a8H8H7IFLLLaLaLcKddef''/T$"4"4V^^"D!EFFC%%c%> Sr   c                   | xj                   dz  c_         | j                  j                  dk(  r>| j                  |j                  j
                  k7  r| j                  |j                         |j                  j                  dd       }|r| j                  j                  d| j                    d| j                   d|j                  j                          d|d    d	| j                  |j                         
t        j                   
       y | j                  j                  d| j                    d| j                   d|j                  j                          d	| j                  |j                         t        j                   
       y )Nr   ru   rt   r   rb   rc   rv   rw   z]: UNREACHABLE! => re   )ro   r   r{   r|   r}   r~   r   rz   rP   r(   rH   r-   r   r&   rS   rI   rL   )r   r   r   s      r   v2_runner_on_unreachablez'CallbackModule.v2_runner_on_unreachable   ss   a::&(T-C-Cv||GYGY-Y##FLL1++,EtLMM!!$,,-Qt/?/?.@6<<CXCXCZB[[_!.122EdFXFXY_YgYgFhEik)) "  MM!!$,,-Qt/?/?.@6<<CXCXCZB[[nos  pB  pB  CI  CQ  CQ  pR  oS  T)) " r   )NN)F)__name__
__module____qualname____doc__CALLBACK_VERSIONCALLBACK_TYPECALLBACK_NAMEr0   r/   ro   r-   r*   r+   r   r   r    r3   r[   rr   r   r   r   r   __classcell__)r   s   @r   r
   r
       sp    
 M7MMKMK
"$(8T *!4FE@?$r   r
   N)r   
__future__r   DOCUMENTATIONansibler   rI   ansible.plugins.callbackr   ansible.utils.colorr   r   ansible.playbook.task_includer   r
   r^   r   r   <module>r      s2   
 # # 1 3 5[\ [r   