
    VhF*                    v    d dl mZ dZd dlmZ d dlm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)    )annotationsa  
name: unixy
type: stdout
author: Al Bowles (@akatch)
short_description: condensed Ansible output
description:
  - Consolidated Ansible output in the style of LINUX/UNIX startup logs.
extends_documentation_fragment:
  - default_callback
requirements:
  - set as stdout in configuration
)basename)	constants)context)to_text)colorize	hostcolor)CallbackModulec                      e Zd ZdZdZdZdZd Zd Zd Z	d Z
d	 Zd
 Zd ZddZddZdej"                  fdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)r
   a  
    Design goals:
    - Print consolidated output that looks like a *NIX startup log
    - Defaults should avoid displaying unnecessary information wherever possible

    TODOs:
    - Only display task names if the task runs on at least one host
    - Add option to display all hostnames on a single line in the appropriate result color (failures may have a separate line)
    - Consolidate stats display
    - Don't show play name if no hosts found
    g       @stdoutzcommunity.general.unixyc                t    | j                   j                  dkD  xs d|j                  v xr d|j                  vS )Nr   _ansible_verbose_always_ansible_verbose_override)_display	verbosity_resultselfresults     l/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/callback/unixy.py_run_is_verbosezCallbackModule._run_is_verbose1   sN    ((1,[0IV^^0[  Sa|  EK  ES  ES  bS  	T    c                    d | _         |j                         j                         j                  d      }|d   }|j	                  d      ry || _         y )N : include)task_display_nameget_namestripsplit
startswith)r   taskdisplay_namer   s       r   _get_task_display_namez%CallbackModule._get_task_display_name4   sM    !%}},,.44U;(,''	2%6D"r   c                    |j                   j                  dd       | _        | j                  |j                   | j	                  d             | j                  |j                          y )N_ansible_delegated_varsdisplay_failed_stderr)
use_stderr)r   getdelegated_vars_handle_exception
get_option_handle_warningsr   s     r   _preprocess_resultz!CallbackModule._preprocess_result>   sO    $nn001JDQv~~$//Ja:bcfnn-r   c                   |j                   j                         }| d| }| j                  |      r'| d| d| j                  |j                  d       }|S | j
                  r| j
                  d   }| d| d| }|j                  j                  d      rH|j                  j                  d      dk7  r*|d	t        |j                  j                  d             z  }|j                  j                  d
      r!|d|j                  j                  d
       z  }|j                  j                  d      r!|d|j                  j                  d       z  }|S )N :    indentansible_hostz -> msgzAll items completedz | msg: r   z | stdout: stderrz | stderr: )_hostr   r   _dump_resultsr   r*   r)   r   )r   r   r6   	task_hosttask_resulttask_delegate_hosts         r   _process_result_outputz%CallbackModule._process_result_outputC   sQ   LL))+	"1SE*'&KqR0B0B6>>Z[0B0\/]^K!%!4!4^!D&Kt,>+?qFK>>e$););E)BF[)[Xgfnn.@.@.G&H%IJJK>>h'[););H)E(FGGK>>h'[););H)E(FGGKr   c                   | j                  |       | j                  o|j                  r:| j                  d      r)| j                  j                  | j                   d       y | j                  j                  | j                   d       y y )Ncheck_mode_markersz (check mode)...z...r$   r   
check_moder,   r   display)r   r"   is_conditionals      r   v2_playbook_on_task_startz(CallbackModule.v2_playbook_on_task_startZ   su    ##D)!!-4??3G#H%%)?)?(@@P&QR%%)?)?(@&DE	 .r   c                   | j                  |       | j                  o|j                  r:| j                  d      r)| j                  j                  | j                   d       y | j                  j                  | j                   d       y y )Nr?   z  (via handler in check mode)... z (via handler)... r@   )r   r"   s     r   !v2_playbook_on_handler_task_startz0CallbackModule.v2_playbook_on_handler_task_startb   sv    ##D)!!-4??3G#H%%)?)?(@@`&ab%%)?)?(@@R&ST	 .r   c                ~   |j                         j                         }|j                  rE| j                  d      r4|r/|j                  r#d| ddj                  |j                         d}n6d}n3|r/|j                  r#d| ddj                  |j                         d}nd}| j                  j                  |       y )	Nr?   z
- z (in check mode) on hosts: ,z -z- check mode -z on hosts: z---)r   r   rA   r,   hostsjoinr   rB   )r   playnamer6   s       r   v2_playbook_on_play_startz(CallbackModule.v2_playbook_on_play_startj   s    }}$$&??t/CD

