
    Vhb$                        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	       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)DNACSDKdnac_argument_specdnac_compare_equalityget_dict_result)InconsistentParametersstrpresentabsent)typedefaultchoices)r   float)stateparentIdnamelatitude	longitudeaddresscountryidr   r   r   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)BuildingsV2c                    || _         t        |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d            | _        y )	Nr   r   r   r   r   r   r   )r   r   r   r   r   r   r   )dnacdictget
new_object)selfparamsr    s      j/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/dnac/plugins/action/buildings_v2.py__init__zBuildingsV2.__init__5   si    	ZZ
+F#ZZ
+jj-JJy)JJy)zz$
    c                 r   i }| j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   |S )Nr   r   r   r   r   r   r#   r"   r$   new_object_paramss     r&   create_paramszBuildingsV2.create_paramsA   s    (,(;(;J(G*%$(OO$7$7$?&!(,(;(;J(G*%)-)<)<[)I+&'+':':9'E)$'+':':9'E)$  r(   c                 F    i }| j                   j                  d      |d<   |S )Nr   r*   r+   s     r&   delete_by_id_paramszBuildingsV2.delete_by_id_paramsK   s(    "&//"5"5d";$  r(   c                    i }| j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   |S )Nr   r   r   r   r   r   r   r*   r+   s     r&   update_by_id_paramszBuildingsV2.update_by_id_paramsP   s    (,(;(;J(G*%$(OO$7$7$?&!(,(;(;J(G*%)-)<)<[)I+&'+':':9'E)$'+':':9'E)$"&//"5"5d";$  r(   c                 
    d }|S N )r$   r   results      r&   get_object_by_namezBuildingsV2.get_object_by_name[   s     r(   c                     d }	 | j                   j                  ddd|i      }t        |t              rd|v r|j	                  d      }t        |d|      }|S # t        $ r d }Y |S w xY w)Nsite_designgets_a_building_v2r   familyfunctionr%   response)r    exec
isinstancer!   r"   r   	Exception)r$   r   r5   itemss       r&   get_object_by_idzBuildingsV2.get_object_by_ida   s    	IINN$-bz # E
 %&&!IIj1E$UD"5F   	F	s   A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      |r%| j                   j                  t	        |             |r| j                  |      }|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"   rB   r?   r!   r6   r   update)r$   	id_existsname_existsprev_objo_idr   _id	it_existss           r&   existszBuildingsV2.existsq   s   	""4(""6*,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C[TS[,-hii&&ts|4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   )r   r   )r   r   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y wr3   )r   r"   ).0
dnac_paramansible_paramcurrent_objrequested_objs      r&   	<genexpr>z.BuildingsV2.requires_update.<locals>.<genexpr>   sD      B2
M -[__Z-H-:->->}-MO O Bs   8;)r#   any)r$   rR   
obj_paramsrS   s    ` @r&   requires_updatezBuildingsV2.requires_update   s3    

  B6@B B 	Br(   c                 `    | j                   j                  dd| j                         d      }|S )Nr8   creates_a_building_v2Tr;   r<   r%   op_modifies)r    r>   r-   )r$   r5   s     r&   createzBuildingsV2.create   s5     ,%%'	   
 r(   c                 n   | j                   j                  d      }| j                   j                  d      }d }|sM| j                  |      }d }|r|j                  d      }|r%| j                   j                  t	        |             | j
                  j                  dd| j                         d      }|S )Nr   r   rD   r8   updates_a_building_v2TrZ   )r#   r"   r6   rE   r!   r    r>   r1   r$   r   r   r5   prev_obj_nameid_s         r&   rE   zBuildingsV2.update   s    __  &""6* 33D9MC#''-&&ts|4 ,++-	   
 r(   c                 l   | j                   j                  d      }| j                   j                  d      }d }|sM| j                  |      }d }|r|j                  d      }|r%| j                   j                  t	        |             | j
                  j                  dd| j                               }|S )Nr   r   rD   r8   deletes_a_building_v2r:   )r#   r"   r6   rE   r!   r    r>   r/   r_   s         r&   deletezBuildingsV2.delete   s    __  &""6* 33D9MC#''-&&ts|4 ,++-   

 r(   N)__name__
__module____qualname__r'   r-   r/   r1   r6   rB   rL   rW   r\   rE   rd   r4   r(   r&   r   r   4   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   superri   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   _taskrp   r!   rt   rv   rw   rx   ry   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~   diffrl   ri   runro   r   r	   rp   r   r"   rL   rW   rE   object_updatedobject_already_presentr\   object_createdrd   object_deletedobject_already_absentr!   	exit_json)
r$   tmp	task_varsr    objr   r=   
obj_existsrH   rr   s
            r&   r   zActionModule.run   s`   

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

##G,I%(ZZ\"Z&&x0"zz|H'')'H//1::<##%h%(ZZ\"Z::<##%**,Dx89DNN,-||r(   )NN)re   rf   rg   r'   r   r   __classcell__)rr   s   @r&   ri   ri      s    ,"$ $r(   ri   N)
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   rk   ImportErroransible.errorsr   8ansible_collections.cisco.dnac.plugins.plugin_utils.dnacr	   r
   r   r   >ansible_collections.cisco.dnac.plugins.plugin_utils.exceptionsr   rt   rE   r!   rv   rw   rx   ry   objectr   ri   r4   r(   r&   <module>r      s   C B -& "& , 
 #$   T
E9y(6K
Lu	5	w ee	 	 i$.hv-   R& Rj?: ?w  '!&'s   C CC