ó ¡ôXc@s•ddlZddlZddlZddlZddlZddlZddlZddl Z de fd„ƒ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_algorithmt image_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|j jjƒ|_ nt |dƒrðxQ|j j ddƒD]7}|jjjƒ}|jjjƒ}||j ||j?ƒ|_?|j@|_)|j)j+d|jAƒ|j#j6j|ƒqrWt j jB|dtCƒt jDjE|ƒ|rt jDjF|jƒt jDjF|j#ƒ}tG||ƒ}nd}||_H|jj d|ƒt j jB|dtCƒt jDjE|ƒ|jj dditCd6ƒt jDjF|dtCƒjIƒ}|jj d|ditCd6ƒ|jj dƒt jDjF|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/RR R#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.pyt dump_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__RRt classmethodR!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 unhexlifyt communicateR=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-pkeyopts digest: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.pyts        â