
    Vh$                     "   d dl mZmZmZ eZ	 d dlmZmZ dZ	d dlmZ 	 d dlmZ dZ	 d dlZdZd Zd	 Zd
 Zd Zd Zd ZddZd Zd ZddZ G d de      Zd Zedk(  r e        yy# e
$ r dZ	Y [w xY w# e
$ r dZY Yw xY w# e
$ r dZY _w xY w)    )absolute_importdivisionprint_function)api
exceptionsTF)env_fallback)AnsibleActionFailNc                 R    t        | d   t              xs t        | d   t              S )Nr   )
isinstancedictlist)xs    f/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/ise/plugins/plugin_utils/ise.pyis_list_complexr       s#    adD!;Z!d%;;    c                 ,     t         fd|D              S )Nc              3   &   K   | ]  }|v 
 y wN ).0elemls1s     r   	<genexpr>z has_diff_elem.<locals>.<genexpr>%   s     0DC0s   )any)r   ls2s   ` r   has_diff_elemr   $   s    0C011r   c                    t        |       }t        |      }||k7  ry|dk(  ry| |k(  }|ryt        |       s"t        |      st        |       t        |      k(  S d}||kD  r|S t        | |      }t        ||       }| xs | S )NFr   Td   )lenr   setr   )list1list2	len_list1	len_list2attempt_std_cmpMAX_SIZE_CMP
has_diff_1
has_diff_2s           r   compare_listr)   (   s    E
IE
IIA~unO5!/%*@5zSZ'' L< #5%0
"5%0
~/Z/r   c                 V    t        |j                  |       |j                  |             S r   )ise_compare_equalitygetkdict1dict2s      r   fn_comp_keyr1   D   s    		!eiil;;r   c                 F    y yt         t              rYt        t              rIt         j                               t        j                               z   }t	         fd|D               S t         t              rt        t              rt               S  k(  S )NTc              3   :   K   | ]  }t        |         y wr   )r1   r   paramcurrent_valuerequested_values     r   r   z'ise_compare_equality.<locals>.<genexpr>O   s     lSXK}oNNl   r   r   r   keysr   r)   )r6   r7   all_dict_paramss   `` r   r+   r+   H   s    -&:ot+L}1134tO<P<P<R7SSl\klmmm	M4	(Z-NM?;;//r   c                 V    t        |j                  |       |j                  |             S r   )ise_compare_equality2r,   r-   s      r   fn_comp_key2r>   V   s     1uyy|<<r   c                 V    |ry yy yt         t              rYt        t              rIt         j                               t        j                               z   }t	         fd|D               S t         t              rt        t              rt               S  k(  S )NTFc              3   :   K   | ]  }t        |         y wr   )r>   r4   s     r   r   z(ise_compare_equality2.<locals>.<genexpr>e   s     mTYLOOmr8   r9   )r6   r7   is_query_paramr;   s   ``  r   r=   r=   Z   s    =#8-&:ot+L}1134tO<P<P<R7SSm]lmnnn	M4	(Z-NM?;;//r   c                    t        | t              rt        |       dk(  rEt        | d   t              r.| d   } | j	                  |      a| j	                  |      |k7  rMd } | S d } | S | D ]>  }t        |t              s|j	                  |      |j	                  |      |k(  s:|} | c S  d } | S t        | t              sd } | S | j	                  |      | j	                  |      |k7  rd } | S )N   r   )r   r   r   r   r,   )resultkeyvalueitems       r   get_dict_resultrH   l   s    &$v;!&)T*::c?.6::c?e3K!F M  M  "dD)txx}/DQTY^H^!F!M" F
 M	 % M 
C	$CE)AMr   c                     t        t        dt        dgfd      t        dt        dgfd      t        dt        dgfdd      t        ddt        d	gf
      t        ddt        dgf
      t        ddt        dgf
      t        ddt        dgf
      t        ddt        dgf
      t        ddt        dgf
      t        ddt        dgf
      
      } | S )NstrISE_HOSTNAMET)typefallbackrequiredISE_USERNAMEISE_PASSWORD)rL   rM   rN   no_logbool
ISE_VERIFY)rL   defaultrM   z3.3_patch_1ISE_VERSIONISE_WAIT_ON_RATE_LIMITISE_USES_API_GATEWAYFISE_USES_CSRF_TOKEN	ISE_DEBUGint<   ISE_SINGLE_REQUEST_TIMEOUT)
ise_hostnameise_usernameise_password
ise_verifyise_versionise_wait_on_rate_limitise_uses_api_gatewayise_uses_csrf_token	ise_debugise_single_request_timeout)r   r   )argument_specs    r   ise_argument_specrh      s    u~>N/OZ^_u~>N/OZ^_u~>N/OZ^gklVT\L><Z[e]lUbTcEde#XpWqHrs!vt|VlUmFno fe|VkUlFmnFE\K=<YZ#'UB,YuXvIw#xM r   c                 X    dj                  |       }|r|dj                  |      z   }|S )Nzhttps://{hostname})hostnamez:{port}port)format)rj   rl   
url_results      r   get_ise_urlro      s6    %,,h,?J)"2"2"2"==
r   c                   X    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
dd
ZddZd Zd Zy	)ISESDKc                    t        dd      | _        t        r|j                  d      }d }d }d }d }|spt	        |j                  d      d      }t	        |j                  d      d      }t	        |j                  d      d      }t	        |j                  d      d	      }t        j                  |j                  d
      |j                  d      t	        |j                  d      d       |||||j                  d      |j                  d      |j                  d      |j                  d      ||j                  d      |j                  d            | _        |j                  d      r>t        r7t        j                  d      j                  t        j                                y y y | j                  d       y )NF changedrD   rc   r]   443rk   90608910r^   r_   rf   r`   ra   rb   rd   re   )usernamepasswordbase_urlui_base_urlers_base_urlmnt_base_urlpx_grid_base_urlsingle_request_timeoutverifyversionwait_on_rate_limituses_api_gatewayuses_csrf_tokendebugciscoisesdkzHCisco ISE Python SDK is not installed. Execute 'pip install ciscoisesdk'msg)r   rD   ISE_SDK_IS_INSTALLEDr,   ro   r   IdentityServicesEngineAPILOGGING_IN_STANDARDlogging	getLogger
