
                         <   d 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dl
mZ dd	lmZ  e	j                  e	j                  j                         e	j"                   G d
 de	j$                                      Z e	j                  e	j                  j(                        e	j"                   G d de                    Z e	j                  e	j                  j,                        e	j"                   G d de                    Z ej0                  d      e_        y)z Command for listing subnetworks.    )absolute_import)division)unicode_literals)base_classes)lister)base)flags)	arg_utilsc                   `    e Zd ZdZdZej                  Zej                  Z	e
d        Zd Zd Zy)ListzList subnetworks.Tc                    | j                   r&|j                  j                  | j                         n%|j                  j                  | j                         t        j                  |       |j                  j                  t        j                         |j                  dd       | j                   r'|j                  dddit        j                  dd	       y y )
Nz	--networkz,Only show subnetworks of a specific network.)helpz--viewWITH_UTILIZATIONzOutput includes the IP address utilization data of all subnetwork ranges, showing total allocated and free IPv4 and IPv6 IP addresses.appendz3Specifies the information to include in the output.)choicestypeactionr   )_include_viewdisplay_info	AddFormat _utilization_details_list_format_default_list_formatr   AddRegionsArgAddCacheUpdaterr	   SubnetworksCompleteradd_argumentr
   ChoiceToEnumName)clsparsers     ,lib/surface/compute/networks/subnets/list.pyArgsz	List.Args)   s     ##C$H$HI##C$<$<=
 
''(B(BC
;  = 
 , ))C       c                 v    g }||S |D ]-  }|dk(  s	|j                  |j                  j                         / |S )Nr   )r   ViewsValueValuesEnumr   )selfviewrequest_messageviewsvs        r    _GetSubnetworkViewszList._GetSubnetworkViewsH   sC    E|l	
 	 _99JJK  Lr"   c           	   #     K   t        j                  | j                               }|j                  }t	        j
                  ||j                        }| j                  rpt	        j                  ||j                  j                  |j                  j                  | j                  |j                  |j                  j                              }n@t	        j                  ||j                  j                  |j                  j                        }t	        j                  ||      D ]X  }|j                   | d|v s|j                  j#                  |d         }|j%                         |j                   k(  sU| Z y w)N)clientregional_serviceaggregation_servicesubnetwork_views_flag)r,   r-   r.   network)r   ComputeApiHolderReleaseTrackr,   r   ParseMultiScopeFlags	resourcesr   MultiScopeListerapitools_clientsubnetworksr*   r&   messagesComputeSubnetworksListRequestInvoker0   ParseName)r%   argsholderr,   request_datalist_implementationresourcenetwork_refs           r    RunzList.RunQ   s5    **4+<+<+>?F]]F..tV5E5EFL"33!11==$44@@ $ 8 8iiFF!	 #33!11==$44@@ MM,0CD		 &&,,Xi-@A-. Es   D:F =;F 9F N)__name__
__module____qualname____doc__r   r	   #DEFAULT_LIST_FORMAT_WITH_IPV6_FIELDr   *DEFAULT_LIST_FORMAT_WITH_UTILIZATION_FIELDr   classmethodr!   r*   rC    r"   r    r   r      sD     -BB66 #  <r"   r   c                       e Zd ZdZdZy)ListBetaz*Create a subnet in the Beta release track.TNrD   rE   rF   rG   r   rK   r"   r    rM   rM   p   s     3-r"   rM   c                       e Zd ZdZdZy)	ListAlphaz-Describe a subnet in the Alpha release track.TNrN   rK   r"   r    rP   rP   x   s     6-r"   rP   r7   N)rG   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   3googlecloudsdk.command_lib.compute.networks.subnetsr	   $googlecloudsdk.command_lib.util.apisr
   ReleaseTracksr2   GAUniverseCompatibleListCommandr   BETArM   ALPHArP   GetRegionalListerHelpdetailed_helprK   r"   r    <module>r^      s	    ' &  ' 7 1 ( E : D%%(()N4 N  *Nb D%%**+t   , D%%++,   - 8\77F r"   