
    G	                     4    S r SSKrSSKJr  S rS rS rS rg)z)Common classes and functions for routers.    N)mapc                 $    U R                  U5      $ N)AdvertiseModeValueValuesEnum)resource_classmodes     3lib/googlecloudsdk/api_lib/compute/routers_utils.py	ParseModer
      s    		4	4T	::    c                 @    [        [        U R                  U5      5      $ r   )listr   (AdvertisedGroupsValueListEntryValuesEnum)r   groupss     r	   ParseGroupsr      s!    		.
A
A6J
L Lr   c           	          UR                  5        VVs/ s H  u  p#U R                  X#S9PM     nnnUR                  [        R                  " SS5      S9  U$ s  snnf )aO  Parses a dict of IP ranges into AdvertisedIpRange objects.

Args:
  messages: API messages holder.
  ip_ranges: A dict of IP ranges of the form ip_range=description, where
    ip_range is a CIDR-formatted IP and description is an optional text label.

Returns:
  A list of AdvertisedIpRange objects containing the specified IP ranges.
)rangedescriptionr   r   key)itemsRouterAdvertisedIpRangesortoperator
attrgetter)messages	ip_rangesip_ranger   rangess        r	   ParseIpRangesr       sc     $-??#4#4
( &&X&O#4 	  	++(%%g}=+>	-s   Ac                     U Vs/ s H  nU R                  US9PM     nnUR                  [        R                  " S5      S9  U$ s  snf )a  Parses a list of IP address ranges into CustomLearnedIpRange objects.

Args:
  messages: API messages holder.
  ip_ranges: A list of ip_ranges, where each ip_range is a CIDR-formatted IP.

Returns:
  A list of CustomLearnedIpRange objects containing the specified IP ranges.
)r   r   r   )!RouterBgpPeerCustomLearnedIpRanger   r   r   )r   r   r   r   s       r	   ParseCustomLearnedIpRangesr"   5   sW      ( 00x0@ 	  	++(%%g.+/	-s   A)__doc__r   	six.movesr   r
   r   r   r"    r   r	   <module>r&      s'    0  ;L
*r   