addHandlerStreamHandler	fail_json)selfparamsrc   r|   r}   r~   r   s          r   __init__zISESDK.__init__   st   54#)::.D#E KLL#')&**^*D5Q*6::n+EFS*6::n+EER#.vzz./IPV#W 44N3N3$VZZ%?dK'))!1'-zz2N'Ozz,/

=1#)::.F#G!5 &

+@ Ajj-DH  zz+&+>!!-0;;G<Q<Q<ST ,?& NNiNjr   c                 "    d| j                   d<   y )NTru   rD   r   s    r   ru   zISESDK.changed   s    !%Ir   c                 B    | j                          d| j                  d<   y )NzObject createdrD   rt   r   s    r   object_createdzISESDK.object_created        0Hr   c                 B    | j                          d| j                  d<   y )NzObject updatedrD   rt   r   s    r   object_updatedzISESDK.object_updated   r   r   c                 B    | j                          d| j                  d<   y )NzObject deletedrD   rt   r   s    r   object_deletedzISESDK.object_deleted   r   r   c                 "    d| j                   d<   y )NzObject already absentrD   r   r   s    r   object_already_absentzISESDK.object_already_absent   s     7Hr   c                 "    d| j                   d<   y )NzObject already presentrD   r   r   s    r   object_already_presentzISESDK.object_already_present   s     8Hr   c                 "    d| j                   d<   y )NzDObject already present, but it has different values to the requestedrD   r   r   s    r   object_present_and_differentz#ISESDK.object_present_and_different   s     fHr   Nc                 L    ||| j                   d<   |r| j                          y y )NrD   )rD   ru   )r   ru   rD   s      r   object_modify_resultzISESDK.object_modify_result   s'    $*DKK!LLN r   c                 v   	 t        | j                  |      }t        ||      }	 |r
 di |}|S         }	 |S # t        $ r,}| j                  dj	                  |             Y d }~Gd }~ww xY w# t
        j                  $ r2}|r#| j                  dj	                  |             n|Y d }~S d }~ww xY w)NzBAn error occured when retrieving operation. The error was: {error})errorr   zAAn error occured when executing operation. The error was: {error}r   )getattrr   	Exceptionr   rm   r   ciscoisesdkException)r   familyfunctionr   handle_func_exceptionfunceresponses           r   execzISESDK.exec   s    		TXXv.F68,D	>&>   6 /  	NN.&q&/	   	 .. 		$2f1fo	    		s1   "; 
A3 A3 	A0"A++A03B8'B33B8c                 R     | j                   j                  di | t        ||      )Nr   )rD   updater	   )r   r   kwargss      r   r   zISESDK.fail_json   s&    $V$V,,r   c                     | j                   S r   r   r   s    r   	exit_jsonzISESDK.exit_json   s    {{r   )NN)NT)__name__
__module____qualname__r   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   rq      sA    !kF&11189g:-r   rq   c                       y r   r   r   r   r   mainr      s    r   __main__)Fr   ) 
__future__r   r   r   rL   __metaclass__r   r   r   r   ImportErroransible.module_utils.basicr   ansible.errorsr	   ANSIBLE_ERRORS_INSTALLEDr   r   r   r   r)   r1   r+   r>   r=   rH   rh   ro   objectrq   r   r   r   r   r   <module>r      s    A @ +   3$0  $ <208<0=0$, dV dN	 zF q  ! !  %$%    s3   A* A7 B *A43A47B BBB