
    s                        d 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 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 ddlmZ ddlmZ ddlZ ej4                  d      Zej9                  dddd       ej9                  dddd        ej:                  e       dZd Zd Z e!dk(  r" ejD                         5   e         ddd       yy# 1 sw Y   yxY w)z1This package pulls images from a Docker Registry.    N)docker_creds)docker_name)docker_image)docker_http)docker_image_list)save)	v2_compat)logging_setup)patched)platform_args)retry)transport_poolz#Pull images from a Docker Registry.)descriptionz--namestorezaThe name of the docker image to pull and save. Supports fully-qualified tag or digest references.T)actionhelprequiredz	--tarballz Where to save the image tarball.zi-was-a-digestc                     t        | t        j                        r| S t        j                  dj                  t	        | j                               t                    S )Nz{repo}:{tag})repotag)
isinstancer   Tagformatstras_repository_DEFAULT_TAG)names    9lib/third_party/containerregistry/tools/docker_puller_.py_make_tag_if_digestr   D   sK    koo&K	..t!!#$, / 8 
9 9    c                  r   t        j                  t               t        j                         } t        j                  |        t        j                         }|j                  t        j                        }t        j                  |j                  d      }d| j                  v r t        j                  | j                        }nt        j                  | j                        }t         j"                  }	 t$        j&                  j)                  |      }	 t5        j6                  | j8                  d      5 }t-        j:                  d	|       t=        j>                  ||      5 }|jA                         ratC        jD                  |       }	|jG                  |	      5 }
tI        j8                  tK        |      |
|       	 d d d        d d d        d d d        y d d d        t-        j:                  d
|       tM        j>                  ||||      5 }|jA                         r2tI        j8                  tK        |      ||       	 d d d        d d d        y 	 d d d        t-        j:                  d|       tO        j>                  |||      5 }tQ        jR                  |      5 }tI        j8                  tK        |      ||       	 d d d        d d d        d d d        y # t*        $ r7}t-        j.                  d||       t1        j2                  d       Y d }~d }~ww xY w# 1 sw Y   MxY w# 1 sw Y   RxY w# 1 sw Y   xY w# 1 sw Y   nxY w	 d d d        n# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY w# t*        $ r6}t-        j.                  d||       t1        j2                  d       Y d }~y d }~ww xY w)N)args   )size@z&Error resolving credentials for %s: %s   zw:)r   modez!Pulling manifest list from %r ...zPulling v2.2 image from %r ...zPulling v2 image from %r ...z%Error pulling and saving image %s: %s)*r
   DefineCommandLineArgsparser
parse_argsInitr   FactoryWithSourceTransportCallablehttplib2Httpr   Buildr   r   Digestr   r   SUPPORTED_MANIFEST_MIMESr   DefaultKeychainResolve	Exceptionloggingfatalsysexittarfileopentarballinfo
image_listFromRegistryexistsr   FromArgsresolver   r   
v2_2_imagev2_imager	   	V22FromV2)r"   retry_factory	transportr   acceptcredsetarimg_listplatformdefault_childv2_2_imgv2_imgs                r   mainrQ   L   s   %%f-				$$--/-;;HMMJ-!!-"5"5A>)DIIdii(D??499%D //&((006E	4<<d	3sll6=""4	:h??"++D1()]LL,T2M3G *	 ; 
4	3: ll3T:""4	6Bh??
,,*40(C
@
 C 
4	3  C
 ll148  ui8F  (H
,,*40(C
@
 ) 9% 
4	3 
 MM:D!DHHQKK *)	 ;: CB )(( 988% 
4	3	3. 
 MM94CHHQKKs   6K !M7 7.M+%7L'"L>L'M+M7 6M+2L4?M+M7 5M+M"M >MM+M7 	L ,LLL$L''L1	,M+4L=	9M+ M	M	M+M	M+"M7 +M40M7 4M7 7	N6 ,N11N6__main__)#__doc__argparser6   r8   r:   containerregistry.clientr   r   containerregistry.client.v2r   rD   containerregistry.client.v2_2r   rC   r   r>   r   r	   containerregistry.toolsr
   r   r   containerregistry.transportr   r   r.   ArgumentParserr)   add_argumentAddArgumentsr   r   rQ   __name__Httplib2 r    r   <module>r`      s    8   
  1 0 @ 5 D I . 3 1 + 1 - 6  
!	 	 5
7   ?     &H     6 "9:z zwF  s   C$$C-