Viewing File: /usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyo

ó
¡ôXc@sÃddlZddlZddlZddlZddlZddlmZddlZddlm	Z	ddl
Z
ddlmZddl
Zdee	fd„ƒYZdefd„ƒYZdS(	iÿÿÿÿN(tArg(tFileTransferProgressBarMixin(t	S3Requestt	PutObjectcBseZdZeddddd(ddƒeddddd(dd	ƒed
dedd(ddƒed
dd(dd)ƒeddd(ddƒeddddddddddd(dd ƒed!dejƒgZd"Z	d#„Z
d$„Zd%„Zd&„Z
dd'„ZRS(*sÎUpload an object to the server

Note that uploading a large file to a region other than the one the bucket is may result in "Broken pipe" errors or other connection problems that this program cannot detect.tsourcetmetavartFILEtroute_tothelpsfile to upload (required)tdests
BUCKET/KEYs6bucket and key name to upload the object to (required)s--sizettypesPthe number of
                bytes to upload (required when reading from stdin)s--acltchoicestprivatespublic-readspublic-read-writesauthenticated-readsbucket-owner-readsbucket-owner-full-controls
aws-exec-reads--mime-types%MIME type for the file being uploadeds--retrytretriestactiontstore_consttconstitdefaultis'retry interrupted uploads up to 5 timess--progressbar-labeltPUTcKs,tj||d|_tjƒ|_dS(N(Rt__init__tNonetlast_upload_errort	threadingtLockt_lock(tselftkwargs((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR@s	cCs]tj|ƒ|jddkri|jjdƒdkrMtjjdƒ‚ntt	j
|jdƒ}nŽt|jdtj
ƒr­tj|jdd|jjdƒƒ}nJ|jjdƒdkrÚtjjdƒ‚nt|jd|jdƒ}||jd<|jdjdƒ\}}}|s>tjjdƒ‚n|sYtjjd	ƒ‚ndS(
NRt-tsizes0argument --size is required when uploading stdins8argument --size is required when uploading a file objectR	t/s)destination bucket name must be non-emptys&destination key name must be non-empty(Rt	configuretargstgetRtrequestbuildert
exceptionst
ArgumentErrort_FileObjectExtenttsyststdint
isinstancetsixtstring_typest
from_filenamet	partition(RRtbuckett_tkey((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyRFs*
	%	
		cCsf|jd|_|jjdƒr9|jd|jd<n|jjdƒrb|jd|jd<ndS(NR	tacls	x-amz-aclt	mime_typesContent-Type(RtpathR theaders(R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyt
preprocess^s
c
Cs=|jƒ|jd}t|jƒ|jd<tjd|jd|fdi|jjdƒp`dd6ƒ}t	|_
|jƒ|jjd	ƒp•|j}|j
d
|d|jƒ}|jƒx0|jƒrï|j|jƒƒtjdƒqÀW|jƒ|jƒ|jƒ|j |jdk	r3|j‚nWdQXdS(
NRsContent-LengthttargetRRR
itretries_lefttprogressbar_labeltlabeltmaxvalgš™™™™™©?(R3RtbytesRR2RtThreadttry_sendR tTruetdaemontstarttfilenametget_progressbartis_alivetupdatettellttimetsleeptfinishtjointcloseRRR(RRt
upload_threadt
pbar_labeltpbar((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pytmainfs(

	"	





c	Cs‹||_|dkr8|jr8|jjdƒd}nyl|jƒ}|j}|jdjƒjdƒ}||kr£|jj	d||ƒt
jjdƒ‚nWnàt
jjk
rD}t
|t
jjƒr|dkr|jjd|ƒ|jƒ|j||dƒSn|j$|jj	d	d
tƒ||_WdQXdStk
r†}|j$|jj	d	d
tƒ||_WdQXdSXdS(Nis@source cannot rewind, so requested retries will not be attemptedtETagt"s*corrupt upload (our MD5: %s, their MD5: %ss#upload was corrupted during transits/retrying upload (%i retry attempt(s) remaining)is
upload failedtexc_info(tbodyt
can_rewindtlogtnoticetsendtread_hexdigestR2tlowertstripterrorR!R"tClientErrorR'tTimeoutErrortinfotrewindR;RR<Rt	Exception(RRR5tresponsetour_md5t	their_md5terr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR;…s:			
	


N(Rspublic-readspublic-read-writesauthenticated-readsbucket-owner-readsbucket-owner-full-controls
aws-exec-read(t__name__t
__module__tDESCRIPTIONRRtinttargparsetSUPPRESStARGStMETHODRRR3RLR;(((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR)s.				R$cBs}eZdd„Zd„Zedd„ƒZed„ƒZd„Z	d„Z
dd„Zed„ƒZd	„Z
d
„ZRS(cCspt|_||_||_||_d|_tjƒ|_t	|jdƒrc|jj
ƒ|_n	d|_dS(NiRC(
tFalsetclosedR?tfileobjRt_FileObjectExtent__bytes_readthashlibtmd5t_FileObjectExtent__md5thasattrRCt_FileObjectExtent__initial_posR(RRlRR?((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR«s					cCs|jS(N(R(R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyt__len__·scCs:|dkr!tjj|ƒ}n|t|ƒ|d|ƒS(NR?(Rt	euca2oolstutiltget_filesizetopen(tclsR?R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR*ºscCst|jdƒo|jdk	S(Ntseek(RqRlRrR(R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyRQÀscCs|jjƒt|_dS(N(RlRHR<Rk(R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyRHÄs
cCsj|j|j}|dkr(tƒ‚nt|jƒ}|| }|jt|ƒ7_|jj|ƒ|S(Ni(RRmt
StopIterationtnextRltlenRpRB(Rt	remainingtchunk((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR{Ès
iÿÿÿÿcCso|j|j}|dkr%|}nt||ƒ}|jj|ƒ}|jt|ƒ7_|jj|ƒ|S(Ni(RRmtminRltreadR|RpRB(RRR}t	chunk_lenR~((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR€Òs	cCs
|jjƒS(N(Rpt	hexdigest(R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyRUÝscCsPt|jdƒs!tdƒ‚n|jj|jƒd|_tjƒ|_dS(NRysfile object is not seekablei(	RqRlt	TypeErrorRyRrRmRnRoRp(R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR\ás
	cCs|jS(N(Rm(R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyRCésN(RbRcRRRstclassmethodR*tpropertyRQRHR{R€RUR\RC(((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyR$¦s			
	(RfRnR%RRDR!Rtrequestbuilder.exceptionstrequestbuilder.mixinsRR(teuca2ools.commands.s3Rteuca2ools.utilRtRtobjectR$(((sC/usr/lib/python2.7/site-packages/euca2ools/commands/s3/putobject.pyt<module>s}
Back to Directory File Manager