
    VhU                    L   d dl mZ 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
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m Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z&  e&       Z' G d deejP                        Z)ddZ*e+dk(  r e*        yy)    )annotations)CLIN)	constants)context)option_helpers)TaskQueueManager)	to_nativeto_text)boolean)parse_kv)Play)list_plugins)module_loaderfragment_loader)plugin_docs)stringc)Displayc                      e Zd ZdZdZg ZddiZej                  xs ej                  Z
 fdZ fdZ fdZd Zd	 Zd
 Zd Zd5dZd Zd Zd Zd Zd Zd ZeZ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 Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d' Z/d( Z0d) Z1d* Z2d+ Z3d, Z4d- Z5e4Z6e5Z7d. Z8d/ Z9d0 Z:d1 Z;d2 Z< fd3Z=d4 Z> xZ?S )6
ConsoleCLIa  
       A REPL that allows for running ad-hoc tasks against a chosen inventory
       from a nice shell with built-in tab completion (based on dominis'
       ``ansible-shell``).

       It supports several commands, and you can modify its configuration at
       runtime:

       - ``cd [pattern]``: change host/group
         (you can use host patterns eg.: ``app*.dc*:!app01*``)
       - ``list``: list available hosts in the current path
       - ``list groups``: list groups included in the current path
       - ``become``: toggle the become flag
       - ``!``: forces shell module instead of the ansible module
         (``!yum update -y``)
       - ``verbosity [num]``: set the verbosity level
       - ``forks [num]``: set the number of forks
       - ``become_user [user]``: set the become_user
       - ``remote_user [user]``: set the remote_user
       - ``become_method [method]``: set the privilege escalation method
       - ``check [bool]``: toggle check mode
       - ``diff [bool]``: toggle diff mode
       - ``timeout [integer]``: set the timeout of tasks in seconds
         (0 to disable)
       - ``help [command/module]``: display documentation for
         the command or module
       - ``exit``: exit ``ansible-console``
    zansible-consolezhost-patternzA name of a group in the inventory, a shell-like glob selecting hosts in inventory or any combination of the two separated by commas.c                h   t         t        |   |       d| _        g | _        g | _        d | _        d | _        d | _        t               | _
        d| _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        t*        j,                  j                  |        y )NzAWelcome to the ansible console. Type help or ? to list commands.
*)superr   __init__introgroupshostspatternvariable_managerloaderdict	passwordscwdremote_userbecomebecome_userbecome_method
check_modediffforkstask_timeoutcollectionscmdCmd)selfargs	__class__s     C/home/dcms/DCMS/lib/python3.12/site-packages/ansible/cli/console.pyr   zConsoleCLI.__init__K   s    j$(.Y

 $  !	
     c                   t         t        |   dd       t        j                  | j
                         t        j                  | j
                         t        j                  | j
                         t        j                  | j
                         t        j                  | j
                         t        j                  | j
                         t        j                  | j
                         t        j                  | j
                         t        j                  | j
                         t        j                  | j
                         | j
                  j                  ddddd       | j
                  j                  d	d
dd       y )Nz)REPL console for executing Ansible tasks.zgThis is not a live session/connection: each task is executed in the background and returns its results.)descepilogr   zhost patternall?)helpmetavardefaultnargsz--stepstep
store_truez4one-step-at-a-time: confirm each task before running)destactionr8   )r   r   init_parseropt_helpadd_runas_optionsparseradd_inventory_optionsadd_connect_optionsadd_check_optionsadd_vault_optionsadd_fork_optionsadd_module_optionsadd_basedir_optionsadd_runtask_optionsadd_tasknoplay_optionsadd_argument)r.   r0   s    r1   r@   zConsoleCLI.init_parserg   s   j$+<| 	, 	
 	""4;;/&&t{{3$$T[[1""4;;/""4;;/!!$++.##DKK0$$T[[1$$T[[1''4 	  \ail m  |&\ 	! 	^r2   c                    t         t        |   |      }|j                  t        _        | j                  |dd       |S )NT)
runas_opts	fork_opts)r   r   post_process_args	verbositydisplayvalidate_conflicts)r.   optionsr0   s     r1   rQ   zConsoleCLI.post_process_args|   s<    
D;GD#--DDIr2   c                    t        |       S N)dirr.   s    r1   	get_nameszConsoleCLI.get_names   s    4yr2   c                    	 t         j                  j                  |        y # t        $ r | j                          Y y t        $ r% | j                  d       | j                  |        Y y w xY w)Nz[Ansible-console was exited])r,   r-   cmdloopKeyboardInterruptEOFErrorrS   do_exitrY   s    r1   r\   zConsoleCLI.cmdloop   sP    	GGOOD!  	LLN 	LL78LL	s   " A**A*)A*c                   | j                   xs t        j                         }| j                  j	                  | j
                        | _        d|| j
                  t        | j                        | j                  fz  }| j                  r$| j                  dv r|dz  }t        j                  }n|dz  }| j                  }t        ||d      | _        y )Nz%s@%s (%d)[f:%s])Nrootz# z$ T)wrap_nonvisible_chars)r#   getpassgetuser	inventory
