#!/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: network_device_replacements_v1_info
short_description: Information module for Network Device Replacements V1
description:
  - Get all Network Device Replacements V1.
  - >
    Retrieve the list of device replacements with replacement details. Filters can
    be applied based on faulty device
    name, faulty device platform, faulty device serial number, replacement device
    platform, replacement device serial
    number, device replacement status, device family.
version_added: '6.17.0'
extends_documentation_fragment:
  - cisco.dnac.module_info
author: Rafael Campos (@racampos)
options:
  headers:
    description: Additional headers.
    type: dict
  family:
    description:
      - Family query parameter. Faulty device family.
    type: str
  faultyDeviceName:
    description:
      - FaultyDeviceName query parameter. Faulty device name.
    type: str
  faultyDevicePlatform:
    description:
      - FaultyDevicePlatform query parameter. Faulty device platform.
    type: str
  faultyDeviceSerialNumber:
    description:
      - FaultyDeviceSerialNumber query parameter. Faulty device serial number.
    type: str
  replacementDevicePlatform:
    description:
      - ReplacementDevicePlatform query parameter. Replacement device platform.
    type: str
  replacementDeviceSerialNumber:
    description:
      - ReplacementDeviceSerialNumber query parameter. Replacement device serial number.
    type: str
  replacementStatus:
    description:
      - >
        ReplacementStatus query parameter. Device replacement status. Available values
        MARKED_FOR_REPLACEMENT,
        NETWORK_READINESS_REQUESTED, NETWORK_READINESS_FAILED, READY_FOR_REPLACEMENT,
        REPLACEMENT_SCHEDULED,
        REPLACEMENT_IN_PROGRESS, REPLACED, ERROR. Replacement status 'MARKED_FOR_REPLACEMENT'
        - The faulty device
        has been marked for replacement. 'NETWORK_READINESS_REQUESTED' - Initiated
        steps to shut down neighboring
        device interfaces and create a DHCP server on the uplink neighbor if the faulty
        device is part of a fabric
        setup. 'NETWORK_READINESS_FAILED' - Preparation of the network failed. Neighboring
        device interfaces were
        not shut down, and the DHCP server on the uplink neighbor was not created.
        'READY_FOR_REPLACEMENT' - The
        network is prepared for the faulty device replacement. Neighboring device
        interfaces are shut down, and the
        DHCP server on the uplink neighbor is set up. 'REPLACEMENT_SCHEDULED' - Device
        replacement has been
        scheduled. 'REPLACEMENT_IN_PROGRESS' - Device replacement is currently in
        progress. 'REPLACED' - Device
        replacement was successful. 'ERROR' - Device replacement has failed.
    type: str
  offset:
    description:
      - Offset query parameter. The first record to show for this page; the first
        record is numbered 1.
    type: float
  limit:
    description:
      - Limit query parameter. The number of records to show for this page. Maximum
        value can be 500.
    type: float
  sortBy:
    description:
      - >
        SortBy query parameter. A property within the response to sort by. Available
        values id, creationTime,
        family, faultyDeviceId, fautyDeviceName, faultyDevicePlatform, faultyDeviceSerialNumber,
        replacementDevicePlatform, replacementDeviceSerialNumber, replacementTime.
    type: str
  sortOrder:
    description:
      - >
        SortOrder query parameter. Whether ascending or descending order should be
        used to sort the response.
        Available values ASC, DESC.
    type: str
requirements:
  - dnacentersdk >= 2.4.9
  - python >= 3.5
seealso:
  - name: Cisco DNA Center documentation for Device Replacement RetrieveTheStatusOfAllTheDeviceReplacementWorkflowsV1
    description: Complete reference of the RetrieveTheStatusOfAllTheDeviceReplacementWorkflowsV1
      API.
    link:
      https://developer.cisco.com/docs/dna-center/#!retrieve-the-status-of-all-the-device-replacement-workflows
notes:
  - SDK Method used are
    device_replacement.DeviceReplacement.retrieve_the_status_of_all_the_device_replacement_workflows_v1,
  - Paths used are get /dna/intent/api/v1/networkDeviceReplacements,
"""
EXAMPLES = r"""
- name: Get all Network Device Replacements V1
  cisco.dnac.network_device_replacements_v1_info:
    dnac_host: "{{dnac_host}}"
    dnac_username: "{{dnac_username}}"
    dnac_password: "{{dnac_password}}"
    dnac_verify: "{{dnac_verify}}"
    dnac_port: "{{dnac_port}}"
    dnac_version: "{{dnac_version}}"
    dnac_debug: "{{dnac_debug}}"
    headers: "{{my_headers | from_json}}"
    family: string
    faultyDeviceName: string
    faultyDevicePlatform: string
    faultyDeviceSerialNumber: string
    replacementDevicePlatform: string
    replacementDeviceSerialNumber: string
    replacementStatus: string
    offset: 0
    limit: 0
    sortBy: string
    sortOrder: string
  register: result
"""
RETURN = r"""
dnac_response:
  description: A dictionary or list with the response returned by the Cisco DNAC Python SDK
  returned: always
  type: dict
  sample: >
    {
      "response": [
        {
          "creationTime": 0,
          "family": "string",
          "faultyDeviceId": "string",
          "faultyDeviceName": "string",
          "faultyDevicePlatform": "string",
          "faultyDeviceSerialNumber": "string",
          "id": "string",
          "neighborDeviceId": "string",
          "replacementDevicePlatform": "string",
          "replacementDeviceSerialNumber": "string",
          "replacementStatus": "string",
          "replacementTime": 0,
          "workflow": {
            "id": "string",
            "name": "string",
            "workflowStatus": "string",
            "startTime": 0,
            "endTime": 0,
            "steps": [
              {
                "name": "string",
                "status": "string",
                "statusMessage": "string",
                "startTime": 0,
                "endTime": 0
              }
            ]
          }
        }
      ],
      "version": "string"
    }
"""
