
    Vh2                        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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 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  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 iw xY w)/    )absolute_importdivisionprint_function)
ActionBase)AnsibleArgSpecValidatorTF)AnsibleActionFail)ISESDKise_argument_specise_compare_equalityget_dict_result)InconsistentParametersstatestrpresentabsent)typedefaultchoicesauthenticateBeforeCRLReceivedbool)r   automaticCRLUpdateautomaticCRLUpdatePeriodintautomaticCRLUpdateUnitscrlDistributionUrlcrlDownloadFailureRetriescrlDownloadFailureRetriesUnitsdescriptiondownloadCRLenableOCSPValidationenableServerIdentityCheckignoreCRLExpirationnamenonAutomaticCRLUpdatePeriodnonAutomaticCRLUpdateUnitsrejectIfNoStatusFromOCSPrejectIfUnreachableFromOCSPselectedOCSPServicestatus!trustForCertificateBasedAdminAuthtrustForCiscoServicesAuthtrustForClientAuthtrustForIseAuthidc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TrustedCertificatec                    || _         t        d-i d|j                  d      d|j                  d      d|j                  d      d|j                  d      d	|j                  d
      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d       d!|j                  d"      d#|j                  d#      d$|j                  d%      d&|j                  d'      d(|j                  d)      d*|j                  d+      d,|j                  d,      | _        y ).N authenticate_before_crl_receivedr   automatic_crl_updater   automatic_crl_update_periodr   automatic_crl_update_unitsr   crl_distribution_urlr   crl_download_failure_retriesr   "crl_download_failure_retries_unitsr   r   download_crlr   enable_ocsp_validationr    enable_server_identity_checkr!   ignore_crl_expirationr"   r#   non_automatic_crl_update_periodr$   non_automatic_crl_update_unitsr%   reject_if_no_status_from_ocs_pr&    reject_if_unreachable_from_ocs_pr'   selected_ocsp_servicer(   r)   &trust_for_certificate_based_admin_authr*   trust_for_cisco_services_authr+   trust_for_client_authr,   trust_for_ise_authr-   r.    )isedictget
new_object)selfparamsrG   s      p/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/ise/plugins/action/trusted_certificate.py__init__zTrustedCertificate.__init__J   s    
-3ZZ/.
 "(,@!A	

 )/

3M(N
 (.zz2K'L
 "(,@!A
 *04O)P
 06zz00
 

=1
  M2
 $*::.D#E
 *04O)P
  #)**-B"C!
" F##
$ -3JJ7T,U%
& ,2::6R+S'
( ,2::6P+Q)
* .4ZZ8U-V+
, #)**-B"C-
. ::h'/
0 4:::341
6 +1**5P*Q7
8 #)**-A"B9
:  &zz*;<;
< zz$=
    c                 b   d }| j                   j                  dd      }	 |D ]1  }|j                  j                  dg       }t	        |d|      }|s/|c S  	 |S # t
        t        f$ r7}| j                   j                  dj                  |             Y d }~|S d }~wt        $ r d }|cY S w xY w)	Ncertificates"get_trusted_certificates_generator)familyfunctionresponsefriendlyName'  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)
rG   execrU   rI   r   	TypeErrorAttributeError	fail_jsonformat	Exception)rK   r#   resultgen_items_responsesitems_responseitemses          rM   get_object_by_namez%TrustedCertificate.get_object_by_namem   s    "hhmm!,P , 
	"5 "&//33JC(E!M	"$  >* 		HH.
 &q&/      	FM	s)   0A A A 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)
