Current File : //usr/lib/python2.7/site-packages/euca2ools/commands/s3/getobject.pyc |
�
��Xc @ s� d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d d l
Z
d d l m Z d d l
Z d e e f d � � YZ d S( i����N( t Arg( t
ArgumentError( t FileTransferProgressBarMixin( t S3Requestt GetObjectc
B sq e Z d Z e d d d d d d d �e d d d d d d d d
d d d �g Z d
� Z d � Z d � Z RS( s Retrieve objects from the servert sourcet metavars
BUCKET/KEYt route_tot helps! the object to download (required)s -ot destt PATHt defaultt .sD where to download to. If this names a
directory the object will be written to a file inside of that
directory. If this is is "-" the object will be written to
stdout. Otherwise it will be written to a file with the name
given. (default: current directory)c C s3 t j | � | j d j d � \ } } } | sA t d � � n | sV t d � � n t | j j d � t j � r/| j d d k r� t j
| j d <q/t j j
| j d � rt j j | � } | s� t d � � n t j j | j d | � } t | d � | j d <q/t | j d d � | j d <n d S( NR t /s! source must contain a bucket names source must contain a key nameR t -sH specify a complete file path with -o to download objects that end in '/'t w( R t configuret argst partitionR t
isinstancet gett sixt string_typest syst stdoutt ost patht isdirt basenamet joint open( t selft buckett _t keyR t dest_path( ( sC /usr/lib/python2.7/site-packages/euca2ools/commands/s3/getobject.pyR 2 s
c C s | j d | _ d S( NR ( R R ( R ( ( sC /usr/lib/python2.7/site-packages/euca2ools/commands/s3/getobject.pyt
preprocessI s c C sF | j � d } t j � } t j � } | j � } | j j d � } | rt | j d | j d d t | � � } n | j d | j d � } | j
� xw | j d t j
� D]` } | j d j | � | t | � 7} | j | � | j | � | d k r� | j | � q� q� W| j d j � | j � | ru| t | � k ru| j j d | | � t d j | | � � � n | j j d
d � j � j d � } t | � d
k rt d � | D� � r| j � | k r| j j d | | j � � t d j | | j � � � � qn i i | j � d 6| j � d 6| d 6| j d 6S( Ni s Content-Lengtht labelR t maxvalt
chunk_sizeR sQ rejecting download due to Content-Length size mismatch (expected: %i, actual: %i)sG downloaded file appears to be corrupt (expected size: {0}, actual: {1})t ETagt t "i c s s | ] } | d k Vq d S( t 0123456789abcdefN( ( t .0t char( ( sC /usr/lib/python2.7/site-packages/euca2ools/commands/s3/getobject.pys <genexpr>n s sF rejecting download due to ETag MD5 mismatch (expected: %s, actual: %s)sF downloaded file appears to be corrupt (expected MD5: {0}, actual: {1})t md5t sha1t size( R$ t hashlibR. R/ t sendt headersR t get_progressbarR t intt startt iter_contentt euca2oolst BUFSIZEt writet lent updatet Nonet flusht finisht logt errort RuntimeErrort formatt lowert stript allt hexdigest( R t
bytes_writtent
md5_digestt
sha_digestt responset content_lengtht pbart chunkt etag( ( sC /usr/lib/python2.7/site-packages/euca2ools/commands/s3/getobject.pyt mainL sH
$
N( t __name__t
__module__t DESCRIPTIONR R= t ARGSR R$ RP ( ( ( sC /usr/lib/python2.7/site-packages/euca2ools/commands/s3/getobject.pyR '