
    Vh'                        d dl mZmZmZ eZd dlmZ 	 d dlm	Z	 dZ
d dlmZ d dlmZmZmZmZ d dlmZ  e       Zej-                   e ed	d
d
dg       ed	       ed	       ed	       ed	d       ed	       ed       ed	                   dd
dgdfdddgdfgZg Zg Zg Z G d de      Z G d de      Zy# e$ r dZ
Y w xY w)    )absolute_importdivisionprint_function)
ActionBase)AnsibleArgSpecValidatorTF)AnsibleActionFail)DNACSDKdnac_argument_specdnac_compare_equalityget_dict_result)InconsistentParametersstrpresentabsent)typedefaultchoices)r   )r   no_loglist)state	firstNamelastNameusernamepasswordemailroleListuserIdr   r   c                   V    e Zd Zd ZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zy)UserV1c                 2   || _         t        |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d            | _        y )	Nr   r   r   r   r   r   r   )r   r   r   r   r   r   r   user_id)dnacdictget
new_object)selfparamsr"   s      e/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/dnac/plugins/action/user_v1.py__init__zUserV1.__init__5   su    	jj-ZZ
+ZZ
+ZZ
+**W%ZZ
+::h'JJx(	
    Nc                     i }| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      xs | j                   j                  d      |d<   |S )NinvokeSourceinvoke_source
