
    Vh                    B   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZmZmZmZmZm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" 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,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@  e>       ZAej                  j                         D  cg c]  } d| vsd| vs|  c} ZDdgZE G d deF      ZGd ZHd ZI G d d      ZJd ZKd! ZLyc c} w )"    )annotationsN)	constants)scripts)AnsibleErrorAnsibleParserErrorAnsibleUndefinedVariableAnsibleConnectionFailureAnsibleActionFailAnsibleActionSkip)
TaskResult)get_action_args_with_defaults)boolean)binary_type)to_text	to_native)write_to_stream)string_types)Conditional)Task)get_plugin_class)become_loadercliconf_loaderconnection_loaderhttpapi_loadernetconf_loaderterminal_loader)Templar)AnsibleCollectionConfig)listify_lookup_plugin_terms)to_unsafe_textwrap_var)namespace_factsclean_facts)Display)combine_varsbecome_passTaskExecutorc                        e Zd Zd fd	Z xZS )TaskTimeoutErrorc                   ||}t        j                  t              j                  }t        j                  |j                  j
                        j                  |      sE|j                  }t        j                  |j                  j
                        j                  |      sEd|d|| _        t        t        | /  |       y )NzInterrupted at z called from )pathlibPath__file__parentf_codeco_filenameis_relative_tof_backframesuperr*   __init__)selfmessager4   origroot	__class__s        N/home/dcms/DCMS/lib/python3.12/site-packages/ansible/executor/task_executor.pyr6   zTaskTimeoutError.__init__.   s    D<<)00Dll5<<#;#;<KKDQ ll5<<#;#;<KKDQ @DUKDJ.w7    ) N)__name__
__module____qualname__r6   __classcell__)r;   s   @r<   r*   r*   -   s    
8 
8r=   r*   c                    t        |      )N)r4   )r*   )signumr4   s     r<   task_timeoutrE   ;   s    

''r=   c                J   t        | t              s| S i }| j                         D ]v  }|d   |k(  rt        |d   t              rt        |d   |      ||d   <   5t        |d   t              r$|d   D cg c]  }t        ||       c}||d   <   l|d   ||d   <   x |S c c}w )z
    Remove args with a value equal to the ``omit_token`` recursively
    to align with now having suboptions in the argument_spec
       r   )
isinstancedictitemsremove_omitlist)	task_args
omit_tokennew_argsivs        r<   rK   rK   ?   s     i&H__ "Q4:!d#(1z:HQqTN!d#BCA$GQk!Z8GHQqTNqTHQqTN" O	 Hs   4B c                  h    e Zd ZdZd Zd Zd Zd Zd ZddZ	dd	Z
d
 Zd Zd Zd Zd Zd Zd Zy)r(   z
    This is the main worker class for the executor pipeline, which
    handles loading an action plugin to actually dispatch the task to
    a given host. This class roughly corresponds to the old Runner()
    class.
    c
                    || _         || _        || _        || _        || _        || _        || _        d | _        || _        |	| _	        d | _
        | j                  j                          y N)_host_task	_job_vars_play_context
_new_stdin_loader_shared_loader_obj_connection_final_q_variable_manager_loop_eval_errorsquash)
r7   hosttaskjob_varsplay_context	new_stdinloadershared_loader_objfinal_qvariable_managers
             r<   r6   zTaskExecutor.__init___   sd    

!)#"3!1 $

r=   c                	  	 t         j                  d| j                  j                  z         	 	 | j	                         }|t        |      dkD  r| j                  |      }t        |      }d|d<   |D ]\  }d|v r|d   r|j                  d      sd|d<   |d   rd|vs	d|v r
|d   sd|d<   d	|v rl|d	   rg|j                  d
      }|j                  d	      sd|d	<   d|d<   || j                  _        n)| j                  j                  r|s|| j                  _        d|v rg|d   rb|j                  d      }|j                  d      sd|d<   || j                  _        n)| j                  j                  r|s|| j                  _        dD ]C  }||v s||   s||vrg ||<   t        ||   t              s	||   g||<   ||   ||   z   ||<   ||= E _ |j                  d	d      sd|d<   |d   rPd|d<   nJt        dddg       }n:t         j                  d       | j!                         }t         j                  d       d|vrd|d<   d 	fd		t         j                  d        	|      }t         j                  d       |	 | j"                  j%                          S # t
        $ r}d}|| _        Y d}~xd}~ww xY w# t&        $ r Y S t(        $ r+}t         j                  dt+        |      z         Y d}~S d}~ww xY w# t,        $ r}t        dt/        t+        |d            | j0                  j2                        cY d}~	 | j"                  j%                          S # t&        $ r Y S t(        $ r+}t         j                  dt+        |      z         Y d}~S d}~ww xY wd}~wt(        $ r}t        dt/        dt5        |d      z        t+        t7        j8                               d| j0                  j2                        cY d}~	 | j"                  j%                          S # t&        $ r Y S t(        $ r+}t         j                  dt+        |      z         Y d}~S d}~ww xY wd}~ww xY w# 	 | j"                  j%                          w # t&        $ r Y w t(        $ r+}t         j                  dt+        |      z         Y d}~w d}~ww xY wxY w)!a  
        The main executor entrypoint, where we determine if the specified
        task requires looping and either runs the task with self._run_loop()
        or self._execute(). After that, the returned results are parsed and
        returned as a dict.
        zin run() - task %sNr   )resultsTskippedchangedFfailed_ansible_ignore_errorszOne or more items failedmsgunreachable_ansible_ignore_unreachable)warningsdeprecationszAll items completedzAll items skippedzNo items in the list)rm   rl   skipped_reasonrk   zcalling self._execute()z_execute() donec                l   t        | t              rt        | |      S t        | t              r| D ]  }	  | |   |      | |<    | S t        | t              r t        |       D ]  \  }} ||      | |<    | S # t        $ r/ |dk(  r&t
        j                  d        | |   d      | |<   n Y w xY w)Nerrorsdiffz{We were unable to decode all characters in the module return data. Replaced some in an effort to return as much as possiblesurrogate_then_replace)	rH   r   r    rI   UnicodeErrordisplaywarningrL   	enumerate)resrx   kidxitem
