
                         >   d 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 ZddZe
j,                   e
j.                  e
j0                  j2                         G d de
j4                                      Z e
j.                  e
j0                  j8                         G d de             Z e
j.                  e
j0                  j<                         G d de             Z ej@                  d      e_!        y)zCommand for listing images.    )absolute_import)division)unicode_literals)base_classes)	constants)lister)base)
completers)flags)policy)
properties)universe_descriptorc                  >   t        j                         rt        t        j                        S t        j                         j                  t        j                               j                  } t        t        j                        D cg c]
  }| dz   |z    c}S c c}w )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           
      j   | j                   j                  t        j                         t	        j
                  |        | j                  ddd       t        j                  r/dj                  dj                  t        j                              }nd}| j                  ddd	d
j                  |             | j                  ddddd       | j                  ddddj                  dj                  t        j                                     |r#| j                  dt        j                  d       yy)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                   @    e Zd ZdZed        Zd Zd	dZd Zd Z	d Z
y)
ListzList Compute Engine images.c                     t        |        y Nr2   )r/   s    r   Argsz	List.Argsq   s	    	&Mr3   c                 $    | j                  |      S r7   _Runselfargss     r   RunzList.Runu   s    99T?r3   c                   	 t        j                  | j                               		j                  }t	        j
                  |	j                        }	fd}|j                  r0t               D ]#  }|j                  j                   ||             % |j                  r6t        j                  D ]#  }|j                  j                   ||             % |rC|j                  r7t	        j                  ||j                   j"                  |j                        }n+t	        j                  ||j                   j"                        }t	        j$                  ||      }| j'                  	j                  | j)                  ||            S )z3Yields images from (potentially) multiple projects.c                 D    j                   j                  d d| id      S )Nr   zcompute.projects)
collection)	resourcesParse)r   holders    r   ParseProjectzList._Run.<locals>.ParseProject   s.    ##
G$1C $  r3   )global_serviceimage_zone_flag)rH   )r   ComputeApiHolderReleaseTrackclientr   ParseNamesAndRegexpFlagsrD   standard_imagesr   	scope_setaddr"   r   r+   
image_zoneMultiScopeListerapitools_clientimagesInvokeAugmentImagesStatus_FilterDeprecated)
r>   r?   r0   rL   request_datarG   r   list_implementationrT   rF   s
            @r   r<   z	List._Runx   s>   **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v> r3   c                 d    d}|j                  d      }||j                  d      }|r|dk7  rd}|S )NF
deprecatedstateACTIVET)get)r>   imager[   deprecate_infoimage_states        r   _CheckForDeprecatedzList._CheckForDeprecated   s@    JYY|,N!"&&w/k	0
r3   c              #   ^   K   |D ]$  }| j                  |      r|j                  s!| & y wr7   )rb   show_deprecated)r>   r?   rT   r_   s       r   rW   zList._FilterDeprecated   s+     %%e,0D0D s   #--c                     ~|S )z5Modify images status if necessary, can be overridden. r>   rD   rT   s      r   rV   zList.AugmentImagesStatus   s
    Mr3   NF)__name__
__module____qualname____doc__staticmethodr9   r@   r<   rb   rW   rV   rf   r3   r   r5   r5   l   s3     $ #J
r3   r5   c                   ,    e Zd ZdZed        Zd Zd Zy)ListBetaz$List Compute Engine images for BETA.c                     t        |d       y NT)r0   r8   clsr/   s     r   r9   zListBeta.Args       	&$/r3   c                 (    | j                  |d      S rq   r;   r=   s     r   r@   zListBeta.Run       99T4988r3   c                     t        j                  |t        j                  j                  j
                  j                         |      S z(Modify images status based on OrgPolicy.r   rV   r   VALUEScorer   	GetOrFailrg   s      r   rV   zListBeta.AugmentImagesStatus   7    %%:$$))11;;=v r3   Nri   rj   rk   rl   classmethodr9   r@   rV   rf   r3   r   ro   ro      s!    ,0 09r3   ro   c                   ,    e Zd ZdZed        Zd Zd Zy)	ListAlphaz%List Compute Engine images for ALPHA.c                     t        |d       y rq   r8   rr   s     r   r9   zListAlpha.Args   rt   r3   c                 (    | j                  |d      S rq   r;   r=   s     r   r@   zListAlpha.Run   rv   r3   c                     t        j                  |t        j                  j                  j
                  j                         |      S rx   ry   rg   s      r   rV   zListAlpha.AugmentImagesStatus   r}   r3   Nr~   rf   r3   r   r   r      s!    -0 09r3   r   rT   Nrh   )"rl   
__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ReleaseTracksrK   GAListCommandr5   BETAro   ALPHAr   GetGlobalListerHelpdetailed_helprf   r3   r   <module>r      s   " &  ' 7 4 1 ( 9 ; < * G:z D%%(()@4 @ * @F D%%**+t  ," D%%++,  -" 6\55h? r3   