
    Vh5                        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Zd dlmZ d dlmZmZmZmZ  e       Zej/                   ed&i d	 ed
dddg      d ed
      d ed
      d ed      d ed
      d ed
d      d ed
      d ed
      d ed      d ed
      d ed      d ed
      d ed
      d ed      d ed
      d  ed
             d	dd dgdfd	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# e$ r dZY w xY w)'    )absolute_importdivisionprint_function)
ActionBase)AnsibleArgSpecValidatorTF)
exceptions)AnsibleActionFail)ISESDKise_argument_specise_compare_equalityget_dict_resultstatestrpresentabsent)typedefaultchoicesname)r   descriptionenabledboolemailpassword)r   no_log	firstNamelastNamechangePasswordidentityGroupsexpiryDateEnabled
expiryDateenablePasswordcustomAttributesdictpasswordIDStoreidc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
InternalUserc                    || _         t        |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |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%   r&   )r   r   r   r   r   
first_name	last_namechange_passwordidentity_groupsexpiry_date_enabledexpiry_dateenable_passwordcustom_attributespassword_idstorer&   )iser$   get
new_object)selfparamsr3   s      j/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/ise/plugins/action/internal_user.py__init__zInternalUser.__init__D   s    F#

=1JJy)**W%ZZ
+zz+.jj,"JJ'78"JJ'78 &

+> ?

<0"JJ'78$jj);<#ZZ(9:zz$
    c                 *   	 | j                   j                  ddd|id      j                  d   }t        |d|      }|S # t        t
        f$ r7}| j                   j                  dj                  |      	       Y d }~S d }~wt        $ r d }Y |S w xY w)
Ninternal_userget_internal_user_by_namer   Ffamilyfunctionr7   handle_func_exceptionr(   '  An error occured when executing operation. Check the configuration of your API Settings and API Gateway settings on your ISE server. This collection assumes that the API Gateway, the ERS APIs and OpenAPIs are enabled. You may want to enable the (ise_debug: True) argument. The error was: {error}errormsg)	r3   execresponser   	TypeErrorAttributeError	fail_jsonformat	Exception)r6   r   resultes       r8   get_object_by_namezInternalUser.get_object_by_nameX   s    	XX]]&4~&+	 # 
 h~'F %VVT:F  >* 		HH.
 &q&/      	F	s   ;? B,B  BBc                    	 | j                   j                  ddd|id      j                  d   }|S # t        t        f$ r7}| j                   j                  dj                  |      	       Y d }~S d }~wt        $ r d }Y |S w xY w)
Nr<   get_internal_user_by_idr&   Fr>   r(   rB   rC   rE   )r3   rG   rH   rI   rJ   rK   rL   rM   )r6   r&   rN   rO   s       r8   get_object_by_idzInternalUser.get_object_by_ido   s    	XX]]&2bz&+	 # 
 h~'F$  >* 		HH.
 &q&/      	F	s   .2 B,A33BBc                 *   d}d }| j                   j                  d      }| j                   j                  d      }|r+| j                  |      }|d uxr t        |t              }||fS |r'| j                  |      }|d uxr t        |t              }||fS )NFr&   r   )r5   r4   rS   
isinstancer$   rP   )r6   rN   prev_objr&   r   s        r8   existszInternalUser.exists   s    __  &""6*,,R0HT)Hj4.HF !! ..t4HT)Hj4.HF!!r:   c                     | j                   d}dt        fg}|D ])  \  }}j                  |      }t        ||      r|rd} n*+ |r|S g d}t	        fd|D              S )NFr,   T))r   r   )r   r   )r   r   )r   r   )r   r   )r   r*   )r   r+   )r   r,   )r   r-   )r    r.   )r!   r/   )r"   r0   )r#   r1   )r%   r2   )r&   r&   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y w)N)r   r4   ).0	ise_paramansible_paramcurrent_objrequested_objs      r8   	<genexpr>z/InternalUser.requires_update.<locals>.<genexpr>   sB      
 +M %	*M,=,=m,L 