_clean_ress        r<   r   z$TaskExecutor.run.<locals>._clean_res   s    c;/)#f==T*  &
&%/Av%FCF& 
  T*%.s^ C	T#-d6#BCC
  , & F{ !( 1l !m)3CFC[)\A % !'&s   A;;5B32B3zdumping result to jsonzdone dumping result, returningzerror closing connection: %s
simplerepr)	nonstring)rn   rp   _ansible_no_logz.Unexpected failure during module execution: %sr>   )rn   rp   	exceptionstdoutr   )surrogate_or_strict)r|   debugrV   _uuid_get_loop_itemsr   r_   len	_run_looprI   getpopignore_errorsignore_unreachablerH   rL   _executer\   closeAttributeError	Exceptionr   r   r!   rX   no_logr   	traceback
format_exc)
r7   rJ   eitem_resultsr   r   item_ignoreitem_ignore_unreachablearrayr   s
            @r<   runzTaskExecutor.runn   s    	*TZZ-=-==>c	L*,,.  u:>#'>>%#8L |4C &*C	N , 0$,iQZI[-1C	Ny>y/DVZIZcghqcr-2C	N#t+X*.((3K*LK#&778#404H-GE
;F

 8!%!9!9+;F

 8(D0T-5H6:hh?\6]3#&77=#959M 2@W

 =!%!>!>G^@W

 = &B 0E$}e#(#313CJ'1$u+t'D37;-DK-0Z$u+-EE
$(K0-0> 778U3%:E
9~%8E
udKakmnC78mmo/0 #!&I* MM23S/CMM:;L  &&(y , *()%%*z "  L=
JKKL  	Bt'!|2T)Ugkgygy  hA  hA  B  B
L  &&(!  L=
JKKL  	yt2bfopq  ~J  gK  3L  *M"))*>*>*@"A"^b^p^p^w^wy yL  &&(!  L=
JKKL	yL  &&(!  L=
JKKLs
  J   EL L C)L K  	J=)	J82L 8J==L  	K>K>!K99K>	Q)
5N!?Q) Q, M  	N+N3!NN!Q)-AQ$Q)Q, P##	Q!.Q!6!QQ!$Q))Q, ,S
.R	S
		SS
S!S=S
SS
c                   | j                   j                         | j                  d<   | j                  j	                         | j                  d   vr6| j                  d   j                  | j                  j	                                t        | j                  | j                        }d}| j                   j                  r3| j                   j                  | j                  j                  v rt        | j                   j                  dk7        }t        | j                   j                  ||d      }| j                  j                  j                  | j                   j                  | j                  |      }dD ]  }|| j                   j                  v s n t        |d	d
z          t!        |j#                  || j                  d            }|S t%        d| j                   j                  z        | j                   j                  C|j'                  | j                   j                        }t)        |t*              st%        d|z        |S )z
        Loads a lookup plugin to handle the with_* portion of a task (if specified),
        and returns the items result.
        ansible_search_pathrf   	variablesNfirst_foundF)termstemplarfail_on_undefinedconvert_bare)rf   r   )templatevarfile_subdirsT)r   r   wantlistzSUnexpected failure in finding the lookup named '%s' in the available lookup pluginszInvalid data passed to 'loop', it requires a list, got this instead: %s. Hint: If you passed a list/dict of just one element, try adding wantlist=True to your lookup invocation or use q/query instead of lookup.)rV   get_search_pathrW   rZ   get_basedirappendr   	loop_withr[   lookup_loaderboolr   loopr   actionsetattrr!   r   r   r   rH   rL   )r7   r   rJ   fail
loop_termsmylookupsubdirs          r<   r   zTaskExecutor._get_loop_items   s    15

0J0J0L,- <<##%T^^<Q-RRNN01889Q9Q9STH::zz##t'>'>'L'LL DJJ00MAB8tzzX_sw  GL  M
  22@@DDTZZEYEYbfbnbnxD  A : F!2!22 )Vc\: !J$..cg!hi  ##x{  |F  |F  |P  |P  $P  Q  QZZ__($$TZZ__5EeT*"lnst  r=   c           
        | j                   }t        | j                  |      }| j                  j                  j                  |       | j                  j                  j                  }| j                  j                  j                  }| j                  j                  j                  }| j                  j                  j                  }| j                  j                  j                  }| j                  j                  j                  xs d|z   dz   }	||v r%t        j                  | j                  d|d       d}
