
                         J   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Jr  SS	KJr  \R                   " S
 S5      5       r\R"                  \R$                  " \R&                  R(                  5       " S S\R*                  5      5       5       rSSSS.r\\l        g)z=`gcloud access-context-manager policies quotas list` command.    )absolute_import)division)unicode_literalsN)levels)zones)base)policiesc                   *    \ rS rSr% \\S'   \\S'   Srg)Metric   titleusage N)__name__
__module____qualname____firstlineno__str__annotations__int__static_attributes__r       :lib/surface/access_context_manager/policies/quotas/list.pyr   r      s    	*	*r   r   c                   D    \ rS rSrSrSrS rS rS r\	S 5       r
S rS	rg
)ListPoliciesQuotas#   zLists the Quota Usage.v1alphac                 6   [        U5      n[        U5      nSnSnSnU R                  U5      nU H  n/ n	UR                  (       a  U	R	                  UR                  5        UR
                  (       a  U	R	                  UR
                  5        U	 HK  n
U[        U
R                  5      -  nU[        U
R                  5      -  nU[        U
R                  5      -  nMM     M     [        SU5      [        SU5      [        SU5      [        SU5      [        SU5      /$ )zmReturns service primeters quota usage.

Args:
  perimeters_to_display: Response of ListServicePerimeters API
r   zService primeterszProtected resourceszIngress ruleszEgress ruleszTotal ingress/egress attributes)
listlenGetTotalIngressEgressAttributesstatusappendspec	resourcesingressPoliciesegressPoliciesr   )selfperimeters_to_display	argumentsservice_primetersprotected_resourcesingress_rulesegress_rulestotal_ingress_egress_attributesmetricconfigsconfigs              r   GetPrimetersQuotaUsage)ListPoliciesQuotas.GetPrimetersQuotaUsage*   s    *+IIML&*&J&J'# g	v}}%	v{{#&s6#3#344V3344F1122   	"$56$&9:.~|,-/N	
 r   c                 b    SnU H  nUR                   (       d  M  US-  nM     [        SU5      /$ )zzReturns levels quota usage, only counts basic access levels.

Args:
  levels_to_display: Response of ListAccessLevels API
r      zAccess levels)basicr   )r(   levels_to_displayaccess_levelslevels       r   GetLevelsQuotaUsage&ListPoliciesQuotas.GetLevelsQuotaUsageO   s8     M"	 # ?M233r   c                 v   SnU GH  n/ nUR                   (       a  UR                  UR                   5        UR                  (       a  UR                  UR                  5        U GHJ  nUR                  (       a  UR                   H  nU[	        UR
                  R                  5      -  nU[	        UR
                  R                  5      -  nU[        S UR                  R                   5       5      -  nU[	        UR                  R                  5      -  nM     UR                  (       d  M  UR                   Hp  nU[	        UR                  R                  5      -  nU[        S UR                  R                   5       5      -  nU[	        UR                  R                  5      -  nMr     GMM     GM     U$ )z{Returns total ingress/egress attributes quota usage.

Args:
  perimeters_to_display: Response of ListServicePerimeters API
r   c              3   L   #    U  H  n[        UR                  5      v   M     g 7fNr    methodSelectors.0os     r   	<genexpr>EListPoliciesQuotas.GetTotalIngressEgressAttributes.<locals>.<genexpr>m   s%      "<A A%%&&<   "$c              3   L   #    U  H  n[        UR                  5      v   M     g 7fr?   r@   rB   s     r   rE   rF   u   s%      ":A A%%&&:rG   )r"   r#   r$   r&   r    ingressFromsources
identitiessum	ingressTo
operationsr%   r'   
egressFromegressTo)r(   r)   elements_countr0   r1   r2   ingress_policyegress_policys           r   r!   2ListPoliciesQuotas.GetTotalIngressEgressAttributes[   sn    N'g	v}}%	v{{#&!! & 6 6nc."<"<"D"DEENc."<"<"G"GHHNc "'11<<"  N c.":":"D"DEEN !7    %44mc-":":"E"EFFNc "&//::"  N c-"8"8"B"BCCN  5  (0 r   c                     [         R                  " U S5        [        R                  R	                  U 5        U R
                  R                  S5        g )Nzto list the quota usageztable(title, usage))r	   AddResourceArgr   URI_FLAGRemoveFromParserdisplay_info	AddFormat)parsers    r   ArgsListPoliciesQuotas.Args|   s:    F$=>MM""6*
!!"78r   c                 R   [         R                  " U R                  S9n[        R                  " U R                  S9nUR                  R
                  R                  5       nUR                  U5      nUR                  U5      nU R                  U5      nU R                  U5      nXx-   $ )N)version)
perimeters_apiClient_API_VERSION
levels_apiCONCEPTSpolicyParseListr3   r;   )	r(   argsperimeters_clientlevels_client
policy_refr8   r)   primeters_quota_usagelevels_quota_usages	            r   RunListPoliciesQuotas.Run   s    &--d6G6GH%%d.?.?@M%%++-J%**:6-22:> 778MN112CD 55r   r   N)r   r   r   r   __doc__rb   r3   r;   r!   staticmethodr\   rn   r   r   r   r   r   r   #   s6     ,#J
4B 9 9
6r   r   zAList the quota usage of a specific Access Context Manager policy.a  List quota usage of a specific Access Context Manager policy, also known as an access policy. Metrics include: Serivce perimeters, Protected resources, Ingress rules, Egress rules, Access rules and Total ingress/egress attributes. For access levels, this only counts basic access levels.a  
       To list the quota usage of a specific Access Context Manager policy:

       $ {command} POLICY

Sample output:

  ===
    TITLE                            USAGE
    Service primeters                1
    Protected resources              1
    Ingress rules                    1
    Egress rules                     1
    Total ingress/egress attributes  3
    Access levels                    1
)briefDESCRIPTIONEXAMPLES)rp   
__future__r   r   r   dataclasses+googlecloudsdk.api_lib.accesscontextmanagerr   rc   r   r`   googlecloudsdk.callioper   /googlecloudsdk.command_lib.accesscontextmanagerr	   	dataclassr   HiddenReleaseTracksReleaseTrackALPHAListCommandr   detailed_helpr   r   r   <module>r      s    D &  '  L O ( D   
 D%%++,i6)) i6 - i6\ 	L	 : $1   r   