
    Vh(                         d dl mZmZmZ eZddgddZdZdZdZ	d d	l
mZ d d
lmZmZ d dlmZmZ d Zd Zd Zd Zedk(  r e        yy)    )absolute_importdivisionprint_functionz1.1
deprecated	community)metadata_versionstatussupported_bya1  
author:
  - Kevin Breit (@kbreit)
deprecated:
  alternative: cisco.meraki.networks_syslog_servers
  removed_in: 3.0.0
  why: Updated modules released with increased functionality
description:
  - Allows for creation and management of Syslog servers within Meraki.
extends_documentation_fragment: cisco.meraki.meraki
module: meraki_syslog
notes:
  - Changes to existing syslog servers replaces existing configuration. If you need
    to add to an existing configuration set state to query to gather the existing
    configuration and then modify or add.
options:
  auth_key:
    description:
      - Authentication key provided by the dashboard. Required if environmental variable
        MERAKI_KEY is not set.
    type: str
  net_id:
    description:
      - ID number of a network.
    type: str
  net_name:
    aliases:
      - name
      - network
    description:
      - Name of a network.
    type: str
  servers:
    description:
      - List of syslog server settings
    elements: dict
    suboptions:
      host:
        description:
          - IP address or hostname of Syslog server.
        type: str
      port:
        default: '514'
        description:
          - Port number Syslog server is listening on.
        type: int
      roles:
        description:
          - List of applicable Syslog server roles.
          - Choices can be one of Wireless Event log, Appliance event log, Switch
            event log, Air Marshal events, Flows, URLs, IDS alerts, Security events
        elements: str
        type: list
    type: list
  state:
    choices:
      - present
      - query
    default: present
    description:
      - Query or edit syslog servers
      - To delete a syslog server, do not include server in list of servers
    type: str
short_description: Manage syslog server settings in the Meraki cloud.
aj  
- name: Query syslog configurations on network named MyNet in the YourOrg organization
  meraki_syslog:
    auth_key: abc12345
    state: query
    org_name: YourOrg
    net_name: MyNet
  delegate_to: localhost
- name: Add single syslog server with Appliance event log role
  meraki_syslog:
    auth_key: abc12345
    state: present
    org_name: YourOrg
    net_name: MyNet
    servers:
      - host: 192.0.1.2
        port: 514
        roles:
          - Appliance event log
  delegate_to: localhost
- name: Add multiple syslog servers
  meraki_syslog:
    auth_key: abc12345
    state: present
    org_name: YourOrg
    net_name: MyNet
    servers:
      - host: 192.0.1.2
        port: 514
        roles:
          - Appliance event log
      - host: 192.0.1.3
        port: 514
        roles:
          - Appliance event log
          - Flows
  delegate_to: localhost
a  
data:
    description: Information about the created or manipulated object.
    returned: info
    type: complex
    contains:
      servers:
        description: List of syslog servers.
        returned: info
        type: complex
        contains:
          host:
            description: Hostname or IP address of syslog server.
            returned: success
            type: str
            sample: 192.0.1.1
          port:
            description: Port number for syslog communication.
            returned: success
            type: str
            sample: 443
          roles:
            description: List of roles assigned to syslog server.
            returned: success
            type: list
            sample: "Wireless event log, URLs"
)deepcopy)AnsibleModulejson)MerakiModulemeraki_argument_specc                 d    t        |       D ]"  \  }}t        | d   |   d         | d   |   d<   $ y)z$Accept a full payload and sort rolesserversrolesN)	enumeratesorted)syslog_serversiservers      n/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/meraki/plugins/modules/meraki_syslog.py
sort_rolesr      sG     ~. 
	6069%a(11
y!!$W-
    c                 *   g d}t        t        |            D ]  }||   j                         ||<    t        t        |            D ]I  }||   d   D ]<  }|j                         |vs| j                  dj	                  ||   d                > K y )N)zWireless event logzAppliance event logzSwitch event logzAir Marshal eventsFlowsURLsz
