
    i                     V    d dl mZ d dlmZ d dlZd dlZddlmZ  G d de          ZdS )    )Cluster)PlainTextAuthProviderN   )BaseDBHandlerc                   .     e Zd Z fdZddZddZ xZS )CassandraHandlerc                 |    t                                          |           t          j        d          | _        d S )N	EURECA_CA)super__init__osgetenv	cert_path)selflogger	__class__s     F/Users/user/workspace/sujinbaek/cqa-test-app/products/dbs/cassandra.pyr   zCassandraHandler.__init__   s0       ;//    Nc                 b   d |                     d          D             }d }|r|rt          ||          }	 t          j                    }d|_        t          j        |_        |                    | j                   t          |d||ddi          | _
        |r| j
                            |          n| j
                                        | _        | j                            d           |                     d	          S # t          $ r#}|                     d
d|           cY d }~S d }~ww xY w)Nc                 6    g | ]}|                                 S  )strip).0hosts     r   
<listcomp>z,CassandraHandler.connect.<locals>.<listcomp>   s     FFF4$**,,FFFr   ,)usernamepasswordFiR#  check_hostname)contact_pointsportauth_providerssl_contextssl_optionsz(SELECT release_version FROM system.localz$Successfully connected to Cassandra   z Failed to connect to Cassandra: )splitr   sslcreate_default_contextr   	CERT_NONEverify_modeload_verify_locationsr   r   clusterconnectsessionexecutemake_connection_response	Exceptionmake_error_response)	r   serviceuserr   databaser    r"   r#   es	            r   r-   zCassandraHandler.connect   s_   FF7==3E3EFFF 	TH 	T14(SSSM	X466K).K&&)mK#--dn==="-+'-u5  DL >Fa4<//9994<K_K_KaKaDLL  !KLLL001WXXX 	X 	X 	X++C0VST0V0VWWWWWWWW	Xs   CD 
D.D)#D.)D.c                 ^   	 |r{t          | j        d          r+| j        j        |k    r| j                            |           n;t          | j        d          r| j        j        | j                            |           | j                            |          }|                                                                }|                    d          ret          |          }|r;t          |d          r|j	        rt          |j	                  ng }|s2|r0t          |d         d          rt          |d         j
                  }g }|D ]}t          |d          rG|                    t          |                                                                                     Yt          |d          r?t          |t          t           f          s#|                    t          |                     |                    |g           |                     ||          S |                     d	g g 
          S |                    d          r|                     dg g 
          S |                     dg g 
          S # t$          $ r#}	|                     dd|	           cY d }	~	S d }	~	ww xY w)Nkeyspace)selectdescribeshowcolumn_namesr   _fields_asdict__iter__)columns_namesresultsz0Query executed successfully, no results returned)msgr@   rA   )insertupdatedeletecreatedropaltertruncateusezQuery executed successfullyr%   z=Internal Server Error, Please check the query and try again: )hasattrr.   r8   set_keyspacer/   r   lower
startswithlistr<   r=   appendr>   values
isinstancestrbytesmake_success_responser1   r2   )
r   queryr5   resultquery_lowerrowsr@   rA   rowr6   s
             r   execute_queryzCassandraHandler.execute_query(   s   4	v 84<44 89NRZ9Z9ZL--h7777 z:: 8dl>S>[L--h777 \))%00F++----//K%%&DEE &F|| AHQ_A`A`  %Aekex  %AD)<$=$=$=  AM( >T >gd1gy6Q6Q >(,T!W_(=(= G# 2 2"3	22 2#NN40D0D0F0F+G+GHHHH$S*55 2jsTYl>[>[ 2#NN4995555#NNC5111155&3 ' 6   
  55N&( " 6   
 ''(tuu 115"$ 2    115"$ 2     	v 	v 	v++C1tqr1t1tuuuuuuuu	vs0   HI? "I? :,I? 'I? ?
J,	J'!J,'J,)N)__name__
__module____qualname__r   r-   r[   __classcell__)r   s   @r   r   r      sl        0 0 0 0 0
X X X X65v 5v 5v 5v 5v 5v 5v 5vr   r   )	cassandra.clusterr   cassandra.authr   r'   r   base_dbr   r   r   r   r   <module>rc      s    % % % % % % 0 0 0 0 0 0 



 				 " " " " " "Vv Vv Vv Vv Vv} Vv Vv Vv Vv Vvr   