
    Vhc-              	         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
Z
d dlZd dlZd dlZd dlmZmZ  ej"                  dej$                  j'                  e      z          ej                  ej*                  ddj-                  ej.                  dd       z          ej0                         \  ZZdad	 Zdd
Zd Zd Zd Z d Z!d Z"d Z#d Z$e%dk(  r e$        yy)    )annotationsN)to_textto_bytesz
ansible-%szInvoked with %s     c                L    t        j                   t         j                  |        y N)syslog
LOG_NOTICE)msgs    M/home/dcms/DCMS/lib/python3.12/site-packages/ansible/modules/async_wrapper.pynoticer   !   s    
MM&##S)    c                    | t        t        j                  |              t        j                  j                          t        j                  |       y r
   )printjsondumpssysstdoutflushexit)resexit_msgs     r   endr   %   s3    
djjoJJHHXr   c                    	 t        j                         } | dkD  r
t                t        j                          t        j                  t        dd             	 t        j                         } | dkD  r
t                t        d	d
      }t        j                  |j                         t        j                  j                                t        j                  |j                         t        j                  j                                t        j                  |j                         t        j                   j                                y # t        $ rC t	        j
                         d   }t        d|j                  |j                  fz  ddd       Y ow xY w# t        $ rC t	        j
                         d   }t        d|j                  |j                  fz  ddd       Y gw xY w)Nr   r   zfork #1 failed: %d (%s)
T)r   failed022   zfork #2 failed: %d (%s)
z	/dev/nullw)osforkr   OSErrorr   exc_infoerrnostrerrorsetsidumaskintopendup2filenostdinr   stderr)pidedev_nulls      r   daemonize_selfr2   ,   sZ   ]ggi7E IIKHHS]]ggi7E
 K%HGGHOOsyy//12GGHOOszz0023GGHOOszz0023+  ]LLN1/177AJJ2GGSWXZ[\]  ]LLN1/177AJJ2GGSWXZ[\]s%   #E	 #F 	AFFAG$#G$c                   g }| j                         }t        |      D ](  \  }}|j                         }|j                  d      s( n t	        d      ||d }t        t        |            D ]&  \  }}|j                         j                  d      s& n t	        d      |dkD  r4|t        |      |z
  d }|j                  ddj                  |      z         |dt        |      |z
   }dj                  |      |fS )	a\  
    Used to filter unrelated output around module JSON output, like messages from
    tcagetattr, or where dropbear spews MOTD on every single command (which is nuts).

    Filters leading lines before first line-starting occurrence of '{', and filter all
    trailing lines after matching close character (working from the bottom of output).
    {zNo start of json char foundN}zNo end of json char foundr   z2Module invocation had junk after the JSON data: %s
)

splitlines	enumeratestrip
startswith
ValueErrorreversedendswithlenappendjoin)datawarningslinesstartlinereverse_end_offsettrailing_junks          r   _filter_non_json_linesrH   M   s    H OOE ' 8tzz|??4 8
 677 %&ME$-huo$> 6 D::<  &6 455A c%j+==>?LtyyYfOggh4CJ!335EIIeh''r   c                    t        | d      5 }|j                  d      }|dd dk7  r
	 d d d        y |d|j                  d       j                         j	                  d      cd d d        S # 1 sw Y   y xY w)Nrbi   r      s   #!   
    )r*   readindexr9   split)module_path	module_fdheads      r   _get_interpreterrT   u   su    	k4	  =I~~d#!9= = Adjj'(..066t<	= = =s   A+0A++A4c                    	 t        j                  |        y # t        $ r(}|j                  t        j                  k7  r Y d }~y d }~ww xY wr
   )r!   makedirsr#   r%   EEXIST)pathr0   s     r   _make_temp_dirrY   }   s;    
D 77ell" #s    	A	AA	c           	        t         dz   }t        |d      }	 |j                  t        j                  |              	 |j                          t        j                  |t                y # t
        t        f$ r!}t        d|dt        |             |d }~ww xY w# |j                          t        j                  |t                w xY w)Nz.tmpr    zfailed to write to z: )job_pathr*   writer   r   IOErrorr#   r   strcloser!   rename)infojobfiletjobr0   s       r   jwriterd      s    GD%

4::d#$
 	


		'8$ W gs1v>? 	


		'8$s#   $A' 'B6BBB ,Cc           
        t        dd|d       i }t        j                  d       t        j                          d}d}d}	 t	        j
                  |       D cg c]  }t        |d       }}t        |d         }|r||z   }t        j                  |t        j                  t        j                  t        j                  ddd	d
      }	|	j                         \  }}t        |      \  }}
