ó
Ø}…_c           @   s   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l	 Z	 d  d l
 Z
 d d	 d „  ƒ  YZ d S(
   iÿÿÿÿ(   t   DeviceContainer(   t   DeviceDB(   t   DataContainer(   t   DataDB(   t   AccessControllerNt   Handlerc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d |  _ d  S(   Nt    (   t   request_msgt   response_msg(   t   selft   req_msg(    (    s"   /var/www/titaniumci/src/Handler.pyt   __init__   s    	c         C   s   d  S(   N(    (   R	   (    (    s"   /var/www/titaniumci/src/Handler.pyt   __del__   s    c         C   sþ  t  j j d ƒ t ƒ  } | j d ƒ y | j |  j ƒ WnF t k
 r‚ } t  j j t	 | ƒ ƒ | j
 d ƒ | j ƒ  |  _ d  SX| j r¬ | j
 d ƒ | j ƒ  |  _ d  S| j d  k rè | j
 d | j j ƒ  ƒ | j ƒ  |  _ d  Sd | j d } t  j j | ƒ yÜ t  j j d ƒ t | j | j ƒ } | j ƒ  } | szt  j j d | j ƒ | j
 d	 ƒ | j ƒ  |  _ d  S| j ƒ  } | sÎt  j j d
 | j d | j ƒ | j
 d ƒ | j ƒ  |  _ d  S| j ƒ  } | j ƒ  WnF t k
 r-} t  j j t	 | ƒ ƒ | j
 d	 ƒ | j ƒ  |  _ d  SX| skt  j j d | j ƒ | j
 d	 ƒ | j ƒ  |  _ d  Sy7| j d ƒ } t  j j d | j d ƒ ƒ t | j d ƒ | j d ƒ | j d ƒ | j d ƒ ƒ }	 |	 j ƒ  |	 j | ƒ }
 |	 j ƒ  | j j |
 ƒ | j ƒ  xŽ | j d ƒ D]} } t  j j  d | j d ƒ ƒ t | j d ƒ | j d ƒ | j d ƒ | j d ƒ ƒ }	 |	 j ƒ  |	 j | ƒ |	 j ƒ  q WWnF t k
 rê} t  j j t	 | ƒ ƒ | j
 d ƒ | j ƒ  |  _ d  SX| j ƒ  |  _ d  S(   Ns"   Handler: entered handleSetDevice()t	   setDevicet   INVALID_XMLt   MISSING_s   %(asctime)s - s7    - %(process)s - %(name)s - %(levelname)s - %(message)ss   Access controls)   AUTHENTICATION_FAIL for user with token: t   AUTHENTICATION_FAILs   LOGGER_NOT_ASSIGNED for logger s    and token t   LOGGER_NOT_ASSIGNEDt   masters3   Handler: building DeviceDB connector for master db t   db_namet   hostt   usernamet   pswt   mirrors1   Handler: building DataDB connector for mirror db t   SERVER_SIDE_ERROR(!   t   settingst   loggert   debugR    t   setResponseTypeNodet   readXMLSetRequestR   t	   Exceptiont   errort   strt   appendStatusCodeNodet   getResponseMsgR   t   invalidXMLFlagt   missingValuet   Nonet   uppert   loggerIdt   changeFormatterR   t   autht
   check_autht   check_loggert   get_routing_infot
   disconnectt   getR   t   connectt   setDatat   listStatusCodest   updatet   writeXMLSetResponset   info(   R	   t   deviceContainert   et   newFormatStrt
   accessCntrt   permissionCheckt   loggerCheckt   routingInfoDictt   master_db_infot	   connectorR1   t   mirror_db_info(    (    s"   /var/www/titaniumci/src/Handler.pyt   handleSetDevice   sŒ    		"



c         C   sÀ  t  j j d ƒ t ƒ  } | j d ƒ y | j |  j ƒ WnF t k
 r‚ } t  j j t	 | ƒ ƒ | j
 d ƒ | j ƒ  |  _ d  SX| j r¬ | j
 d ƒ | j ƒ  |  _ d  S| j d  k rè | j
 d | j j ƒ  ƒ | j ƒ  |  _ d  Sd | j d } t  j j | ƒ yÌ t | j | j ƒ } | j ƒ  } | sjt  j j d | j ƒ | j
 d ƒ | j ƒ  |  _ d  S| j ƒ  } | s¾t  j j d	 | j d
 | j ƒ | j
 d ƒ | j ƒ  |  _ d  S| j ƒ  } | j ƒ  WnQ t k
 r(} t	 | ƒ GHt  j j t	 | ƒ ƒ | j
 d ƒ | j ƒ  |  _ d  SXy%| j d ƒ } t  j j d | d ƒ t | j d ƒ | j d ƒ | j d ƒ | j d ƒ ƒ }	 |	 j ƒ  |	 j | ƒ }
 |	 j ƒ  | j |
 ƒ xŽ | j d ƒ D]} } t  j j d | j d ƒ ƒ t | j d ƒ | j d ƒ | j d ƒ | j d ƒ ƒ }	 |	 j ƒ  |	 j | ƒ |	 j ƒ  qÌWWn\ t k
 r¬} t  j j t	 | ƒ ƒ t  j j t j  ƒ  ƒ | j
 d ƒ | j ƒ  |  _ d  SX| j ƒ  |  _ d  S(   Ns    Handler: entered handleSetData()R0   R   R   s   %(asctime)s - s7    - %(process)s - %(name)s - %(levelname)s - %(message)ss)   AUTHENTICATION_FAIL for user  with token R   s   LOGGER_NOT_ASSIGNED for logger s    and token R   R   s1   Handler: building DataDB connector for master db R   R   R   R   R   s1   Handler: building DataDB connector for mirror db R   (!   R   R   R   R   t   setResponseTypet   readSetXMLRequestR   R   R   R    t   responseAppendStatusCodeNodeR"   R   R#   R$   R%   R&   R'   R(   R   R)   R*   R+   R,   R-   R.   R   R/   R0   R3   R4   t	   tracebackt
   format_exc(   R	   t   dataContainerR6   R7   R8   R9   R:   R;   R<   R=   t
   listFailedR>   (    (    s"   /var/www/titaniumci/src/Handler.pyt   handle_set_datax   s‚    		"


c         C   s   |  j  GHd  S(   N(   R   (   R	   (    (    s"   /var/www/titaniumci/src/Handler.pyt   print_response  s    (   t   __name__t
   __module__R   R   R?   RG   RH   (    (    (    s"   /var/www/titaniumci/src/Handler.pyR   	   s
   			b	§(    (   t   containers.DeviceContainerR    t   dbconnectors.DeviceDBR   t   containers.DataContainerR   t   dbconnectors.DataDBR   R   R   RC   R   (    (    (    s"   /var/www/titaniumci/src/Handler.pyt   <module>   s   