d}d}t        |      }g }t        |      D ]  \  }}||d	<   |||<   |r
||d
<   |||<   |rQ|dz   ||dk(  |dz   |k(  |||z
  ||z
  dz
  d|d<   |r||d   d<   	 ||dz      |d   d<   |dz
  dk\  r||dz
     |d   d<   ||_        |r|
rt%        j&                  |       nd}
	 | j                  j)                  dd      }| j                  j*                  |_        | j,                  j)                         }|| j                  c| _        }|| j,                  c| _        }| j7                  |      }| j                  j8                  r||| j                  j8                  <   | j                  j;                         }|| j                  c| _        }|| j,                  c| _        }|xs |j<                  }|||<   ||d	<   |r
|||<   ||d
<   |r|d   |d<   d|d<   |j?                  d      |d<   |j?                  d      |d<   	 |jA                  |	      |d<   | jF                  r3tI        | jF                  tJ              stM        | jF                  d      |d<   tO        | jP                  jR                  | j                  jT                  ||      }|jW                         s|jY                         r| jZ                  j]                  d |       n|j_                         r| jZ                  j]                  d!|       nutM        | j                  d"d      r| jZ                  j]                  d#|       | j                  j`                  tb        jd                  vr| jZ                  j]                  d$|       |j1                  |       | j                  j                  r| j                  j                  jf                  rti        | j                  %      }| j                  j                  jk                  d&| j                  j                  jl                  j?                  d&      | j                  j                  jf                  |      |_7        |jq                  ||      r||=  n||= | jF                  sU| jF                  jr                  | jF                  jt                  jr                  d'}| jF                  jv                  r#| jF                  jv                  jr                  |d(<   |jy                         D ]A  \  }}tb        jz                  j}                  ||      D ]  }||v s|| j                   vs||=  C  || j                  _        |j?                  d)      | j                  _?        |j?                  d*      | j                  _0        |S # t         $ r Y !w xY w# t.        $ r0}|j1                  t3        dt5        |                   Y d}~d}~ww xY w# tB        $ r+}|jE                  ddt5        |      z  d       Y d}~d}~ww xY w)+z
        Runs the task with the loop items specified and collates the result
        into an array named 'results' which is inserted into the final result
        along with the item for which the loop ran.
        r   r   z{{z}}z: The loop variable 'z' is already in use. You should set the `loop_var` value in the `loop_control` option for the task to something else to avoid variable collisions and unexpected behavior.FNansible_loop_varansible_index_varrG   r   )indexindex0firstlastlengthrevindex	revindex0ansible_loopallitemsnextitemprevitemT)exclude_parentexclude_tasksrn   rp   )r   _ansible_item_resultr   ro   r   rr   _ansible_item_labelz)Failed to template loop_control.label: %sansible_name
connectiontask_fieldsv2_runner_item_on_failedv2_runner_item_on_skippedry   v2_on_file_diffv2_runner_item_on_okrf   
break_when)r   shellr&   run_oncer   )@rW   r   rZ   rV   loop_controlpost_validateloop_var	index_varpauseextendedextended_allitemslabelr|   r}   r   r~   
IndexErroravailable_variablestimesleepcopy_parentrX   r   r   rI   r   r   register
dump_attrsr   r   r   r   updater\   rH   r   getattrr   rU   namer   	is_failedis_unreachabler]   send_callback
is_skippedr   C_ACTION_INVENTORY_TASKSr   r   get_validated_valuefattributeswhenevaluate_conditional
_load_name_shellr&   rJ   configget_plugin_varsr   )r7   rJ   	task_varsr   r   r   
loop_pauser   r   r   ran_oncer   r   	items_lenrk   
item_indexr   tmp_tasktmp_play_contextr   r   trcondclear_pluginsplugin_typeplugin_namer   s                              r<   r   zTaskExecutor._run_loop  s    NN	C

--g->::**33JJ++55	ZZ,,22
::**33 JJ33EE

''--G41Gy OOkokukuwA B J	 )% 0 G	/J,4I()"&Ih1:	-.'1	)$'!^('1_&Ni7' )J 6!*Z!7!!;-	.) %<AIn-j9<A*q.<QIn-j9 >Q&<A*q.<QIn-j9 +4G' h

:&::??$d?S#'::#5#5 #'#5#5#:#:#<  '/

"TZ6FHZHZ2T!1--)-4Czz"" 25	$**--.**//1K&.

"TZ6FHZHZ2T!1 .xF !CM&.C"#!+I+4'(&/&?N#*.C&',7OOO,LC()1<AU1VC-.-4-=-=e-D)* 
43C3C\(R,3D4D4Dn,UL)



  '	B ||~!2!2!4++,FK++,GL4::vu5MM//0A2F::$$A,E,EEMM//0FKNN3 zz&&4::+B+B+M+M"$,,7 JJ33GG $**"9"9"E"E"I"I,"WY]YcYcYpYpY{Y{  ~E	 ,,Wi@!(+ (# "&"2"2"="=!--44??! ##**.2.>.>.E.E.P.PM(+0=0C0C0E /,K xx77[Q /)+4>>0I )#//IG	/R #

 *ooj9

'OOH5

s " $ & t4WQZ@AP , 

"FQRS  sC   '[
/A[
\
	[[	\#%\\	]
 ]]
c                    | j                   j                  || j                  |      \  }}|r#|| j                  _        |j	                  |       yy)zThis method is responsible for effectively pre-validating Task.delegate_to and will
        happen before Task.post_validate is executed
        N)r^   get_delegated_vars_and_hostnamerV   delegate_tor   )r7   r   r   delegated_varsdelegated_host_names        r<   _calculate_delegate_toz#TaskExecutor._calculate_delegate_to  sX     /3.D.D.d.delnrnxnx  {D  /E++ %8DJJ"^, r=   Nc                ^$    ! | j                   }t         j                  |        j                   |       d}|j	                         }	  j
                  j                   j                  |        _         j
                  j                           j
                  j                  s% j                  j                   j
                  _	         j
                  j                  |        j
                  j                  }	  j                  j                   |      \  }}|s%t         j#                  d       t%        ddd||	      S 	  j&                   j&                  |^d} j                  j,                  rBt/        |t0              rd}n/t/        |t2              rt5        |d