t        j                  |      }|
r;|j                  dg       }t!        |t"              s|g}|j%                  |
       ||d<   |r||d<   t        |       y c c}w # t&        t(        f$ r; t+        j,                         d   }d| t/        |      ||d}||d<   t        |       Y y t0        t2        f$ r- d| ||t5        j6                         d}||d<   t        |       Y y w xY w)Nr   r   )startedfinishedansible_job_idTr   surrogate_or_strict)errorsFzutf-8surrogateescape)r-   r   r.   shelltextencodingrj   rB   r.   )r   cmdr   outdatar.   rh   )r   ro   rA   r.   r   )rd   ipc_notifiersendr_   shlexrP   r   rT   
subprocessPopenPIPEcommunicaterH   r   loadsget
isinstancelistextendr#   r]   r   r$   r   r;   	Exception	traceback
format_exc)wrapped_cmdjidresultrp   filtered_outdatar.   cro   interpreterscriptjson_warningsmodule_warningsr0   s                r   _run_moduler      s   
qa3?@F dGF9BG++kBZ[Qx"78[[ 's1v.#C!!//????$	
 #..0&,B7,K)	=,-$jjR8Oot4#2"3""=1!0F:%F8vC \F W 
LLN11:
 $' v	" 	'')
 $' v	s,   E E-C#E E AG8GGc            
     	   t        t        j                        dk  rt        dddd       dt        j                  d   t	        j
                         fz  } t        j                  d   }t        j                  d   }t        j                  d	   }d
t        j                  j                  |      vrd}n5t        t        j                        dkD  rt        j                  d   dk(  }nd}|dk7  r|d|}n|}d}t        j                  j                  dd      }t        j                  j                  |      }t        j                  j                  ||       a	 t        |       	 t	        j$                         }
|
r[t&        j)                          d}|dkD  rt*        j-                  d      rn|dz
  }!t/        d       t        ddd| t        | dd       y t*        j)                          t1                t/        d       t	        j$                         }|rt*        j)                          t&        j)                          t3        |      }t	        j4                  ||       t/        d|d|d       t7        j8                  |       t	        j:                  |t        j<                        dk(  rt/        |d|d       t7        j8                  |       ||z
  }|dk  rdd|d }t?        |       t/        d!|z         t	        j@                  |tB        jD                         t/        d"|z         t7        j8                  d       |s3tG        jH                  t        j                  j                  |      d       t        |       t	        j:                  |t        j<                        dk(  rt/        d#       |s3tG        jH                  t        j                  j                  |      d       t                y t/        d$t	        j
                         z         tK        ||        t/        d%t	        j
                         z         y # t        $ rE}	t        dd|dt        |	      t        t!        j"                               dd       Y d }	~	(d }	~	ww xY w# t        $ r*}	t/        d&|	z         t        dd'|	z  dd(       Y d }	~	y d }	~	ww xY w))N   Tzpusage: async_wrapper <jid> <time_limit> <modulescript> <argsfile> [-preserve_tmp]  Humans, do not call directly!)r   r   r   z%s.%drK         z-tmp-z-preserve_tmpF_r   ANSIBLE_ASYNC_DIRz~/.ansible_asynczcould not create directory: z - )r   r   	exception   r   g?z"Return async_wrapper task started.)r   rf   rg   rh   results_file_ansible_suppress_tmpdir_deletezStarting module and watcherzStart watching z ())r   r   z still running (zTimeout exceeded)r   r   	child_pidzTimeout reached, now killing %szSent kill to group %s zDone in kid B.zStart module (%s)zModule complete (%s)z	error: %szFATAL ERROR: %sz async_wrapper exited prematurely)&r>   r   argvr   r!   getpidrX   dirnameenvironry   
expanduserr@   r[   rY   r}   r   r~   r   r"   rq   r_   ipc_watcherpollr   r2   r)   setpgidtimesleepwaitpidWNOHANGrd   killpgsignalSIGKILLshutilrmtreer   )r   
time_limitwrapped_moduleargsfilepreserve_tmpro   step	async_dirjobdirr0   r/   retriessub_pid	remainingr   s                  r   mainr      s   
388}q3
 		 SXXa["))+.
.C!JXXa[Nxx{Hbggoon55	SXX	xx{o53'2D

24FGI WW	*Fww||FC(HvR`ggi   GA+##C(%kG781Sbj9E5EHIJL   01ggiG!!#""$  
O	 

7G,7IFG

4 jj"**5?gyIJJJt$ )D 0I A~&8DW^_s @GLM		'6>>:7'AB

1+"MM"''//.*I4PC! jj"**5?" '(#MM"''//."A4H *RYY[89C%-		;<q  <BGAJO !5!5!78
 		 	t  `{Qt$5$9:<^__`sF   Q %A0R GR +A
R 6AR 	R:RR	S SS__main__)Nr   )&
__future__r   r%   r   rs   r   r!   rt   r   r~   r   r   r   multiprocessing+ansible.module_utils.common.text.convertersr   r   openlogrX   basename__file__r   r@   r   Piper   rq   r[   r   r   r2   rH   rT   rY   rd   r   r   __name__ r   r   <module>r      s    #     	  
      I |bgg..x88 9 f!2SXXchhqrl5K!K L 1O002 \*4B%(P=%GT~`B zF r   