3 B\(@sddlZddlZddlZddlmZddlmZmZmZddl m Z ej e Z GdddeZGdddeZGd d d eZd d ZGd ddeZGdddeZGdddeZdS)N) xform_name) BotoCoreErrorHTTPClientErrorConnectionError)CachedPropertyc@s eZdZdS)EndpointDiscoveryExceptionN)__name__ __module__ __qualname__r r l/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/botocore/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)rr r __doc__fmtr r r r r sr c@seZdZdZdZdS)EndpointDiscoveryRefreshFailedz? Endpoint Discovery failed to the refresh the known endpoints. zGszDEndpointDiscoveryModel.discovery_operation_kwargs..)r$rpopdictitems)rrr )r-r discovery_operation_kwargsAs    z1EndpointDiscoveryModel.discovery_operation_kwargscCs|j|j|S)N) _gather_idsr )r operationparamsr r r gather_identifiersIsz)EndpointDiscoveryModel.gather_identifiersNcCs^|dkr i}xL|jjD]>\}}|jjdr:||||<q|jdkr|j||||qW|S)NZendpointdiscoveryidZ structure)r"r1metadatarZ type_namer3)rshaper5ids member_nameZ member_shaper r r r3Ls  z"EndpointDiscoveryModel._gather_ids)N) rr r rrrr$r'r2r6r3r r r r r,s  rc@sneZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZdS)EndpointDiscoveryManagerNcCsJ|dkr i}||_i|_|dkr&tj}||_tj||_t|jj |_ dS)N) _cache_failed_attemptstime_timeweakrefproxy_clientrmetar_model)rclientcache current_timer r r rZs z!EndpointDiscoveryManager.__init__cCs<|d}|j}x&|D]}|jd}||d|d<qW|S)NZ EndpointsZCachePeriodInMinutes< Expiration)r?r)rresponse endpointsrGendpointZ cache_timer r r _parse_endpointshs   z)EndpointDiscoveryManager._parse_endpointscCs"t|trtt|jS|SdS)N) isinstancer0tuplesortedr1)rvaluer r r _cache_itemps z$EndpointDiscoveryManager._cache_itemc s,jjf|}tfddt|jDS)Nc3s|]\}}j|VqdS)N)rR)r*r+r,)rr r r.xsz=EndpointDiscoveryManager._create_cache_key..)rDr2rOrPr1)rrr )rr _create_cache_keyvsz*EndpointDiscoveryManager._create_cache_keycCs|jj||S)N)rDr6)rr4r5r r r r6zsz+EndpointDiscoveryManager.gather_identifierscKs"|jf|}||jkr|j|=dS)N)rSr<)rr cache_keyr r r delete_endpoints}s  z)EndpointDiscoveryManager.delete_endpointscKs8|jjf|}|jj}t|j|}tjd||f|S)Nz%Discovering endpoints with kwargs: %s)rDr2rgetattrrBloggerdebug)rrr&rr r r _describe_endpointss   z,EndpointDiscoveryManager._describe_endpointscs.||jkrdS|jfdd|j|DS)Ncsg|]}|dkr|qS)rIr )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|<|jj|d|Sttfk rh|jd|j|<dSXdS)NrH) rSrYrMr<r=r/rrr?)rrrTrJrKr r r _refresh_current_endpointss    z3EndpointDiscoveryManager._refresh_current_endpointscCs0||jkr,|j}||j|kr$dS|j|=dS)NTF)r=r?)rrTr[r r r _recently_faileds  z)EndpointDiscoveryManager._recently_failedcCs |ddS)NrZAddressr )rrKr r r _select_endpointsz)EndpointDiscoveryManager._select_endpointcKs|jf|}|j|}|r$|j|S|j|}|sL|jf|}|rL|j|Stjd||jj|d}|rt|j|S|j j |dr|r|jf|}|r|j|St dS)Nz%Endpoint Discovery has failed for: %sr)) rSr^rar`r_rWrXr<rrDr'r)rrrTrKZrecently_failedZ stale_entriesr r r describe_endpoints(          z*EndpointDiscoveryManager.describe_endpoint)NN)rr r rrMrRrSr6rUrYr^r_r`rarbr r r r r;Ys   r;c@s4eZdZddZddZddZddZd d Zd S) EndpointDiscoveryHandlercCs ||_dS)N)_manager)rmanagerr r r rsz!EndpointDiscoveryHandler.__init__cCs:|jd||j|jd||j|jd||jdS)Nzbefore-parameter-build.%szrequest-created.%szneeds-retry.%s)registerr6Zregister_firstdiscover_endpointhandle_retries)reventsZ service_idr r r rfs z!EndpointDiscoveryHandler.registercKs0|j}|dkrdS|jj||}d|i|d<dS)N identifiers discovery)rrdr6)rr5rcontextrrr9r r r r6s z+EndpointDiscoveryHandler.gather_identifierscKsn|jjdijd}|dkr dS|jj||d}|dkrFtjddS|jdsXd|}tjd|||_dS)Nrkrj)r)r(z&Failed to discover and inject endpointhttpzhttps://z!Injecting discovered endpoint: %s)rlrrdrbrWrX startswithurl)rrequestr&rr9rLr r r rgs    z*EndpointDiscoveryHandler.discover_endpointc Ks|dkr dS|\}}|jdijd}|jdijd}|dkrL|dkrLdS|jdi}|jdijd } | dkrvdS|jj|j| d d S) NZResponseMetadataZHTTPStatusCodeErrorZCodeiZInvalidEndpointExceptionrlrkrj)r)r(r)rrdrUr) rZ request_dictrJr4r_statusZ error_coderlr9r r r rhs  z'EndpointDiscoveryHandler.handle_retriesN)rr r rrfr6rgrhr r r r rcs  rc)r>loggingr@ZbotocorerZbotocore.exceptionsrrrZbotocore.utilsr getLoggerrrWrr rrobjectrr;rcr r r r  s   -p