Viewing File: /usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyc

ó
¡ôXc@söddlZddlZddlZddlZddlmZddlZddlZddlZddl	Zddl
Z
ddlZddlm
Z
ddlmZdejjfd„ƒYZdejjfd„ƒYZd	„Zd
„ZdS(iÿÿÿÿN(tArg(t	Euca2ools(tAWSErrortS3cBsYeZdZdZdZdZeddddd	d
ƒgZd„Zd„Z	d
„Z
RS(ts3sObject storage servicetEUCA_DEFAULT_REGIONtAWS_DEFAULT_REGIONtS3_URLs-Us--urltmetavartURLthelps#object storage service endpoint URLcCst|ƒ‚dS(N(R(tselftresponse((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pythandle_http_error5scCs2tjjjj|ƒ}|js@tjjjjd|ƒ}ntjjjj|jƒ}|j||ƒ\}}|r‰|j||fS|j	j
dƒ}x{|jƒD]m\}}tjjjj|ƒ}	|j||	ƒ\}}|r¨|j	jdd|ƒ}
|
p|||fSq¨Wt
dj|ƒƒ‚dS(sÆ
        Given a URL, try to return its associated region, bucket, and
        key names based on this object's endpoint info as well as all
        S3 endpoints given in the configuration.
        shttp://ss3-urltnametregionsgURL '{0}' matches no known object storage endpoints.  Supply one via the command line or configuration.N(tsixtmovesturllibtparseturlparsetschemetendpointt_S3__match_pathtregion_nametconfigtget_all_region_optionstitemstget_region_optiont
ValueErrortformat(Rturlt
parsed_urltparsed_own_urltbuckettkeyts3_urlstsectiontconf_urltparsed_conf_urlR((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pytresolve_url_to_location9s"			c
Csg|j|jkr¥|j}|jdƒs7|d7}n|jj|dƒd}|jddƒ\}}|jjd|j|j|j|j|j|j||ƒ	n¸|jj|jƒrQ|jjd|jdƒd}|jdƒ}|jj	dƒr|jd}n	|j}|jjd|j|j|j|j|j|j||ƒ	nd}d}||fS(Nt/is/URL path match:  %s://%s%s + %s://%s%s -> %s/%st.is0URL vhost match:  %s://%s%s + %s://%s%s -> %s/%s(tnetloctpathtendswithtsplittlogtdebugRtrsplittlstript
startswithtNone(Rtgiventservicetservice_pathtcpathR"R#((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyt__match_pathTs.	

 	
(RR(t__name__t
__module__tNAMEtDESCRIPTIONt
REGION_ENVVARt
URL_ENVVARRtARGSR
R(R(((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyR+s		t	S3RequestcBsPeZeZeZejjj	Z
d„Zd„Zd„Z
d„Zd„ZRS(cKs#tjjj||d|_dS(Ni(trequestbuildertrequesttBaseRequestt__init__tredirects_left(Rtkwargs((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyREwscCsdtjjj|ƒ|jƒr`|jjdƒtjjj	j
|jƒ}|jƒ||_ndS(Nsswitching to HmacV4Auth(RBRCRDt	configuret_S3Request__should_use_sigv4R/tinfotauthtawst
HmacV4Autht
from_other(RRK((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyRH{s
cCs|jj|jjdƒƒS(Nss3-force-sigv4(Rtconvert_to_boolR(R((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyt__should_use_sigv4…s	c	Cs|jƒ|jƒr@tjjjj|jd|ddƒ}n!tjjjj|jd|ƒ}|jj	d|j
d|jd|jd|ƒS(sm
        Get a pre-signed URL for this request that expires after a given
        number of seconds.
        ttimeouttpayload_hashsUNSIGNED-PAYLOADtmethodR,tparamsRK(
t
preprocessRIRBRKRLtQueryHmacV4AuthRNtQueryHmacV1AuthR6tget_request_urlRSR,RT(RRQRK((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pytget_presigned_url2‰s
cCsG|jdkr-|jjdditd6ƒ|jj|jjditd6ƒ|jjdƒ|jjdƒd}d|jkr¡|d	j|jdƒ7}n|jj|d
tƒd|jkrßdj|jdƒ}nd
}t	j
jjj
|jjƒ}dj||jƒ}tjj|ƒ‚ntjjj||ƒSdS(Ni-s-- response content --
textratappends-- end of response content --sresult: inter-region redirects%Aborting due to inter-region redirecttEndpoints to {0}texc_infotBuckets"{0}" tsuBucket {0}is not available from endpoint "{1}".  Ensure the object storage service URL matches the bucket's location.(tstatus_codeR/R0tTrueRttextterrortelementsRRRRRRR6RR+RBt
exceptionstClientErrorRCRDthandle_server_error(RterrtmsgR"tparsed((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyRg›s&#(R:R;RtSUITERt
SERVICE_CLASSRBRKRLt
HmacV1Autht
AUTH_CLASSRERHRIRYRg(((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyRArs		
		cCs‰t|ƒdkr!tdƒ‚nt|ƒdkrBtdƒ‚nx@|D]8}|tjtjdkrItdj|ƒƒ‚qIqIWdS(Nisname is too shortiÿsname is too longs.-_sinvalid character '{0}'(tlenRtstringt
ascii_letterstdigitsR(R"tchar((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pytvalidate_generic_bucket_nameµs
cCsÑt|ƒdkr!tdƒ‚nt|ƒdkrBtdƒ‚n|jdƒr`tdƒ‚n|jdƒr~tdƒ‚n|jdƒ}xÞ|D]Ö}t|ƒdkr»td	ƒ‚nx@|D]8}|tjtjd
krÂtdj|ƒƒ‚qÂqÂW|dtjtjkr4tdj|dƒƒ‚n|d
tjtjkr”tdj|d
ƒƒ‚q”q”Wt|ƒdkrÍy*g|jdƒD]}t	|ƒ^q“Wntk
r½qÍXtdƒ‚ndS(Nisname is too shorti?sname is too longR*sname may not start with '.'sname may not end with '.'isname may not contain '..'t-sinvalid character '{0}'s3character '{0}' may not begin part of a bucket nameiÿÿÿÿs1character '{0}' may not end part of a bucket nameis-name must not be formatted like an IP address(
RoRR3R-R.Rptascii_lowercaseRrRtint(R"tlabelstlabelRstchunk((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pytvalidate_dns_bucket_name¿s6

		*
(tosRptsysRRBRtrequestbuilder.auth.awstrequestbuilder.exceptionstrequestbuilder.requesttrequestbuilder.servicetrequestsRteuca2ools.commandsRteuca2ools.exceptionsRR6tBaseServiceRRCRDRARtR{(((sB/usr/lib/python2.7/site-packages/euca2ools/commands/s3/__init__.pyt<module>s GC	
Back to Directory File Manager