d      }	t/        |	t0              rd}|r|| _         j                  j8                  t:        j<                  v rc j                  j>                  j	                         }
|
jA                  dd      }|st%        dd      S  jC                  |      }t%        ||
      S  j                  j8                  t:        jD                  v r0 j                  j>                  j	                         }
t%        |
      S 	  j                  j                          d j                  j>                  v r j                  j>                  jA                  d      }t/        |t$              r\t:        jL                  rt         jO                  d       |jQ                   j                  j>                         | j                  _        nt        d| d       j                  j                  }i } j                  j,                  r7|jS                  di       jS                   j                  j,                  i       }n|}| _        |jS                  d       jC                  |d         }n j                  jT                  } jV                  rjt5         jV                  dd      rS jV                  jY                  |g      r7 j
                  j                   jV                  j
                  j                  k7  r j[                  | |       _+        n8 j
                   jV                  _         j]                  |  jV                          j_                  |       }|j	                         ! jV                  j                  !       ! _         j
                  j                   j                  !        jV                  _        d|vr.d|v r*t5         jV                  dd      rt`        jb                  |d<    je                         \   _3        }||jh                  }n j                  jj                  }tm        | j                  j>                   j                  jn                    j                  jp                  jr                  jt                         j                  _        |jS                  d      }|/tw         j                  j>                  |       j                  _        d} j                  jx                  $|t{        d j                  jx                        z  }n j                  j|                  r|dz  } j                  j~                  }|dk  rd}t         j#                  d        d}t        d|dz         D ]  }t         j#                  d!       	  j                  j                  rQt        j                  t        j                  t              }t        j                   j                  j                          jf                  j                  !"      }	  j                  j                  r9t        j                  d       t        j                  t        j                        } jf                  j                          t         j#                  d'       t        |xs |jS                  d(d            |d(<    j                  j8                  t:        j                  vrt        |      } j                  j                  r|! j                  j                  <    j                  j                  dkD  r: j                  j                  dkD  r|jS                  d)      s	|jS                  d*      s j                  | !+      }|jS                  d*      rj j                  j                  d,t         j                  j                   j                  j                  | j                  j                         -             ni j                  j                  d.t         j                  j                   j                  j                  | j                  j                         -             ||d(<     !fd/}  !fd0}d1|v r j                  j8                  t:        j                  vr j                  j8                  t:        j                  v rf j                  j,                  r; j                  j                  r%d2!v r!d2   jQ                  |d1          n~|d1   !d2<   nu!jQ                  |d1          n`t        |d1         }t        !jS                  d1i       t        |            !d1<   t:        jL                  r!jQ                  t        |             d*|vrd3|v r|d3   d4vrd|d*<   nd|d*<   |dkD  r||d5<   d6|vrd|d6<    j                  j8                  t:        j                  vrt        |      } j                  j                  r|! j                  j                  <   d)|vrd6}	  ||       d*} ||       |dkD  st         j                  8      } j                  j|                  xs |d*    g|_a        |j                   !      r n||k  sd|d9<   ||d:<   t         j#                  d;||fz          j                  j                  d<t         j                  j                   j                  j                  | j                  j                         -             t        j                  |        j                          _3         |dkD  r|dz
  |d5<   d|d*<    j                  j8                  t:        j                  vrt        |      } j                  j                  r|| j                  j                  <   d1|v r j                  j8                  t:        j                  vr j                  j8                  t:        j                  v r|jQ                  |d1          n`t        |d1         }t        |jS                  d1i       t        |            |d1<   t:        jL                  r|jQ                  t        |              j                  j                   j                  j                  |d=<    j                  j,                  rdd> j                  j,                  i|d2<   |D ]  }|jS                  |      |d2   |<    d?D ]&  }||d2   vs||v s|jS                  |      |d2   |<   ( t         j#                  d@       |S # t        $ r}|}Y d}~d}~ww xY w# t        $ r<} j&                  *t         j)                  t+        |              j&                   d}~ww xY w# t        $ r  tF        $ r- t%        dd|t+        tI        jJ                                     cY S w xY w# t        t        f$ r}|j                  cY d}~ j                  j                  r9t        j                  d       t        j                  t        j                        } jf                  j                          c S d}~wt        $ r}t%        dt+        |      #      cY d}~ j                  j                  r9t        j                  d       t        j                  t        j                        } jf                  j                          c S d}~wt        $ r}d$ j                  j8                   j                  j                  fz  }t%        d||j                   j                  j                  d%&      cY d}~ j                  j                  r9t        j                  d       t        j                  t        j                        } jf                  j                          c S d}~ww xY w#  j                  j                  r9t        j                  d       t        j                  t        j                        } jf                  j                          w xY w# t        $ r!}d|d*<   t+        |      |d7|z  <   Y d}~Dd}~ww xY w)Az
        The primary workhorse of the executor system, this runs the task
        on the specified host (which may be the delegated_to host) and handles
        the retry/until and block rescue/always execution
        Nr   )rb   r   r   r   z,when evaluation is False, skipping this taskFTzConditional result was False)rm   rl   skip_reasonfalse_conditionr   orig_exc_raw_paramsz,No include file was specified to the includer   )includeinclude_args)r  )rm   rn   r   r   _variable_paramszUsing a variable for a task's 'args' is unsafe in some situations (see https://docs.ansible.com/ansible/devel/reference_appendices/faq.html#argsplat-unsafe)z invalid or malformed argument: ''ansible_delegated_varsansible_connection	connectedansible_python_interpreteransible_network_os_remote_is_local)action_groupsomitrG   r      zstarting attempt loopzrunning the handlerr   )rq   rp   zRThe %s action failed to execute in the expected time frame (%d) and was terminated)r4   period)rn   rp   timedoutzhandler run completer   rl   rn   )resultr   r   v2_runner_on_async_failedr   v2_runner_on_async_okc                    j                   j                  ^j                   j                  rGt        j                        }j                   j                  |_        |j                        | d<   y y y )Nr   rm   )rV   changed_whenr   rZ   r   r   )r$  r  r7   r   	vars_copys     r<   _evaluate_changed_when_resultz<TaskExecutor._execute.<locals>._evaluate_changed_when_result  s^    ::**64::;R;R&dll;D $

 7 7DI(,(A(A'9(UF9% <S6r=   c                    j                   j                  rOt        j                        }j                   j                  |_        |j                        }|x| d<   | d<   |S d}|S )Nr   failed_when_resultrn   F)rV   failed_whenr   rZ   r   r   )r$  r  r,  r7   r   r)  s      r<   _evaluate_failed_when_resultz;TaskExecutor._execute.<locals>._evaluate_failed_when_result  sm    ::))&dll;D $

 6 6DI)-)B)B7I)V&FXXF/06(3C *) */&))r=   ansible_facts_ansible_delegated_varsrc)r   0attemptsrm   z%s_when_resultr   _ansible_retryretrieszRetrying task, attempt %d of %dv2_runner_retry_ansible_notifyansible_delegated_host)ansible_hostansible_portansible_userr  z'attempt loop complete, returning result)grW   r   rZ   r  r   rX   set_task_and_variable_overriderV   r   remote_addrrU   addressupdate_varsr   r    evaluate_conditional_with_resultr|   r   rI   r_   rQ   r   r  rH   r   r   r   r   r   r   _ACTION_INCLUDE_TASKSargsr   r   _ACTION_INCLUDE_ROLEr   r   r   INJECT_FACTS_AS_VARSr}   r   r   r   r\   matches_name_get_connection_set_become_plugin_set_connection_optionssys
executable'_get_action_handler_with_module_context_handlerresolved_fqcnresolved_actionr   module_defaultsr   _play_action_groupsrK   r5  maxuntildelayrangetimeoutsignalSIGALRMrE   alarmr   r
   r   r$  cleanupr	   r*   r4   r   _ACTION_WITH_CLEAN_FACTSr!   r   	async_valpoll_poll_async_resultr]   r   r   r   r   r   _ACTION_DEBUGdelegate_factsr%   r"   r#   r   r   r   r   r   _get_action_handlernotify)"r7   r   context_validation_errortempvarsr   r   conditional_resultr  raiseitr  r  include_filevariable_paramscvarscurrent_connectionplugin_varsmodule_contextmodule_defaults_fqcnrN   r5  rT  r$  attemptold_sigrp   r*  r.  afcondnamer  r   requireshedr   r)  s"   `                               @@r<   r   zTaskExecutor._execute  s?    IC##GY7#'  >>#	) "&!3!3!R!RX\XbXbnw  BI!R  "JD ,,W,= %%11151C1C"". **84 ##**	26**2]2]^ego2p/%LME4Ec,;VU U &   ,''' $/Gzz%%68PQ#G 8:LM&'?TRH!(,DE"'.. '/# :: 7 77::??//1L'++M4@L4-[\\"++L9L<HH ZZ!"8"88::??//1L\22	wJJ$$W$5
 0"jjoo112DEO/40))OO %A B&&tzz7"1

 #%EoEVVW#XYY ""  ::!!MM":B?CCDJJDZDZ\^_E E&+# 99)*6!(!1!1%8L2M!N!%!6!6   D,,k5A$$113E2FG ""..$2B2B2P2P2\2\\#33E7DVWD .2-?-?D*##E7D4D4DE225'B NN$	$$Y/&/# *.););)Z)Z`d`j`jv  JQ)Z  *R& (u49MQV9V[bcgcscs  vH  JO  \P25..E./ )-(T(T]d(T(e%~%#1#?#? #'::#=#=  8 $**//4::3M3Mw**,,22AA


 ]]6*
