
    M                     
   S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSK
r
SrS	r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\R(                  5      rg)z0Utilities for the container analysis data model.    )absolute_import)division)unicode_literalsN)container_data_util)requestsz  UNKNOWNc                       \ rS rSrSrS rSrg)SummaryResolver    z?SummaryResolver is a base class for occurrence summary objects.c                     g)zresolve is called after all records are added to the summary.

In this function, aggregate data can be calculated for display.
N selfs    Klib/googlecloudsdk/api_lib/container/images/container_analysis_data_util.pyresolveSummaryResolver.resolve#   s    
 	    r   N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r
   r
       s
    G	r   r
   c                   *    \ rS rSrSrS rS rS rSrg)PackageVulnerabilitiesSummary+   zDPackageVulnerabilitiesSummary has information about vulnerabilities.c                 v    [         R                  " 5       U l        [        R                  " [
        5      U l        g N)r   GetMessages(_PackageVulnerabilitiesSummary__messagescollectionsdefaultdictlistvulnerabilitiesr   s    r   __init__&PackageVulnerabilitiesSummary.__init__.   s%    **,DO&2248Dr   c                     [         R                  " UR                  R                  5      nU R                  U   R                  U5        g r   )six	text_typevulnerabilityeffectiveSeverityr$   append)r   occsevs      r   
add_record(PackageVulnerabilitiesSummary.add_record2   s5    
--));;
<C$$S)r   c                    SU l         SU l        U R                  R                  5        H  nU H  nU =R                   S-  sl         UR                  R
                   H]  nUR                  R                  U R                  R                  R                  R                  :X  d  MG  U =R                  S-  sl          M     M     M     [        U R                  5      U l        g )Nr      )total_vulnerability_foundnot_fixed_vulnerability_countr$   valuesr*   packageIssuefixedVersionkindr    VersionKindValueValuesEnumMAXIMUMdict)r   occsr-   package_issues       r   r   %PackageVulnerabilitiesSummary.resolve6   s    %&D")*D&$$++-#&&!+& ..;;M((--oo%%99AAB..!3.	 <  .   4 45Dr   )
__messagesr4   r3   r$   N)	r   r   r   r   r   r%   r/   r   r   r   r   r   r   r   +   s    L9*6r   r   c                   $    \ rS rSrSrS rS rSrg)ImageBasesSummaryF   z@PackageVulnerabilitiesSummary has information about image basis.c                     / U l         g r   base_imagesr   s    r   r%   ImageBasesSummary.__init__I   
    Dr   c                 :    U R                   R                  U5        g r   )rF   r,   r   r-   s     r   r/   ImageBasesSummary.add_recordL       C r   rE   Nr   r   r   r   r   r%   r/   r   r   r   r   rB   rB   F   s    H!r   rB   c                   $    \ rS rSrSrS rS rSrg)BuildsSummaryP   z+BuildsSummary has information about builds.c                     / U l         g r   build_detailsr   s    r   r%   BuildsSummary.__init__S   s
    Dr   c                 :    U R                   R                  U5        g r   )rS   r,   rJ   s     r   r/   BuildsSummary.add_recordV   s    c"r   rR   NrM   r   r   r   rO   rO   P   s    3#r   rO   c                   $    \ rS rSrSrS rS rSrg)DeploymentsSummaryZ   z5DeploymentsSummary has information about deployments.c                     / U l         g r   deploymentsr   s    r   r%   DeploymentsSummary.__init__]   rH   r   c                 :    U R                   R                  U5        g r   )r\   r,   rJ   s     r   r/   DeploymentsSummary.add_record`   rL   r   r[   NrM   r   r   r   rX   rX   Z   s    =!r   rX   c                   $    \ rS rSrSrS rS rSrg)DiscoverySummaryd   z@DiscoveryResolver has information about vulnerability discovery.c                     / U l         g r   	discoveryr   s    r   r%   DiscoverySummary.__init__g   s	    DNr   c                 :    U R                   R                  U5        g r   )re   r,   rJ   s     r   r/   DiscoverySummary.add_recordj   s    NN#r   rd   NrM   r   r   r   ra   ra   d   s    Hr   ra   c                   8   ^  \ rS rSrSrU 4S jrS rS rSrU =r	$ )ContainerAndAnalysisDatan   a  Class defining container and analysis data.

ContainerAndAnalysisData subclasses ContainerData because we want it to
contain a superset of the attributes, particularly when `--format=json`,
`format=value(digest)`, etc. is used with `container images describe`.
c                    > [         [        U ]  UR                  UR                  UR
                  S9  [        5       U l        [        5       U l	        [        5       U l        [        5       U l        [        5       U l        g )N)registry
repositorydigest)superrj   r%   rm   rn   ro   r   package_vulnerability_summaryrB   image_basis_summaryrO   build_details_summaryrX   deployment_summaryra   discovery_summary)r   name	__class__s     r   r%   !ContainerAndAnalysisData.__init__v   sb    	
"D24??4;; 3 P)F)HD&02D!.D02D-/Dr   c                    [         R                  " 5       nUR                  UR                  R                  R
                  :X  a  U R                  R                  U5        g UR                  UR                  R                  R                  :X  a  U R                  R                  U5        g UR                  UR                  R                  R                  :X  a  U R                  R                  U5        g UR                  UR                  R                  R                  :X  a  U R                  R                  U5        g UR                  UR                  R                  R                  :X  a  U R                  R                  U5        g g r   )r   r   r8   
Occurrencer:   VULNERABILITYrq   r/   IMAGErr   BUILDrs   
DEPLOYMENTrt   	DISCOVERYru   )r   
occurrencemessagess      r   r/   #ContainerAndAnalysisData.add_record   s   ##%H8..BBPPP
((33J?	H//CCII	I
))*5	H//CCII	I
  ++J78..BBMMM
((4
//



1
1
;
;<
''
3<r   c                    U R                   R                  5         U R                  R                  5         U R                  R                  5         U R                  R                  5         U R
                  R                  5         g r   )rq   r   rr   rs   rt   ru   r   s    r   resolveSummaries)ContainerAndAnalysisData.resolveSummaries   s\    &&..0$$&&&(##%""$r   )rs   rt   ru   rr   rq   )
r   r   r   r   r   r%   r/   r   r   __classcell__)rw   s   @r   rj   rj   n   s    04 % %r   rj   )r   
__future__r   r   r   r!   'googlecloudsdk.api_lib.container.imagesr   (googlecloudsdk.api_lib.containeranalysisr   r(   _INDENT_NULL_SEVERITYobjectr
   r   rB   rO   rX   ra   ContainerDatarj   r   r   r   <module>r      s    7 &  '  G = 
 	f 	6O 66! !#O #! ! &%2@@ &%r   