
                             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\R"                  5      rg)z#Command for diffing image packages.    )absolute_import)division)unicode_literals)base_classes)util)base)
exceptions)filter_utils)flagsc                   :    \ rS rSrSr\S 5       rS rS rS r	Sr
g)	Diff   z@Displays the version differences of packages between two images.c                     U R                   R                  S5        [        R                  " U 5        [        R                  " U 5        [        R
                  " U 5        [        R                  " U 5        U [        l        g )Nz       table(
          name:label=PACKAGE,
          version_base:label=VERSION_BASE,
          revision_base:label=REVISION_BASE,
          version_diff:label=VERSION_DIFF,
          revision_diff:label=REVISION_DIFF
        ))	display_info	AddFormatpackage_flagsAddResourceArgsAddShowAddedPackagesFlagAddShowRemovedPackagesFlagAddShowUpdatedPackagesFlagr   _parser)parsers    +lib/surface/compute/images/packages/diff.pyArgs	Diff.Args    s\    
!! #  !!&)**62,,V4,,V4DL    c                 >   0 nU Hw  nUR                   R                  n/ nUR                   R                   H>  nUR                  UR                  R                  UR                  R
                  45        M@     XcU'   My     U(       d  [        R                  " U5      eU$ )N)installationnamelocationappendversionrevisionr	   %ImagePackagesInfoUnavailableException)selfimage_packages
image_namepackage_versions
occurrencepackage_nameversionsr    s           r   _GetVersionsDiff._GetVersions3   s    $
,,11lh --66())..0@0@0I0IJK 7'/|$ % <<ZHHr   c                 0   [        UR                  5       5      R                  [        UR                  5       5      5      nSnUR                  (       d"  UR                  (       d  UR
                  (       a  Sn/ nSnU GH  nUR                  U/ 5      n	UR                  U/ 5      n
[        U	5      [        U
5      :w  d  MB  [        U	5      n[        U
5      nU(       d]  UR                  (       a  US:X  a  US:w  d@  UR                  (       a  US:w  a  US:X  d#  UR
                  (       d  M  US:w  d  M  US:w  d  M  [        [        X5      5       H7  nX:  a  X   OUu  pX:  a  X   OUu  nnUUUUUS.nUR                  U5        M9     GM     [        US S9$ )NTF)-r/   r   )r   version_baserevision_baseversion_diffrevision_diffc                     U S   $ )Nr    )package_diffs    r   <lambda>Diff._GetDiff.<locals>.<lambda>d   s	    f1Er   )key)setkeysunionshow_added_packagesshow_removed_packagesshow_updated_packagesgetlenrangemaxr!   sorted)r%   argspackage_versions_basepackage_versions_diffall_package_namesshow_all_diff_packagesdiffemptyr*   versions_baseversions_difflen_baselen_diffidxr0   r1   r2   r3   r6   s                      r   _GetDiffDiff._GetDiffA   s{   16689??!&&()+ "  D$>$>""$DE)+//bAm+//bAm	]	s=1	1}%}%"%%(a-HM''HMh!m'''HMh!m3x23c +8*<%* (L  +8*<%* (L- % ,!. ,!.L KK% 4 *0 $EFFr   c                 ^   UR                   R                  R                  5       nUR                   R                  R                  5       n[        R
                  " [        R                  R                  5      n[        R                  " X$5      n[        R                  " X45      n[        R                  " UR                  USSS9n[        R                  " UR                  USSS9nU R                  UUR                  5      n	U R                  UUR                  5      n
U R                  XU
5      $ )z6Yields the differences of packages between two images.N)
project_idresource_filteroccurrence_filterresource_urls)CONCEPTS
base_imageParse
diff_imager   ComputeApiHolderr   ReleaseTrackGAr
   	GetFiltercontaineranalysis_utilMakeOccurrenceRequestprojectr,   rQ   )r%   rE   base_image_refdiff_image_refholderresource_filter_baseresource_filter_diffimage_packages_baseimage_packages_diffrF   rG   s              r   RunDiff.Runf   s    ]]--335N]]--335N **4+<+<+?+?@F'11.I'11.I0FF!));Od4 1FF!));Od4 !--.A.2oo? --.A.2oo? ==6KLLr   r5   N)__name__
__module____qualname____firstlineno____doc__staticmethodr   r,   rQ   rj   __static_attributes__r5   r   r   r   r      s)    I $#GJMr   r   N)rp   
__future__r   r   r   googlecloudsdk.api_lib.computer   (googlecloudsdk.api_lib.containeranalysisr   r`   googlecloudsdk.callioper   2googlecloudsdk.command_lib.compute.images.packagesr	   r
   r   r   ListCommandr   r5   r   r   <module>ry      s;    * &  ' 7 S ( I K UcM4 cMr   