!)$**//:FDJJO::)s1djj0011GZZqLG

  19E-.Q!, W	(GMM/0(::%%$mmFNNLIGLL!3!34**Y*? ::%%LLO$mmFNNGDG%%'MM01 )-V-[vzzBSUZ7[(\F$%zz  (B(BB!&) zz""17	$**--.zz##a'::??Q&vzz)/DVZZX`Ma!44FG_h4iFzz(+337&tzz'+zz'7'7'-37::3H3H3JLM 333&tzz'+zz'7'7'-37::3H3H3JLM -3()V* &(TZZ->->aoo-U::$$(B(BBzz--$**2K2K4	A%&?@GGH_`CI/CZI&?@!(()@A "&"9:B1=immO]_>`bqrtbu1vIo.--!((R9 v%6>fTl(&B'+F8$',F8$ {%,z" &$)y!zz  (B(BB!&) zz""17	$**--. &$E1&9'H08
 {"$,,7 JJ,,FVH5E1E0F	,,Wi@ (37/0,3y)&G7T[J\&\]33-& $

 $

 0 0 &,0JJ,A,A,C	 

5)(,(@(@(@(QeW	(h {%,q[z"#'x ::A$>$>>f%F ::-3Idjj))*f$):):!//)Qzz  A$>$>>  !89 f_56-9)--Y[:\^mnp^q-r	/*))$$[_5
 ::((,

(9(9F$%
 ::!!1I4::KaKa0bF,-  D7<yy|01!4D  f \f-F&GGK[`L`EJYY{E[F45kB\
 	?@W  	) ()$	)"  	$$0 		'!*%+++	d  	 	wdFV]^g^r^r^tVuvv	wZ &'89  xx ::%%LLO$mmFNNGDG%%' , >'!*==
 ::%%LLO$mmFNNGDG%%' $ mjnrnxnxnn  BF  BL  BL  BT  BT  nU  U4SQWWX\XbXbXjXj;kll::%%LLO$mmFNNGDG%%'m ::%%LLO$mmFNNGDG%%'N $ E'+F8$:A!*F+h67Es   B{2 A| *}  B~AH2	|;||	}7}}<~~AF$A@ /AF0AF@ AF@,AB2AAFAAFB2AFB>AAFDAFDAFFAFFAFFA+AG?H	AH,HAH'H'AH,c           
     v   || j                   }|j                  d      }|t        dd      S t        j                  t        dd|i| j
                  j                  | j
                  j                              }| j                  j                  j                  d	|| j                  | j                  | j                  || j                  
      }| j
                  j                  }|dkD  rt        j                  | j
                  j                          	 |j#                  |      }t%        |j                  dd            dk(  sd|v r|j                  dd      sd|v rnu	 || j
                  j                   z  }| j&                  j)                  dt+        | j,                  j.                  |j0                  ||j3                                      |dkD  rt%        j                  dd            dk7  rD|j                  d      r%t        dd| j
                  j                  z  |      S t        dd|      S t        j                  |dd| j
                  j                  | j
                  j                  d      }
| j                  j                  j                  d	|
| j                  | j                  | j                  || j                  
      }|j#                  |       |jG                  d       |jG                  d       |S # t4        $ r}	t6        j9                  dt;        |	      z         t6        j=                  dt;        t?        j@                               z         	 |j                  jC                          n# tD        $ r Y nw xY w|| j
                  j                   z  }|dk  r Y d}	~	d}	~	ww xY w)z<
        Polls for the specified JID to be complete
        Nansible_job_idTz(No job id was returned by the async taskr   async_statusjid)r   rB  
check_modeenvironmentzansible.legacy.async_status)rb   r   rd   rf   r   rg   r   r!  finishedrG   rn   _ansible_parsedFrl   v2_runner_on_async_pollr   z-Exception during async poll, retrying... (%s)zAsync poll exception was:
%sz;async task did not complete within the requested time - %ss)rn   rp   async_resultz'async task produced unparseable resultsrZ  )rv  mode)ru  rw  rx  )force)$rW   r   rI   r   loadrV   rw  rx  r[   action_loaderr\   rX   rZ   r\  r   r   r]  r   intr]   r   r   rU   r   r   r   r   r|   vvvvr   r   r   r   resetr   rZ  )r7   r$  r   r   	async_jid
async_taskasync_handler	time_leftr|  r   cleanup_taskcleanup_handlers               r<   r^  zTaskExecutor._poll_async_result]  s|   
 IJJ/0	t)STT YYt!#zz,,

..	 
 
 //==AA)''++<<"55 B 
 JJ((	!mJJtzz'$,0090E ((Q78A=!\1l6F6FGXZ_6`!\1 2$ TZZ__,	++-

"(($$.$9$9$;	? !mR |
A./14 124-jmqmwmw  nB  nB  .B  Q]  ^  ^4-Veqrr  99  ) )% #'**"7"7#'::#9#9	L #55CCGG-!++!//||"&"9"9 H O )4##$#/!!!-s   LwWXzYZ=	H\H\H^@__`!--335%  TZZ__,	> "s>   A
L 	N8AN3$M?>N3?	NN3
N"N33N8c                P    t        j                  |      }|st        d|z        |S )NzInvalid become method specified, could not find matching plugin: '%s'. Use `ansible-doc -t become -l` to list available plugins.)r   r   r   )r7   r   r&   s      r<   _get_becomezTaskExecutor._get_become  s8    ""4(  []a b c cr=   c           
        || j                   _        | j                   j                  }| j                  j                  j	                  || j                   | j
                  | j                  j                  t        t        j                                     \  }}|st        d|z        | j                  |||       | j                   j                  |       |S )z
        Reads the connection property for the host, and returns the
        correct connection object from the list of connection plugins
        )	task_uuidansible_playbook_pidz(the connection plugin '%s' was not found)rX   r   r[   r   get_with_contextrY   rV   r   r   osgetppidr   rG  set_attributes_from_plugin)r7   ri  r   rj  	conn_typer   plugin_load_contexts          r<   rF  zTaskExecutor._get_connection  s     );%
 &&11	*.*A*A*S*S*d*dOOjj&&!(!6 +e +
'
' IIUVVw
; 	55jAr=   c                r   |j                  d      t        |j                  |d               }n| j                  j                  }|r[|j                  d      r$| j                  |j                  |d               }n(| j                  | j                  j                        }nd }	 |j                  |       |rpt        |j                  dd      r3t        |dd      s&t        d|j                  d|j                  d      | j                  j                  |j                         y y # t        $ r Y ~w xY w)	Nansible_becomeansible_become_methodrequire_ttyFhas_ttyzThe 'zV' connection does not provide a TTY which is required for the selected become plugin: .)r   r   r   rV   r&   r  become_methodset_become_pluginr   r   r   r   r   rX   )r7   ri  r   r   r&   become_plugins         r<   rG  zTaskExecutor._set_become_plugin  s   99%&2W--e4D.EFGFZZ&&Fyy01 $ 0 01A1A%H_B`1a b $ 0 01I1I J
 !M	((7
 z((-?PZ\eglHm",6,A,A=CUCUW  001C1CD 	  		s   &D* *	D65D6c                V   	 t        | j                  d|z        }|dk(  rd}t        j                  j                  ||j                        }i }|D ]  }||v s|j                  ||         ||<     |j                  ||       |S # t        $ r t        | j                  |      }Y w xY w)Nz_%sssh_type_connr   	task_keysvar_options)	r   r\   r   r   r   r   r   r   set_options)	r7   r  r   r   r  pluginoption_varsoptionsr   s	            r<   _set_plugin_optionsz TaskExecutor._set_plugin_options  s    	<T--u{/BCF /)&Khh..{F<M<MN 	<AI~$--il;
	< 	YGD!  	<T--{;F	<s   B B('B(c                4   g }t         j                  j                  d| j                  j                        }|j                  |       | j                  j                         }| j                  j                  |d<   | j                  j                  r| j                  j                  |d<   |d= | j                  j                  ||      }| j                  j                  ||       |j                  | j                  d|||             | j                  j                  | j                  j                  r| j                  j                  |d<   |j                  | j                  d|||             d	D ]=  }	 t!        | j                  || j                  j                  j#                  |             ? | j                  j                  j&                  | j                  _        t)        | j                  d
d       }|rQ|j+                  d      dk7  r=t-        |j+                  d            }	|j                  | j                  |	|||             t)        | j                  dd       }
|
#|j                  | j                  d|||             |S # t$        $ r Y #w xY w)Nr   rV  passwordr5  r  r   become_passr&   )become_userbecome_flags
become_exer  _sub_plugintypeexternalobjr  )r   r   r   r\   r   extendrV   r   rX   rV  r  _resolve_option_variablesr  r  r&   r  r   
get_optionKeyErrorpromptr   r   r   )r7   r   r   varnamesr  r  r  optionsubr  sub_conns              r<   rH  z$TaskExecutor._set_connection_options+  sH     hh..|T=M=M=X=XY$JJ))+	  $1199	)&&
 %)$6$6$?$?Ij! i  &&@@GT$$yk$R00)WiXY"".!!--
 ,0+=+=+I+I	-(OOD44Xy'S\]^ W D..8H8H8O8O8Z8Z[a8bc
 )-(8(8(?(?(F(FD% d&&t<3776?j0*3775>:KOOD44[)WV_`a4++_dCOOD44_iQXZcde   s   7:J

	JJc                *    | j                  |      d   S )zX
        Returns the correct action plugin to handle the requestion task action
        r   )rK  )r7   r   s     r<   ra  z TaskExecutor._get_action_handlerf  s     ;;GDQGGr=   c           
        | j                   j                  j                  d      \  }}}|j                  d      d   }|rdj	                  ||      }n|}| j                   j
                  }| j                  j                  j                  | j                   j                  |      }|j                  r|j                  sd}||j                  }	n| j                  j                  j                  | j                   j                  |      r| j                   j                  }	nt        |t        j                  v | j                  j                  j                  ||      f      rS|}	t         j#                  dj	                  |	| j                   j                        | j$                  j&                  	       nd
}	d}t)        | j*                  j,                  xr t        j.                  | j*                  j0                  f      ro| j                  j                  j3                  |	d      }
t5        |
dd      r"| j*                  j7                  d      | j$                  _        t         j#                  d| j$                  j&                  	       t         j#                  d| j*                  j:                  z  | j$                  j&                  	       | j*                  j=                         }t?        | j$                  || j                   j@                        }t         j#                  d|z  | j$                  j&                  	       tC        | j*                  d|       n| jE                  i |d      | _        | j                  j                  j3                  |	| j                   | j*                  | j$                  | jF                  || j                  |      }|stI        d|	z        ||fS )zo
        Returns the correct action plugin to handle the requestion task action and the module context
        r  _r   z{0}.{1})collection_listNz1Using network group action {handler} for {action})handlerr   ra   zansible.legacy.normalT)
class_only_requires_connectionpersistent_command_timeoutzattempting to start connectionzusing connection plugin %szlocal domain socket path is %s_socket_pathlocal)rb   r   rd   rf   r   rg   r  zthe handler '%s' was not found)%rV   r   
rpartitionsplitformatcollectionsr[   module_loaderfind_plugin_with_contextresolvedaction_pluginr  
has_pluginallr   NETWORK_GROUP_MODULESr|   r  rX   r=  anyr\   supports_persistenceUSE_PERSISTENT_CONNECTIONSforce_persistencer   r   r  rV  	transportget_optionsstart_connectionr   r   rF  rZ   r   )r7   r   module_collection	separatormodule_namemodule_prefixnetwork_actionr  modulehandler_namehandler_classr  socket_pathr  s                 r<   rK  z4TaskExecutor._get_action_handler_with_module_contextl  sY    59JJ4E4E4P4PQT4U19k#))#.q1 '--.?ON*Njj,, ((66OOJJ{ P 
 f&:&:F!//L$$22==djj>O>Oal=m::,,L-1#:#::D<S<S<a<a<l<lm{  NY<l  =Z  [  \)LLLLSS\h[_[e[e[l[l T n"00<<  >
 3LK !!66W1;W;WZ^ZjZjZ|Z|}~ !33AAEEl_cEdM}&<dC-1-=-=-H-HIe-f""*=DDVDVDbDbc9D<L<L<V<VV]a]o]o]{]{|**668.t/A/A7DJJL\L\]=KRVRdRdRpRpq((.+F $(#7#7GW#M ))77;;''++<<"55' < 	
 ?,NOOr=   rT   )r?   r@   rA   __doc__r6   r   r   r   r  r   r^  r  rF  rG  r  rH  ra  rK   r=   r<   r(   r(   V   s\    mL^.`l\
-Tlm ^>"EH*9vHFr=   zansible_connection_cli_stub.pyc           
        t         j                  j                         }|j                  t	        j
                         t        j
                         t        t         j                  j                  t        j                              t        j
                         t        j
                         t        j
                         t        j
                         d       g }t         j"                  r%|j%                  ddt         j"                  z  z         t&        j(                  j+                  d      x}s=t-        t/        j0                  t2        j4                        j6                  t8        z        }t;        j<                  t>        j@                  |g|tC        t        jD                               tC        |      t:        jF                  t:        jF                  t:        jF                  |      }tI        |jJ                  |       tI        |jJ                  | jM                                |jO                         \  }}|jP                  dk(  r!tS        jT                  tC        |d            }	n!	 tS        jT                  tC        |d            }	d
