Xc@sddlZddlZddlZddlZddlZddlZddlZddZ de dZ de dZ ddZ de dZde dZdS(iNc CsLtjdtd|fdi|d6}|jtjjj|jdS(Nttargettargstkwargst out_mpconn( tmultiprocessingtProcesst_delete_part_fileststartt euca2oolstbundletutiltwaitpid_in_threadtpid(t in_mpconnRtdel_p((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pytcreate_bundle_part_deleter$s   c Cstjdt\}}tjdtd||||fdi|d6|d6}|j|j|jtjj j |j |S(NtduplexRRRtpart_write_semtdebug( RtPipetFalseRt _write_partsRtcloseRR R R R (tinfilet part_prefixt part_sizeRRtpartinfo_result_rtpartinfo_result_wtwriter_p((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pytcreate_bundle_part_writer,s    c Csxtjdt\}}tjdtd||fdi|d6|d6}|j|jtjj j |j |S(NRRRRRR( RRRRt_aggregate_mpconn_itemsRRRR R R R (R RRtresult_mpconn_rtresult_mpconn_wtagg_p((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pytcreate_mpconn_aggregator;s   cCstjjjd||fzbyIxBtrf|j}tj|j|dk r%|j |q%q%WWnt k r|dSXWd|j |dk r|j nXdS(Nt except_fds( RR R t close_all_fdstTruetrecvtostunlinktfilenametNonetsendtEOFErrorR(R Rtpart((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pyRFs       cCstjjjd|||fg}zyFx?trl|j}|j||dk r.|j|q.q.WWn`t k ry|j|Wqt k r|sdSqXnt k r|sdSnXWd|j |j |dk r|j nXdS(NR#( RR R R$R%R&tappendR*R+R,tIOErrorR(R t result_mpconnRRtresultst next_result((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pyRVs2            c Cs||g}|dk rwtjdkrwy|jt|jjWqwtk r]d}qwtk rsd}qwXnt j j j d|xbt jD]T}|dk r|jndj||}tj} t|d} d} |} x| dkry|jt| t j} Wn(tk rM|sG|jdSnX| r| j| | j| | t| 8} | t| 7} qPqWt j j|| jd| }|j|WdQX| |kr|j|jdSqWdS(NtdarwinR#s{0}.part.{1:02}twitSHA1(R*tsystplatformR.tintt_semlockthandletAttributeErrort ValueErrorRR R R$t itertoolstcounttacquiretformatthashlibtsha1topentreadtmintBUFSIZERtwritetupdatetlent BundlePartt hexdigestR+(RRRtpartinfo_mpconnRRR#tpart_not part_fnamet part_digestR-t bytes_writtentbytes_to_writetchunktpartinfo((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pyRusL                 (RAR=RR'R6teuca2ools.bundle.pipesRteuca2ools.bundle.utilR*RRRR"RRR(((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pyts