
    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
g       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)DNACSDKdnac_argument_specdnac_compare_equalityget_dict_result)InconsistentParametersstrpresent)typedefaultchoices)r   )statenamedescriptionr   r   c                   >    e Zd Zd Zd
dZd Zd Zd Zd Zd Z	d	 Z
y)
ProjectsV1c                 r    || _         t        |j                  d      |j                  d            | _        y )Nr   r   )r   r   )dnacdictget
new_object)selfparamsr   s      i/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/dnac/plugins/action/projects_v1.py__init__zProjectsV1.__init__/   s-    	F#

=1
    Nc                     i }|xs | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   |S )Nr   limitoffsetr   r   )r   r   idnew_object_paramss       r   get_all_paramszProjectsV1.get_all_params6   sa    $($GDOO,?,?,G&!%)__%8%8%A'"&*oo&9&9(&C(#  r!   c                     i }| j                   j                  d      |d<   | j                   j                  d      |d<   |S )Nr   r   r%   )r   r'   s     r   create_paramszProjectsV1.create_params=   sB    $(OO$7$7$?&!+/??+>+>}+M-(  r!   c                     d }	 | j                   j                  dd| j                  |            }t        |t              rd|v r|j                  d      }t        |d|      }|S # t        $ r d }Y |S w xY w)Nconfiguration_templatesget_template_projects_v1)r   )familyfunctionr   responser   )r   execr(   
isinstancer   r   r   	Exception)r   r   resultitemss       r   get_object_by_namezProjectsV1.get_object_by_nameC   s    	IINN03***5 # E
 %&&!IIj1E$UFD9F   	F	s   A A& &A54A5c                 
    d }|S N )r   r&   r4   s      r   get_object_by_idzProjectsV1.get_object_by_idT   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              }|rL|j                  d      }|r|r||k7  rt        d      |r%| j                   j                  t	        |             |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   r:   r2   r   r6   r   update)r   prev_obj	id_existsname_existso_idr   _id	it_existss           r   existszProjectsV1.existsY   s    	""4(""6*,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C[TS[,-hii&&ts|4D(GZ$-G	8$$r!   c                 P    | j                   ddg}t        fd|D              S )N)r   r   )r   r   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y wr8   )r   r   ).0
dnac_paramansible_paramcurrent_objrequested_objs      r   	<genexpr>z-ProjectsV1.requires_update.<locals>.<genexpr>w   sD      B2
M -[__Z-H-:->->}-MO O Bs   8;)r   any)r   rI   
obj_paramsrJ   s    ` @r   requires_updatezProjectsV1.requires_updaten   s;     *

  B6@B B 	Br!   c                 `    | j                   j                  dd| j                         d      }|S )Nr,   create_template_project_v1T)r.   r/   r   op_modifies)r   r1   r*   )r   r4   s     r   createzProjectsV1.create{   s5    ,1%%'	   
 r!   NN)__name__
__module____qualname__r    r(   r*   r6   r:   rC   rN   rR   r9   r!   r   r   r   .   s+    
!!"
%*B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   superrX   r    _supports_async_supports_check_mode_result)r   argskwargs	__class__s      r   r    zActionModule.__init__   sC    )#$  A  A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   _taskr_   r   rc   re   rf   rg   rh   actionvalidater   )r   aavvaliderrorss       r   _check_argspeczActionModule._check_argspec   sr    %m4# $' /#5"3	! ""
 *-&vtzz#F++ r!   c                    d| j                   _        t        t        |   ||      | _        d| j
                  d<   | j                          t        | j                   j                        }t        | j                   j                  |      }| j                   j                  j                  d      }d }|dk(  rl|j                         \  }}|r7|j                  |      r|}|j                          n3|}|j                          n |j                         }|j!                          | j
                  j#                  t%        |             | j
                  j#                  |j'                                | j
                  S )NFchangedr   r   )dnac_response)rm   diffr[   rX   runr^   rs   r	   r_   r   r   rC   rN   object_present_and_differentobject_already_presentrR   object_createdr<   r   	exit_json)
r   tmp	task_varsr   objr   r0   
obj_existsr=   ra   s
            r   rx   zActionModule.run   s   

\44S)D"'Ytzz'$/

##G,I%(ZZ\"Z&&x0'H557'H//1::<##%Dx89DNN,-||r!   rS   )rT   rU   rV   r    rs   rx   __classcell__)ra   s   @r   rX   rX      s    ," r!   rX   N)
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   rZ   ImportErroransible.errorsr   8ansible_collections.cisco.dnac.plugins.plugin_utils.dnacr	   r
   r   r   >ansible_collections.cisco.dnac.plugins.plugin_utils.exceptionsr   rc   r<   r   re   rf   rg   rh   objectr   rX   r9   r!   r   <module>r      s    C B -& "& , 
 #$   T
E9yk
B	5	%   i&4(   T Tn6: 6o  '!&'s   B BB