list_hostsr"   selectedlenr)   r$   r%   CCOLOR_ERRORNORMAL_PROMPTr   prompt)r.   
login_userrl   colors       r1   
set_promptzConsoleCLI.set_prompt   s    %%:):
11$((;#z488S=OQUQ[Q[&\\;;4++~=dNFMMEdNF&&Efe4Hr2   c                .    t        d| j                        S )Nmodule)r   r+   rY   s    r1   list_moduleszConsoleCLI.list_modules   s    Hd&6&677r2   c                Z   |j                  d      ry| j                  st        j                  d       yd}|}|dur?|j	                         ^}}t        j                  |      r|}|rdj                  |      }nd}| j                  r| j                  }n6t        j                  r$t        j                  dk7  rt        j                  }nd	}d
}	 |t        j                  v }	t        t        |t        ||	            | j                        }
t        d| j                  d|
g| j                   | j"                  | j$                  | j&                  | j(                  | j*                  | j,                        }t/               j1                  || j2                  | j4                        }	 d
| _        	 t=        | j>                  | j2                  | j4                  | j@                  |t        j                  d| jB                        | _        | j:                  jE                  |      }t        jG                  |       | j:                  r| j:                  jI                          | j4                  r| j4                  jK                          	 |t        j                  d       yy
# t6        $ r+}t        j                  dt9        |      z         Y d
}~yd
}~ww xY w# | j:                  r| j:                  jI                          | j4                  r| j4                  jK                          w w xY w# tL        $ r t        j                  d       Y yt6        $ r^}| jN                  dk\  r'dd
l(}t        jS                  |jU                                t        j                  t9        |             Y d
}~yd
}~ww xY w)z actually runs modules #FzNo host foundshellT  r:   minimalN)	check_raw)rq   r/   )r?   timeoutzAnsible Shellno)namer   gather_factstasksr#   r$   r%   r&   r'   r(   r+   )r   r   zUnable to build command: %s)re   r   r   r!   stdout_callbackrun_additional_callbacksrun_treer)   zNo hosts foundzUser interrupted execution   r   )+
startswithr"   rS   errorsplitr   find_pluginjoincallbackri   DEFAULT_LOAD_CALLBACK_PLUGINSDEFAULT_STDOUT_CALLBACK_ACTION_ALLOWS_RAW_ARGSr    r   r*   r#   r$   r%   r&   r'   r(   r+   r   loadr   r   	Exceptionr
   _tqmr   re   r!   r)   rundebugcleanupcleanup_all_tmp_filesr]   rR   	tracebackv
