ó
è?F[c           @   sN   d  d l  Z  d  d l m Z d  d l Z d  d l Z d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t
   ScriptBaset   CopyBotc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s’  t  t |  ƒ j ƒ  t j j d d ƒ |  _ d |  j |  _ t	 j
 j |  j |  j ƒ |  _ t j |  j |  j ƒ t j j |  j d ƒ |  _ t j j |  j d ƒ |  _ t j j |  j d t ƒ |  _ t j ƒ  } | j |  j ƒ |  _ |  j st j j d |  j ƒ n  t j j |  j d d  ƒ } | rXt j j |  j d	 d  ƒ } t j | | ƒ } n  | j |  j ƒ |  _ |  j sŽ| j |  j ƒ |  _ n  d  S(
   Nt   Pyamit   working_dirs   %s.logt
   src_buckett
   dst_buckett   replace_dsts    Source bucket does not exist: %st   dest_aws_access_key_idt   dest_aws_secret_access_key(   t   superR   t   __init__t   botot   configt   gett   wdirt   instance_idt   log_filet   ost   patht   joint   log_patht   set_file_loggert   namet   src_namet   dst_namet   getboolt   Truet   replacet
   connect_s3t   lookupt   srct   logt   errort   Nonet   connectt   dstt   create_bucket(   t   selft   s3t   dest_access_keyt   dest_secret_key(    (    s1   lib/python2.7/site-packages/boto/pyami/copybot.pyR
      s&    		c         C   sA   t  j j |  j d t ƒ r= |  j j ƒ  } |  j j | ƒ n  d  S(   Nt	   copy_acls(	   R   R   R   R   R   R   t   get_xml_aclR#   t   set_xml_acl(   R%   t   acl(    (    s1   lib/python2.7/site-packages/boto/pyami/copybot.pyt   copy_bucket_acl1   s    c         C   s;   t  j j |  j d t ƒ r7 | j ƒ  } | j | ƒ n  d  S(   NR)   (   R   R   R   R   R   R*   R+   (   R%   R   R#   R,   (    (    s1   lib/python2.7/site-packages/boto/pyami/copybot.pyt   copy_key_acl6   s    c         C   s`  t  j j d |  j j ƒ t  j j d |  j j ƒ yx |  j D]õ } |  j s— |  j j | j ƒ } | r— t  j j d | j |  j j f ƒ qA q— n  t  j j d | j | j f ƒ t	 j
 j | j ƒ \ } } t	 j
 j |  j | ƒ } | j | ƒ |  j j | j ƒ } | j | ƒ |  j | | ƒ t	 j | ƒ qA WWn t  j j d | j ƒ n Xd  S(   Ns   src=%ss   dst=%ss%   key=%s already exists in %s, skippings   copying %d bytes from key=%ss   Error copying key: %s(   R   R   t   infoR   R   R#   R   R   t   sizeR   R   t   splitR   R   t   get_contents_to_filenamet   new_keyt   set_contents_from_filenameR.   t   unlinkt	   exception(   R%   t   keyt   existst   prefixt   baseR   R3   (    (    s1   lib/python2.7/site-packages/boto/pyami/copybot.pyt	   copy_keys;   s&    	#	 c         C   s)   |  j  j |  j ƒ } | j |  j ƒ d  S(   N(   R#   R3   R   R4   R   (   R%   R7   (    (    s1   lib/python2.7/site-packages/boto/pyami/copybot.pyt   copy_logP   s    c         C   sØ   t  j  ƒ  } t j j | ƒ |  j d |  j |  j f | j ƒ  ƒ |  j ra |  j	 ra |  j
 ƒ  n  |  j	 rw |  j ƒ  n  |  j d |  j |  j f d ƒ t j j |  j d t ƒ rÔ t j ƒ  } | j |  j g ƒ n  d  S(   Ns   %s (%s) Startings   %s (%s) Stoppings   Copy Operation Completet   exit_on_completion(   t   StringIOR   R   t	   dump_safet   notifyR   R   t   getvalueR   R#   R;   R<   R   R   t   connect_ec2t   terminate_instances(   R%   t   fpt   ec2(    (    s1   lib/python2.7/site-packages/boto/pyami/copybot.pyt   mainT   s    &	(   t   __name__t
   __module__R
   R-   R.   R;   R<   RF   (    (    (    s1   lib/python2.7/site-packages/boto/pyami/copybot.pyR      s   					(   R   t   boto.pyami.scriptbaseR    R   R>   R   (    (    (    s1   lib/python2.7/site-packages/boto/pyami/copybot.pyt   <module>   s   