IDS alertszSecurity eventsr   zInvalid role found in {0}.hostmsg)rangelenlower	fail_jsonformat)merakir   choicesr   r   roles         r   validate_role_choicesr)      s    	G 3w<  (QZ%%'
(G% FOG, 	Dzz|7*  4;;GFOF<ST ! 	r   c                     t        |d         dkD  rct        t        |            D ]L  }t        t        |d   |   d               D ]*  }|d   |   d   |   j                         |d   |   d   |<   , N |S )Nr   r   r   )r"   r!   r#   )r&   r   r   r(   s       r   normalize_rolesr+      s    
79"CL) 	 Fc')"4V"<W"EFG  <CI<Nv<V== 	"6*73D9 	 
 Nr   c            
      @	   t        t        d      t        dd      t        dd            } t               }|j                  t        d      t        dd	| 
      t        dddgd      t        dddg             t        |d      }t	        |d      }d|j
                  d<   d }ddi}||j                  d<   |j
                  d   s!|j
                  d   s|j                  d       |j
                  d   dk7  r0|j
                  d   s!|j
                  d    s|j                  d!       |j
                  d   r!|j
                  d    r|j                  d"       |j
                  d   }|s|j                  |j
                  d         }|j
                  d    }|2|j                  |#      }|j                  |j
                  d   |$      }|j
                  d   dk(  rG|j                  d|%      }	|j                  |	d&'      }
|j                  d(k(  rj|
|j                  d)<   nY|j
                  d   dk(  rFt        ||j
                  d*          t               }|j
                  d*   |d*<   |d*   D ]  }|d+   s	t!        |d+         |d+<    |j                  d|%      }	|j                  |	d&'      }
|j                  d(k(  r|
}t#        |d*         d,kD  rt%        |       |t#        |d*         d,kD  rt%        |       t'        |t)        |            }t'        |t)        |            }|j+                  ||      r|j,                  j.                  du r]|j1                  ||       |j                  |       ||j                  d)<   d|j                  d-<    |j2                  d0i |j                   |j                  d|%      }	|j                  |	d.t5        j6                  |      /      }
|j                  d(k(  r|j1                  ||
       |
|j                  d)<   d|j                  d-<   nR|j,                  j.                  du r+||j                  d)<    |j2                  d0i |j                   ||j                  d)<    |j2                  d0i |j                   y )1Nstr)typeint514)r.   defaultlist)r.   elements)r   portr   dict)r.   r3   optionspresentquery)r.   r'   r1   namenetwork)r.   aliases)net_idr   statenet_nameT)argument_specsupports_check_modesyslog)functionallfollow_redirectsz /networks/{net_id}/syslogServersquery_updateorg_nameorg_idz*org_name or org_id parameters are requiredr   r=   r>   r<   z;net_name or net_id is required for present or absent statesz*net_name and net_id are mutually exclusive)rG   )r>   data)r<   GET)method   rH   r   r4   r   changedPUT)rJ   payload )r5   r   updater   r   paramsurl_catalogr$   
get_org_idget_nets
get_net_idconstruct_pathrequestr	   resultr)   r-   r"   r   r+   r   is_update_requiredmodule
check_modegenerate_diff	exit_jsonr   dumps)server_arg_specr?   rZ   r&   rN   syslog_urlsrG   r<   netspathrr   originalsanitized_originalsanitized_payloads                  r   mainrg      sk   
 uue,
O )*M&6?K	7';YO569*=>	   # F
 &84F(-FMM$%G?@K)4F~&==$V]]8-DIJ}}W(}}Z(x1HQ   }}Z V]]8%<IJ ]]8$F""6==#<=]]8$F~f-""FMM*,ED"Q}}W($$^F$CNN4N.==C$%FMM&!	w	9	,ffmmI&>? &#]]95	 i( 	5Ff~!$VF^!4v	5 $$^F$CNN4N.==CH 8I&'!+8$79%&*7# -VXh5GH+FHW4EF$$%79JK}}''4/$$Xw7((0f%+/i(   16==1(((GDtE4::g;NOA}}#$$Xq1()f%+/i(}}''4/(0f%   16==1$,FMM&! F%v}}%r   __main__N)
__future__r   r   r   r.   __metaclass__ANSIBLE_METADATADOCUMENTATIONEXAMPLESRETURNcopyr   ansible.module_utils.basicr   r   Kansible_collections.cisco.meraki.plugins.module_utils.network.meraki.merakir   r   r   r)   r+   rg   __name__rO   r   r   <module>rs      sw    A @ n @D%N
8  :
.w&t zF r   