
                            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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g d      Zd Zd Zej,                  ej.                  j0                  fd       Zej.                  j0                  fdZy)z/Utilities for operating on different endpoints.    )absolute_import)division)unicode_literalsN)util)apis)base)
exceptions)
properties)parse)z
asia-east2zasia-northeast2zasia-south1zasia-southeast1zasia-southeast2zaustralia-southeast1zeurope-north1zeurope-west1zeurope-west2zeurope-west3zeurope-west4zeurope-west6zeurope-west8zeurope-west9zme-central2znorthamerica-northeast1zsouthamerica-east1zus-central1zus-east4zus-east7zus-west1c           
          | t         vr\t        t               }|j                          t        j                  ddj                  | dj                  d |D                          y )Nz
--locationzJ{bad_location} is not a valid location. Allowed values: [{location_list}].z, c              3   >   K   | ]  }d j                  |        yw)z'{}'N)format).0rs     Glib/googlecloudsdk/command_lib/container/gkemulticloud/endpoint_util.py	<genexpr>z$_ValidateLocation.<locals>.<genexpr>A   s     #HiFMM!$4is   )bad_locationlocation_list)_VALID_LOCATIONSlistsortr	   InvalidArgumentExceptionr   join)location	locationss     r   _ValidateLocationr   8   sd    %%%&INN

-
-	$f!))#Hi#HH % 
  &    c                     t        j                  |       \  }}}}}}dj                  ||      }t        j                  ||||||f      S )Nz{}-{})r   urlparser   
urlunparse)endpointr   schemenetlocpathparamsqueryfragments           r   _AppendLocationr(   F   sK    27..2J/&&$x>>(F+&			664I	JJr   c              #     K   t         j                  j                  j                  j	                         }	 |sX| st        d      t        |        t        | |      }t         j                  j                  j                  j                  |       d |s4t         j                  j                  j                  j                  |       yy# |s4t         j                  j                  j                  j                  |       w w xY ww)zContext manager to override the GKE Multi-cloud endpoint temporarily.

  Args:
    location: str, location to use for GKE Multi-cloud.
    track: calliope_base.ReleaseTrack, Release track of the endpoint.

  Yields:
    None.
  zA location must be specified.)trackN)	r
   VALUESapi_endpoint_overridesgkemulticloudGet
ValueErrorr   _GetEffectiveEndpointSet)r   r*   original_epregional_eps       r   GkemulticloudEndpointOverrider4   L   s      !!88FFJJL+
N899!)(%@k..<<@@M	..<<@@M ;..<<@@M s   3DAC 7D8DDc                     t        j                  t        j                  t        j                  |            }t        ||       S )z*Returns regional GKE Multi-cloud Endpoint.)r   GetEffectiveApiEndpointapi_utilMODULE_NAMEGetApiVersionForTrackr(   )r   r*   r!   s      r   r0   r0   f   s7    ))H::5A( 
8	,,r   )__doc__
__future__r   r   r   
contextlib.googlecloudsdk.api_lib.container.gkemulticloudr   r7   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   r	   googlecloudsdk.corer
   six.moves.urllibr   	frozensetr   r   r(   contextmanagerReleaseTrackGAr4   r0    r   r   <module>rG      s    6 &  '  K , ( . * "    2K 262C2C2F2F N N2 +/*;*;*>*> -r   