Ñò
èö³Wc           @   s^  d  Z  d d k Z d d k Z d d k l Z d d k l Z d d k l Z d d k l Z d d k	 l
 Z
 d d	 d
 d d d d d d d d d d d d d d d d d d g Z d Z d Z d e f d  „  ƒ  YZ e d! j ox e i i e i i e ƒ ƒ Z e i i e ƒ e i d" Z e e ƒ Z e i e ƒ Z e i ƒ  e e d# ƒ i ƒ  n d S($   s.   
Created on Sep 11, 2014

@author: Simon Meng
iÿÿÿÿN(   t	   copy_tree(   t   remove_tree(   t	   copy_file(   t   SSHCommander(   t   sleeps   /bins   /boots   /cgroups   /contents   /devs   /etcs   /homes   /libs   /lib64s   /medias   /mnts   /opts   /procs   /roots   /sbins   /selinuxs   /srvs   /syss   /tmps   /usrs   /vars*   /opt/tandbergtv/cms/prepack/filesync/filess;   /opt/tandbergtv/cms/prepack/filesync/files/sync-config.jsont   FileSyncc           B   sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C   s¡   | |  _  t i i t i i t ƒ ƒ } t i i | ƒ t i d |  _ t ƒ  |  _	 t ƒ  |  _
 g  |  i
 d <g  |  i
 d <g  |  i
 d <g  |  i
 d <|  i ƒ  d  S(   Ns   file-sync-config.jsont   filest   files_deletet   symbolicLinkst   shared_mountpoints(   t	   app_nodest   ost   patht   dirnamet   realpatht   __file__t   sept   jsonconfFilet   dictt   jsonconft   sync_resultt   _FileSync__loadconf(   t   selfR
   t   cwd(    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyt   __init__   s    	 c         C   sä   t  |  i ƒ } d |  i GHt i | ƒ } |  i ƒ  d j  o | d |  _ nV |  i ƒ  d j  o | d |  _ n2 |  i ƒ  d j  o | d |  _ n | d |  _ |  i GH|  i i d	 ƒ o |  i d	 |  i d	 <n | i ƒ  d  S(
   Ns   loading gffffff@s
   CMS3.X-4.0g      @s   CMS4.1gÍÌÌÌÌÌ@s
   CMS5.0-5.1s
   CMS5.2-5.xR	   (	   t   openR   t   jsont   loadt   getCMSVersionR   t   has_keyR   t   close(   R   t   fileobjt   allConf(    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyt
   __loadconf#   s    c         C   s#   |  i  o |  i ƒ  |  i ƒ  St S(   N(   R
   t   copyFilesToNFSt   syncFilesToSlaveNodest   True(   R   (    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyt   dosync7   s    

c         C   s’  |  i  i d ƒ o• x’ |  i  d D] } t i i | ƒ oR d | d t | GH|  i t | ƒ |  i | t | ƒ |  i d i	 | ƒ q! |  i d i	 | ƒ q! Wn |  i  i d ƒ op xm |  i  d D]Z } t i i
 | ƒ oA t ƒ  } | | d <t i i | ƒ | d <|  i d i	 | ƒ qÉ qÉ Wn t t d ƒ i i ƒ  } z, | ~ } t i |  i | d	 t d
 d ƒWd  QXd GHt d ƒ d Gt GHd  S(   NR   s   sync s    to R   R   t   linkNamet   linkTot   wt   ensure_asciit   indenti   s.   waiting for NFS to sync files between apps ...i
   s    sync successfully, result saved:(   R   R   R   R   t   existst   FILE_SYNC_TO_DIRt   _FileSync__rmdirOrfilet   _FileSync__copytoR   t   appendt   islinkR   R   R   t   FILE_SYNC_RESULTt   __exit__t	   __enter__R   t   dumpt   FalseR   (   R   R   t   linkt   _[1]t   f(    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyR"   =   s.      	
&%
c         C   sé   d } xB t  i i d ƒ o- | d j  o  | d } t i d ƒ d GHq	 Wd } x‘ |  i D]† } d G| d	 Gd
 GHt | d	 | d | d ƒ } | i | | d ƒ \ } } | GH| d j o d | d	 GHt Sd G| d	 Gd GHq[ Wt	 S(   Ni    s3   /opt/tandbergtv/cms/prepack/filesync/script/sync.pyi   i   i   sJ   /opt/tandbergtv/cms/prepack/filesync/script/sync.py not found, waitting...s`   su root -c 'export PATH=$PATH:/sbin; python /opt/tandbergtv/cms/prepack/filesync/script/sync.py's   sync files to t   ips   begin...t   usert   passwordt
   rootPasswds   Failed to dosync files to t   done(
   R   R   R+   t   timeR   R
   R   t   execute_interactiveR5   R$   (   R   t   retryt   sync_cmdt   nodet   clientt   statust   output(    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyR#   Y   s$     !


 c         C   sv   | t  j oe t i i | ƒ oR t i i | ƒ o t | ƒ qr t i i | ƒ o t i | ƒ qr d G| GHn d  S(   Ns   unknown file: (   t   sysdirsR   R   R+   t   isdirR   t   isfilet   remove(   R   t   filepath(    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyt   __rmdirOrfilel   s     c         C   s¥   t  i i | ƒ oŽ t  i i | ƒ p t  i i | ƒ oW t  i i | ƒ } t  i i | ƒ p t  i | ƒ n d | | f } t  i | ƒ q¡ d | Gd GHn d S(   sD   copy dir or file to specified location, symblic link will be ignoreds   cp -rp "%s" "%s"s   symblic link found: s	   , ignoredN(   R   R   R+   RG   RH   R   t   makedirst   popen(   R   t   srcpatht   distpatht   parentt   cp_cmd(    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyt   __copytov   s    &c         C   s}   t  i d d ƒ i ƒ  i ƒ  } | d  j	 o" t | ƒ d j o t | d  ƒ St  i d d ƒ i ƒ  i ƒ  } t | d  ƒ Sd  S(   Ns9   rpm -qi watchpoint-cms  | grep Version | awk '{print $3}'t   ri    i   sB   conary q | grep watchpoint-cms | awk '{print $1}' | cut -d '=' -f2(   R   RM   t   readt   stript   Nonet   lent   float(   R   t   versionString(    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyR   …   s
     (
   t   __name__t
   __module__R   R   R%   R"   R#   R-   R.   R   (    (    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyR      s   						
	t   __main__s!   sync-files-to-app-nodes-conf.jsont   cluster_app_nodes(   t   __doc__R   R   t   distutils.dir_utilR    R   t   distutils.file_utilR   R   R>   R   RF   R,   R1   t   objectR   RZ   R   R   R   R   R   R   t	   conf_pathR   R   R   t   confR   R%   (    (    (    sb   /home/jenkins/workspace/prepack-aio-release-4.2/prepack-aio/src/main/resources/scripts/filesync.pyt   <module>   s&   'z
