#!/usr/bin/python
# -*- coding: utf-8 -*-

# Copyright (c) 2021, Cisco Systems
# GNU General Public License v3.0+ (see LICENSE or
# https://www.gnu.org/licenses/gpl-3.0.txt)

DOCUMENTATION = r"""
module: devices_live_tools_routing_table_lookups
short_description: Resource module for devices _live _tools _routing _table _lookups
description:
  - Manage operation create of the resource devices _live _tools _routing _table _lookups.
    - > Enqueue a job to perform a routing table lookup request for a device. The
    routing table lookup request fetches a specific set of routes based on filters.
    Any combination of search filters can be applied. Only Cisco Secure Routers are
    supported.
version_added: '1.0.0'
extends_documentation_fragment:
  - cisco.meraki.module
author: Francisco Munoz (@fmunoz)
options:
  callback:
    description: Details for the callback. Please include either an httpServerId OR
      url and sharedSecret.
    suboptions:
      httpServer:
        description: The webhook receiver used for the callback webhook.
        suboptions:
          id:
            description: The webhook receiver ID that will receive information. If
              specifying this, please leave the url and sharedSecret fields blank.
            type: str
        type: dict
      payloadTemplate:
        description: The payload template of the webhook used for the callback.
        suboptions:
          id:
            description: The ID of the payload template. Defaults to 'wpt_00005' for
              the Callback (included) template.
            type: str
        type: dict
      sharedSecret:
        description: A shared secret that will be included in the requests sent to
          the callback URL. It can be used to verify that the request was sent by
          Meraki. If using this field, please also specify an url.
        type: str
      url:
        description: The callback URL for the webhook target. If using this field,
          please also specify a sharedSecret.
        type: str
    type: dict
  destination:
    description: The destination IP or subnet to lookup.
    suboptions:
      address:
        description: The destination IP address to find a longest prefix match route.
        type: str
      subnet:
        description: The destination subnet in CIDR format to find matching routes.
        type: str
    type: dict
  nextHop:
    description: The next hop to lookup.
    suboptions:
      address:
        description: The IP address of the next hop.
        type: str
    type: dict
  serial:
    description: Serial path parameter.
    type: str
  type:
    description: The type of route defined.
    type: str
  vpn:
    description: VPN related search criteria.
    suboptions:
      peer:
        description: The VPN peer to lookup.
        suboptions:
          id:
            description: The Network ID of the VPN peer.
            type: str
        type: dict
    type: dict
requirements:
  - meraki >= 2.4.9
  - python >= 3.5
seealso:
  - name: Cisco Meraki documentation for devices createDeviceLiveToolsRoutingTableLookup
    description: Complete reference of the createDeviceLiveToolsRoutingTableLookup
      API.
    link: https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-routing-table-lookup
notes:
  - SDK Method used are
    devices.Devices.create_device_live_tools_routing_table_lookup,
  - Paths used are
    post /devices/{serial}/liveTools/routingTable/lookups,
"""

EXAMPLES = r"""
- name: Create
  cisco.meraki.devices_live_tools_routing_table_lookups:
    meraki_api_key: "{{ meraki_api_key }}"
    meraki_base_url: "{{ meraki_base_url }}"
    meraki_single_request_timeout: "{{ meraki_single_request_timeout }}"
    meraki_certificate_path: "{{ meraki_certificate_path }}"
    meraki_requests_proxy: "{{ meraki_requests_proxy }}"
    meraki_wait_on_rate_limit: "{{ meraki_wait_on_rate_limit }}"
    meraki_nginx_429_retry_wait_time: "{{ meraki_nginx_429_retry_wait_time }}"
    meraki_action_batch_retry_wait_time: "{{ meraki_action_batch_retry_wait_time }}"
    meraki_retry_4xx_error: "{{ meraki_retry_4xx_error }}"
    meraki_retry_4xx_error_wait_time: "{{ meraki_retry_4xx_error_wait_time }}"
    meraki_maximum_retries: "{{ meraki_maximum_retries }}"
    meraki_output_log: "{{ meraki_output_log }}"
    meraki_log_file_prefix: "{{ meraki_log_file_prefix }}"
    meraki_log_path: "{{ meraki_log_path }}"
    meraki_print_console: "{{ meraki_print_console }}"
    meraki_suppress_logging: "{{ meraki_suppress_logging }}"
    meraki_simulate: "{{ meraki_simulate }}"
    meraki_be_geo_id: "{{ meraki_be_geo_id }}"
    meraki_caller: "{{ meraki_caller }}"
    meraki_use_iterator_for_get_pages: "{{ meraki_use_iterator_for_get_pages }}"
    meraki_inherit_logging_config: "{{ meraki_inherit_logging_config }}"
    state: present
    callback:
      httpServer:
        id: aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M=
      payloadTemplate:
        id: wpt_2100
      sharedSecret: secret
      url: https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031
    destination:
      address: 192.168.0.10
      subnet: 192.168.0.0/24
    nextHop:
      address: 10.10.0.1
    serial: string
    type: static
    vpn:
      peer:
        id: N_12345678
"""
RETURN = r"""
meraki_response:
  description: A dictionary or list with the response returned by the Cisco Meraki Python SDK
  returned: always
  type: dict
  sample: >
    {
      "lookupId": "string",
      "url": "string",
      "request": {
        "serial": "string",
        "type": "string",
        "destination": {
          "address": "string",
          "subnet": "string"
        },
        "nextHop": {
          "address": "string"
        },
        "vpn": {
          "peer": {
            "id": "string"
          }
        }
      },
      "status": "string",
      "callback": {
        "id": "string",
        "url": "string",
        "status": "string"
      }
    }
"""
