Current File : //lib/python2.7/site-packages/euca2ools/bundle/manifest.pyc
�
��Xc@s�ddlZddlZddlZddlZddlZddlZddlZddl	Z
defd��YZd�Z
d�Zd�ZdS(i����NtBundleManifestcBsPeZdd�Zedd��Zedd��Zed�Zed�Z	RS(cCs�tj|jj�|_|dk	r3||j_nd|_d|_d|_	i|_
g|_d|_d|_
d|_d|_d|_d|_d|_d|_d|_d|_g|_dS(N(tloggingt	getLoggert	__class__t__name__tlogtNonetlevelt
image_archt	kernel_idt
ramdisk_idtblock_device_mappingst
product_codest
image_namet
account_idt
image_typetimage_digesttimage_digest_algorithmt
image_sizetbundled_image_sizetenc_keytenc_ivt
enc_algorithmtimage_parts(tselftloglevel((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyt__init__'s&															cCs)t|��}|j||�SWdQXdS(N(topentread_from_fileobj(tclstmanifest_filenametprivkey_filenametmanifest_fileobj((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pytread_from_file<sc
Cs�tjj|�j�}|�}|j}|jjj�|_t	|d�rf|j
jj�|_
nt	|d�r�|jjj�|_nt	|d�r�xQ|jj
dd�D]7}|jjj�}|jjj�}||j|<q�Wnt	|d�r;x9|jj
dd�D]}	|jj|	jj��qWn|jjjj�|_|jjjj�|_|jjjj�|_|jjjj�|_|jjjd�|_t|jjjj��|_ t|jj!jj��|_"|dk	r�y%t$|jj%jj�|�|_&Wn8t't(fk
rZt$|jj)jj�|�|_&nX|jj%jd�|_*y%t$|jj+jj�|�|_,Wq�t't(fk
r�t$|jj-jj�|�|_,q�Xndgt|jj.jd	��|_/xx|jj.j
dd
�D]^}
t|
jd��}t0j1j2|
j3jj�|
jjj�|
jjd��|j/|<qWxAt4|j/�D]0\}}|dkr�t(dj5|���q�q�W|S(
NR	R
Rttagtblock_device_mappingtproductcodestproduct_codet	algorithmtcounttparttindexspart {0} must not be None(6tlxmlt	objectifytparsetgetroottmachine_configurationtarchitecturettexttstripRthasattrR	R
RtitertdevicetvirtualR$RtappendtimagetnameR
tuserRttypeRtdigestRtgetRtinttsizeRtbundled_sizeRRt_decrypt_hextuser_encrypted_keyRtAttributeErrort
ValueErrortec2_encrypted_keyRtuser_encrypted_ivRtec2_encrypted_ivtpartsRt	euca2oolstbundlet
BundleParttfilenamet	enumeratetformat(
RR Rtxmltmanifesttmconfigtxml_mappingR4R5t	xml_pcodetxml_partR)R(((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyRAsd		
 ""%%	 cCsV|jdkrtd��n|jdkr<td��ntjjj|�}|jj	d|�|jj
d|�|jj
d|�|jj
d|�tjj
d�}d|_d|_d	|j_tj|j_d
|j_d|_|j}|jdk	st�|j|_|jdkr�|jr�d|_xZt|jj��D]@\}}	tjj
d�}
||
_|	|
_|jj|
�qRWn|jr�d|_xF|jD]8}tjj
d
�}|jj|�||jj d<q�Wq�n|j!r|j!|_!n|j"r'|j"|_"nd|_#|j$dk	sEt�|j$|j#_|j%dk	sit�|j%|j#_&|jdk	s�t�|j|j#_'|j(dk	s�t�|j(|j#_)|j*dk	s�t�|j#j)j+d|j*�|j,dk	st�|j,|j#_-|j.dk	s't�|j.|j#_/|jdk	sKt�|jdk	s`t�|j0dk	sut�t1|j|�|j#_2|j#j2j+d|j0�|r�t1|j|�|j#_3nd|j#_3|j#j3j+d|j0�t1|j|�|j#_4|r%t1|j|�|j#_5nd|j#_5d|j#_6|j#j6j+dt7t8|j9���x�t:|j9�D]�\}
}|dkr�tdj;|
���ntjj
d�}|j+dt7|
��t<j=j>|j?�|_?|j@|_)|j)j+d|jA�|j#j6j|�qrWtjjB|dtC�tjDjE|�|r�tjDjF|j�tjDjF|j#�}tG||�}nd}||_H|jj
d|�tjjB|dtC�tjDjE|�|jj
dditCd6�tjDjF|dtC�jI�}|jj
d|ditCd6�|jj
d�tjDjF|dtCd|�jI�S(Nsenc_key must not be Nonesenc_iv must not be Nones5creating manifest for EC2 service with fingerprint %ssEC2 certificate:  %ssuser certificate: %ssuser private key: %sROs
2007-10-10RHitmachinetmappingR%i����R&R'spart {0} must not be NoneR(R)txsi_niltUNSIGNEDshex-encoded signature: %ss-- manifest content --
textraR6tpretty_prints%ss-- end of manifest content --txml_declaration(JRRRCRRHRItutiltget_cert_fingerprintRtinfotdebugR*R+tElementtversiontbundlerR8t__version__treleaseR.RtAssertionErrorR/RRR#tsortedtitemsR5R4R6RR%R	R
R7R
RR9R:RR;RtsetRR>RR?Rt_public_encryptRDRARFRERGtstrtlenRRLRMtostpathtbasenameRKt	hexdigesttdigest_algorithmt
deannotatetTruetetreetcleanup_namespacesttostringt_rsa_sha1_signt	signatureR1(RRtuser_cert_filenametec2_cert_filenameRYtec2_fpRNRPR5R4RQtcodetxml_codeR)R(t	part_elemtto_signRvtpretty_manifest((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pytdump_to_strws�																	%	 cCs&|j|j|||d|��dS(NRY(twriteR(Rt
manifest_fileRRwRxRY((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pytdump_to_filesN(
Rt
__module__RRtclassmethodR!RtFalseRR�(((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyR&s6�cCs�tjddddd|gdtjdtj�}tj|�}|j|�\}}yt|d�|SWntk
rnXtd	��dS(
Ntopenssltrsautls-decrypts-pkcss-inkeytstdintstdoutisjFailed to decrypt the bundle's encryption key.  Ensure the key supplied matches the one used for bundling.(t
subprocesstPopentPIPEtbinasciit	unhexlifytcommunicateR=RC(thex_encrypted_keyRtpopentbinary_encrypted_keyt
decrypted_keyt_((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyR@s

cCsXtjddddd|dgdtjdtj�}|j|�\}}tj|�S(	NR�R�s-encrypts-pkcss-inkeys-certinR�R�(R�R�R�R�R�thexlify(tcontentt
cert_filenameR�R�R�((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyRhs
cCswtj�}|j|�tjdddd|ddgdtjdtj�}|j|j��\}}tj	|�S(	NR�tpkeyutls-signs-inkeys-pkeyoptsdigest:sha1R�R�(
thashlibtsha1tupdateR�R�R�R�R;R�R�(R�RR;R�R�R�((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyRu"s
(R�R�Rtos.pathRkR�t
lxml.etreeR*tlxml.objectifyteuca2ools.bundleRHtobjectRR@RhRu(((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyt<module>s