
    Vh$                     8   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 dlmZ dZ	 d dlZdZd dlZd	 Zd
 Zd Zd Zd Zd ZddZd ZefdZd Z G d de       Z!d Z"e#dk(  r e"        yy# e
$ r dZ	Y fw xY w# e
$ r dZY ^w xY w# e
$ r dZY dw xY w)    )absolute_importdivisionprint_function)api
exceptionsTF)env_fallback)	to_native)AnsibleActionFailNc                 R    t        | d   t              xs t        | d   t              S Nr   )
isinstancedictlist)xs    h/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/dnac/plugins/plugin_utils/dnac.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   )dnac_compare_equalitygetkdict1dict2s      r   fn_comp_keyr3   E   s     1uyy|<<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   )r3   r   paramcurrent_valuerequested_values     r   r   z(dnac_compare_equality.<locals>.<genexpr>Q   s     lSXK}oNNl   r   r   r   keysr   r+   )r8   r9   all_dict_paramss   `` r   r-   r-   I   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   )dnac_compare_equality2r.   r/   s      r   fn_comp_key2r@   X   s    !%))A,		!==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@   r6   s     r   r   z)dnac_compare_equality2.<locals>.<genexpr>g   s     mTYLOOmr:   r;   )r8   r9   is_query_paramr=   s   ``  r   r?   r?   \   s    =#8-&:ot+L}1134tO<P<P<R7SSm]lmnnn	M4	(Z-NM?;;//r   c                     | |k(  S r   r   )obj1obj2s     r   
simple_cmprG   n   s    4<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cmp_fnitems        r   get_dict_resultrO   r   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                  b   t        t        dt        dgfd      t        dt        dgfdd	      t        dt        d
gfddg      t        dt        dgfd      t        dt        dgfd      t        dt        dgfd      t        dt        dgfd      t        dt        dgfd            } | S )Nstr	DNAC_HOSTT)typefallbackrequiredint	DNAC_PORTFi  )rS   rT   rU   defaultDNAC_USERNAMEadminuser)rS   rT   rX   aliasesDNAC_PASSWORD)rS   rT   no_logboolDNAC_VERIFY)rS   rT   rX   DNAC_VERSIONz2.3.7.6
DNAC_DEBUGVALIDATE_RESPONSE_SCHEMA)	dnac_host	dnac_portdnac_usernamednac_passworddnac_verifydnac_version
dnac_debugvalidate_response_schema)r   r   )argument_specs    r   dnac_argument_specrm      s    E\K=,ITXYE\K=,ITYcfg?P0Q[bmsltu?P0QZ^_f}o/NX\]u~>N/OYbcV|l^.LV[\!%6\LfKg<hrv!w	M r   c                   j    e Zd Zd 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d Zd Zd Zy	)DNACSDKc           
      X   t        dd      | _        |j                  d      | _        t        rt        j                  |j                  d      |j                  d      dj                  |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 changedrJ   rk   rf   rg   zhttps://{dnac_host}:{dnac_port}rd   re   )rd   re   ri   rh   rj   )usernamepasswordbase_urlversionverifydebugdnacentersdkzJDNA Center Python SDK is not installed. Execute 'pip install dnacentersdk'msg)r   rJ   r.   rk   DNAC_SDK_IS_INSTALLEDr   DNACenterAPIformatLOGGING_IN_STANDARDlogging	getLogger