TF"=chhtzz>R=SSUV&

TF+chhtzz.B-C2Fc"r   c                    | j                  d      rU| j                  |       t        j                  }d}| j	                  ||      }| j
                  j                  d| |       y y )Ndisplay_skipped_hostsskipped  )r,   r.   C
COLOR_SKIPr=   r   rB   )r   r   ignore_errorsdisplay_colorr6   r;   s         r   v2_runner_on_skippedz#CallbackModule.v2_runner_on_skippedy   s[    ??23##F+LLMC55fcBKMM!!B{m"4mDr   c                   | j                  |       t        j                  }d}| j                  |j                        }|r|d| z  }| j                  ||      }| j                  j                  d| || j                  d             y )Nfailed	 | item: rQ   r'   r7   )	r.   rR   COLOR_ERROR_get_item_labelr   r=   r   rB   r,   )r   r   rT   rU   r6   
item_valuer;   s          r   v2_runner_on_failedz"CallbackModule.v2_runner_on_failed   s    '))&..9
Yzl++C11&#>;-0-XoHpqr   okc                   | j                  |       d|j                  v xr |j                  d   }|rid}| j                  |j                        }|r|d| z  }t        j                  }| j                  ||      }| j                  j                  d| |       y | j                  d      r2| j                  ||      }| j                  j                  d| |       y y )NchangeddonerY   rQ   display_ok_hosts)	r.   r   r\   rR   COLOR_CHANGEDr=   r   rB   r,   )r   r   r6   rU   result_was_changedr]   r;   s          r   v2_runner_on_okzCallbackModule.v2_runner_on_ok   s    ''6>>9WfnnY>WC--fnn=J:,//OOM55fcBKMM!!B{m"4mD__/055fcBKMM!!B{m"4mD 1r   c                &    | j                  |       y N)rV   r   s     r   v2_runner_item_on_skippedz(CallbackModule.v2_runner_item_on_skipped   s    !!&)r   c                &    | j                  |       y rh   )r^   r   s     r   v2_runner_item_on_failedz'CallbackModule.v2_runner_item_on_failed   s      (r   c                &    | j                  |       y rh   )rf   r   s     r   v2_runner_item_on_okz#CallbackModule.v2_runner_item_on_ok   s    V$r   c                    | j                  |       d}t        j                  }| j                  ||      }| j                  j                  d| || j                  d             y )NunreachablerQ   r'   rZ   )r.   rR   COLOR_UNREACHABLEr=   r   rB   r,   )r   r   r6   rU   r;   s        r   v2_runner_on_unreachablez'CallbackModule.v2_runner_on_unreachable   s\    '++11&#>;-0-XoHpqr   c                   |j                   j                  rsd|j                  v re|j                  d   D ]R  }d|v s|d   s|j                  dd      s!| j	                  |d         }|s8| j
                  j                  |       T y d|j                  v rj|j                  d   rZ|j                  j                  dd      r=| j	                  |j                  d         }|r| j
                  j                  |       y y y y y )Nresultsdiffra   F)_taskloopr   r)   	_get_diffr   rB   )r   r   resrt   s       r   v2_on_file_diffzCallbackModule.v2_on_file_diff   s    <<fnn!<~~i0 4S=S[SWWY5N>>#f+6D--d3	4
 v~~%&..*@V^^EWEWXachEi>>&.."89D%%d+  Fj*@%r   c                D   | j                   j                  dd       t        |j                  j	                               }|D ]  }|j                  |      }| j                   j                  d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                  d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                  rD| j                  d      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 recap -T)screen_onlyrQ   r   r_   r0   ra   ro   rX   failuresrescuedignoredF)log_onlyshow_custom_statszCUSTOM STATS: _run   r3   
 	r1   z	RUN: )r   rB   sorted	processedkeys	summarizer	   r   rR   COLOR_OKrd   rp   r[   
COLOR_WARNcustomr,   bannerr9   replace)r   statsrI   htkstat_valstat_val_runs           r   v2_playbook_on_statsz#CallbackModule.v2_playbook_on_stats   s_   0dCu++-. 	A"AMM!!Yq!_%S$$)L(MQxXacdencoqr  rA  rA  PB  OC  CDM1]+;Q=P=PQRRST\]eghisgtvw  wD  wD  UE  TF  FGIq|QZZ@A8IWXYbWcefeqeqCrBsu !	 "  MM!!Yq!U+,Cqw0M/NaPXYbdefodprvPwOxxyM1]+;TBC1XhXYZdXegkElDmmnow  yB  DE  FO  DP  RV  pW  oX  XYIq|T:;= 	 " 	" <<DOO,?@MM  !12 ELL--/0 <;--ell1oa-HPPQUWYZ%%1#Rz&:;	< %%%bd%;#11%,,v2Fq1QYYZ^`bc%%~&>?MM!!"$!7 A<r   c                Z    | j                   j                  dt        j                         y )Nz  No hosts found!color)r   rB   rR   COLOR_DEBUGr   s    r   v2_playbook_on_no_hosts_matchedz.CallbackModule.v2_playbook_on_no_hosts_matched   s    1Gr   c                Z    | j                   j                  dt        j                         y )Nz  Ran out of hosts!r   )r   rB   rR   r[   r   s    r   !v2_playbook_on_no_hosts_remainingz0CallbackModule.v2_playbook_on_no_hosts_remaining   s    31==Ir   c                   t         j                  d   rD| j                  d      r3| j                  j	                  dt        |j                         d       n1| j                  j	                  dt        |j                                | j                  j                  dkD  rt         j                  j                  d      rO| j                  j	                  ddj                  t         j                  d          t        j                  d	
       d t         j                  D        D ]8  }t         j                  |   }|s| j                  j                  | d|        : y y )Ncheckr?   zExecuting playbook z in check mode   argszPositional arguments: r0   T)r   r{   c              3  ,   K   | ]  }|d k7  s	|  yw)r   N ).0as     r   	<genexpr>z6CallbackModule.v2_playbook_on_start.<locals>.<genexpr>   s     G11;QGs   
