
                         @   S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  S rSS jr\
R,                  \
R.                  " \
R0                  R2                  5       " S S\
R4                  5      5       5       r\
R.                  " \
R0                  R8                  5       " S S\5      5       r\
R.                  " \
R0                  R<                  5       " S S\5      5       r\R@                  " S5      \l!        g)zCommand for listing images.    )absolute_import)division)unicode_literals)base_classes)	constants)lister)base)
completers)flags)policy)
properties)universe_descriptorc                  T   [         R                  " 5       (       a  [        [        R                  5      $ [
        R                  " 5       R                  [         R                  " 5       5      R                  n [        [        R                  5       Vs/ s H  nU S-   U-   PM     sn$ s  snf )N:)r   IsDefaultUniversesortedr   PUBLIC_IMAGE_PROJECTSr   UniverseDescriptorGetGetUniverseDomainproject_prefixBASE_PUBLIC_IMAGE_PROJECTS)prefixprojects     "lib/surface/compute/images/list.py_PublicImageProjectsr       s    !!##)1122 	..0	Z))+	,	  iBBCCG 	wC  s   B%c           
      b   U R                   R                  [        R                  5        [        R
                  " U 5        U R                  SSSS9  [        R                  (       a/  SR                  SR                  [        R                  5      5      nOSnU R                  SSS	S
R                  U5      S9  U R                  SSSSSS9  U R                  SSSSR                  SR                  [        R                  5      5      S9  U(       a   U R                  S[        R                  SS9  gg)zHelper function for arguments.z--show-deprecated
store_truez)If provided, deprecated images are shown.)actionhelpz{0}.z, z(none)z--preview-imagesFze        Show images that are in limited preview. The preview image projects
        are: {0}
        )r   defaultr    z--show-preview-imagespreview_imagesTzTHIS ARGUMENT NEEDS HELP TEXT.)destr   hiddenr    z--standard-imagesz       List images from public image projects. The public image projects
       that are available include the following: {0}.
       z--image-zonezZone to query. Returns the latest image available in the image family, for the specified zone. If not specified, returns the latest globally available image.)	completerr    N)display_info	AddFormatr   LIST_FORMATr   AddBaseListerArgsadd_argumentr   PREVIEW_IMAGE_PROJECTSformatjoinr   r
   ZonesCompleter)parsersupport_image_zone_flagpreview_image_projectss      r   _Argsr2   /   s:    	 1 126"6   %%#]]		)223 & F)*   	+   	 6$))I;;<=   
++/	       c                   J    \ rS rSrSr\S 5       rS rSS jrS r	S r
S rS	rg
)Listl   zList Compute Engine images.c                     [        U 5        g Nr2   )r/   s    r   Args	List.Argsq   s	    	&Mr3   c                 $    U R                  U5      $ r8   _Runselfargss     r   RunList.Runu   s    99T?r3   c                 6  ^	 [         R                  " U R                  5       5      m	T	R                  n[        R
                  " UT	R                  5      nU	4S jnUR                  (       a2  [        5        H$  nUR                  R                  U" U5      5        M&     UR                  (       a8  [        R                   H$  nUR                  R                  U" U5      5        M&     U(       aF  UR                  (       a5  [        R                  " UUR                   R"                  UR                  S9nO([        R                  " X3R                   R"                  S9n[        R$                  " XG5      nU R'                  T	R                  U R)                  X5      5      $ )z3Yields images from (potentially) multiple projects.c                 >   > TR                   R                  S SU 0SS9$ )Nr   zcompute.projects)
collection)	resourcesParse)r   holders    r   ParseProjectList._Run.<locals>.ParseProject   s.    ##
G$1C $  r3   )global_serviceimage_zone_flag)rL   )r   ComputeApiHolderReleaseTrackclientr   ParseNamesAndRegexpFlagsrG   standard_imagesr   	scope_setaddr"   r   r+   
image_zoneMultiScopeListerapitools_clientimagesInvokeAugmentImagesStatus_FilterDeprecated)
r@   rA   r0   rP   request_datarJ   r   list_implementationrX   rI   s
            @r   r>   	List._Runx   s7   **4+<+<+>?F]]F2249I9IJL
 )+'""<#89 , 55'""<#89 6 4??"33
//66// #33
!7!7!>!> ]]<=F##$00> r3   c                 r    SnUR                  S5      nUb   UR                  S5      nU(       a  US:w  a  SnU$ )NF
deprecatedstateACTIVET)get)r@   imager`   deprecate_infoimage_states        r   _CheckForDeprecatedList._CheckForDeprecated   s@    JYY|,N!"&&w/k	0
r3   c              #   x   #    U H0  nU R                  U5      (       a  UR                  (       d  M,  Uv   M2     g 7fr8   )rg   show_deprecated)r@   rA   rX   rd   s       r   r[   List._FilterDeprecated   s0     %%e,,0D0D0D s   +:	:c                     AU$ )z5Modify images status if necessary, can be overridden. r@   rG   rX   s      r   rZ   List.AugmentImagesStatus   s
    Mr3   rm   NF)__name__
__module____qualname____firstlineno____doc__staticmethodr:   rB   r>   rg   r[   rZ   __static_attributes__rm   r3   r   r5   r5   l   s3     $ #J
r3   r5   c                   4    \ rS rSrSr\S 5       rS rS rSr	g)ListBeta   z$List Compute Engine images for BETA.c                     [        USS9  g NT)r0   r9   clsr/   s     r   r:   ListBeta.Args       	&$/r3   c                 "    U R                  USS9$ r|   r=   r?   s     r   rB   ListBeta.Run       99T4988r3   c                     [         R                  " U[        R                  R                  R
                  R                  5       U5      $ z(Modify images status based on OrgPolicy.r   rZ   r   VALUEScorer   	GetOrFailrn   s      r   rZ   ListBeta.AugmentImagesStatus   7    %%:$$))11;;=v r3   rm   N
rq   rr   rs   rt   ru   classmethodr:   rB   rZ   rw   rm   r3   r   ry   ry      s!    ,0 09r3   ry   c                   4    \ rS rSrSr\S 5       rS rS rSr	g)	ListAlpha   z%List Compute Engine images for ALPHA.c                     [        USS9  g r|   r9   r}   s     r   r:   ListAlpha.Args   r   r3   c                 "    U R                  USS9$ r|   r=   r?   s     r   rB   ListAlpha.Run   r   r3   c                     [         R                  " U[        R                  R                  R
                  R                  5       U5      $ r   r   rn   s      r   rZ   ListAlpha.AugmentImagesStatus   r   r3   rm   Nr   rm   r3   r   r   r      s!    -0 09r3   r   rX   Nrp   )"ru   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r   googlecloudsdk.callioper	   "googlecloudsdk.command_lib.computer
   )googlecloudsdk.command_lib.compute.imagesr   r   googlecloudsdk.corer   'googlecloudsdk.core.universe_descriptorr   r   r2   UniverseCompatibleReleaseTracksrO   GAListCommandr5   BETAry   ALPHAr   GetGlobalListerHelpdetailed_helprm   r3   r   <module>r      s    " &  ' 7 4 1 ( 9 ; < * G:z D%%(()@4 @ * @F D%%**+t  ," D%%++,  -" "55h? r3   