B =@Sa+@sddlZddlZddlZddlmZddlmZmZmZddl m Z ddl m Z e eZGdddeZGdd d eZGd d d eZd d ZGdddeZGdddeZGdddeZdS)N) xform_name) BotoCoreErrorHTTPClientErrorConnectionError)OperationNotFoundError)CachedPropertyc@s eZdZdS)EndpointDiscoveryExceptionN)__name__ __module__ __qualname__r r j/private/var/folders/fg/1jzmct0d7d72tjkvm_1nhqc5sw67yj/T/pip-unpacked-wheel-ef76ia09/botocore/discovery.pyrsrc@seZdZdZdZdS)EndpointDiscoveryRequiredzD Endpoint Discovery is disabled but is required for this operation. zAEndpoint Discovery is not enabled but this operation requires it.N)r r r __doc__fmtr r r r rsrc@seZdZdZdZdS)EndpointDiscoveryRefreshFailedz? Endpoint Discovery failed to the refresh the known endpoints. zs  z-EndpointDiscoveryModel.discovery_required_forc sB|j|ds(|dd|ddtfdd|DS)N Identifiers Operationc3s"|]\}}|kr||fVqdS)Nr ).0kv) input_keysr r KszDEndpointDiscoveryModel.discovery_operation_kwargs..)r%rpopdictitems)rrr )r.r discovery_operation_kwargsEs    z1EndpointDiscoveryModel.discovery_operation_kwargscCs||j|S)N) _gather_idsr!)r operationparamsr r r gather_identifiersMsz)EndpointDiscoveryModel.gather_identifiersNcCsf|dkr i}xT|jD]F\}}|jdr:||||<q|jdkr||kr|||||qW|S)NZendpointdiscoveryidZ structure)r#r2metadatarZ type_namer4)rshaper6ids member_nameZ member_shaper r r r4Ps z"EndpointDiscoveryModel._gather_ids)N) r r r rrr r%r(r3r7r4r r r r r-s  rc@sneZdZdddZddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZdS)EndpointDiscoveryManagerNTcCsP|dkr i}||_i|_|dkr&tj}||_||_t||_t|j j |_ dS)N) _cache_failed_attemptstime_time_always_discoverweakrefproxy_clientrmetar_model)rclientcache current_timeZalways_discoverr r r r^s z!EndpointDiscoveryManager.__init__cCs<|d}|}x&|D]}|d}||d|d<qW|S)NZ EndpointsZCachePeriodInMinutes< Expiration)r@r)rresponse endpointsrIendpointZ cache_timer r r _parse_endpointsms   z)EndpointDiscoveryManager._parse_endpointscCs"t|trtt|S|SdS)N) isinstancer1tuplesortedr2)rvaluer r r _cache_itemus z$EndpointDiscoveryManager._cache_itemc s,jjf|}tfddt|DS)Nc3s|]\}}|VqdS)N)rT)r+r,r-)rr r r/}sz=EndpointDiscoveryManager._create_cache_key..)rFr3rQrRr2)rrr )rr _create_cache_key{sz*EndpointDiscoveryManager._create_cache_keycCs|j||S)N)rFr7)rr5r6r r r r7sz+EndpointDiscoveryManager.gather_identifierscKs"|jf|}||jkr|j|=dS)N)rUr=)rr cache_keyr r r delete_endpointss  z)EndpointDiscoveryManager.delete_endpointscKs8|jjf|}|jj}t|j|}td||f|S)Nz%Discovering endpoints with kwargs: %s)rFr3r getattrrDloggerdebug)rrr'rr r r _describe_endpointss   z,EndpointDiscoveryManager._describe_endpointscs.||jkrdS|fdd|j|DS)Ncsg|]}|dkr|qS)rKr )r+e)nowr r szCEndpointDiscoveryManager._get_current_endpoints..)r=r@)rkeyr )r]r _get_current_endpointss z/EndpointDiscoveryManager._get_current_endpointsc Ksn|jf|}y2|jf|}||}||j|<|j|d|Sttfk rh|d|j|<dSXdS)NrJ) rUr[rOr=r>r0rrr@)rrrVrLrMr r r _refresh_current_endpointss    z3EndpointDiscoveryManager._refresh_current_endpointscCs0||jkr,|}||j|kr$dS|j|=dS)NTF)r>r@)rrVr]r r r _recently_faileds  z)EndpointDiscoveryManager._recently_failedcCs |ddS)NrZAddressr )rrMr r r _select_endpointsz)EndpointDiscoveryManager._select_endpointcKs|d}|j|}|js0|s0td|dS|jf|}||}|rT||S||}|s||j f|}|r|||Std||j |d}|r||S|r|r|j f|}|r||St dS)Nr*zAOptional discovery disabled. Skipping discovery for Operation: %sz%Endpoint Discovery has failed for: %s) rFr(rArYrZrUr`rcrbrar=rr)rrr5Zdiscovery_requiredrVrMZrecently_failedZ stale_entriesr r r describe_endpoints6            z*EndpointDiscoveryManager.describe_endpoint)NNT)r r r rrOrTrUr7rWr[r`rarbrcrdr r r r r<]s   r<c@s4eZdZddZddZddZddZd d Zd S) EndpointDiscoveryHandlercCs ||_dS)N)_manager)rmanagerr r r rsz!EndpointDiscoveryHandler.__init__cCs:|d||j|d||j|d||jdS)Nzbefore-parameter-build.%szrequest-created.%szneeds-retry.%s)registerr7Zregister_firstdiscover_endpointhandle_retries)reventsZ service_idr r r rhs z!EndpointDiscoveryHandler.registercKs0|j}|dkrdS|j||}d|i|d<dS)N identifiers discovery)rrfr7)rr6rcontextrrr:r r r r7s z+EndpointDiscoveryHandler.gather_identifierscKsn|jdid}|dkr dS|jj||d}|dkrFtddS|dsXd|}td|||_dS)Nrmrl)r*r)z&Failed to discover and inject endpointhttpzhttps://z!Injecting discovered endpoint: %s)rnrrfrdrYrZ startswithurl)rrequestr'rr:rNr r r ris    z*EndpointDiscoveryHandler.discover_endpointc Ks|dkr dS|\}}|did}|did}|dkrL|dkrLdS|di}|did } | dkrvdS|jj|j| d d S) NZResponseMetadataZHTTPStatusCodeErrorZCodeiZInvalidEndpointExceptionrnrmrl)r*r)r)rrfrWr) rZ request_dictrLr5r_statusZ error_codernr:r r r rjs  z'EndpointDiscoveryHandler.handle_retriesN)r r r rrhr7rirjr r r r res  re)r?loggingrBZbotocorerZbotocore.exceptionsrrrZbotocore.modelrZbotocore.utilsr getLoggerr rYrrrrobjectrr<rer r r r  s    0|