
                         V   S r SSK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                  \R                   5      r\	R$                  " \	R&                  R(                  5      \	R*                   " S S\	R,                  5      5       5       r " S S\5      rg)zFImplements the command to list vulnerabilities from Artifact Registry.    N)
exceptions)GetLatestScan)GetVulnerabilities)base)docker_util)endpoint_util)flags)format_utilaA       table[box, title="%TITLE%"](
      occurrence.vulnerability.shortDescription:label=CVE,
      occurrence.vulnerability.effectiveSeverity:label=EFFECTIVE_SEVERITY,
      occurrence.vulnerability.cvssScore:label=CVSS:sort=-1:reverse,
      occurrence.vulnerability.packageIssue.fixAvailable:label=FIX_AVAILABLE,
      occurrence.vulnerability.vexAssessment.state:label=VEX_STATUS,
      occurrence.vulnerability.packageIssue.affectedPackage:sort=3:label=PACKAGE,
      occurrence.vulnerability.packageIssue.packageType:label=PACKAGE_TYPE,
      vexScope,
      {}
    )
    c                   D    \ rS rSrSrSSS.r\S 5       rS rS r	S	 r
S
rg)List,   zMCommand for listing vulnerabilities. To see all fields, use --format=json.
  z{description}z        To list vulnerabilities for an artifact, run:

          $ {command} us-east1-docker.pkg.dev/project123/repository123/someimage@sha256:49765698074d6d7baa82f
      )DESCRIPTIONEXAMPLESc                    [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        U R
                  R                  S/5        g )Nz%occurrence.vulnerability.packageIssue)r	   GetListURIArgAddToParserGetOptionalAALocationFlag&GetVulnerabilitiesOccurrenceFilterFlagdisplay_info
AddFlatten)parsers    -lib/surface/artifacts/vulnerabilities/list.pyArgs	List.Args;   sb    	%%f-	##%11&9	002>>vF
""$K#LM
    c                    UR                   nUR                  nU R                  UR                  5      u  pE[        R
                  " U5         Ub  SR                  XR5      n[        XT5      n[        XTU5      nS S S 5        U R                  UW5        [        W5      n/ n[        U5      S:  a  0 $ U H  n	Sn
U	R                  (       a  U	R                  R                  (       ar  U	R                  R                  R                  (       aM  U	R                  R                  R                  R                  S5      nUS   R!                  S5      (       a  Sn
OSn
UR#                  [%        X5      5        M     U$ ! , (       d  f       GN= f)	Nz{}/locations/{}    /zimage-IMAGEDIGEST)locationoccurrence_filterreplaceTagsURIr   
WithRegionformatr   r   setTitlelistlenvulnerabilityvexAssessmentnoteNamesplit
startswithappendVulnerabilityEntry)selfargsr#   r$   resourceprojectlatest_scanoccurrencesresultsocc	vex_scopetokenss               r   RunList.RunC   s>   }}H..((2H		!	!(	+		#**7=!'4k&w:KLk	 
,
 	MM$${#KG
;!ii


----66""0099??D":  **))nn'78  N/ 
,	+s   ,E55
Fc           
      z   UnUR                  S5      (       d  SR                  U5      n[        R                  " [        R
                  U5      nU(       GaA  US   S   nSUS   S   ;   nU(       a  [        R                  " U5      u  n  n[        R                  " U5      u  pxU(       a  [        R                  " UR                  R                  UR                  5       R                  UR                  R                  5       SR                  UR                  R                  UR                  R                  5      5      5      nUR                  n	SR                  UR                  5       5      n
[        R                  " [        R
                  U
US5      nX)4$ [        R                   " SR                  U5      5      e)Nzhttps://z
https://{}r   zgcr.ior   z{}/{}zReceived invalid URI {})r0   r(   refindallr   DOCKER_URI_REGEXConvertGCRImageStringDockerUrlToVersionGcrDockerVersiondocker_repor6   GetDockerStringreplacereposubar_exceptionsInvalidInputValueError)r3   original_uriupdated_urifoundresource_uri_stris_gcr_imageversionr6   docker_html_str_digests              r   r%   List.replaceTags`   sz   K!!*-- ''4kJJ{33[AEq!58A;&f	!,!B!B"
!Q #556FGne	..%%##%--!!113%%**%%--	
 g+2273J3J3LMFF

&
&
 

	k !!

.
.!((6 r   c                 "   SnU(       a$  UR                   b  UR                   R                  c  SnO*UR                   R                  S S nSR                  U5      n[        R	                  SU5      nUR                  5       R                  U5        g )Nr   zScan status unknownizLatest scan was at {}z%TITLE%)	discoverylastScanTimer(   DEFAULT_LIST_FORMATrH   GetDisplayInfo	AddFormat)r3   r4   r7   titlelast_scan_timelist_formats         r   r)   List.setTitle   s~    E  (  --5#e",,99$3?n%,,^<e%--i?K##K0r    N)__name__
__module____qualname____firstlineno____doc__detailed_helpstaticmethodr   r=   r%   r)   __static_attributes__ra   r   r   r   r   ,   s<     %
-  :#J1r   r   c                   >    \ rS rSrSrS r\S 5       r\S 5       rSr	g)r2      zHolder for an entry of vulnerability list results.

Properties:
  occurrence: Vulnerability occurrence.
  vex_scope: Scope of the VEX statement.
c                     Xl         X l        g N_occurrence
_vex_scope)r3   
occurrencer;   s      r   __init__VulnerabilityEntry.__init__   s    !Or   c                     U R                   $ rm   )ro   r3   s    r   rq   VulnerabilityEntry.occurrence   s    r   c                     U R                   $ rm   )rp   ru   s    r   r;   VulnerabilityEntry.vex_scope   s    ??r   rn   N)
rb   rc   rd   re   rf   rr   propertyrq   r;   ri   ra   r   r   r2   r2      s4         r   r2   )rf   r@    googlecloudsdk.api_lib.artifactsr   rK   0googlecloudsdk.api_lib.artifacts.vulnerabilitiesr   r   googlecloudsdk.callioper   $googlecloudsdk.command_lib.artifactsr   r   r	   r
   r(   "CONTAINER_ANALYSIS_METADATA_FORMATrZ   ReleaseTracksReleaseTrackGADefaultUniverseOnlyListCommandr   objectr2   ra   r   r   <module>r      s    M 
 H J O ( < > 6 < 	{==>  D%%(()c14 c1  *c1L r   