o .&a+@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 4/usr/lib/python3/dist-packages/botocore/discovery.pyrsrc@eZdZdZdZdS)EndpointDiscoveryRequiredzD Endpoint Discovery is disabled but is required for this operation. zAEndpoint Discovery is not enabled but this operation requires it.Nr r r __doc__fmtr r r r rrc@r)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$|] \}}|vr||fVqdSrr .0kv input_keysr r Ks"zDEndpointDiscoveryModel.discovery_operation_kwargs..)r+rpopdictitemsrrr r5r discovery_operation_kwargsEs    z1EndpointDiscoveryModel.discovery_operation_kwargscCs||j|Sr) _gather_idsr'r operationparamsr r r gather_identifiersMz)EndpointDiscoveryModel.gather_identifiersNcCsb|duri}|jD]#\}}|jdr||||<q |jdkr.||vr.|||||q |S)Nendpointdiscoveryid structure)r)r:metadatar type_namer=)rshaper@ids member_name member_shaper r r r=Ps z"EndpointDiscoveryModel._gather_idsr) r r r r!rr&r+r.r<rAr=r r r r r-s  rc@sneZdZdddZddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZdS)EndpointDiscoveryManagerNTcCsP|duri}||_i|_|durtj}||_||_t||_t|j j |_ dSr) _cache_failed_attemptstime_time_always_discoverweakrefproxy_clientrmetar _model)rclientcache current_timealways_discoverr r r r!^s z!EndpointDiscoveryManager.__init__cCs8|d}|}|D]}|d}||d|d<q |S)N EndpointsCachePeriodInMinutes< Expiration)rOr)rresponse endpointsrXendpoint cache_timer r r _parse_endpointsms  z)EndpointDiscoveryManager._parse_endpointscCst|tr tt|S|Sr) isinstancer9tuplesortedr:)rvaluer r r _cache_itemus z$EndpointDiscoveryManager._cache_itemc s0jjdi|}tfddt|DS)Nc3s|] \}}|VqdSr)rgr1rr r r7}sz=EndpointDiscoveryManager._create_cache_key..r )rUr<rdrer:r;r rhr _create_cache_key{sz*EndpointDiscoveryManager._create_cache_keycCs|j||Sr)rUrAr>r r r rArBz+EndpointDiscoveryManager.gather_identifierscKs*|jdi|}||jvr|j|=dSdS)Nr )rirL)rr cache_keyr r r delete_endpointss  z)EndpointDiscoveryManager.delete_endpointscKs@|jjdi|}|jj}t|j|}td||di|S)Nz%Discovering endpoints with kwargs: %sr )rUr<r&getattrrSloggerdebug)rrr-r%r r r _describe_endpointss   z,EndpointDiscoveryManager._describe_endpointscs.||jvrdS|fdd|j|DS)Ncsg|] }|dkr|qS)r]r )r2enowr r szCEndpointDiscoveryManager._get_current_endpoints..)rLrO)rkeyr rqr _get_current_endpointss z/EndpointDiscoveryManager._get_current_endpointsc Kst|jdi|}z|jdi|}||}||j|<|j|d|WSttfy9|d|j|<YdSw)Nr\r ) rirorbrLrMr8rrrO)rrrjr^r_r r r _refresh_current_endpointss  z3EndpointDiscoveryManager._refresh_current_endpointscCs0||jvr|}||j|krdS|j|=dS)NTF)rMrO)rrjrrr r r _recently_faileds z)EndpointDiscoveryManager._recently_failedcCs |ddS)NrAddressr )rr_r r r _select_endpoints z)EndpointDiscoveryManager._select_endpointcKs|d}|j|}|js|std|dS|jdi|}||}|r,||S||}|sB|j di|}|rB||Std||j |d}|rV||S|rl|ri|j di|}|ri||St dS)Nr0zAOptional discovery disabled. Skipping discovery for Operation: %sz%Endpoint Discovery has failed for: %sr ) rUr.rPrmrnriruryrwrvrLrr)rrr?discovery_requiredrjr_recently_failed stale_entriesr r r describe_endpoints:         z*EndpointDiscoveryManager.describe_endpoint)NNT)r r r r!rbrgrirArkrorurvrwryr}r r r r rK]s    rKc@s4eZdZddZddZddZddZd d Zd S) EndpointDiscoveryHandlercCrr)_manager)rmanagerr r r r!r"z!EndpointDiscoveryHandler.__init__cCs:|d||j|d||j|d||jdS)Nzbefore-parameter-build.%szrequest-created.%szneeds-retry.%s)registerrAregister_firstdiscover_endpointhandle_retries)revents service_idr r r rs  z!EndpointDiscoveryHandler.registercKs0|j}|dur dS|j||}d|i|d<dS)N identifiers discovery)rrrA)rr@rcontextrrrHr r r rAs z+EndpointDiscoveryHandler.gather_identifierscKsn|jdid}|durdS|jj||d}|dur#tddS|ds,d|}td|||_dS)Nrrr0r/z&Failed to discover and inject endpointhttpzhttps://z!Injecting discovered endpoint: %s)rrrr}rmrn startswithurl)rrequestr-rrHr`r r r rs    z*EndpointDiscoveryHandler.discover_endpointc Ks|durdS|\}}|did}|did}|dkr&|dkr&dS|di}|did } | dur;dS|jj|j| d d S) NResponseMetadataHTTPStatusCodeErrorCodeiInvalidEndpointExceptionrrrrr)rrrkr$) r request_dictr^r?r_status error_coderrHr r r rs z'EndpointDiscoveryHandler.handle_retriesN)r r r r!rrArrr r r r r~s   r~)rNloggingrQbotocorerbotocore.exceptionsrrrbotocore.modelrbotocore.utilsr getLoggerr rmrrrrobjectrrKr~r r r r s     0|