
    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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& ed      d' e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 Vw 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id)r   	enableAciboolipAddressHostName	adminNameadminPasswordaciipaddressaciuserNameacipassword
tenantNamel3RouteNetworksuffixToEpgsuffixToSgtallSxpDomainspecificSxpDomainspecifixSxpDomainListlistenableDataPlaneuntaggedPacketIepgNamedefaultSgtNameenableElementsLimitmaxNumIepgFromAciintmaxNumSgtToAciaci50aci51c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)AciSettingsc                 j   || _         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)      | _        y )+Nr   
enable_acir   ip_address_host_namer   
admin_namer   admin_passwordr   r   aciuser_namer   r   tenant_namer   l3_route_networkr   suffix_to_epgr   suffix_to_sgtr    all_sxp_domainr!   specific_sxp_domainr"   specifix_sxp_domain_listr#   enable_data_planer%   untagged_packet_iepg_namer&   default_sgt_namer'   enable_elements_limitr(   max_num_iepg_from_acir)   max_num_sgt_to_acir+   r,   r-    )isedictget
new_object)selfparamsrD   s      i/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/ise/plugins/action/aci_settings.py__init__zAciSettings.__init__H   s    
zz$
zz+.
 "(,?!@
 zz+.	

 "::o6
  N3
  M2
 

=1
 

<0
 $ZZ(89
 !**]3
 !**]3
 "::n5
 !'

+> ?
 &,ZZ0G%H
  %jj):;!
" '-jj1I&J#
$ $ZZ(89%
& #)**-B"C'
( #)**-@"A)
*  &zz*:;+
, **W%-
. **W%/
    c                 x    d }| j                   j                  dd      j                  d   }t        |d|      }|S )Naci_settingsget_aci_settings)familyfunctionr/   name)rD   execresponser   )rH   rR   resultitemss       rJ   get_object_by_namezAciSettings.get_object_by_named   sE    !,>  

(=" !5rL   c                     	 | j                   j                  ddd      j                  d   }|S # t        $ r}d }Y d }~|S d }~ww xY w)NrN   rO   F)rP   rQ   handle_func_exceptionr/   )rD   rS   rT   	Exception)rH   r   rU   es       rJ   get_object_by_idzAciSettings.get_object_by_idm   sX    	XX]]%+&+ #  h}	&F   	F	s   +/ 	AA  A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 )NFr   rR   z9The 'id' and 'name' params don't refer to the same object)rG   rF   r\   
isinstancerE   rW   r   )rH   prev_obj	id_existsname_existso_idrR   _id	it_existss           rJ   existszAciSettings.existsz   s    	""4(""6*,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C[TS[,O  D(GZ$-G	8$$rL   c                 P    | j                   g d}t        fd|D              S )N))r   r   )r   r1   )r   r2   )r   r3   )r   r4   )r   r   )r   r5   )r   r   )r   r6   )r   r7   )r   r8   )r    r9   )r!   r:   )r"   r;   )r#   r<   )r%   r=   )r&   r>   )r'   r?   )r(   r@   )r)   rA   )r+   rB   )r,   r,   )r-   r-   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y w)N)r   rF   ).0	ise_paramansible_paramcurrent_objrequested_objs      rJ   	<genexpr>z.AciSettings.requires_update.<locals>.<genexpr>   sB      
 +M %	*M,=,=m,L 
s   8;)rG   any)rH   rk   
obj_paramsrl   s    ` @rJ   requires_updatezAciSettings.requires_update   s1    

6  
 /9	
 
 	
rL   c                 h   | j                   j                  d      }| j                   j                  d      }d }|sE| j                  |      j                  d      }| j                   j                  t	        |             | j
                  j                  dd| j                         j                  }|S )Nr   rR   )r   rN   update_aci_settings_by_id)rP   rQ   rI   )rG   rF   rW   updaterE   rD   rS   rT   )rH   r   rR   rU   id_s        rJ   rs   zAciSettings.update   s    __  &""6*))$/33D9COO""43<0!0??  
 (	 	
 rL   N)	__name__
__module____qualname__rK   rW   r\   re   rp   rs   rC   rL   rJ   r/   r/   G   s!    
8%*#
JrL   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   superry   rK   _supports_async_supports_check_mode_result)rH   argskwargs	__class__s      rJ   rK   zActionModule.__init__   sC    )#k  	lD*D;F;$$)!rL   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_conditionalsrR   )r   _taskr   rE   r   r   r   r   r   actionvalidater   )rH   aavvaliderrorss       rJ   _check_argspeczActionModule._check_argspec   sr    %m4# $' /#5"3	! ""
 *-&vtzz#F++ rL   c                    d| j                   _        t        t        |   ||      | _        d| j
                  d<   | j                          t        | j                   j                        }t        | j                   j                  |      }| j                   j                  j                  d      }d }|dk(  rC|j                         \  }}|r|j                  |      r|j                         }	| j
                  j                  t        |	             |j                         \  }}
|
}d }|	j                  d      j                  d      }t        |      d	k(  s@|d	   j                  d
      dk(  rV|d	   j                  d
      |d	   j                  d      k(  r-| j
                  j!                  dd        |j#                          n5|j%                          n$|}|j#                          n|j'                  d       | j
                  j                  t        |             | j
                  j                  |j)                                | j
                  S )NFchanged)rI   r   r   )ise_update_responseUpdatedFieldsListupdatedFieldr   newValue oldValuer   z.Object does not exists, plugin only has update)ise_response)r   diffr|   ry   runr   r   r	   r   r/   rF   re   rp   rs   rE   lenpopobject_already_presentobject_updated	fail_json	exit_json)rH   tmp	task_varsrD   objr   rT   
obj_existsr_   r   updated_objhas_changedr   s               rJ   r   zActionModule.run   s   

\44S)D"'YDJJOO,$**//3/

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

-Z*H"&K"5"9"9:M"N"R"R&#K K(A-&q>--j9R?'N..z:&q>--j9: (()>E224**,'H..0NODh78CMMO,||rL   )NN)ru   rv   rw   rK   r   r   __classcell__)r   s   @rJ   ry   ry      s    ,"* *rL   ry   NrC   )
__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   rs   rE   r   r   r   r   objectr/   ry   rC   rL   rJ   <module>r      s#   A @ -& "& , 
 "#    y9+FU F# E*	
 E" & u% e$ e$ U# ' e$ e$ v& F+  #/!" &)#$  $/%& ''( !f-)* E*+, '-. /0 1< i$&   y& yxG: Gg  '!&'s   E( (E32E3