|	v r|	d
   D ]  \  }
}|
dk(  rt         j!                  |d       #|
dv r# t[        t         |
      || j\                         Jt_        t         |
      r t[        t         |
      |       qt         ja                  || j\                          d	|	v r_t         j"                  dkD  r>|	jc                  d      r-d|	d   z   }t         j!                  |t&        jd                         tg        |	d	         |	d   S # tR        jV                  jX                  $ r d	tC        |d      i}	Y 4w xY w)z*
    Starts the persistent connection
    )ANSIBLE_BECOME_PLUGINSANSIBLE_CLICONF_PLUGINSANSIBLE_COLLECTIONS_PATHANSIBLE_CONNECTION_PLUGINSANSIBLE_HTTPAPI_PLUGINSANSIBLE_NETCONF_PLUGINSANSIBLE_TERMINAL_PLUGINSz-%srQ   _ANSIBLE_CONNECTION_PATH)stdinr   stderrenvr   rz   rw   errormessageslogT)log_only)r   rQ   vvvvvr  vvvvvvvvvvvr     r   zThe full traceback is:
)colorr  )4r  environr   r   r   print_pathsr   r   pathsepjoinr   collection_pathsr   r   r   r   r|   	verbosityr   r   r   get_config_valuestrr,   r-   r   r.   r/   CLI_STUB_NAME
subprocessPopenrI  rJ  r   r  PIPEr   r  	serializecommunicate
returncodejsonloadsdecoderJSONDecodeErrorr   r=  hasattrr  r   COLOR_ERRORr   )rd   r  r  r  r  cli_stub_pathpr   r  r$  levelr8   rp   s                r<   r  r    s   
 **//
