
    Vhr>                        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	       ed	       ed	      
             dd
g ddfddg d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)MERAKImeraki_argument_specmeraki_compare_equality2get_dict_result)InconsistentParametersstrpresentabsent)typedefaultchoices)r   list)
statecopyFromNetworkIdnamenotesproductTypestagstimeZoneorganizationId	networkIdenrollmentStringr   )r   r   r   c                   ^    e Zd Zd Zd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)Networksc                 R   || _         t        |j                  d      |j                  d      |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   r   r   r   r   )merakidictget
new_object)selfparamsr"   s      h/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/meraki/plugins/action/networks.py__init__zNetworks.__init__8   s    $jj)<=F#**W%N3F#ZZ
+!::&67jj-#ZZ(:;

    Nc                    i }| j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d	      ;| j                   j                  d      xs | j                   j                  d	      |d<   | j                   j                  d
      | j                   j                  d      ;| j                   j                  d
      xs | j                   j                  d      |d
<   d|d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   |S )NconfigTemplateIdconfig_template_idisBoundToConfigTemplateis_bound_to_config_templater   tagsFilterTypetags_filter_typer   product_typesperPageper_pagetotal_pagesstartingAfterstarting_afterendingBeforeending_beforer   organization_idr%   r$   r&   r   idnew_object_paramss       r(   get_all_paramszNetworks.get_all_paramsF   sY   ??12>$//BUBUVjBkBw48OO4G4GHZ4[ 5:##$89 01??89EI\I\]zI{  JH;???;N;NOh;i <C##$AB 78??v&2doo6I6I&6Q6](,(;(;F(Cf%??/0<@S@STf@g@s26//2E2EFV2W 38##$67 ./??~.:doo>Q>QRa>b>n040C0CN0S 15##O4 n-??y)59L9LZ9X9d+/??+>+>y+I ,0##J/ i(+--(??/;t?R?RSc?d?p151D1D_1U 26##$45 o.??~.:doo>Q>QRa>b>n040C0CN0S 15##O4 n-??/0<@S@STe@f@r26//2E2EFV2W 37##$56 ./  r*   c                     i }| j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   |S Nr   
network_idr<   r=   s       r(   get_params_by_idzNetworks.get_params_by_ide   j    ??{+74??;N;N|;\;h-1__-@-@-M .2##L1 k*  r*   c                 8   i }| j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d	      ;| j                   j                  d      xs | j                   j                  d	      |d<   | j                   j                  d
      | j                   j                  d      ;| j                   j                  d
      xs | j                   j                  d      |d
<   |S )Nr   copy_from_network_idr   r   r   r2   r   r   	time_zoner   r;   r<   r&   r?   s     r(   create_paramszNetworks.create_paramsl   s   ??23?4??CVCVWmCnCz59__5H5HI\5] 6<##$:; 12??v&2doo6I6I&6Q6](,(;(;F(C ),##F+ f%??w'3t7J7J77S7_)-)<)<W)E *-##G, g&??~.:doo>Q>QRa>b>n040C0CN0S 15##O4 n-??v&2doo6I6I&6Q6](,(;(;F(C ),##F+ f%??z*6$//:M:Mk:Z:f,0OO,?,?
,K -1##K0 j)??/0<@S@STe@f@r26//2E2EFV2W 37##$56 ./  r*   c                     i }| j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   |S rB   r<   rI   s     r(   delete_by_id_paramszNetworks.delete_by_id_params   rE   r*   c                 V   i }| j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d      ;| j                   j                  d      xs | j                   j                  d      |d<   | j                   j                  d      | j                   j                  d	      ;| j                   j                  d      xs | j                   j                  d	      |d<   |S )
Nr   enrollment_stringr   r   r   r   rH   r   rC   r<   rI   s     r(   update_by_id_paramszNetworks.update_by_id_params   s;   ??12>$//BUBUViBjBv48OO4G4GHZ4[ 59##$78 01??v&2doo6I6I&6Q6](,(;(;F(C ),##F+ f%??w'3t7J7J77S7_)-)<)<W)E *-##G, g&??v&2doo6I6I&6Q6](,(;(;F(C ),##F+ f%??z*6$//:M:Mk:Z:f,0OO,?,?
,K -1##K0 j)??{+74??;N;N|;\;h-1__-@-@-M .2##L1 k*  r*   c                    d }	 | j                   j                  dd| j                  |            }t        |t              rd|v r|j                  d      }t        |d|      }||}|S # t        $ r}t        d|       d }Y d }~|S d }~ww xY w)NorganizationsgetOrganizationNetworks)r   familyfunctionr'   responser   Error: )	r"   exec_merakir@   
isinstancer#   r$   r   	Exceptionprint)r&   r   resultitemses        r(   get_object_by_namezNetworks.get_object_by_name   s    	KK++&2***5 , E
 %&&!IIj1E$UFD9F~   	)QF	s   A$A* *	B3BBc                    d }	 | j                   j                  dd| j                               }t        |t              rd|v r|j                  d      }t        |d|      }|S # t        $ r}t        d|       d }Y d }~|S d }~ww xY w)Nnetworks
