
                             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 d Zej$                   G d dej&                               Zddie_        y)z.Command for listing network firewall policies.    )absolute_import)division)unicode_literalsN)
list_pager)base_classes)lister)base)flags)
propertiesc                     | j                   j                  |      }g }|j                  j                  D ]  }||j                  j
                  z  } ||j                  fS )N)networkFirewallPoliciesAggregatedListitemsadditionalPropertiesvaluefirewallPoliciesnextPageToken)clientrequestresponsefirewall_policy_listsattachment_in_scopes        5lib/surface/compute/network_firewall_policies/list.py_GetListPager      sa    ++::7C(%^^@@!!224 A 
 6 6	66    c                   &    e Zd ZdZed        Zd Zy)ListzList Compute Engine network firewall policies.

  *{command}* is used to list network firewall policies. A network
  firewall policy is a set of rules that controls access to various resources.
  c                     |j                   j                  d       t        j                  |dd       |j                   j	                  t
        j                         y )NzX      table(
        name,
        region.basename(),
        description
      )
      T)regionalglobal_)display_info	AddFormatr   AddMultiScopeListerFlagsAddCacheUpdaterr
    NetworkFirewallPoliciesCompleter)clsparsers     r   Argsz	List.Args0   sI    
!! #
  ##FT4H
''(N(NOr   c                    t        j                  | j                               }|j                  j                  }|j
                  }|j                  r|j                  }n2t        j                  j                  j                  j                         }|j                  rg }|j                  D ]^  }|j                  t        j                  |j                  |j!                  ||j#                               d|j$                  d              ` t&        j(                  j+                  |      S t-        |dd       r>t        j                  |j.                  |j1                  |      d|j$                  d       S |j3                  |      }t5        |d      rd|_        t9        ||      \  }	}
|
r|
|_        t9        ||      \  }}
|	|z  }	|
r|	S )N)projectregionr   )fieldlimit
batch_sizeglobal)r*   returnPartialSuccessT)r   ComputeApiHolderReleaseTrackr   apitools_clientMESSAGES_MODULEr*   r   VALUEScore	GetOrFailregionsappendr   YieldFromListregionNetworkFirewallPolicies/ComputeRegionNetworkFirewallPoliciesListRequeststripr-   	itertoolschainfrom_iterablegetattrr   )ComputeNetworkFirewallPoliciesListRequest3ComputeNetworkFirewallPoliciesAggregatedListRequesthasattrr0   r   	pageToken)selfargsholderr   messagesr*   regional_generatorsr+   r   firewall_policiesnext_page_token	list_pages               r   RunzList.Run<   s   **4+<+<+>?F]]**F%%H||g!!&&..88:g ||LL&""$$44HH#FLLN I <jj!	" ! __**+>?? tXt$%%

(
(

<
<W
<
M

  JJ K Gw./%)g")5*&
)g#/
'$ i9$	  r   N)__name__
__module____qualname____doc__classmethodr(   rN    r   r   r   r   (   s"     	P 	P/r   r   EXAMPLESa      To list global network firewall policies under project
    ``my-project'', run:

      $ {command} --project=my-project --global

    To list regional network firewall policies under project
    ``my-project'', specify a list of regions with ``--regions'':

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

    To list all global and regional network firewall policies under project
    ``my-project'', omit ``--global'' and ``--regions'':

      $ {command} --project=my-project
    )rR   
__future__r   r   r   r>   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper	   <googlecloudsdk.command_lib.compute.network_firewall_policiesr
   googlecloudsdk.corer   r   UniverseCompatibleListCommandr   detailed_helprT   r   r   <module>r_      sl    5 &  '  ' 7 1 ( N *7 B4 B BJ 	 r   