NrQ   get_trusted_certificate_by_idr.   F)rS   rT   rL   handle_func_exceptionrU   rW   rX   rZ   )rG   r\   rU   r]   r^   r_   r`   ra   )rK   r.   rb   rf   s       rM   get_object_by_idz#TrustedCertificate.get_object_by_id   s    	XX]]%8bz&+	 # 
 hz#F$  >* 		HH.
 &q&/      	F	s   .2 B,A33BBc                    d }d}d}| j                   j                  d      }| j                   j                  d      }|r'| j                  |      }|d uxr t        |t              }|s)|r'| j                  |      }|d uxr t        |t              }|r8|j                  d      }|r|r||k7  rt        d      |r| j                  |      }|d uxr t        |t              }||fS )NFr.   r#   z9The 'id' and 'name' params don't refer to the same object)rJ   rI   rk   
isinstancerH   rg   r   )rK   prev_obj	id_existsname_existso_idr#   _id	it_existss           rM   existszTrustedCertificate.exists   s    	""4(""6*,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C[TS[,O  005D(GZ$-G	8$$rO   c                 P    | j                   g d}t        fd|D              S )N))r   r2   )r   r3   )r   r4   )r   r5   )r   r6   )r   r7   )r   r8   )r   r   )r   r9   )r    r:   )r!   r;   )r"   r<   )zfriendlyName r#   )r$   r=   )r%   r>   )r&   r?   )r'   r@   )r(   rA   )r)   r)   )r*   rB   )r+   rC   )r,   rD   )r-   rE   )r.   r.   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y w)N)r   rI   ).0	ise_paramansible_paramcurrent_objrequested_objs      rM   	<genexpr>z5TrustedCertificate.requires_update.<locals>.<genexpr>   sB      
 +M %	*M,=,=m,L 
s   8;)rJ   any)rK   rz   
obj_paramsr{   s    ` @rM   requires_updatez"TrustedCertificate.requires_update   s1    

>  
 /9	
 
 	
rO   c                 h   | j                   j                  d      }| j                   j                  d      }d }|sE| j                  |      j                  d      }| j                   j                  t	        |             | j
                  j                  dd| j                         j                  }|S )Nr.   r#   r.   rQ   update_trusted_certificaterS   rT   rL   rJ   rI   rg   updaterH   rG   r\   rU   rK   r.   r#   rb   id_s        rM   r   zTrustedCertificate.update   s    __  &""6*))$/33D9COO""43<0!1??  
 (	 	
 rO   c                 h   | j                   j                  d      }| j                   j                  d      }d }|sE| j                  |      j                  d      }| j                   j                  t	        |             | j
                  j                  dd| j                         j                  }|S )Nr.   r#   r   rQ    delete_trusted_certificate_by_idr   r   r   s        rM   deletezTrustedCertificate.delete   s    __  &""6*))$/33D9COO""43<0!7??  
 (	 	
 rO   N)
__name__
__module____qualname__rN   rg   rk   rt   r   r   r   rF   rO   rM   r0   r0   I   s'    !
F6,%.'
RrO   r0   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   rN   _supports_async_supports_check_mode_result)rK   argskwargs	__class__s      rM   rN   zActionModule.__init__   sC    )#k  	lD*D;F;$$)!rO   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   rH   r   r   r   r   r   actionvalidater   )rK   aavvaliderrorss       rM   _check_argspeczActionModule._check_argspec  sr    %m4# $' /#5"3	! ""
 *-&vtzz#F++ rO   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                  |      r[|j                         }	| j
                  j                  t        |	             |j                         \  }}
|
}|j                          nr|}|j!                          n_|j#                  d       nM|dk(  rH|j                         \  }}|r#|j%                          |}|j'                          n|j)                          | j
                  j                  t        |	             | j
                  j                  |j+                                | j
                  S )
NFchanged)rL   r   r   )ise_update_responsez.Object does not exists, plugin only has updater   )ise_response)r   diffr   r   runr   r   r	   r   r0   rI   rt   r   r   rH   object_updatedobject_already_presentr_   r   object_deletedobject_already_absent	exit_json)rK   tmp	task_varsrG   objr   rU   
obj_existsrn   r   updated_objr   s              rM   r   zActionModule.run  s   

\44S)D"'YDJJOO, #6

##G,I%(ZZ\"Z&&x0*-**,'LL''AT(UV03

-Z*H&&('H..0NOh%(ZZ\"Z

#""$))+Dh78CMMO,||rO   )NN)r   r   r   rN   r   r   __classcell__)r   s   @rM   r   r      s    ,"% %rO   r   NrF   )
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   r   ImportErroransible.errorsr   6ansible_collections.cisco.ise.plugins.plugin_utils.iser	   r
   r   r   =ansible_collections.cisco.ise.plugins.plugin_utils.exceptionsr   r   r   rH   r   r   r   r   objectr0   r   rF   rO   rM   <module>r      sG   A @ -& "& , 
 "#    y9h:OP&*&7  V, "&5!1	
 !%% 0  U+ #'E"2 (,'7 e$ f% "v. #'F"3 !f- u %)e$4  $(U#3!" "&6!2#$ %)f$5%& !e,'( )* +/F*;+, #'F"3-.  V,/0 &)12 U3> i$.hv-   o odB: BW  '!&'s   E; ;FF