s   8;)r5   r   r4   rU   any)	r6   r]   force_changechange_paramschange_paramtype_requested_obj_value
obj_paramsr^   s	    `      @r8   requires_updatezInternalUser.requires_update   s    +T23#0 
	L%"/"3"3L"A-u5&#'L
	 

&  
 /9	
 
 	
r:   c                 j    | j                   j                  dd| j                        j                  }|S )Nr<   create_internal_userr?   r@   r7   )r3   rG   r5   rH   )r6   rN   s     r8   createzInternalUser.create   s7    "+??  
 (	 	
 r:   c                    | j                   j                  d      }| j                   j                  d      }| j                   j                  d      }d }|r6	 | j                  j                  dd| j                   d      j                  }|S |r6	 | j                  j                  dd| j                   d      j                  }|S |S # t
        j                  $ rq}|s0d|j                  v r"| j                  j                  dd	
       ddi}n4|s0d|j                  v r"| j                  j                  dd	
       ddi}n|Y d }~|S d }~ww xY w# t
        j                  $ rq}|s0d|j                  v r"| j                  j                  dd	
       ddi}n4|s0d|j                  v r"| j                  j                  dd	
       ddi}n|Y d }~|S d }~ww xY w)Nr&   r   r,   r<   update_internal_user_by_idFr>   z+Password can't be set to one of the earlierzKObject already present, update was attempted but failed because of password)changedrN   	_changed_Tupdate_internal_user_by_name)
r5   r4   r3   rG   rH   r   ApiErrormessageobject_modify_resultdetails_str)r6   r&   r   r,   rN   rO   s         r8   updatezInternalUser.update   s   __  &""6*//--.?@*9??*/	 ' 
 ( p ; *;??*/	 ' 
 ( 6 ve && 'ERHH11 %l 2  *40F'EVHH11 %l 2  *40FG< e: && 'ERHH11 %l 2  *40F'EVHH11 %l 2  *40FG+s2   3C 3E E
A&EE
G A&GGc                 J   | j                   j                  d      }| j                   j                  d      }d }|r4| j                  j                  dd| j                         j                  }|S |r2| j                  j                  dd| j                         j                  }|S )Nr&   r   r<   delete_internal_user_by_idrj   delete_internal_user_by_name)r5   r4   r3   rG   rH   )r6   r&   r   rN   s       r8   deletezInternalUser.delete	  s    __  &""6*XX]]&5 #  h	   XX]]&7 #  h	 
 r:   N)__name__
__module____qualname__r9   rP   rS   rW   rg   rk   ru   ry    r:   r8   r(   r(   C   s,    
(.,",
\?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	   superr   r9   _supports_async_supports_check_mode_result)r6   argskwargs	__class__s      r8   r9   zActionModule.__init__  sC    )#k  	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_conditionalsr   )r   _taskr   r$   r   r   r   r   r   actionvalidater	   )r6   aavvaliderrorss       r8   _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                         \  }}|r|j                  |      rt	 |j                         }|}	| j
                  j                  t        |	             |r|j                  d      r|}n%|j                         \  }}
|
}|j                          n|}|j'                          n|j)                         }|j                         \  }}|}|j+                          nM|dk(  rH|j                         \  }}|r#|j-                          |}|j/                          n|j1                          | j
                  j                  t        |             | j
                  j                  |j3                                | j
                  S # t         $ r,}|j#                  dj%                  |	      
       Y d }~d }~ww xY w)NFrn   )r7   r   r   )ise_update_responsero   zAAn error occured when executing operation. The error was: {error}rC   rE   r   )ise_response)r   diffr   r   runr   r   r
   r   r(   r4   rW   rg   ru   r$   object_updatedrM   rK   rL   object_already_presentrk   object_createdry   object_deletedobject_already_absent	exit_json)r6   tmp	task_varsr3   objr   rH   
obj_existsrV   r   updated_objrO   ise_create_responsecreated_objr   s                 r8   r   zActionModule.run9  s   

\44S)D"'YDJJOO,4::??C0

##G,I%(ZZ\"Z&&x0#&::<.6+++ 5HI $[(A'/H8;

5Z'2H..0  (H..0&)jjl#,/JJL)[&""$h%(ZZ\"Z

#""$))+Dh78CMMO,||7 % !:$f1fo	 &  s   A2I 	I6
"I11I6)NN)rz   r{   r|   r9   r   r   __classcell__)r   s   @r8   r   r     s    ,"8 8r:   r   Nr}   ) 
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   r   ImportErrorciscoisesdkr   ISE_SDK_IS_INSTALLEDansible.errorsr	   6ansible_collections.cisco.ise.plugins.plugin_utils.iser
   r   r   r   r   ru   r$   r   r   r   r   objectr(   r   r}   r:   r8   <module>r      s   A @ -& "& &   ,  "#    y9h:OPu e$ &!	
  5. E" 5! ( ' F+ U# ' 6* %(  U!, i$.hv-   V6 VrU: UY  '!&'  ! !s"   D% D3 %D0/D03D>=D>