
    r                         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  G d dej&                        Zy)zCommand for listing images.    )absolute_import)division)unicode_literals)base_classes)util)base)
exceptions)filter_utils)flags)
propertiesc                   ,    e Zd ZdZed        Zd Zd Zy)Listz!List the packages in an image.
  c                 d    | j                   j                  d       t        j                  |        y )Nzy        table(
          name:label=PACKAGE,
          version:label=VERSION,
          revision:label=REVISION
        ))display_info	AddFormatpackage_flagsAddImageResourceArg)parsers    +lib/surface/compute/images/packages/list.pyArgsz	List.Args"   s+    
!! #  %%f-    c                 >   g }|D ]r  }|j                   j                  }|j                   j                  D ]A  }||j                  j                  |j                  j                  d}|j                  |       C t |st        j                  |      t        |d       S )N)nameversionrevisionc                     | d   S )Nr    )package_versions    r   <lambda>z*List._GetPackageVersions.<locals>.<lambda>;   s	    of.Er   )key)	installationr   locationr   r   appendr	   %ImagePackagesInfoUnavailableExceptionsorted)selfimage_packages
image_namepackage_versions
occurrencepackage_namer"   r   s           r   _GetPackageVersionszList._GetPackageVersions-   s    $
,,11l --66(#/&.&6&6&;&;'/'7'7'@'@B 	0	 7 % <<ZHH"EG Gr   c                    t         j                  j                  j                  j	                         }|j
                  j                  j                         }t        j                  t        j                  j                        }t        j                  ||      }t        j                   ||dd      }| j#                  ||j                        S )zYields filtered packages.N)
project_idresource_filteroccurrence_filterresource_urls)r   VALUEScoreprojectGetCONCEPTSimageParser   ComputeApiHolderr   ReleaseTrackGAr
   	GetFiltercontaineranalysis_utilMakeOccurrenceRequestr,   )r&   argsr4   	image_refholderr/   r'   s          r   RunzList.Run=   s    $$,,002G##))+I **4+<+<+?+?@F",,Y?O+AAOd4N ##NDJJ??r   N)__name__
__module____qualname____doc__staticmethodr   r,   rB   r   r   r   r   r      s'     . .G @r   r   N)rF   
__future__r   r   r   googlecloudsdk.api_lib.computer   (googlecloudsdk.api_lib.containeranalysisr   r=   googlecloudsdk.callioper   2googlecloudsdk.command_lib.compute.images.packagesr	   r
   r   r   googlecloudsdk.corer   ListCommandr   r   r   r   <module>rO      s<    " &  ' 7 S ( I K U *-@4 -@r   