
    Vh4'                        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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	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 Aw 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)typedefaultchoicesauthType)r   certIdconfigureVtiboolespAhProtocolhostNameifaceikeReAuthTimeint
ikeVersionlocalInternalIp
modeOptionnadIpphaseOneDHGroupphaseOneEncryptionAlgophaseOneHashAlgophaseOneLifeTimephaseTwoDHGroupphaseTwoEncryptionAlgophaseTwoHashAlgophaseTwoLifeTimepskremotePeerInternalIpc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	Ipsecc                 "   || _         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(      | _        y )*N	auth_typer   cert_idr   configure_vtir   esp_ah_protocolr   	host_namer   r   ike_re_auth_timer   ike_versionr   local_internal_ipr   mode_optionr   nad_ipr    phase_one_dhgroupr!   phase_one_encryption_algor"   phase_one_hash_algor#   phase_one_life_timer$   phase_two_dhgroupr%   phase_two_encryption_algor&   phase_two_hash_algor'   phase_two_life_timer(   r)   remote_peer_internal_ipr*    )isedictget
new_object)selfparamsrB   s      b/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/ise/plugins/action/ipsec.py__init__zIpsec.__init__F   s    
jj,
JJx(
 !**^4
 #JJ7	

 jj,
 **W%
 $ZZ8
 

<0
 %jj):;
 

<0
 ::g&
 %jj):;
 '-jj1I&J
 !'

+= >
 !'

+= >
  %jj):;!
" '-jj1I&J#
$ !'

+= >%
& !'

+= >'
( 

5!)
* %+JJ/E$F+
    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native_ipsec!get_ipsec_enabled_nodes_generator)familyfunctionresponsenamea'  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)
rB   execrP   rD   r   	TypeErrorAttributeError	fail_jsonformat	Exception)rF   rQ   resultgen_items_responsesitems_responseitemses          rH   get_object_by_namezIpsec.get_object_by_name`   s    "hhmm!,O , 
	"5 "&//33JC(=!M	"$  >* 		HH.
 &q&/      	FM	s)   0A A A B.),BB.-B.c                 
    d }|S NrA   )rF   idrZ   s      rH   get_object_by_idzIpsec.get_object_by_id{   s    rJ   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              }|r%|j                  d      }|r|r||k7  rt        d      |d uxr t        |t              }||fS )NFrb   rQ   z9The 'id' and 'name' params don't refer to the same object)rE   rD   rc   
isinstancerC   r_   r   )rF   prev_obj	id_existsname_existso_idrQ   _id	it_existss           rH   existszIpsec.exists   s    	""4(""6*,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C[TS[,O  D(GZ$-G	8$$rJ   c                 P    | j                   g d}t        fd|D              S )N))r   r.   )r   r/   )r   r0   )r   r1   )r   r2   )r   r   )r   r3   )r   r4   )r   r5   )r   r6   )r    r7   )r!   r8   )r"   r9   )r#   r:   )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ra   )r   rD   ).0	ise_paramansible_paramcurrent_objrequested_objs      rH   	<genexpr>z(Ipsec.requires_update.<locals>.<genexpr>   sB      
 +M %	*M,=,=m,L 
s   8;)rE   any)rF   rr   
obj_paramsrs   s    ` @rH   requires_updatezIpsec.requires_update   s1    

2  
 /9	
 
 	
rJ   c                 j    | j                   j                  dd| j                        j                  }|S )NrL   create_ipsec_connectionrN   rO   rG   )rB   rT   rE   rP   )rF   rZ   s     rH   createzIpsec.create   s7    !.??  
 (	 	
 rJ   c                     | j                   j                  d      }| j                   j                  d      }d }| j                  j                  dd| j                         j                  }|S )Nrb   rQ   rL   update_ipsec_connection_configrz   )rE   rD   rB   rT   rP   )rF   rb   rQ   rZ   s       rH   updatezIpsec.update   sd    __  &""6*!5??  
 (	 	
 rJ   N)
__name__
__module____qualname__rI   r_   rc   rl   rw   r{   r~   rA   rJ   rH   r,   r,   E   s&    
46
%*!
F	rJ   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   rI   _supports_async_supports_check_mode_result)rF   argskwargs	__class__s      rH   rI   zActionModule.__init__   sC    )#k  	lD*D;F;$$)!rJ   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_conditionalsrQ   )r   _taskr   rC   r   r   r   r   r   actionvalidater   )rF   aavvaliderrorss       rH   _check_argspeczActionModule._check_argspec   sr    %m4# $' /#5"3	! ""
 *-&vtzz#F++ rJ   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                          nH|}|j!                          n5|j#                         }|j                         \  }}|}|j%                          | j
                  j                  t        |             | j
                  j                  |j'                                | j
                  S )NFchanged)rG   r   r   )ise_update_response)ise_response)r   diffr   r   runr   r   r	   r   r,   rD   rl   rw   r~   rC   object_updatedobject_already_presentr{   object_created	exit_json)rF   tmp	task_varsrB   objr   rP   
obj_existsrf   r   updated_objise_create_responsecreated_objr   s                rH   r   zActionModule.run   se   

\44S)D"'YDJJOO,DJJOOS)

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

-Z*H&&('H..0&)jjl#,/JJL)[&""$Dh78CMMO,||rJ   )NN)r   r   r   rI   r   r   __classcell__)r   s   @rH   r   r      s    ,"   rJ   r   NrA   )
__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~   rC   r   r   r   r   objectr,   r   rA   rJ   rH   <module>r      s   A @ -& "& , 
 "#    y9+F5!  v&	
 & 5!  & U# %( U#  %(  $/ 5)  5)!" %(#$  $/%& 5)'( 5))* e+, "u--8 iT"   DF DN=: =y  '!&'s   E EE