
    	                     X    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 rS r	S	 r
S
 rg)z)Common classes and functions for routers.    )absolute_import)division)unicode_literalsN)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%   8   sW      ( 00x0@ 	  	++(%%g.+/	-s   A)__doc__
__future__r   r   r   r   	six.movesr   r   r   r"   r%    r   r   <module>r*      s.    0 &  '  ;L
*r   