Viewing File: /usr/lib/python2.7/site-packages/euca2ools/commands/ec2/resumeimport.pyc

ó
¡ôXc@s(ddlZddlZddlZddlmZddlmZmZddl	m
Z
ddlZddlm
Z
ddlmZddlmZddlmZmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlZ de
ee
fd„ƒYZ!dS(iÿÿÿÿN(tArg(t
ArgumentErrortServerError(tFileTransferProgressBarMixin(t
EC2Request(tDescribeConversionTasks(t
S3AccessMixin(tImportManifesttImportImagePart(tDeleteObject(t
HeadObject(t	GetObject(t	PutObject(tAWSErrortResumeImportc
BsþeZdZedddddƒedddedd	ƒed
dddd
eddddƒedddd
edddejƒedd
edejƒeddddejƒeddddejƒgZd„Z	d„Z
d„Zd„Zd„Z
RS(s)Perform the upload step of an import tasktsourcetmetavartFILEthelps3file containing the disk image to import (required)s-ts--tasktrequireds.the ID of the import task to resume (required)s-xs	--expirestDAYSttypetdefaultis\how long the import manifest should remain valid, in
                days (default: 30 days)s--part-sizetMiBi
s--user-threadss--dont-verify-formattactiont
store_trues	--dry-runcCs_tj|ƒ|jƒ|jjdƒs9d|jd<n|jddkr[tdƒ‚ndS(Ntexpiresiis-argument -x/--expires: value must be positive(Rt	configuretconfigure_s3_accesstargstgetR(tself((sG/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/resumeimport.pyRCs

c	Cs5|jjdƒrdS|jjdtƒr>dG|jdGHntj|d|jdgƒ}|jƒdd}|d|jdksŽt‚|jd	ƒrª|d	}n|d
dd}tjj	|jdƒ}|j
||ƒ}|jd
jd}||kr,t
dj|jd||ƒƒ‚n|jdj|ddƒ\}}}tjjg|jD]}	tjj|	jƒ^qfƒ}
x¤|jD]™}	dj||	jfƒ}tj|d|jdd|jdd|ƒ}y|jƒWq”tk
r,}
|
jdkr&|j|	||
ƒq-‚q”Xq”WdS(Ntdry_runt
show_progresssUploading image for taskttasktConversionTaskIdtconversionTasksitconversionTaskIdtimportVolumetimportInstancetvolumesRiÿÿÿÿis`file "{0}" is not the same size as the file the import started with (expected: {1}, actual: {2})t
s3_servicetimagetimportManifestUrlt/tservicetauthts3_authtpathi”(RRtFalseRt
from_othertmaintAssertionErrort	euca2oolstutiltget_filesizet%_ResumeImport__get_or_create_manifesttimage_partstendRtformattresolve_url_to_locationt build_progressbar_label_templatetosR0tbasenametkeytjoinR
R
tstatus_codet_ResumeImport__upload_part(Rt	desc_convR"t
vol_containert	file_sizetmanifesttfile_size_from_manifestt_tbuckettparttpbar_label_templatetpart_s3paththead_reqterr((sG/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/resumeimport.pyR3LsD


	.cCsº|jdj|ddƒ\}}}dj||fƒ}ytjddƒx}tj|d|jdd|jd	d
|d|dtƒ}|jƒ|j	j
d
ƒ|jdƒtj
|ƒ}	WdQXWnçtk
rµ}
|
jdkr¯|j	j
dƒ|j||ƒ}	tjƒ}tjj|tjj|ƒƒ}t|dƒ}
|	j|
dtƒWdQXtj|d
|d|dtƒ}|jƒtj|ƒtj|ƒq¶‚nX|	S(NR)R*R+R,tmax_sizei R-R.R/RtdestR!s.using existing import manifest from the serverii”screating new import manifesttwtpretty_print(RR<RAttempfiletSpooledTemporaryFileRR2R1R3tlogtinfotseekRtread_from_fileobjRRBt _ResumeImport__generate_manifesttmkdtempR>R0R?topentdump_to_fileobjtTrueRtremovetrmdir(RRERFRIRJR@tmanifest_s3pathtmanifest_destfiletget_reqRGROttempdirtmanifest_filenamet
manifest_filetput_req((sG/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/resumeimport.pyt__get_or_create_manifestzs@


	

cCsO|jjdƒpd}|d}|jdj|ddƒ\}}}|jddƒd	}td
|jjƒ}	|dd|	_tj	|d|jdd
|jdddj
||fƒƒ}
|
j|ƒ|	_t
|ddƒ|	_t
|ddƒ|	_|jjdƒpdd}x)ttjjd	||ƒƒD]	\}}
tƒ}||_|
|_t|
||ƒd|_dj|tjj|jdƒ|ƒ|_dj
||jfƒ}tj	|
d|ƒ}tj	|
d|ƒ}tj	|
d|ƒ}
|j|ƒ|_ |j|ƒ|_!|
j|ƒ|_"|	j#j$|ƒq>W|	S(NRii€QR)R*R+R,iitloglevelR;R-R.R/R0tsizetvolumet	part_sizei
iis{0}/{1}.part.{2}Ri(%RRR<trsplitRRVtleveltfile_formatR	R2RAtget_presigned_url2tself_destruct_urltintt
image_sizetvolume_sizet	enumeratetsixtmovestrangeRtindextstarttminR:R;R>R0R?R@R
Rthead_urltget_urlt
delete_urlR9tappend(RRERFtdaysttimeoutRIRJR@t
key_prefixRGt
delete_reqRlRyt
part_startRKt	part_pathRNRc((sG/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/resumeimport.pyt__generate_manifests>

 			%cCsë|jjd||j|jƒ|jdtjj|jƒd|j	dƒ}t
|jdƒ…}|j|jƒt
j|d|jdd|jd	d|d
|d|j|jdd|jjdtƒd
|ƒ}|jƒSWdQXdS(NsUploading part %s (bytes %i-%i)tfnameRyiRR-R)R.R/RQRjR!tprogressbar_label(RVRWRzR:R;R>R0R?R@RyR\RRXRR2RR1R3(RRKRMRLtpart_pbar_labelRRg((sG/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/resumeimport.pyt
__upload_part¾s	%	(t__name__t
__module__tDESCRIPTIONRR^RrtargparsetSUPPRESStARGSRR3R8RZRC(((sG/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/resumeimport.pyR0s$					.	#	!("RŽtos.pathR>RTtrequestbuilderRtrequestbuilder.exceptionsRRtrequestbuilder.mixinsRRvteuca2ools.commands.ec2Rt.euca2ools.commands.ec2.describeconversiontasksRteuca2ools.commands.ec2.mixinsRt!euca2ools.commands.ec2.structuresRRt"euca2ools.commands.s3.deleteobjectR	t euca2ools.commands.s3.headobjectR
teuca2ools.commands.s3.getobjectRteuca2ools.commands.s3.putobjectRteuca2ools.exceptionsR
teuca2ools.utilR5R(((sG/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/resumeimport.pyt<module>s"
Back to Directory File Manager