
                            S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SS	K
Jr  SS
KJr  \R                  R                   S\R                  R"                  S0r\R                  R"                  S4S jr\R                  R"                  4S jr\R                  R"                  4S jrS rS rS rS rS rg)z5Utility functions for Distributed Cloud Edge Network.    )absolute_import)division)unicode_literalsN)apis)waiter)arg_parsers)base)	resourcesv1alpha1v1Fc                 V    [         R                  U 5      n[        R                  " SX!S9$ )Nedgenetwork)no_http)VERSION_MAPgetr   GetClientInstance)release_trackr   api_versions      9lib/googlecloudsdk/api_lib/edge_cloud/networking/utils.pyr   r   $   s#    .+			{	LL    c                 Z    [         R                  U 5      n[        R                  " SU5      $ Nr   )r   r   r   GetMessagesModule)r   r   s     r   r   r   )   s#    .+			{	;;r   c                 ~    [         R                  " 5       n[        R                  U 5      nUR	                  SU5        U$ r   )r
   Registryr   r   RegisterApiByName)r   resource_parserr   s      r   GetResourceParserr   .   s4    &&(/.+##M;?	r   c                     [         R                  R                  UR                  SS9n[        R
                  " UU R                  5      n[        R                  " XCSR                  UR                  5       5      5        g)z=Waits for the given google.longrunning.Operation to complete.z)edgenetwork.projects.locations.operations)
collectionzWaiting for [{0}] to finishN)
r
   REGISTRYParsenamer   CloudOperationPollerprojects_locations_operationsWaitForformatRelativeName)client	operationresourceoperation_refpollers        r   WaitForOperationr.   5   sk    $$**nn!L + N-&&x'-'K'KM&..#**=+E+E+GHJr   c                     [         R                  " SU 5      nU(       d  gUR                  5        Vs/ s H  n[        U5      PM     nnUS   S:X  a  gU H  nUS:  d  US:  d  M    g   gs  snf )zAAccepts an ipv4 address in string form and returns True if valid.z,^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$Fr      T)rematchgroupsint)ipr2   xoctetsns        r   IsValidIPV4r9   @   sk    
((BB
G%	!LLN+NqCFN&+ AY!^a1uC  
 ,s   A+c                 R     [         R                  " U 5      ng! [         a     gf = f)z0Validates a given ip address to be IPv6 address.FT)	ipaddressIPv6Address
ValueError)r5   _s     r   IsValidIPV6r?   S   s0    b!A 
 
 s    
&&c                     [        U 5      (       d5  [        U 5      (       d%  [        R                  " SR	                  U 5      5      eU $ )<Argparse argument type that checks for a valid ipv4 address.z#invalid IPv4 or IPv6 address: '{0}')r9   r?   r   ArgumentTypeErrorr'   values    r   
IPArgumentrE   \   s?    	U		K$6$6

'
'-44U;  
,r   c                 p    [        U 5      (       d%  [        R                  " SR                  U 5      5      eU $ )rA   zinvalid ipv4 value: '{0}')r9   r   rB   r'   rC   s    r   IPV4ArgumentrG   e   s5    	U		

'
'#**513 3 
,r   )__doc__
__future__r   r   r   r;   r1   googlecloudsdk.api_lib.utilr   r   googlecloudsdk.callioper   r	   googlecloudsdk.corer
   ReleaseTrackALPHAGAr   r   r   r   r.   r9   r?   rE   rG    r   r   <module>rQ      s    < &  '  	 , . / ( ) 	Z$ %)$5$5$8$8% M
 %)$5$5$8$8 <
 %)$5$5$8$8 J&r   