getNetworkrS   rV   r   rW   )	r"   rX   rD   rY   r#   r$   r   rZ   r[   )r&   r>   r\   r]   r^   s        r(   get_object_by_idzNetworks.get_object_by_id   s    	KK++!%,,. , E
 %&&!IIj1E$UK<F   	)QF	s   AA$ $	B-BBc                    d}d}d }| j                   j                  d      }|xs8 | j                   j                  d      xs | 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      }|xs |j                  d      }|r|r||k7  rt        d      |rJ| j                   j                  t	        |             | j                   j                  t	        |             |r| j                  |      }|d uxr t        |t              }||fS )	NFr>   rC   r   r   z9The 'id' and 'name' params don't refer to the same object)r>   r   )r%   r$   rc   rY   r#   r_   r   update)r&   	id_existsname_existsprev_objo_idr   _id	it_existss           r(   existszNetworks.exists   sj   	""4( >t** >!__00= 	""6*,,T2H ,KHd1KIT..t4H"$.M:h3MK,,t$C2k2C[TS[,OQ Q&&ts|4&&tc':;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   )r   r   )r   r   c              3   z   K   | ]2  \  }}t        j                  |      j                  |              4 y w)N)r   r$   ).0meraki_paramansible_paramcurrent_objrequested_objs      r(   	<genexpr>z+Networks.requires_update.<locals>.<genexpr>   sD      D4m 00M0=0A0A-0PR R Ds   8;)r%   any)r&   rs   
obj_paramsrt   s    ` @r(   requires_updatezNetworks.requires_update   s3    


  D8BD D 	Dr*   c                 `    | j                   j                  dd| j                         d      }|S )NrQ   createOrganizationNetworkTrT   rU   r'   op_modifies)r"   rX   rJ   )r&   r\   s     r(   createzNetworks.create   s7    (("0%%'	 ) 
 r*   c                    | j                   j                  d      }|xs | j                   j                  d      }| j                   j                  d      }d }|sb| j                  |      }d }|r&|j                  d      }|xs |j                  d      }|r%| j                   j                  t	        |             | j
                  j                  dd| j                         d      }|S )	Nr>   r   r   re   ra   updateNetworkTr{   )r%   r$   r_   rf   r#   r"   rX   rO   r&   r>   r   r\   prev_obj_nameid_s         r(   rf   zNetworks.update   s    __  &34??&&{3""6* 33D9MC#''-;]..{;&&tc':;(($++-	 ) 
 r*   c                    | j                   j                  d      }|xs | j                   j                  d      }| j                   j                  d      }d }|sb| j                  |      }d }|r&|j                  d      }|xs |j                  d      }|r%| j                   j                  t	        |             | j
                  j                  dd| j                               }|S )Nr>   r   r   re   ra   deleteNetworkrS   )r%   r$   r_   rf   r#   r"   rX   rL   r   s         r(   deletezNetworks.delete  s    __  &34??&&{3""6* 33D9MC#''-;]..{;&&tc':;(($++- ) 

 r*   NN)__name__
__module____qualname__r)   r@   rD   rJ   rL   rO   r_   rc   rm   rx   r}   rf   r    r*   r(   r    r    7   sD    
!>!!2!!,("%8D(*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   superr   r)   _supports_async_supports_check_mode_result)r&   argskwargs	__class__s      r(   r)   zActionModule.__init__+  sC    )#km m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_argspec5  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   )meraki_response)r   diffr   r   runr   r   r	   r   r    r$   rm   rx   rf   object_updatedobject_already_presentr}   object_createdr   object_deletedobject_already_absentr#   	exit_json)
r&   tmp	task_varsr"   objr   rV   
obj_existsri   r   s
            r(   r   zActionModule.runF  sb   

\44S)D"'Y

(tzz/

##G,I%(ZZ\"Z&&x0"zz|H))+'H113::<%%'h%(ZZ\"Z::<%%',,.D:;F,,./||r*   r   )r   r   r   r)   r   r   __classcell__)r   s   @r(   r   r   *  s    ,"$ $r*   r   N)
__future__r   r   r   r   __metaclass__ansible.plugins.actionr   Nansible_collections.ansible.utils.plugins.module_utils.common.argspec_validater   r   ImportErroransible.errorsr   <ansible_collections.cisco.meraki.plugins.plugin_utils.merakir	   r
   r   r   @ansible_collections.cisco.meraki.plugins.plugin_utils.exceptionsr   r   rf   r#   r   r   r   r   objectr    r   r   r*   r(   <module>r      s   C B -& "& , 
 %&   T
E9y(6K
L&	5	
E
6"	6	uU#u%  i@$Gh?F   pv pf@: @w  '!&'s   C CC