authSourceauth_sourcer%   r$   )r&   nameidnew_object_paramss       r(   get_all_paramszUserV1.get_all_paramsB   st    -1__-@-@-P .1OO0 	/*+/??+>+>|+L ,/OO. 	-(  r*   c                 r   i }| j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   |S )Nr   r   r   r   r   r   r0   r&   r3   s     r(   create_paramszUserV1.create_paramsJ   s    )-)<)<[)I+&(,(;(;J(G*%(,(;(;J(G*%(,(;(;J(G*%%)__%8%8%A'"(,(;(;J(G*%  r*   c                 F    i }| j                   j                  d      |d<   |S )Nr!   r0   r6   s     r(   delete_by_id_paramszUserV1.delete_by_id_paramsT   s(    '+':':9'E)$  r*   c                 r   i }| j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   |S )Nr   r   r   r   r   r   r0   r6   s     r(   update_all_paramszUserV1.update_all_paramsY   s    )-)<)<[)I+&(,(;(;J(G*%%)__%8%8%A'"(,(;(;J(G*%&*oo&9&9(&C(#(,(;(;J(G*%  r*   c                     d }	 | j                   j                  dd| j                  |            }t        |t              rd|v r|j                  d      }t        |d|      }|S # t        $ r d }Y |S w xY w)Nuser_and_rolesget_users_api_v1)r1   familyfunctionr'   responser1   r"   execr4   
isinstancer#   r$   r   	Exception)r&   r1   resultitemss       r(   get_object_by_namezUserV1.get_object_by_namec   s    	IINN'+***5 # E
 %&&!IIj1E$UFD9F   	F	   A A& &A54A5c                     d }	 | j                   j                  dd| j                  |            }t        |t              rd|v r|j                  d      }t        |d|      }|S # t        $ r d }Y |S w xY w)Nr=   r>   r2   r?   rB   r2   rC   )r&   r2   rG   rH   s       r(   get_object_by_idzUserV1.get_object_by_idt   s    	IINN'+**b*1 # E
 %&&!IIj1E$UD"5F   	F	rJ   c                    d}d}d }| j                   j                  d      }|xs | j                   j                  d      }| j                   j                  d      }|r'| j                  |      }|d uxr t        |t              }|s)|r'| j                  |      }|d uxr t        |t              }|r|j                  d      }|xs |j                  d      }|r|r||k7  rt        d      |rJ| j                   j                  t	        |             | j                   j                  t	        |             |d uxr t        |t              }||fS )	NFr2   r!   r1   r   z9The 'id' and 'name' params don't refer to the same objectrL   r!   )r%   r$   rM   rE   r#   rI   r   update)r&   	id_existsname_existsprev_objo_idr1   _id	it_existss           r(   existszUserV1.exists   s2   	""4(5t**95""6*,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C/h/C[TS[,-hii&&ts|4&&tC'89D(GZ$-G	8$$r*   c                 P    | j                   g d}t        fd|D              S )N))r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r!   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y w)N)r   r$   ).0
dnac_paramansible_paramcurrent_objrequested_objs      r(   	<genexpr>z)UserV1.requires_update.<locals>.<genexpr>   sD      B2
M -[__Z-H-:->->}-MO O Bs   8;)r%   any)r&   r]   
obj_paramsr^   s    ` @r(   requires_updatezUserV1.requires_update   s3    

  B6@B B 	Br*   c                 `    | j                   j                  dd| j                         d      }|S )Nr=   add_user_api_v1Tr@   rA   r'   op_modifies)r"   rD   r7   )r&   rG   s     r(   createzUserV1.create   s5    #&%%'	   
 r*   c                     | j                   j                  d      }| j                   j                  d      }d }| j                  j                  dd| j	                         d      }|S )Nr2   r1   r=   update_user_api_v1Tre   )r%   r$   r"   rD   r;   )r&   r2   r1   rG   s       r(   rP   zUserV1.update   sb    __  &""6*#)))+	   
 r*   c                    | j                   j                  d      }|xs | j                   j                  d      }| j                   j                  d      }d }|sb| j                  |      }d }|r&|j                  d      }|xs |j                  d      }|r%| j                   j                  t	        |             | j
                  j                  dd| j                               }|S )	Nr2   r!   r1   r   rO   r=   delete_user_api_v1r?   )r%   r$   rI   rP   r#   r"   rD   r9   )r&   r2   r1   rG   prev_obj_nameid_s         r(   deletezUserV1.delete   s    __  &14??&&y1""6* 33D9MC#''-8]..x8&&tC'89#)++-   

 r*   NN)__name__
__module____qualname__r)   r4   r7   r9   r;   rI   rM   rW   rb   rg   rP   rn    r*   r(   r   r   4   s?    
!!!
!""%0B$
r*   r   c                   0     e Zd Z fdZd Zd fd	Z xZS )ActionModulec                 x    t         st        d      t        t        |   |i | d| _        d| _        d | _        y )NzYansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'F)ANSIBLE_UTILS_IS_INSTALLEDr   superru   r)   _supports_async_supports_check_mode_result)r&   argskwargs	__class__s      r(   r)   zActionModule.__init__   sC    )#$  A  AlD*D;F;$$)!r*   c                 *   t        | j                  j                  t        t              dt        t
        t        t        t              | j                  j                        }|j                         \  }}| j                  _        |st        |      y )N)argument_specargspec)required_ifrequired_one_ofmutually_exclusiverequired_together)dataschemaschema_formatschema_conditionalsr1   )r   _taskr|   r#   r   r   r   r   r   actionvalidater   )r&   aavvaliderrorss       r(   _check_argspeczActionModule._check_argspec   sr    %m4# $' /#5"3	! ""
 *-&vtzz#F++ r*   c                    d| j                   _        t        t        |   ||      | _        d| j
                  d<   | j                          t        | j                   j                        }t        | j                   j                  |      }| j                   j                  j                  d      }d }|dk(  r{|j                         \  }}|rE|j                  |      r!|j                         }|j                          n|}|j                          nl|j!                         }|j#                          nK|dk(  rF|j                         \  }}|r!|j%                         }|j'                          n|j)                          | j
                  j                  t+        |             | j
                  j                  |j-                                | j
                  S )NFchangedr   r   r   )dnac_response)r   diffrx   ru   runr{   r   r	   r|   r   r$   rW   rb   rP   object_updatedobject_already_presentrg   object_createdrn   object_deletedobject_already_absentr#   	exit_json)
r&   tmp	task_varsr"   objr   rB   
obj_existsrS   r~   s
            r(   r   zActionModule.run   s`   

\44S)D"'Ytzz'TZZ__d+

##G,I%(ZZ\"Z&&x0"zz|H'')'H//1::<##%h%(ZZ\"Z::<##%**,Dx89DNN,-||r*   ro   )rp   rq   rr   r)   r   r   __classcell__)r~   s   @r(   ru   ru      s    ,"$ $r*   ru   N)
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   rw   ImportErroransible.errorsr   8ansible_collections.cisco.dnac.plugins.plugin_utils.dnacr	   r
   r   r   >ansible_collections.cisco.dnac.plugins.plugin_utils.exceptionsr   r   rP   r#   r   r   r   r   objectr   ru   rs   r*   r(   <module>r      s   C B -& "& , 
 #$   T
E9y(6K
LuuuT*
E
vU	 	 i(T*h
D)   bV bJ?: ?W  '!&'s   C CC