Xc@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl ZdZddddZdZdZdZd Zd Zdd Zd Zd ZdZdS(iNcCst|dkrdSt|dkr,dStd|D}d}|jd|dttt|dt|SdS( Niis{fname}css'|]}ttjj|VqdS(N(tlentostpathtbasename(t.0tfname((s2/usr/lib/python2.7/site-packages/euca2ools/util.pys 0ss1{{fname:<{maxlen}}} ({{index:>{lenlen}}}/{total})tmaxlentlenlenttotal(RtNonetmaxtformattstr(tfnamest max_fname_lent fmt_template((s2/usr/lib/python2.7/site-packages/euca2ools/util.pyt build_progressbar_label_template*stttmpc Cs^|dkrBtjdp<tjdp<tjdp<d}ntjd|d|d|S( s Like tempfile.mkdtemp, but using /var/tmp as a last resort instead of /tmp. This is meant for utilities that create large files, as /tmp is often a ramdisk. tTMPDIRtTEMPtTMPs/var/tmptsuffixtprefixtdirN(R Rtgetenvttempfiletmkdtemp(RRR((s2/usr/lib/python2.7/site-packages/euca2ools/util.pytmkdtemp_for_large_files8s - cCsUtjdd}tjdd}||kr4|StjddtjtSdS(NtpromptsNew password: sRetype new password: serror: passwords do not matchtfile(tgetpasstsixtprint_tsyststderrtprompt_for_password(tpass1tpass2((s2/usr/lib/python2.7/site-packages/euca2ools/util.pyR$Gs  cCsQg|D]}|dkr|^q}t|dkrI||dpHiS|SdS(NtResponseMetadataii(R(t response_dicttkeyt useful_keys((s2/usr/lib/python2.7/site-packages/euca2ools/util.pytstrip_response_metadataQs%cCssigd6}x_|pgD]Q}tjjjd}i|d6|d6|d6|d6}|dj|qW|S(Nt StatementsStmt%Y%m%d%H%M%S%ftSidtEffecttActiontResource(tdatetimetutcnowtstrftimetappend(teffectt resourcestactionstpolicytresourcetsidt statement((s2/usr/lib/python2.7/site-packages/euca2ools/util.pytbuild_iam_policyYs  cCstj|j}tj|rdtj|tj}ztj|dtjSWdtj|XnTt tj |tj |tj |tj |frtdj|ntjj|S(Nis&'{0}' does not have a usable file size(Rtstattst_modetS_ISBLKtopentO_RDONLYtlseektSEEK_ENDtclosetanytS_ISCHRtS_ISFIFOtS_ISSOCKtS_ISDIRt TypeErrorR Rtgetsize(tfilenametmodetblock_fd((s2/usr/lib/python2.7/site-packages/euca2ools/util.pyt get_filesizecs' cCsut|dkr*tdj|nt|dd}tjd|jd}|dd@dkr|jd d tjd|jd}nWdQXd |dkrtd j|n|d d @dkrtdj|n|d d@dkrtdj|n|drAtdj|n|ddkritdj|nd|dS(Nis8File {0} is to small to be a valid Stream Optimized VMDKtrbss,                !