CJJ
 #0";";"=#1#=#=#?$-bjjoo>U>f>f.g$h&7&C&C&E#1#=#=#?#1#=#=#?$3$?$?$A  I#(9(9"9:;XX667QRRMRGLL)9)9:AAMQR	^^GBJJL4I^7S\K]^oojoojooSV	A
 AGGW%AGG\3356}}VV||qGF3KLM	QZZ7O PQF V$Z0 		INE7~$7PP''l6N6NO7E*+GGU+G4LL|/G/GLH		I &q zz+&06+3FF1==96'?++-  - ||++ 	Qwv6NOPF	Qs   ) N ,N>=N>)M
__future__r   r  r   r  r,   rW  r  rI  r   ansibler   r   ansible.clir   ansible.errorsr   r   r   r	   r
   r   ansible.executor.task_resultr   ansible.executor.module_commonr   )ansible.module_utils.parsing.convert_boolr   ansible.module_utils.sixr   +ansible.module_utils.common.text.convertersr   r   ansible.module_utils.connectionr   r   ansible.playbook.conditionalr   ansible.playbook.taskr   ansible.pluginsr   ansible.plugins.loaderr   r   r   r   r   r   ansible.templater   ansible.utils.collection_loaderr   ansible.utils.listifyr   ansible.utils.unsafe_proxyr    r!   ansible.vars.cleanr"   r#   ansible.utils.displayr$   ansible.utils.varsr%   r|   MAGIC_VARIABLE_MAPPINGrJ   RETURN_VARS__all__BaseExceptionr*   rE   rK   r(   r  r  )xs   0r<   <module>r+     s    # 	      
  "  V  V 3 H = 0 J ; 1 4 & , E  E $ C = ? ; ) +
) 2288:eQha>OT[cdTdqe
8} 8(.\ \~" 1?!a$ fs   "	D,D1D