
    c                     L   d Z ddlmZ ddlmZ ddlmZ ddl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 ej"                  ej$                   ej&                  ej(                  j*                         G d dej,                                             Zd Zddie_        y)z%Command for listing network policies.    )absolute_import)division)unicode_literalsN)
list_pager)base_classes)lister)base)flags)
propertiesc                   &    e Zd ZdZed        Zd Zy)ListzList Compute Engine network policies.

  *{command}* is used to list network policies. A network policy is a set of
  rules that controls network traffic classification.
  c                     |j                   j                  d       t        j                  |       |j                   j	                  t
        j                         y )NzX      table(
        name,
        region.basename(),
        description
      )
      )display_info	AddFormatr   AddRegionsArgWithoutBaseArgsAddCacheUpdaterr
   NetworkPoliciesCompleter)clsparsers     ,lib/surface/compute/network_policies/list.pyArgsz	List.Args)   sE    
!! #
  ''/
''(F(FG    c                    t        j                  | j                               }|j                  j                  }|j
                  }|j                  r|j                  }n2t        j                  j                  j                  j                         }|j                  r|j                  D cg c]O  }t        j                  |j                  |j                  ||j!                               d|j"                  d       Q }}t$        j&                  j)                  |      S |j+                  |d      }t-        ||      \  }	}
|
r|
|_        t-        ||      \  }}
|	|z  }	|
r|	S c c}w )N)projectregionitems)fieldlimit
batch_sizeT)r   returnPartialSuccess)r   ComputeApiHolderReleaseTrackclientapitools_clientMESSAGES_MODULEr   r   VALUEScore	GetOrFailregionsr   YieldFromListregionNetworkPolicies'ComputeRegionNetworkPoliciesListRequeststripr   	itertoolschainfrom_iterable1ComputeRegionNetworkPoliciesAggregatedListRequest_GetListPage	pageToken)selfargsholderr#   messagesr   r   regional_generatorsrequestnetwork_policiesnext_page_token	list_pages               r   RunzList.Run5   s[   **4+<+<+>?F]]**F%%H||g!!&&..88:g ||  %f 
"
"**>>!&,,. ?  JJ %   __**+>?? HHd I G )5VW(E%o
)g#/#@ i)# 
 3s   +AE$N)__name__
__module____qualname____doc__classmethodr   r=    r   r   r   r      s"     	H 	H%r   r   c                     | j                   j                  |      }t        j                  j	                  d |j
                  j                  D              }t        |      |j                  fS )Nc              3   H   K   | ]  }|j                   j                    y w)N)valuenetworkPolicies).0network_policy_in_scopes     r   	<genexpr>z_GetListPage.<locals>.<genexpr>_   s%      7%H
! ##33%Hs    ")	r+   AggregatedListr.   r/   r0   r   additionalPropertieslistnextPageToken)r#   r9   responsenetwork_policy_chains       r   r2   r2   ]   s]    ))88A("66 7%-^^%H%H7  
"	#X%;%;	;;r   EXAMPLESaA      To list regional network policies under project ``my-project'',
    specify a list of regions with ``--regions'':

      $ {command} --project=my-project --regions="region-a, region-b"

    To list all network policies under project
    ``my-project'', omit ``--regions'':

      $ {command} --project=my-project
    )rA   
__future__r   r   r   r.   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper	   3googlecloudsdk.command_lib.compute.network_policiesr
   googlecloudsdk.corer   HiddenUniverseCompatibleReleaseTracksr"   ALPHAListCommandr   r2   detailed_helprC   r   r   <module>r^      s    , &  '  ' 7 1 ( E * D%%++,84 8 -  8v<  
 r   