Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
ó
Éec@s2ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZyddl
Z
Wnek
r»ddlZ
nXddlmZeedƒr÷ddlZeje_nddlZddlmZd„Zd„Zyedd	lmZejd
ƒrƒddlmZddl m!Z"dd
l#m$Z$ee$_ne‚Wn*ek
r¶e
jZddl%m"Z"nXej&e'ƒZ(dZ)ddZ*de+fd„ƒYZ,de+fd„ƒYZ-defd„ƒYZ.de+fd„ƒYZ/dS(iÿÿÿÿN(thttp_client(tparse(tstrutilst	parse_qsl(t
exceptionscCs”t|dƒrt|dƒry@|jƒ}|jdtjƒ|jƒ}|j|ƒ|SWqtk
rŒ}|jtjkr†dS‚qXndS(s­
    Analyze file-like object and attempt to determine its size.

    :param file_obj: file-like object.
    :retval The file's size or None if it cannot be determined.
    tseekttelliN(thasattrRRtostSEEK_ENDtIOErrorterrnotESPIPE(tfile_objtcurrtsizete((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyt
get_file_size$s
cOs|jj||ŽS(s
    A function which allows us to monkey patch eventlet's
    GreenSocket, adding a required 'getsockopt' method.
    TODO: (mclaren) we can remove this once the eventlet fix
    (https://bitbucket.org/eventlet/eventlet/commits/609f230)
    lands in mainstream packages.
    (tfdt
getsockopt(tselftargstkwargs((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR@s(tpatchertsocket(tHTTPSConnection(tGreenConnection(tGreenSocket(t
Connectiont
contegoclientii@t
HTTPClientcBsŒeZd„Zed„ƒZed„ƒZed„ƒZd„Zd„Zedd„ƒZ
ed„ƒZd„Zd	„Z
d
„ZRS(cKsÚ||_||_|j|jƒ}|j|_|j|_|j|_|j	|_
|j|jƒ|_|j
|j||_d|_|j|_|jrÖ|jjdƒrÖ|jjdƒ|_|jd=qÖndS(NsX-Auth-Token(tnova_http_clienttendpointtparse_endpointtschemetendpoint_schemethostnametendpoint_hostnametportt
endpoint_porttpatht
endpoint_pathtget_connection_classtconnection_classtget_connection_kwargstconnection_kwargstNonetidentity_headerst
auth_tokentget(RRR Rtendpoint_parts((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyt__init__cs 				cCs
tj|ƒS(N(Rturlparse(R ((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR!yscCs|dkrtStjSdS(Nthttps(tVerifiedHTTPSConnectionRtHTTPConnection(R"((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR*}scKs it|jddƒƒd6}|dkrœ|jddƒ|d<|jddƒ|d<|jddƒ|d<|jdtƒ|d<|jdtƒ|d<n|S(	NttimeoutiXR5tcacertt	cert_filetkey_filetinsecuretssl_compression(tfloatR1R.tFalsetTrue(R"Rt_kwargs((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR,„scCsM|j}y||j|j|jSWn tjk
rHtjƒ‚nXdS(N(R+R%R'R-Rt
InvalidURLtexctInvalidEndpoint(Rt_class((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytget_connection‘s	c
Cs)d|g}x;|djƒD])\}}d||f}|j|ƒqWdddg}x@|D]8\}}	|jj|ƒ}|ra|j|	|ƒqaqaW|jjd
ƒr¿|jdƒn|jdƒdk	rì|jd
|dƒn|jd|j|fƒtjtj	dj
|ƒƒƒdS(Ns
curl -i -X %stheaderss-H '%s: %s'R;s--key %sR:s	--cert %sR9s--cacert %sR<s-ktbodys-d '%s's%s%st (skey_files--key %s(s	cert_files	--cert %s(scacerts--cacert %s(titemstappendR-R1R.R tLOGtdebugRtsafe_encodetjoin(
RtmethodturlRtcurltkeytvaluetheadertconn_params_fmttfmt((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytlog_curl_requestšs"
	cCs«|jd|j|jf}d|g}|jg|jƒD]\}}d||f^q<ƒ|jdƒ|rˆ|j|dgƒntjtj	dj
|ƒƒƒdS(Ng$@s
HTTP/%.1f %s %ss%s: %sts
(tversiontstatustreasontextendt
getheadersRKRLRMRRNRO(trespRHR[tdumptktv((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytlog_http_response´s
6
cCstd„tj|ƒDƒƒS(sèEncodes headers.

        Note: This should be used right before
        sending anything out.

        :param headers: Headers to encode
        :returns: Dictionary with encoded headers'
                  names and values
        css3|])\}}tj|ƒtj|ƒfVqdS(N(RRN(t.0thRb((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pys	<genexpr>Ês(tdicttsixt	iteritems(RG((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytencode_headers¾scKs÷|j|}tj|jdiƒƒ|d<|djdtƒ|jjri|djd|jjƒn|jjrŒ|jj|dd<n|j	rÏx7t
j|j	ƒD] \}}|dj||ƒq¨Wn|j|||ƒ|j
ƒ}|j|dƒ|d<yFtj|ƒjƒ}tj|ƒ}|djdƒdkrð|j||ƒx.|djƒD]\}}	|j||	ƒqfW|jƒ|djtƒ}
x:|
rß|jdt|
ƒ|
fƒ|djtƒ}
q¦W|jd	ƒnNd|kr+d
|dd<tj|dƒ|d<|d=n|j||||jƒ}Wn†t j!k
rˆ}d
|j"|f}
t#j$d|
ƒ‚nLt j%t j&fk
rÓ}|j'}di|d6|d6}
t(|
ƒ‚nXt)|ƒ}|j*ddƒdkr<dj,g|D]}
|
^qƒ}|j-||ƒt
j.|ƒ}n
|j-|ƒd|j/kocdknr–t0j1d|j/ƒt(d|j'|ƒ‚nW|j/dkrÄ|j2|j*ddƒ||S|j/dkrít(d|j'|ƒ‚n||fS( s¿Send an http request with the specified characteristics.

        Wrapper around httplib.HTTP(S)Connection.request to handle tasks such
        as setting headers and error handling.
        RGs
User-AgentsX-Auth-TokensX-Auth-Project-IdsTransfer-EncodingtchunkedRHs%x
%s
s0

sapplication/jsonsContent-Typetdatas Error finding address for %s: %stmessages+Error communicating with %(endpoint)s %(e)sR Rscontent-typesapplication/octet-streamRYiiXs#Request returned failure status: %dsError from URL: i-i.i1tlocationi,N(i-i.i1(3R)tcopytdeepcopyR1t
setdefaultt
USER_AGENTRR0t	projectidR/RgRhRXRFRiRturlsplittgeturlRRNt
putrequestRJt	putheadert
endheaderstreadt	CHUNKSIZEtsendtlentjsontdumpstrequesttgetresponseRtgaierrorR%RCRDterrorR8R t	ExceptiontResponseBodyIteratort	getheaderR.RORctStringIOR[RLRMt
_http_request(RRQRPRRaRbtconntconn_urlRURTtchunkR_RRlR t	body_itertbody_str((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR†Îsr
!
	
	
	"
cKsæ|jdiƒ|djddƒd|krJtj|dƒ|d<n|j|||\}}d|jddƒkrÖdjg|D]}|^qŠƒ}ytj|ƒ}WqÜtk
rÒtj	dƒqÜXnd}||fS(NRGsContent-Typesapplication/jsonRHscontent-typeRYs&Could not decode response body as JSON(RpR|R}R†R„ROtloadst
ValueErrorRLRR.(RRPRQRR_RŠR‰RH((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytjson_requestFs"
cKs|jdiƒ|djddƒd|krB|jdƒ}nd}d|krt|ddƒr|jƒd
krt|dƒ}|dkrž|}n1|rÏ||krÏd	||f}t|ƒ‚n|dkrìd
|dd<qt|ƒ|dd<n|j|||S(NRGsContent-Typesapplication/octet-streamtcontent_lengthRHRxtposttputsHsupplied content-length (%s) does not match length of supplied data (%s)RjsTransfer-EncodingsContent-Length(RR‘(	RptpopR.RtlowerRtAttributeErrortstrR†(RRPRQRRtfile_content_lengthterrmsg((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytraw_requestZs$%	
N(t__name__t
__module__R3tstaticmethodR!R*R,RFRXR.RcRiR†RŽR˜(((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyRbs	
					x	tOpenSSLConnectionDelegatorcBs)eZdZd„Zd„Zd„ZRS(s
    An OpenSSL.SSL.Connection delegator.

    Supplies an additional 'makefile' method which httplib requires
    and is not present in OpenSSL.SSL.Connection.

    Note: Since it is not possible to inherit from OpenSSL.SSL.Connection
    a delegator must be used.
    cOst||Ž|_dS(N(Rt
connection(RRR((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR3‹scCst|j|ƒS(N(tgetattrR(Rtname((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyt__getattr__ŽscOs t|d<tj|j||ŽS(Ntclose(R@Rt_fileobjectR(RRR((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytmakefile‘s
(R™Ršt__doc__R3R R£(((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyRœ€s			R6cBs_eZdZdddddeed„Zed„ƒZd„Z	d„Z
d„Zd„ZRS(sÆ
    Extended HTTPSConnection which uses the OpenSSL library
    for enhanced SSL support.
    Note: Much of this functionality can eventually be replaced
          with native Python 3.3 code.
    c		Csctj|||d|d|ƒ||_||_||_||_||_||_|jƒdS(NR;R:(	RR3R;R:R8R<R=R9t
setcontext(	RthostR&R;R:R9R8R<R=((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR3¢s						c	s‡fd†}|jƒj}||ƒr.tSd
}x¥t|jƒƒD]‘}|j|ƒ}|jƒdkrGt|ƒ}x[dj	|j
ƒƒj
dƒD]8}|jdƒr™||j
ddƒdƒrÑtSq™q™WqGqGWdˆ|f}|d
k	r	|d	|}ntj
|ƒ‚d
S(sõ
        Verify that the the x509 certificate we have received
        from 'host' correctly identifies the server we are
        connecting to, ie that the certificate's Common Name
        or a Subject Alternative Name matches 'host'.
        cs_|ˆkrtS|jdƒr[ˆjdƒdkr[|dˆjddƒdkr[tSndS(Ns*.t.iii(R@t
startswithtfindtsplit(RŸ(R¦(sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytcheck_matchÁs
$ tsubjectAltNameRYt,sDNS:t:isCHost "%s" does not match x509 certificate contents: CommonName "%s"s, subjectAltName "%s"N(tget_subjectt
commonNameR@R.trangetget_extension_countt
get_extensiontget_short_nameR•RORªR¨RCtSSLCertificateError(	R¦tx509R«tcommon_nametsan_listtitexttsantmsg((R¦sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pythost_matches_cert¸s$	
%
cCsgt|ƒ}|jƒr:d|jƒ}tj|ƒ‚n|dkr_|r_|j|j|ƒS|SdS(NsSSL Certificate expired on '%s'i(tboolthas_expiredtget_notAfterRCRµR½R¦(RRR¶terrnumtdepthtpreverify_okR¼((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytverify_callbackåscCstjjtjjƒ|_|jtkr=|jjdƒn|jt	k	rk|jj
tjj|jƒn|jj
tjj
d„ƒ|jrCy|jj|jƒWn5tk
rÞ}d|j|f}tj|ƒ‚nX|jd	krCy|jj|jƒWq@tk
r<}d|j|f}tj|ƒ‚q@XqCn|jržy|jj|jƒWqžtk
rš}d|j|f}tj|ƒ‚qžXn|jry|jj|jƒWqtk
rþ}dtd|jd|ƒ}tj|ƒ‚qXn
|jjƒd	S(
s-
        Set up the OpenSSL context.
        icWstS(N(R@(R((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyt<lambda>ss Unable to load cert from "%s" %ss9No key file specified and unable to load key from "%s" %ssUnable to load key from "%s" %ss+Unable to load CA from "%(cacert)s" %(exc)sR9RCN(tOpenSSLtSSLtContextt
SSLv23_METHODtcontextR=R?tset_optionsR<R@t
set_verifytVERIFY_PEERRÄtVERIFY_NONER:tuse_certificate_fileR‚RCtSSLConfigurationErrorR;R.tuse_privatekey_fileR9tload_verify_locationsRftset_default_verify_paths(RRR¼((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR¥ôsB				cCsŠtjtjtjƒ}|jdk	rU|jtjtjtj	d|jdƒƒnt
|j|ƒ|_|jj
|j|jfƒdS(so
        Connect to an SSL port using the OpenSSL library and apply
        per-connection parameters.
        tfLiN(RtAF_INETtSOCK_STREAMR8R.t
setsockoptt
SOL_SOCKETtSO_RCVTIMEOtstructtpackRœRÊtsocktconnectR¦R&(RRÜ((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyRÝ%scCs&|jrd|_ntj|ƒdS(N(RÜR.RR¡(R((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR¡5s	N(
R™RšR¤R.R?R@R3R›R½RÄR¥RÝR¡(((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR6šs
-		1	RƒcBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(s
    A class that acts as an iterator over an HTTP response.

    This class will also check response body integrity when iterating over
    the instance and if a checksum was supplied using `set_checksum` method,
    else by default the class will not do any integrity check.
    cCs:||_d|_t|jddƒƒ|_t|_dS(Nscontent-lengthi(t_respR.t	_checksumtintR„t_sizeR?t_end_reached(RR_((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyR3Js		cCs%|jrtdƒ‚n||_dS(s“
        Set checksum to check against when iterating over this instance.

        :raise: AttributeError if iterator is already consumed.
        s3Can't set checksum for an already consumed iteratorN(RâR”Rß(Rtchecksum((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pytset_checksumPs	cCs
t|jƒS(N(RàRá(R((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyt__len__\sccs«tjƒ}x˜tr¦yt|ƒ}Wnitk
rt|_|jƒ}|jdk	rŠ||jkrŠt	t
jd||jfƒ‚n‚qX|V|j|ƒqWdS(Ns,Corrupted image. Checksum was %s expected %s(
thashlibtmd5R@tnextt
StopIterationRât	hexdigestRßR.R
RtEPIPEtupdate(Rtmd5sumR‰((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyt__iter___s	
	cCs|jjtƒS(sRead a chunk of data.(RÞRxRy(Rt
chunk_size((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyRxtscCs)|jjtƒ}|r|Stƒ‚dS(N(RÞRxRyRé(RR‰((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyt__next__ys(	R™RšR¤R3RäRåRîRxRð(((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyRƒAs					(0RnRRætloggingt	posixpathRRÚRRgt	six.movesRtsix.moves.urllibRR|tImportErrort
simplejsont
oslo.utilsRRtcgiRRÆt
novaclientRRCRRteventletRtis_monkey_patchedteventlet.green.httplibRteventlet.green.OpenSSL.SSLRRteventlet.greenioRtOpenSSL.SSLt	getLoggerR™RLRqRytobjectRRœR6Rƒ(((sF/usr/lib/python2.7/site-packages/contego_python_novaclient_ext/http.pyt<module>sR
		

	
ÿ§