
    Vh                        d dl mZmZmZ d dlmZ eZd dlZdZ		 d dl
mZ d dl
mZ dZdZ		 d dlZdZdZddZdd	Zd
 Z G d de      Zy# e$ r  ej                          Z	dZY :w xY w# e$ r  ej                          ZdZY Ow xY w)    )absolute_importdivisionprint_function)missing_required_libN)Redis)__version__TFc                 P   g }g }t         s0|j                  t        d              |j                  t               t        s2|r0|j                  t        d              |j                  t
               |r2| j                  dj                  |      dj                  |             y y )Nrediscertifi
)msg	traceback)HAS_REDIS_PACKAGEappendr   REDIS_IMP_ERRHAS_CERTIFI_PACKAGECERTIFI_IMPORT_ERROR	fail_jsonjoin)moduleneeds_certifierrorsr   s       p/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/module_utils/redis.pyfail_importsr   !   s    FI*734	'=*956	-.TYYv.$))I:NO     c                     t        t        dd      t        d      t        dd      t        dd      t        d	|       t        d	d      t        d      t        d      t        d      
	      S )Nstr	localhost)typedefault)r   T)r   no_loginti  bool)	
login_host
login_userlogin_password
login_porttlsvalidate_certsca_certsclient_cert_fileclient_key_file)dict)tls_defaults    r   redis_auth_argument_specr/   .   sq    U +.U##' UD1f$&$( 5!5)%( r   c           	         | j                   d   }| j                   d   }| j                   d   }| j                   d   }| j                   d   }| j                   d   rdnd }| j                   d   }|r|t        t        j                               }| j                   d	   }| j                   d
   }	t	        t        t        t        j                  d                  dk  r|| j                  d       ||||||	||d}
|||
d<   |
S )Nr$   r%   r&   r'   r(   r)   requiredr*   r+   r,   .)      r   z<The option `username` in only supported with redis >= 3.4.0.r   )hostportpasswordssl_ca_certsssl_certfilessl_keyfilessl_cert_reqssslusername)
paramsr   r   wheretuplemapr"   redis_versionsplitr   )r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r?   s              r   redis_auth_paramsrE   B   s   |,J|,J]]#34N|,J
--
C#)==1A#BZN}}Z(H
xw}}'}}%78mm$56OSm))#./09<AWN 	 	P  (&.,-F 'zMr   c                       e Zd ZdZd Zd Zy)RedisAnsiblezBase class for Redis modulec                 <    || _         | j                         | _        y )N)r   _connect
connection)selfr   s     r   __init__zRedisAnsible.__init__a   s    --/r   c                     	 t        di t        | j                        S # t        $ r>}| j                  j	                  dj                  t        |                   Y d }~y d }~ww xY w)Nz{0}r5    )r   rE   r   	Exceptionr   formatr   )rK   es     r   rI   zRedisAnsible._connecte   sW    	<:,T[[9:: 	<KK!!ell3q6&:!;;	<s     	A'4A""A'N)__name__
__module____qualname____doc__rL   rI   rN   r   r   rG   rG   ^   s    %*r   rG   )T)
__future__r   r   r   ansible.module_utils.basicr   r   __metaclass__r   r   r
   r   r   rC   r   ImportError
format_excr   r   r   r   r/   rE   objectrG   rN   r   r   <module>r\      s    A @ ; 2M
 
P(86 U  (I((*M   /9//1 s"   A
 A( 
A%$A%(BB