ó ¡ô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 |t/|j|ƒ|j"_4n d|j"_4d|j"_5|j"j5j)dt6t7|j8ƒƒƒx¶t9|j8ƒD]¥\} }|dkr»tdj:| ƒƒ‚nt j j dƒ}|j)dt6| ƒƒt;j<j=|j>ƒ|_>|j?|_(|j(j)d|j@ƒ|j"j5j|ƒq‹Wt j jA|dtBƒt jCjD|ƒ|ršt jCjE|jƒt jCjE|j"ƒ}tF||ƒ}nd}||_G|jj d|ƒt j jA|dtBƒt jCjD|ƒ|jj dditBd6ƒt jCjE|dtBƒjHƒ}|jj d|ditBd6ƒ|jj dƒt jCjE|dtBd|ƒjHƒ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(IRRRCRRHRItutiltget_cert_fingerprintRtinfotdebugR*R+tElementtversiontbundlerR8t __version__treleaseR.RR/RR R#tsortedtitemsR5R4R6R R%R R R7R RR9R:RR;tsetRRR>RR?t_public_encryptRDRRARFRERGtstrtlenRRLRMtostpathtbasenameRKt hexdigesttdigest_algorithmt deannotatetTruetetreetcleanup_namespacesttostringt_rsa_sha1_signt signatureR1(RRtuser_cert_filenametec2_cert_filenameRYtec2_fpRNRPR5R4RQtcodetxml_codeR)R(t part_elemtto_signRutpretty_manifest((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyt dump_to_strws°                        %    cCs&|j|j|||d|ƒƒdS(NRY(twriteR~(Rt manifest_fileRRvRwRY((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyt dump_to_files  N( Rt __module__RRt classmethodR!RtFalseR~R(((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‹RŽRŒthexlify(tcontentt cert_filenameRRˆR“((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyRgs cCswtjƒ}|j|ƒtjdddd|ddgdtjdtjƒ}|j|jƒƒ\}}tj |ƒS( NR…tpkeyutls-signs-inkeys-pkeyopts digest:sha1R‡Rˆ( thashlibtsha1tupdateR‰RŠR‹RŽR;RŒR”(R•RR;RRˆR“((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyRt"s  (RŒR˜Rtos.pathRjR‰t lxml.etreeR*tlxml.objectifyteuca2ools.bundleRHtobjectRR@RgRt(((s=/usr/lib/python2.7/site-packages/euca2ools/bundle/manifest.pyts        â