Viewing File: /usr/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	st‚|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|ƒ|rtjDjF|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ŠcCstjddddd|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ŒRRthexlify(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ŒRR;RR•(R–RR;R‘R‰R”((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyRu"s
(RR™Rtos.pathRkRŠt
lxml.etreeR*tlxml.objectifyteuca2ools.bundleRHtobjectRR@RhRu(((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyt<module>sâ		
Back to Directory File Manager