format_exc)r.   line
forceshellrq   module_argspossible_modulepossible_argscbresultry   taskplay_dsplayer   s                  r1   r:   zConsoleCLI.default   s   ??3xxMM/* T!.2jjl+Om((9( "%((="9K"$K==B,,1J1Ji1W**BB	!";";;It6Xa8bcmqm~m~D$hh!f ,,{{ ,,"00??YY ,,G 6;;w9N9NW[WbWb;cD
"	DI8,"nn%)%:%:;;"nn$&-.-L-L"**		 t,f%99II%%';;KK557~./ 7  	MM871:EF	, 99II%%';;KK557  ! 	MM67 	~~" 		)..01MM'!*%	sS   CJ %L$ -BK 5A$L$ 	K$!K

KAL!!L$ $N*N*AN%%N*c                     y rW    rY   s    r1   	emptylinezConsoleCLI.emptyline   s    r2   c                (    | j                  |d       y)a  
        You can run shell commands through the shell module.

        eg.:
        shell ps uax | grep java | wc -l
        shell killall python
        shell halt -n

        You can use the ! to force the shell module. eg.:
        !ps aux | grep java | wc -l
        TNr:   r.   args     r1   do_shellzConsoleCLI.do_shell   s     	S$r2   c                .    t         j                  d       y )Nz4You can run shell commands through the shell module.rS   rY   s    r1   
help_shellzConsoleCLI.help_shell  s    NOr2   c                   |r?	 t        |      }dkD  r|| _        | j                          yt        j                  d       y| j	                          y# t        $ r( t        j                  d       | j	                          Y tw xY w)zSet the number of forkszInvalid argument for "forks"r   z(forks must be greater than or equal to 1N)int	TypeErrorrS   r   usage_forksr)   ro   )r.   r   r)   s      r1   do_forkszConsoleCLI.do_forks  sr    #C
 qy"
!  JK  #<=  "#s   A .BBc                N    t         j                  d       | j                          y )Nz'Set the number of forks to use per task)rS   r   rY   s    r1   
help_forkszConsoleCLI.help_forks  s    ABr2   c                .    t         j                  d       y )NzUsage: forks <number>r   rY   s    r1   r   zConsoleCLI.usage_forks!  s    /0r2   c                   |dv rd| _         ng|s| j                          nT|j                  d      }|D ]>  }| j                   g | _         | j                   j                  |j	                                @ | j                   r2t
        j                  ddj                  | j                         z         yt
        j                  d       y)z.Set list of collections for 'short name' usage)rw   noneN,z%Collections name search is set to: %sz, z)Collections name search is using defaults)r+   usage_collectionsr   appendstriprS   r   r   )r.   r   r+   
collections       r1   do_collectionszConsoleCLI.do_collections'  s    ,#D""$))C.K) <
##+')D$  ''
(8(8(:;<
 II=		$JZJZ@[[\IIABr2   c                N    t         j                  d       | j                          y )NzFSet the collection name search path when using short names for plugins)rS   r   rY   s    r1   help_collectionszConsoleCLI.help_collections9  s    `a r2   c                .    t         j                  d       y )NzgUsage: collections <collection1>[, <collection2> ...]
 Use empty quotes or "none" to reset to default.
r   rY   s    r1   r   zConsoleCLI.usage_collections=  s      D  	Er2   c                   |st         j                  d       y	 t        |      t         _        t         j                  d|z         y# t        t
        f$ r+}t         j                  dt        |      z         Y d}~yd}~ww xY w)zSet verbosity levelzUsage: verbosity <number>zverbosity level set to %sz)The verbosity must be a valid integer: %sN)rS   r   rR   r   r   
ValueErrorr   r
   )r.   r   r   s      r1   do_verbosityzConsoleCLI.do_verbosity@  sg    OO78X$'H!		5;<z* XIGTUJVWWXs   ,A B!A<<Bc                .    t         j                  d       y )Nz@Set the verbosity level, equivalent to -v for 1 and -vvvv for 4.r   rY   s    r1   help_verbosityzConsoleCLI.help_verbosityK  s    Z[r2   c                    |sd| _         nD|dv rd| _         n8| j                  j                  |      r|| _         nt        j                  d       | j	                          y)a  
            Change active host/group. You can use hosts patterns as well eg.:
            cd webservers
            cd webservers:dbservers
            cd webservers:!phoenix
            cd webservers:&staging
            cd webservers:dbservers:&staging:!phoenix
        r   z/*r6   zno host matchedN)r"   re   	get_hostsrS   ro   r   s     r1   do_cdzConsoleCLI.do_cdN  sL     DHD[DH^^%%c*DHOO-.r2   c                N    t         j                  d       | j                          y )NzChange active host/group. )rS   usage_cdrY   s    r1   help_cdzConsoleCLI.help_cdb  s    45r2   c                .    t         j                  d       y )Nz'Usage: cd <group>|<host>|<host pattern>r   rY   s    r1   r   zConsoleCLI.usage_cdf  s    ABr2   c                   |s1| j                   D ]!  }t        j                  |j                         # y|dk(  r'| j                  D ]  }t        j                  |        yt        j	                  d       | j                          y)z#List the hosts in the current groupr   zInvalid option passed to "list"N)rg   rS   r|   r   r   	help_list)r.   r   hostgroups       r1   do_listzConsoleCLI.do_listi  sg     +		*+H_ '&' MM;<NNr2   c                .    t         j                  d       y )NzLList the hosts in the current group or a list of groups if you add 'groups'.r   rY   s    r1   r   zConsoleCLI.help_listu  s    fgr2   c                    |rEt        |d      | _        t        j                  d| j                  z         | j	                          yt        j                  d       y)z$Toggle whether plays run with becomeFstrictzbecome changed to %sz.Please specify become value, e.g. `become yes`N)r   r$   rS   r   ro   r   s     r1   	do_becomezConsoleCLI.do_becomex  s@    !#e4DKII,t{{:;OOOOLMr2   c                .    t         j                  d       y )Nz,Toggle whether the tasks are run with becomer   rY   s    r1   help_becomezConsoleCLI.help_become  s    FGr2   c                b    |r|| _         | j                          yt        j                  d       y)z6Given a username, set the remote user plays are run byz5Please specify a remote user, e.g. `remote_user root`N)r#   ro   rS   r   s     r1   do_remote_userzConsoleCLI.do_remote_user  s$    "DOOOOSTr2   c                .    t         j                  d       y )Nz2Set the user for use as login to the remote targetr   rY   s    r1   help_remote_userzConsoleCLI.help_remote_user  s    LMr2   c                    |r|| _         n7t        j                  d       t        j                  d| j                   z         | j                          y)zFGiven a username, set the user that plays are run by when using becomez1Please specify a user, e.g. `become_user jenkins`zCurrent user is %sN)r%   rS   r   ro   r   s     r1   do_become_userzConsoleCLI.do_become_user  s<    "DOOOPII*T-=-==>r2   c                .    t         j                  d       y )NznSet the user for use with privilege escalation (which remote user attempts to 'become' when become is enabled)r   rY   s    r1   help_become_userzConsoleCLI.help_become_user  s      I  	Jr2   c                    |r*|| _         t        j                  d| j                   z         yt        j                  d       t        j                  d| j                   z         y)zLGiven a become_method, set the privilege escalation method when using becomezbecome_method changed to %sz7Please specify a become_method, e.g. `become_method su`zCurrent become_method is %sN)r&   rS   r   r   s     r1   do_become_methodzConsoleCLI.do_become_method  sJ    !$DII3d6H6HHIOOUVII3d6H6HHIr2   c                .    t         j                  d       y )NzASet the privilege escalation plugin to use when become is enabledr   rY   s    r1   help_become_methodzConsoleCLI.help_become_method  s    [\r2   c                    |r5t        |d      | _        t        j                  d| j                  z         yt        j                  d       t        j                  d| j                  z         y)z(Toggle whether plays run with check modeFr   zcheck mode changed to %sz1Please specify check mode value, e.g. `check yes`zcheck mode is currently %s.N)r   r'   rS   r   r   s     r1   do_checkzConsoleCLI.do_check  sL    %c%8DOOO6HIOOOPII3dooEFr2   c                .    t         j                  d       y )NzToggle check_mode for the tasksr   rY   s    r1   
help_checkzConsoleCLI.help_check  s    9:r2   c                    |r5t        |d      | _        t        j                  d| j                  z         yt        j                  d       t        j                  d| j                  z         y)z"Toggle whether plays run with diffFr   zdiff mode changed to %sz-Please specify a diff value , e.g. `diff yes`zdiff mode is currently %sN)r   r(   rS   r   r   s     r1   do_diffzConsoleCLI.do_diff  sL    E2DIOO5		ABOOKLII1DII=>r2   c                .    t         j                  d       y )Nz Toggle diff output for the tasksr   rY   s    r1   	help_diffzConsoleCLI.help_diff  s    :;r2   c                   |r0	 t        |      }|dk  rt        j                  d       n|| _        yy| j                          y# t        t
        f$ r+}t        j                  dt        |      z         Y d}~yd}~ww xY w)zSet the timeoutr   z@The timeout must be greater than or equal to 1, use 0 to disablezAThe timeout must be a valid positive integer, or 0 to disable: %sN)r   rS   r   r*   r   r   r
   usage_timeout)r.   r   rz   r   s       r1   
do_timeoutzConsoleCLI.do_timeout  sy    pc(Q;MM"de(/D% f   z* padklmdnnoops   -A A>!A99A>c                N    t         j                  d       | j                          y )NzSet task timeout in seconds)rS   r   rY   s    r1   help_timeoutzConsoleCLI.help_timeout  s    56r2   c                .    t         j                  d       y )NzUsage: timeout <seconds>r   rY   s    r1   r   zConsoleCLI.usage_timeout  s    23r2   c                B    t         j                  j                  d       y)zExits from the consolez
Ansible-console was exited.
)sysstdoutwrite)r.   r/   s     r1   r_   zConsoleCLI.do_exit  s    

:;r2   c                .    t         j                  d       y )NzLEAVE!r   rY   s    r1   	help_exitzConsoleCLI.help_exit  s    !r2   c                   |rt        j                  |      }|rt        j                  |t              \  }}}}|rt
        j                  |d          t
        j                  d       |d   j                         D ]@  }t
        j                  dt        || j                        z   dz   |d   |   d   d   z          B y t
        j                  d|z         y t
        j                  d	|z         y y )
Nshort_descriptionzParameters:rU   z  rv   descriptionr   zNo documentation found for %s.z<%s is not a valid command, use ? to list all valid commands.)
r   r   r   get_docstringr   rS   keysr   rk   r   )r.   module_namein_pathoca_dummy1_dummy2opts           r1   helpdefaultzConsoleCLI.helpdefault  s    #//<G*5*C*CG_*]'AwOOB':$;<OOM2!)}113 ~wsD<N<N/O(ORU(UXZ[dXefiXjkxXyz{X|(|}~ MM"B["PQ\_jjk r2   c                .    t         j                  d       y )NzDon't be redundant!)rS   warningrY   s    r1   	help_helpzConsoleCLI.help_help  s    -.r2   c                   |j                  d      d   }t        |      t        |      z
  }| j                  dv r| j                  | j                  z   }n<| j
                  j                  | j                        D cg c]  }|j                   }}|D 	cg c]4  }	t        |	      j                  t        |            s't        |	      |d  6 c}	S c c}w c c}	w )Nrv      )r6   r   \)
	partitionrh   r"   r   r   re   rf   r|   r	   r   )
r.   textr   begidxendidxmlineoffscompletionsxss
             r1   complete_cdzConsoleCLI.complete_cd  s    s#A&5zCI%88))**t{{2K+/>>+D+DTXX+NOa166OKO-8fIaL<S<ST]^cTd<e	!TU#ff Pfs   ;C(C=Cc                >   |j                         d   | j                         v ru|j                  d      d   }t        |      t        |      z
  }| j                  |j                         d         }|D cg c]  }|j	                  |      s||d  dz    c}S y c c}w )Nr   rv   r   =)r   rr   rh   r   r   )	r.   r  r   r  r  r  r  r  r  s	            r1   completedefaultzConsoleCLI.completedefault  s    ::<?d//11JJsOB'Eu:D	)D**4::<?;K,7Oq1<<;NAdeHsNOO 2
 Ps   5B
Bc                    t        j                  |      }t        j                  |t        d      \  }}}}t        |d   j                               S )NT)	is_modulerU   )r   r   r   r   r   listr   )r.   r   r   r   r   r  r  s          r1   r   zConsoleCLI.module_args  sH    ++K8"-";";G_`d"eAwByM&&())r2   c                h    t         t                   d }d }t        j                  d    _         j
                   _        t        j                  d    _        t        j                  d    _        t        j                  d    _	        t        j                  d    _
        t        j                  d    _        t        j                  d    _        t        j                  d    _        t        j                  d	    _        t        j                  d
   r0t        j                  d
   D ]  }|st        j                   |         j#                          _         j$                  D ],  }t'         d|z   |f fd	       t'         d|z   |f fd	       .  j)                         \  }}||d _         j-                         \   _         _         _         j5                   j0                  t        j                  d    j
                        } j0                  j7                          _        |D cg c]  }|j:                   c} _        dt>        j@                  v rt?        jB                  d       nt?        jB                  d       tD        jF                  jI                  tD        jF                  jK                  d      d      }	 t?        jL                  |       tQ        jR                  t>        jT                  |        jW                           jY                          y c c}w # tN        $ r Y Uw xY w)Nr   r#   r$   r%   r&   checkr(   r)   r*   module_pathdo_c                2    j                  |dz   | z         S Nrv   r   r   rq   r.   s     r1   <lambda>z ConsoleCLI.run.<locals>.<lambda>'  s    T\\RX[^R^adRdEe r2   help_c                &    j                  |       S rW   r  rq   r.   s    r1   r"  z ConsoleCLI.run.<locals>.<lambda>(  s    $BRBRSYBZ r2   )	conn_passbecome_passsubsetlibeditzbind ^I rl_completeztab: complete~z.ansible-console_history)-r   r   r   r   CLIARGSr   r"   r#   r$   r%   r&   r'   r(   r)   r*   r   add_directoryrr   modulessetattrask_passwordsr!   _play_prereqsr   re   r   get_host_listlist_groupsr   r|   r   readline__doc__parse_and_bindospathr   
expanduserread_history_fileIOErroratexitregisterwrite_history_filero   r\   )	r.   sshpass
becomepassr8  rq   r   r  histfiler0   s	   `       r1   r   zConsoleCLI.run	  st   j$#%
 y1<< #??=9ooh/"??=9$___=!//'2OOF+	__W-
#OON; ??=)6 6!//56
 ((*ll 	\FD%&.V*efD'F*&,Z[	\ !% 2 2 4*'.zJ=A=O=O=Q:T^T%:""4>>7??83Ldll[nn002&+,aff,
 (((##$9:##O477<< 2 23 79ST	&&x0 	33X># -  		s   0L L% %	L10L1c                    d}|j                  d      rP|j                  dd      }t        j                  |      rt	         ||f fd	       t
        j                   |      }n`|j                  d      rO|j                  dd      }t        j                  |      r(t	         ||f fd	       t
        j                   |      }|t         j                   d| d      |S )	z[ handle not found to populate dynamically a module function if module matching name exists Nr  rw   c                2    j                  |dz   | z         S r   r   r!  s     r1   r"  z(ConsoleCLI.__getattr__.<locals>.<lambda>L  s    t||FUXL[^L^?_ r2   r#  c                &    j                  |       S rW   r%  r&  s    r1   r"  z(ConsoleCLI.__getattr__.<locals>.<lambda>Q  s    $:J:J6:R r2   z does not have a z
 attribute)	r   replacer   r   r/  object__getattr__AttributeErrorr0   )r.   r|   attrrq   s   `   r1   rG  zConsoleCLI.__getattr__E  s    ??5!\\%,F((0dv$_`))$5__W%\\'2.F((0d&$RS))$5< DNN#33DTF*!UVVr2   )F)@__name__
__module____qualname__r5  r|   r.  	ARGUMENTSri   COLOR_CONSOLE_PROMPTCOLOR_HIGHLIGHTrk   r   r@   rQ   rZ   r\   ro   rr   r:   r   r   r   r   r   r   	do_serialhelp_serialr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_   r   do_EOFhelp_EOFr  r  r  r  r   r   rG  __classcell__)r0   s   @r1   r   r   %   s\   : DG "s tI **?a.?.?M8^*	
I8Vp P$1 IKC$!E	X\(C
hNHUNJJ]G;?<!4
" FHl/	gP*
:xr2   r   c                .    t         j                  |        y rW   )r   cli_executor)r/   s    r1   mainrW  Z  s    D!r2   __main__rW   ),
__future__r   ansible.clir   r<  r,   rc   r4  r7  r   ansibler   ri   r   ansible.cli.argumentsr   rA   #ansible.executor.task_queue_managerr   +ansible.module_utils.common.text.convertersr	   r
   )ansible.module_utils.parsing.convert_boolr   ansible.parsing.splitterr   ansible.playbook.playr   ansible.plugins.listr   ansible.plugins.loaderr   r   ansible.utilsr   ansible.utils.colorr   ansible.utils.displayr   rS   r-   r   rW  rJ  r   r2   r1   <module>rg     s}    #   
   	 
 "  < @ J = - & - A % ' )
)rcgg rj" zF r2   