o ?cC+@sddlZddlZddlZddlmZddlmZmZmZddl m Z ddl m Z e eZGdddeZGdd d eZGd d d eZd d ZGdddZGdddZGdddZdS)N) xform_name) BotoCoreErrorConnectionErrorHTTPClientError)OperationNotFoundError)CachedPropertyc@s eZdZdS)EndpointDiscoveryExceptionN)__name__ __module__ __qualname__r r m/private/var/folders/cw/wlscbxl13mj6wd668h7l9g9sllkg5j/T/pip-target-b31awkwq/lib/python/botocore/discovery.pyrsrc@eZdZdZdZdS)EndpointDiscoveryRequiredzBEndpoint 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.z|j|ds|dd|ddfdd|DS)N Identifiers Operationcsi|] \}}|vr||qSr r .0kvZ input_keysr r OszEEndpointDiscoveryModel.discovery_operation_kwargs..)r+rpopitemsrrr r5r discovery_operation_kwargsIs    z1EndpointDiscoveryModel.discovery_operation_kwargscCs||j|Sr) _gather_idsr'r operationparamsr r r gather_identifiersQz)EndpointDiscoveryModel.gather_identifiersNcCsb|duri}|jD]#\}}|jdr||||<q |jdkr.||vr.|||||q |S)NZendpointdiscoveryidZ structure)r)r8metadatar type_namer;)rshaper>ids member_nameZ member_shaper r r r;Ts z"EndpointDiscoveryModel._gather_idsr) r r r r!rr&r+r.r:r?r;r r r r r/s   rc@speZdZ dddZddZddZd 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_timeZalways_discoverr r r r!ds z!EndpointDiscoveryManager.__init__cCs8|d}|}|D]}|d}||d|d<q |S)NZ EndpointsZCachePeriodInMinutes< Expiration)rJr)rresponse endpointsrSendpointZ cache_timer r r _parse_endpointsus  z)EndpointDiscoveryManager._parse_endpointscCst|tr tt|S|Sr) isinstancedicttuplesortedr8)rvaluer r r _cache_item}s z$EndpointDiscoveryManager._cache_itemc s0jjdi|}tfddt|DS)Nc3s|] \}}|VqdSr)r_r1rr r sz=EndpointDiscoveryManager._create_cache_key..r )rPr:r\r]r8r9r r`r _create_cache_keysz*EndpointDiscoveryManager._create_cache_keycCs|j||Sr)rPr?r<r r r r?r@z+EndpointDiscoveryManager.gather_identifierscKs*|jdi|}||jvr|j|=dSdS)Nr )rbrG)rr cache_keyr r r delete_endpointss  z)EndpointDiscoveryManager.delete_endpointscKs@|jjdi|}|jj}t|j|}td||di|S)Nz%Discovering endpoints with kwargs: %sr )rPr:r&getattrrNloggerdebug)rrr-r%r r r _describe_endpointss   z,EndpointDiscoveryManager._describe_endpointscs.||jvrdS|fdd|j|DS)Ncsg|] }|dkr|qS)rUr )r2enowr r szCEndpointDiscoveryManager._get_current_endpoints..)rGrJ)rkeyr rjr _get_current_endpointss z/EndpointDiscoveryManager._get_current_endpointsc Kst|jdi|}z|jdi|}||}||j|<|j|d|WSttfy9|d|j|<YdSw)NrTr ) rbrhrYrGrHr7rrrJ)rrrcrVrWr r r _refresh_current_endpointss  z3EndpointDiscoveryManager._refresh_current_endpointscCs0||jvr|}||j|krdS|j|=dS)NTF)rHrJ)rrcrkr r r _recently_faileds z)EndpointDiscoveryManager._recently_failedcCs |ddS)NrZAddressr )rrWr 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 ) rPr.rKrfrgrbrnrqrprorGrr)rrr=Zdiscovery_requiredrcrWZrecently_failedZ stale_entriesr r r describe_endpoints:         z*EndpointDiscoveryManager.describe_endpoint)NNT)r r r r!rYr_rbr?rdrhrnrorprqrrr r r r rFcs    rFc@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)registerr?Zregister_firstdiscover_endpointhandle_retries)reventsZ service_idr r r rvs  z!EndpointDiscoveryHandler.registercKs0|j}|dur dS|j||}d|i|d<dS)N identifiers discovery)rrtr?)rr>rcontextrrrDr r r r?s z+EndpointDiscoveryHandler.gather_identifierscKsn|jdid}|durdS|jj||d}|dur#tddS|ds,d|}td|||_dS)Nr{rzr0r/z&Failed to discover and inject endpointhttpzhttps://z!Injecting discovered endpoint: %s)r|rrtrrrfrg startswithurl)rrequestr-rrDrXr r r rws    z*EndpointDiscoveryHandler.discover_endpointc Ks|durdS|\}}|did}|did}|dkr&|dkr&dS|di}|did } | dur;dS|jj|j| d d S) NZResponseMetadataZHTTPStatusCodeErrorZCodeiZInvalidEndpointExceptionr|r{rzr}r)rrtrdr$) rZ request_dictrVr=r_statusZ error_coder|rDr r r rxs z'EndpointDiscoveryHandler.handle_retriesN)r r r r!rvr?rwrxr r r r rss   rs)loggingrIrLZbotocorerZbotocore.exceptionsrrrZbotocore.modelrZbotocore.utilsr getLoggerr rfrrrrrrFrsr r r r s     4~