
    Vh$                     p   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       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 w xY w)    )absolute_importdivisionprint_function)
ActionBase)AnsibleArgSpecValidatorTF)AnsibleActionFail)ISESDKise_argument_specise_compare_equalityget_dict_result)InconsistentParametersstrpresentabsent)typedefaultchoices)r   int)state
clientNamenumberOfTagsclientIDendIndex
startIndexr   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
Reservationc           	          || _         t        |j                  d      |j                  d      |j                  d      xs |j                  d      |j                  d      |j                  d            | _        y )Nr   r   r   clientIdr   r   )client_namenumber_of_tags	client_id	end_indexstart_index)isedictget
new_object)selfparamsr$   s      h/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/ise/plugins/action/reservation.py__init__zReservation.__init__6   s_    

<0!::n5jj,F

:0Fjj,

<0
    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sgt_range_reservation!get_sgt_reserved_ranges_generator)familyfunctionresponsename'  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)
r$   execr2   r&   r   	TypeErrorAttributeError	fail_jsonformat	Exception)r(   r3   resultgen_items_responsesitems_responseitemses          r*   get_object_by_namezReservation.get_object_by_name@   s    "hhmm*5X , 
	"5 "&//33JC(=!M	"$  >* 		HH.
 &q&/      	FM	s)   0A A A B.),BB.-B.c                    	 | j                   j                  dddd|i      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_sgt_reserved_rangeFr!   )r0   r1   handle_func_exceptionr)   r2   r4   r5   r7   )r$   r9   r2   r:   r;   r<   r=   r>   )r(   idr?   rC   s       r*   get_object_by_idzReservation.get_object_by_id[   s    	XX]].1&+#R(	 # 
 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   rH   z9The 'id' and 'name' params don't refer to the same object)r'   r&   rI   
isinstancer%   rD   r   )r(   	id_existsname_existsprev_objo_idr3   _id	it_existss           r*   existszReservation.existsq   s    	"";/""=1,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C[TS[,O  005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#   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y w)N)r   r&   ).0	ise_paramansible_paramcurrent_objrequested_objs      r*   	<genexpr>z.Reservation.requires_update.<locals>.<genexpr>   sB      
 +M %	*M,=,=m,L 
s   8;)r'   any)r(   rX   
obj_paramsrY   s    ` @r*   requires_updatezReservation.requires_update   s1    

  
 /9	
 
 	
r,   c                 j    | j                   j                  dd| j                        j                  }|S )Nr.   reserve_sgt_ranger0   r1   r)   )r$   r9   r'   r2   )r(   r?   s     r*   createzReservation.create   s7    *(??  
 (	 	
 r,   c                 h   | j                   j                  d      }| j                   j                  d      }d }|sE| j                  |      j                  d      }| j                   j                  t	        |             | j
                  j                  dd| j                         j                  }|S )NrH   r3   rH   r.   update_reserved_ranger`   r'   r&   rD   updater%   r$   r9   r2   r(   rH   r3   r?   id_s        r*   rf   zReservation.update   s    __  &""6*))$/33D9COO""43<0*,??  
 (	 	
 r,   c                 h   | j                   j                  d      }| j                   j                  d      }d }|sE| j                  |      j                  d      }| j                   j                  t	        |             | j
                  j                  dd| j                         j                  }|S )NrH   r3   rc   r.   delete_sgt_reserve_ranger`   re   rg   s        r*   deletezReservation.delete   s    __  &""6*))$/33D9COO""43<0*/??  
 (	 	
 r,   N)__name__
__module____qualname__r+   rD   rI   rR   r]   ra   rf   rk    r,   r*   r   r   5   s*    
6,%.
&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   superrq   r+   _supports_async_supports_check_mode_result)r(   argskwargs	__class__s      r*   r+   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_conditionalsr3   )r   _taskrx   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                 P   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                          n|}|j!                          n|j#                         }|j                         \  }}|}|j%                          nM|dk(  rH|j                         \  }}|r#|j'                          |}|j)                          n|j+                          | j
                  j                  t        |             | j
                  j                  |j-                                | j
                  S )	NFchanged)r)   r   r   )ise_update_responser   )ise_response)r   diffrt   rq   runrw   r   r	   rx   r   r&   rR   r]   rf   r%   object_updatedobject_already_presentra   object_createdrk   object_deletedobject_already_absent	exit_json)r(   tmp	task_varsr$   objr   r2   
obj_existsrN   r   updated_objise_create_responsecreated_objrz   s                r*   r   zActionModule.run   s   

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

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

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

#""$))+Dh78CMMO,||r,   )NN)rl   rm   rn   r+   r   r   __classcell__)rz   s   @r*   rq   rq      s    ,"* *r,   rq   N)
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   rs   ImportErroransible.errorsr   6ansible_collections.cisco.ise.plugins.plugin_utils.iser	   r
   r   r   =ansible_collections.cisco.ise.plugins.plugin_utils.exceptionsr   r|   rf   r%   r~   r   r   r   objectr   rq   ro   r,   r*   <module>r      s    A @ -& "& , 
 "#   y9h:OPU#u%5!5!U#	 hd+   H& HVG: Ga  '!&'s   B+ +B54B5