a Y@sddlZz ddlZWney.ddlZYn0ddlmZmZedZdej j j vZ edZ e slde _GdddeZdS) N)TransportErrorHTTP_EXCEPTIONS elasticsearchzelasticsearch.traceFc@sPeZdZdZdZddd Zd d Zd d ZddZddZ dddZ ddZ dS) Connectionz Class responsible for maintaining a connection to an Elasticsearch node. It holds persistent connection pool to it and it's main interface (`perform_request`) is thread-safe. Also responsible for logging. http localhost#F cKsD|j}|r|d7}d|||f|_|r4d|d}||_||_dS)a :arg host: hostname of the node (default: localhost) :arg port: port to use (integer, default: 9200) :arg url_prefix: optional url prefix for elasticsearch :arg timeout: default timeout in seconds (float, default: 10) sz %s://%s:%s/N)transport_schemahoststrip url_prefixtimeout)selfrportuse_sslrrkwargsschemerD/Users/ymaher/Downloads/lambdas_org/elasticsearch/connection/base.py__init__szConnection.__init__cCsd|jj|jfS)Nz<%s: %s>) __class____name__r)rrrr__repr__-szConnection.__repr__c CsBz"tjt|ddddddWSttfy<|YS0dS)NTr),z: ) sort_keysindent separators'z\u0027)jsondumpsloadsreplace ValueError TypeError)rdatarrr _pretty_json0s"zConnection._pretty_jsonc CsttjrtjsdSd|vr,|dddn|d}|jrJ||jdd}td|rXdnd|||rl||ndttj rt d|||r||d d nddS) N?z?pretty&z?prettyr z-curl %s-X%s 'http://localhost:9200%s' -d '%s'z$-H 'Content-Type: application/json' z#[%s] (%.3fs) #%s z #) tracer isEnabledForloggingINFOhandlersr&rinfor*DEBUGdebug)rmethodpathbody status_coderesponsedurationrrr _log_trace8s  zConnection._log_tracecCsP|r|d}td||||td|td||||||||dS)z Log a successful API call. utf-8%s %s [status:%s request:%.3fs]> %s< %sN)decodeloggerr3r5r<)rr6full_urlr7r8r9r:r;rrrlog_request_successGs   zConnection.log_request_successNc Csx|dkr|dkrdStjd|||p$d||dud|r@|d}td|||||||||durttd |dS) z Log an unsuccessful API call. HEADiNr>zN/A)exc_infor=r?r@)rBwarningrAr5r<) rr6rCr7r8r;r9r: exceptionrrrlog_request_failYs  zConnection.log_request_failc Cs|}d}z8|r>t|}|d|}t|tr>d|vr>|d}Wn4ttfyt}ztd|WYd}~n d}~00t |t |||dS)z, Locate appropriate exception and raise it. Nerrortypez.Undecodable raw error response from server: %s) r#r%get isinstancedictr'r(rBrGrr)rr9raw_data error_messageZadditional_infoerrrrr _raise_erroros   "zConnection._raise_error)rr Fr r )NNN) r __module__ __qualname____doc__rrrr*r<rDrIrRrrrrrs  r)r0Z simplejsonr# ImportError exceptionsrr getLoggerrBLoggermanager loggerDictZ_tracer_already_configuredr. propagateobjectrrrrrs