addHandlerStreamHandler	fail_json)selfparamss     r   __init__zDNACSDK.__init__   s    54(.

3M(N% ''O4O4:AA$jj5KAX B  

>2zz-0jj.	DH zz,',?!!.1<<W=R=R=TU -@' NNkNlr   c                 "    d| j                   d<   y )NTrs   rJ   r   s    r   rs   zDNACSDK.changed   s    !%Ir   c                 B    | j                          d| j                  d<   y )NzObject createdrJ   rr   r   s    r   object_createdzDNACSDK.object_created        0Hr   c                 B    | j                          d| j                  d<   y )NzObject updatedrJ   rr   r   s    r   object_updatedzDNACSDK.object_updated   r   r   c                 B    | j                          d| j                  d<   y )NzObject deletedrJ   rr   r   s    r   object_deletedzDNACSDK.object_deleted   r   r   c                 "    d| j                   d<   y )NzObject already absentrJ   r   r   s    r   object_already_absentzDNACSDK.object_already_absent   s     7Hr   c                 "    d| j                   d<   y )NzObject already presentrJ   r   r   s    r   object_already_presentzDNACSDK.object_already_present   s     8Hr   c                 "    d| j                   d<   y )NzDObject already present, but it has different values to the requestedrJ   r   r   s    r   object_present_and_differentz$DNACSDK.object_present_and_different   s     fHr   Nc                 L    ||| j                   d<   |r| j                          y y )NrJ   )rJ   rs   )r   rs   rJ   s      r   object_modify_resultzDNACSDK.object_modify_result   s'    $*DKK!LLN r   c                 @    t         j                  j                  |      S r   )ospathisfiler   	file_paths     r   is_filezDNACSDK.is_file   s    ww~~i((r   c                 @    t         j                  j                  |      S r   )r   r   basenamer   s     r   extract_file_namezDNACSDK.extract_file_name   s    ww	**r   c                    	 t        | j                  |      }t        ||      }	 |r|j	                  dg       }|rt        |t              ri }	|D ]d  \  }
}t        |j	                  |
      t              s&| j                  ||
         s;| j                  ||
         }||
   }|t        |d      f|	|<   f |j                  d|	       |j                  dd        | j                  s|rd|d<    d
i |}|S         }	 |S # t        $ r}| j                  |       Y d }~d }~ww xY w# t        j                  $ r6}| j                  dj                  t!        |      	             Y d }~S d }~ww xY w)Nr{   
file_pathsrbmultipart_fieldsmultipart_monitor_callbackFactive_validationzAAn error occured when executing operation. The error was: {error})errorr   )getattrr   	Exceptionr   r.   r   r   rQ   r   r   open
setdefaultrk   r   dnacentersdkExceptionr   r	   )r   familyfunctionr   op_modifieskwargsfuncefile_paths_paramsr   rK   rL   	file_namer   responses                  r   execzDNACSDK.exec   s   	"TXXv.F68,D	$*JJ|R$@!$4Et)L')$(9 Ye%fjjos;VTW[@Y(,(>(>vc{(KI(.sI7@$yRVBW6X,U3	Y %%&8:JK%%&BDI4427F./>&>   6 ?  	"NNqN!!	"0 // 	NN.&y|&,	    	sB   "D AD) 5D) 
A+D) 7D) 	D&
D!!D&)E2<+E--E2c                 R     | j                   j                  di | t        ||      )Nr   )rJ   updater
   )r   r|   r   s      r   r   zDNACSDK.fail_json   s&    $V$V,,r   c                     | j                   S r   r   r   s    r   	exit_jsonzDNACSDK.exit_json   s    {{r   c                     |
t               S t        |t               r't        |      dk(  r
t               S |d   
t               S |S r   )r   r   r!   )r   verify_interfacer   s      r   verify_arrayzDNACSDK.verify_array   sG    #6M&-#$)v"*vr   )NN)NF)__name__
__module____qualname__r   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ro   ro      sP    m&&11189g)+#J-	 r   ro   c                       y r   r   r   r   r   mainr     s    r   __main__)F)$
__future__r   r   r   rS   __metaclass__rz   r   r   r}   ImportErroransible.module_utils.basicr   ansible.module_utils._textr	   ansible.errorsr
   ANSIBLE_ERRORS_INSTALLEDr   r   os.pathr   r   r   r+   r3   r-   r@   r?   rG   rO   rm   objectro   r   r   r   r   r   <module>r      s    C B!, ! 3 0$0  $  <208=0>0$ 0: ,m f m `	 zF }  "!"  %$%    s3   A5 B B 5A?>A?BBBB