
    VhQ'              
       d   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	                   dd
dgdfdd
dgdfdddgdf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absent)typedefaultchoiceslist)r   )statepayloadidr   r   r   c                   V    e Zd Zd ZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zy)ApplicationsV2c                 r    || _         t        |j                  d      |j                  d            | _        y )Nr   r   )r   r   )dnacdictget
new_object)selfparamsr   s      m/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/dnac/plugins/action/applications_v2.py__init__zApplicationsV2.__init__2   s-    	JJy)zz$
    Nc                    i }| j                   j                  d      |d<   |xs | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   |S )N
attributesnameoffsetlimitr   r   )r   r&   r   new_object_paramss       r!   get_all_paramszApplicationsV2.get_all_params9   s{    *.//*=*=l*K,'$($GDOO,?,?,G&!&*oo&9&9(&C(#%)__%8%8%A'"  r#   c                 F    i }| j                   j                  d      |d<   |S Nr   r)   r   r*   s     r!   create_paramszApplicationsV2.create_paramsA   (    '+':':9'E)$  r#   c                 F    i }| j                   j                  d      |d<   |S )Nr   r)   r.   s     r!   delete_by_id_paramsz"ApplicationsV2.delete_by_id_paramsF   s(    "&//"5"5d";$  r#   c                 F    i }| j                   j                  d      |d<   |S r-   r)   r.   s     r!   update_all_paramsz ApplicationsV2.update_all_paramsK   r0   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application_policyget_applications_v2)r&   familyfunctionr    responser&   r   execr+   
isinstancer   r   r   	Exception)r   r&   resultitemss       r!   get_object_by_namez!ApplicationsV2.get_object_by_nameP   s    	IINN+.***5 # E
 %&&!IIj1E$UFD9F   	F	   A A& &A54A5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)Nr6   r7   r   r8   r;   r   r<   )r   r   r@   rA   s       r!   get_object_by_idzApplicationsV2.get_object_by_ida   s    	IINN+.**b*1 # E
 %&&!IIj1E$UD"5F   	F	rC   c                    d}d}d }| j                   j                  d      }|rt        |      dkD  r|d   }| j                   j                  d      xs |j                  d      }| j                   j                  d      xs |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   r   r&   z9The 'id' and 'name' params don't refer to the same objectrE   )	r   r   lenrF   r>   r   rB   r   update)	r   	id_existsname_existsprev_objrequested_objo_idr&   _id	it_existss	            r!   existszApplicationsV2.existsr   s<   	++I6S/!3)!,M""4(CM,=,=d,C""6*Gm.?.?.G,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C[TS[,-hii&&ts|4D(GZ$-G	8$$r#   c                     | j                   j                  d      rt              dkD  rd   g d}t        fd|D              S )Nr   r   )r   r   )
instanceIdrT   )displayNamerU   )instanceVersionrV   )indicativeNetworkIdentityrW   )r&   r&   )	namespacerX   )networkApplicationsrY   )networkIdentityrZ   )parentScalableGroupr[   )	qualifierr\   )scalableGroupExternalHandler]   )scalableGroupTyper^   )r   r   rS   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y w)N)r   r   ).0
dnac_paramansible_paramcurrent_objrM   s      r!   	<genexpr>z1ApplicationsV2.requires_update.<locals>.<genexpr>   sD      B2
M -[__Z-H-:->->}-MO O Bs   8;)r   r   rH   any)r   rc   
obj_paramsrM   s    ` @r!   requires_updatezApplicationsV2.requires_update   sW    ++I6S/!3)!,M

&  B6@B B 	Br#   c                 `    | j                   j                  dd| j                         d      }|S )Nr6   create_applications_v2Tr9   r:   r    op_modifies)r   r=   r/   )r   r@   s     r!   createzApplicationsV2.create   s5    '-%%'	   
 r#   c                 |   | j                   j                  d      }|rt        |      dkD  r|d   }| j                   j                  d      xs |j                  d      }| j                   j                  d      xs |j                  d      }d }| j                  j	                  dd| j                         d      }|S )	Nr   r   r   r&   r6   edit_applications_v2Trj   )r   r   rH   r   r=   r4   )r   rM   r   r&   r@   s        r!   rI   zApplicationsV2.update   s    ++I6S/!3)!,M__  &A-*;*;D*A""6*Gm.?.?.G'+))+	   
 r#   c                    | j                   j                  d      }|rt        |      dkD  r|d   }| j                   j                  d      xs |j                  d      }| j                   j                  d      xs |j                  d      }d }|sM| j                  |      }d }|r|j                  d      }|r%| j                   j	                  t        |             | j                  j                  dd| j                               }|S )	Nr   r   r   r&   rE   r6   delete_application_v2r8   )	r   r   rH   rB   rI   r   r   r=   r2   )r   rM   r   r&   r@   prev_obj_nameid_s          r!   deletezApplicationsV2.delete   s    ++I6S/!3)!,M__  &A-*;*;D*A""6*Gm.?.?.G 33D9MC#''-&&ts|4',++-   

 r#   NN)__name__
__module____qualname__r"   r+   r/   r2   r4   rB   rF   rQ   rg   rl   rI   rs    r#   r!   r   r   1   s?    
!!
!
!
""%0B8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   superrz   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   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                    d| j                   _        t        t        |   ||      | _        d| j
                  d<   | j                          t        | j                   j                        }t        | j                   j                  |      }| j                   j                  j                  d      }d }|dk(  r{|j                         \  }}|rE|j                  |      r!|j                         }|j                          n|}|j                          nl|j!                         }|j#                          nK|dk(  rF|j                         \  }}|r!|j%                         }|j'                          n|j)                          | j
                  j                  t+        |             | j
                  j                  |j-                                | j
                  S )NFchangedr   r   r   )dnac_response)r   diffr}   rz   runr   r   r	   r   r   r   rQ   rg   rI   object_updatedobject_already_presentrl   object_createdrs   object_deletedobject_already_absentr   	exit_json)
r   tmp	task_varsr   objr   r;   
obj_existsrL   r   s
            r!   r   zActionModule.run   s`   

\44S)D"'Ytzz'TZZ__d3

##G,I%(ZZ\"Z&&x0"zz|H'')'H//1::<##%h%(ZZ\"Z::<##%**,Dx89DNN,-||r#   rt   )ru   rv   rw   r"   r   r   __classcell__)r   s   @r!   rz   rz      s    ,"$ $r#   rz   N)
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   r|   ImportErroransible.errorsr   8ansible_collections.cisco.dnac.plugins.plugin_utils.dnacr	   r
   r   r   >ansible_collections.cisco.dnac.plugins.plugin_utils.exceptionsr   r   rI   r   r   r   r   r   objectr   rz   rx   r#   r!   <module>r      s   C B -& "& , 
 #$   T
E9y(6K
Lf  i$&i)d+h%hT*	   `V `F?: ?M  '!&'s   B% %B/.B/