
    Cj                     h    S SK r S SKrS SKJrJr  S SKJr  S SKJr  SSK	J
r
JrJrJr   " S S5      rg)	    N)copyfilermtree)ContextException)	TLSConfig   )get_context_hostget_meta_dirget_meta_fileget_tls_dirc                       \ rS rSrSr  SS jr  SS jrS r\S 5       r	\S 5       r
S	 rS
 rS rS rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)Context   z
A context.Nc                 L   U(       d  [        S5      eXl        S U l        X l        0 U l        0 U l        SU l        SU l        U(       d,  U(       a  US:X  a  SOUnU[        X55      U(       + S.0U l        g UR                  5        H  u  px[        U[        5      (       d  [        SU SU 35      eXR                  U'   US:w  a  MA  UR                  S[        X55      5      U R                  U   S'   [        UR                  S	U(       + 5      5      U R                  U   S	'   M     g )
NzName not providedz	IN MEMORYswarmdockerHostSkipTLSVerifyz$Unknown endpoint format for context z: r   r   )	Exceptionnamecontext_typeorchestrator	endpointstls_cfg	meta_pathtls_pathr   items
isinstancedictr   getbool)	selfr   r   hostr   tlsdefault_endpointkvs	            h/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/docker/context/context.py__init__Context.__init__   s+   /00	 ($# !LG$;  (# 
 !,T7),W#DN  OO%DAa&&&:4&1#F  !"NN1H}()f6F7 )DNN1f%15aeeS7* 2+DNN1o. &    c                     [        X$(       + 5      US.U R                  U'   U(       a  XPR                  U   S'   U(       a  X0R                  U'   g g )Nr   DefaultNamespace)r   r   r   )r"   r   r#   r   skip_tls_verifydef_namespaces         r(   set_endpointContext.set_endpoint>   sM     %T+>?, 
t 7DNN4 !34!(LL r+   c                 "    U R                  5       $ N)__call__r"   s    r(   inspectContext.inspectK   s    }}r+   c                    [         R                  U5      nU(       aj  U " US   US   R                  SS 5      UR                  SS 5      S9nUS   R                  SS 5      Ul        UR	                  5         [        U5      Ul        U$ g )NNameMetadataStackOrchestrator	Endpoints)r   r   Type)r   
_load_metar    r   _load_certsr	   r   )clsr   metainstances       r(   load_contextContext.load_contextN   s    !!$'V!*-112EtL((;57H %)$4$8$8$FH!  "!-d!3HOr+   c                    [        U5      n[        R                  R                  U5      (       d  g 0 n [	        U5       n[
        R                  " U5      nS S S 5        US   R                  5        HV  u  pgUS:w  a  M  UR                  S[        S S5      5      US   U   S'   [        UR                  SS5      5      US   U   S'   MX     U$ ! , (       d  f       N}= f! [        [        [        4 a  n[        SU SU 35      UeS nAff = f)	Nz)Detected corrupted meta file for context z : r<   r   r   Fr   T)r
   ospathisfileopenjsonloadOSErrorKeyError
ValueErrorr   r   r    r   r!   )r@   r   	meta_filemetadatafer&   r'   s           r(   r>   Context._load_meta\   s   !$'	ww~~i((	iA99Q< ! [)//1DAH}/0uu(u507H[!!$V,8<ot,9.H[!!$_5 2 % !:. 	;D6QCH	s4   C CC 
CC C D
3DD
c                    0 n[        U R                  5      nU R                  R                  5        GH  n[        R
                  R                  [        R
                  R                  X#5      5      (       d  MG  S nS nS n[        R                  " [        R
                  R                  X#5      5       H  nUR                  S5      (       a"  [        R
                  R                  X#U5      nM;  UR                  S5      (       a"  [        R
                  R                  X#U5      nMs  UR                  S5      (       d  M  [        R
                  R                  X#U5      nM     [        XEU/5      (       d  GMD  S nUS:X  a&  U R                  S   R                  SS5      (       d  Sn[        XV4XHS9X'   GM     Xl        X l        g )	Ncacertkeyr   r   FT)client_certca_certverify)r   r   r   keysrF   rG   isdirjoinlistdir
startswithallr    r   r   r   )	r"   certstls_direndpointrY   rV   rW   filenamerZ   s	            r(   r?   Context._load_certsx   sR   dii(++-H77==g!@AAGDCJJrww||G'FG&&t,, ggll7hGG((0077<<8DD((//'',,w(CC H G3'((x'x0H0L0L'10 10!F"+!%W#M% .( r+   c                 J   [        U R                  5      n[        R                  R	                  U5      (       d  [        R
                  " U5        [        [        U R                  5      S5       nUR                  [        R                  " U R                  5      5        S S S 5        [        U R                  5      nU R                  R                  5        GH  u  pE[        R                  R	                  [        R                  R                  X45      5      (       d3  [        R
                  " [        R                  R                  X45      5        UR                   nU(       aG  [#        U[        R                  R                  X4[        R                  R%                  U5      5      5        UR&                  (       d  M  UR&                  u  px[#        U[        R                  R                  X4[        R                  R%                  U5      5      5        [#        U[        R                  R                  X4[        R                  R%                  U5      5      5        GM     [        U R                  5      U l        [        U R                  5      U l        g ! , (       d  f       GN= f)Nw)r	   r   rF   rG   r\   makedirsrI   r
   writerJ   dumpsr:   r   r   r   r]   rY   r   basenamerV   r   r   )	r"   meta_dirrQ   rb   rc   r$   ca_file	cert_filekey_files	            r(   saveContext.save   s   		*ww}}X&&KK!-		*C0AGGDJJt}}-. 1 dii(!\\//1MH77==g!@AABGGLL;<kkG"'',,rww'7'7'@#B C xxx&)hh#	BGGLLrww'7'7	'B%D E277<<rww'7'7'A$C D 2  &dii0#DII.+ 10s   /0J
J"c                    [         R                  R                  U R                  5      (       a  [	        U R                  5        [         R                  R                  U R
                  5      (       a  [	        U R
                  5        g g r3   )rF   rG   r\   r   r   r   r5   s    r(   removeContext.remove   sM    77==((4>>"77==''4==! (r+   c                 P    SU R                   R                   SU R                   S3$ )N<z: 'z'>)	__class____name__r   r5   s    r(   __repr__Context.__repr__   s&    4>>**+3tyyk<<r+   c                 H    [         R                  " U R                  5       SS9$ )N   )indent)rJ   rj   r4   r5   s    r(   __str__Context.__str__   s    zz$--/!44r+   c                     U R                   nUR                  U R                  5        UR                  U R                  5        U$ r3   )r:   updateTLSMaterialStorage)r"   results     r(   r4   Context.__call__   s2    d&&'dll#r+   c                     U R                   S L $ r3   )r   r5   s    r(   is_docker_hostContext.is_docker_host   s      D((r+   c                     U R                   $ r3   )r   r5   s    r(   r9   Context.Name   s    yyr+   c                    U R                   (       a  U R                   S:X  a6  U R                  R                  SS 5      nU(       a  UR                  SS 5      $ g U R                  U R                      R                  SS 5      $ )Nr   r   r   )r   r   r    )r"   rc   s     r(   r   Context.Host   sg      D$5$5$@~~))(D9H||FD11~~d//044VTBBr+   c                     U R                   $ r3   )r   r5   s    r(   OrchestratorContext.Orchestrator   s       r+   c                 x    0 nU R                   (       a  SU R                   0nU R                  UU R                  S.$ )Nr;   )r9   r:   r<   )r   r   r   )r"   rA   s     r(   r:   Context.Metadata   s;    '):):;DII
 	
r+   c                     U R                   nU(       a  US:X  a  SnXR                  R                  5       ;   a  U R                  U   $ g )Nr   r   )r   r   r[   )r"   rW   s     r(   r   Context.TLSConfig   s@    cWnC,,##%%<<$$r+   c           	          0 nU R                   R                  5        HN  u  p#UR                  u  pE[        [	        [
        R                  R                  UR                  XE/5      5      X'   MP     SU0$ )Nr   )	r   r   rV   listmaprF   rG   rk   rY   )r"   ra   rc   r$   rV   rW   s         r(   r   Context.TLSMaterial   sf    !\\//1MHID"BGG$$s{{D&>?AEO 2
 5
 	
r+   c                 8    SU R                   U R                  S.0$ )Nr   )MetadataPathTLSPath)r   r   r5   s    r(   r   Context.Storage   s$      $== 	r+   )r   r   r   r   r   r   r   )NNNF)r   NNFN)rx   
__module____qualname____firstlineno____doc__r)   r0   r6   classmethodrC   r>   r?   rp   rs   ry   r~   r4   r   propertyr9   r   r   r:   r   r   r   __static_attributes__ r+   r(   r   r      s    EI)+X 5915)    6 4/6"=5)   C C ! ! 
 
   
 
  r+   r   )rJ   rF   shutilr   r   docker.errorsr   
docker.tlsr   configr   r	   r
   r   r   r   r+   r(   <module>r      s*     	 # *   i ir+   