r1   )r   CLIARGSr,   r   rB   r   
_file_namer   r)   rJ   rR   COLOR_VERBOSEvvvv)r   playbookargumentvals       r   v2_playbook_on_startz#CallbackModule.v2_playbook_on_start   s   ??7#8L(MMM!!$7ATAT8U7VVd"efMM!!$7ATAT8U7V"WX ==""Q&""6*%%(>sxxX^H_?`>a&b,-OO & O HG =ooh/MM&&(2cU';<= 'r   c                   d|j                   d    d|j                   d    d}| j                  |      r!|d| j                  |j                          z  }| j                  j	                  |t
        j                         y )Nz  Retrying... (attemptsz of retries)zResult was: r   )r   r   r9   r   rB   rR   r   )r   r   r6   s      r   v2_runner_retryzCallbackModule.v2_runner_retry   su    z :;4y@Y?ZZ[\'\$"4"4V^^"D!EFFCc7r   N)F)__name__
__module____qualname____doc__CALLBACK_VERSIONCALLBACK_TYPECALLBACK_NAMEr   r$   r.   r=   rD   rF   rM   rV   r^   rR   r   rf   ri   rk   rm   rq   ry   r   r   r   r   r   r   r   r   r
   r
      s    
 M-MT7.
.FU#		r +/ajj E *)%r
,$8LHJ="8r   r
   N)
__future__r   DOCUMENTATIONos.pathr   ansibler   rR   r   +ansible.module_utils.common.text.convertersr   ansible.utils.colorr   r	    ansible.plugins.callback.defaultr
   CallbackModule_defaultr   r   r   <module>r      s4    #  "  ? 3 U_8+ _8r   