
    	                     X    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 Zd Z	d	 Z
d
 Zy)z)Common classes and functions for routers.    )absolute_import)division)unicode_literalsN)mapc                 $    | j                  |      S N)AdvertiseModeValueValuesEnum)resource_classmodes     3lib/googlecloudsdk/api_lib/compute/routers_utils.py	ParseModer      s    		4	4T	::    c                 @    t        t        | j                  |            S r   )listr   (AdvertisedGroupsValueListEntryValuesEnum)r
   groupss     r   ParseGroupsr      s!    		.
A
A6J
L Lr   c                     |j                         D cg c]  \  }}| j                  ||       }}}|j                  t        j                  dd             |S c c}}w )a]  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"   #   sg     $-??#4#4
(K &&X;&O#4 	  	++(%%g}=+>	-s   Ac                     |D cg c]  }| j                  |       }}|j                  t        j                  d             |S c c}w )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   