
    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 ed	d
d
dg       ed	       ed       ed	       e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)    )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   dictbool)statedescriptionmarCachenamenodeGroupNameforceDeleter   r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
	NodeGroupc           	          || _         t        |j                  d      |j                  d      |j                  d      |j                  d      xs |j                  d      |j                  d            | _        y )Nr   r   r   r   r   )r   	mar_cacher   node_group_nameforce_delete)iser   get
new_object)selfparamsr"   s      g/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/ise/plugins/action/node_group.py__init__zNodeGroup.__init__7   s_    

=1jj,F#"JJ7M6::f;MM2
    c                 *   	 | j                   j                  dddd|i      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
node_groupget_node_groupFr    )familyfunctionhandle_func_exceptionr&   responser   a'  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"   execr0   r   	TypeErrorAttributeError	fail_jsonformat	Exception)r%   r   resultes       r'   get_object_by_namezNodeGroup.get_object_by_nameA   s    	XX]]#)&+)40	 # 
 hz#F %VVT:F  >* 		HH.
 &q&/      	F	s   ;? B,B  BBc                 
    d }|S N )r%   idr9   s      r'   get_object_by_idzNodeGroup.get_object_by_idX   s    r)   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?   r    z9The 'id' and 'name' params don't refer to the same object)r$   r#   r@   
isinstancer   r;   r   )r%   prev_obj	id_existsname_existso_idr   _id	it_existss           r'   existszNodeGroup.exists]   s    	""4(""#45,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C[TS[,O  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r=   )r   r#   ).0	ise_paramansible_paramcurrent_objrequested_objs      r'   	<genexpr>z,NodeGroup.requires_update.<locals>.<genexpr>~   sB      
 +M %	*M,=,=m,L 
s   8;)r$   any)r%   rO   
obj_paramsrP   s    ` @r'   requires_updatezNodeGroup.requires_updater   s1    

  
 /9	
 
 	
r)   c                 j    | j                   j                  dd| j                        j                  }|S )Nr+   create_node_groupr-   r.   r&   r"   r3   r$   r0   r%   r9   s     r'   createzNodeGroup.create   s7    (??  
 (	 	
 r)   c                 j    | j                   j                  dd| j                        j                  }|S )Nr+   update_node_grouprW   rX   rY   s     r'   updatezNodeGroup.update   4    *=doo  

( 	 r)   c                 j    | j                   j                  dd| j                        j                  }|S )Nr+   delete_node_grouprW   rX   rY   s     r'   deletezNodeGroup.delete   r^   r)   N)__name__
__module____qualname__r(   r;   r@   rI   rT   rZ   r]   ra   r>   r)   r'   r   r   6   s*    
.
%*
&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   superrf   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_conditionalsr   )r   _taskrm   r   rq   rs   rt   ru   rv   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{   diffri   rf   runrl   r   r	   rm   r   r#   rI   rT   r]   r   object_updatedobject_already_presentrZ   object_createdra   object_deletedobject_already_absent	exit_json)r%   tmp	task_varsr"   objr   r0   
obj_existsrC   r   updated_objise_create_responsecreated_objro   s                r'   r   zActionModule.run   s   

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

-

##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)rb   rc   rd   r(   r   r   __classcell__)ro   s   @r'   rf   rf      s    ,"* *r)   rf   N)
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   rh   ImportErroransible.errorsr   6ansible_collections.cisco.ise.plugins.plugin_utils.iser	   r
   r   r   =ansible_collections.cisco.ise.plugins.plugin_utils.exceptionsr   rq   r]   r   rs   rt   ru   rv   objectr   rf   r>   r)   r'   <module>r      s   A @ -& "& , 
 "#   y9h:OPe$6"u&f%	 i&/2D9h148   a aHG: GU  '!&'s   B3 3B=<B=