
    [j                     V    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  G d de          ZdS )    N   )ConfigExceptionc                        e Zd ZdZd ZddZdS )ExecProvidera,  
    Implementation of the proposal for out-of-tree client authentication providers
    as described here --
    https://github.com/kubernetes/community/blob/master/contributors/design-proposals/auth/kubectl-exec-plugins.md

    Missing from implementation:

    * TLS cert support
    * caching
    c                    dD ]}||vrt          d|z            |d         | _        |d         g| _        |                    d          r | j                            |d                    t
          j                                        | _        |                    d          r>i }|d         D ]}|d         }|d         }|||<   | j        	                    |           d S d S )	N)command
apiVersionz)exec: malformed request. missing key '%s'r	   r   argsenvnamevalue)
r   api_versionr
   safe_getextendosenvironcopyr   update)selfexec_configkeyadditional_varsitemr   r   s          d/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/kubernetes_asyncio/config/exec_provider.py__init__zExecProvider.__init__#   s   , 	I 	IC+%%%ACGI I I & '|4 +,	'' 	2I[0111:??$$&& 	- O#E* . .F|W(-%%HOOO,,,,,	- 	-    Nc                   K   t          t          j                              j        dk    rt	          d          | j        ddt          j                                        id}|r||d         d<   t          j
        |          | j        d<   t          j        | j        | j        d t          j        j        t          j        j        d	}| d {V }|j                                         d {V }|j                                         d {V }|                                 d {V }|d
k    r2d|z  }|                                }|r|d|z  z  }t	          |          	 t          j        |          }	n$# t*          $ r}
t	          d|
z            d }
~
ww xY wdD ]}||	vrt	          d|z            |	d         | j        k    r t	          d|	d         d| j                  |	d         S )N_WindowsSelectorEventLoopzLexec: _WindowsSelectorEventLoop does NOT support subprocesses, see README.mdExecCredentialinteractive)r	   kindspecr"   responseKUBERNETES_EXEC_INFO)r   stdinstdoutstderrr   zexec: process returned %dz. %sz)exec: failed to decode process output: %s)r	   r!   statusz*exec: malformed response. missing key '%s'r	   zexec: plugin api version z does not match r(   )typeasyncioget_event_loop__name__r   r   sysr&   isattyjsondumpsr   create_subprocess_execr
   
subprocessPIPEreadr'   waitstriploads
ValueError)r   previous_responsekubernetes_exec_infocmd_execprocr&   r'   	exit_codemsgdatader   s               r   runzExecProvider.run5   s{     &(())26QQQ!^  
 *$sz0022 
  
  	I7H (4+/:6J+K+K'(1496:h8<9@9K9P9@9K9P	R R R
 ~~~~~~{'')))))))){''))))))))))++%%%%%%	>>-	9C\\^^F 'v&!#&&&	B:f%%DD 	B 	B 	B!;b@B B B	B 4 	J 	JC$%BSHJ J J  !111!/l###T%5%578 8 8 H~s   "E7 7
FFF)N)r,   
__module____qualname____doc__r   rA    r   r   r   r      sA        	 	- - -$0 0 0 0 0 0r   r   )	r*   asyncio.subprocessr/   r   r-   config_exceptionr   objectr   rE   r   r   <module>rI      s          				 



 - - - - - -N N N N N6 N N N N Nr   