#!/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: compliance_device_by_id_v1_info
short_description: Information module for Compliance Device By Id V1
description:
- Get all Compliance Device By Id V1.
- Return compliance detailed report for a device.
version_added: '3.1.0'
extends_documentation_fragment:
  - cisco.dnac.module_info
author: Rafael Campos (@racampos)
options:
  headers:
    description: Additional headers.
    type: dict
  deviceUuid:
    description:
    - DeviceUuid path parameter. Device Id.
    type: str
  category:
    description:
    - >
      Category query parameter. Category can have any value among 'INTENT', 'RUNNING_CONFIG' , 'IMAGE' , 'PSIRT' ,
      'DESIGN_OOD' , 'EOX' , 'NETWORK_SETTINGS'.
    type: str
  complianceType:
    description:
    - >
      ComplianceType query parameter. Specify "Compliance type(s)" separated by commas. The Compliance type can be
      'APPLICATION_VISIBILITY', 'EOX', 'FABRIC', 'IMAGE', 'NETWORK_PROFILE', 'NETWORK_SETTINGS', 'PSIRT',
      'RUNNING_CONFIG', 'WORKFLOW'.
    type: str
  diffList:
    description:
    - DiffList query parameter. Diff list pass true to fetch the diff list.
    type: bool
  status:
    description:
    - >
      Status query parameter. 'COMPLIANT', 'NON_COMPLIANT', 'ERROR', 'IN_PROGRESS', 'NOT_APPLICABLE',
      'NOT_AVAILABLE', 'WARNING', 'REMEDIATION_IN_PROGRESS' can be the value of the compliance 'status' parameter.
      COMPLIANT Device currently meets the compliance requirements. NON_COMPLIANT One of the compliance
      requirements like Software Image, PSIRT, Network Profile, Startup vs Running, etc. Are not met. ERROR
      Compliance is unable to compute status due to underlying errors. IN_PROGRESS Compliance check is in progress
      for the device. NOT_APPLICABLE Device is not supported for compliance, or minimum license requirement is not
      met. NOT_AVAILABLE Compliance is not available for the device. COMPLIANT_WARNING The device is compliant
      with warning if the last date of support is nearing. REMEDIATION_IN_PROGRESS Compliance remediation is in
      progress for the device.
    type: str
  remediationSupported:
    description:
    - >
      RemediationSupported query parameter. The 'remediationSupported' parameter can be set to 'true' or 'false'.
      The result will be a combination of both values if it is not provided.
    type: bool
requirements:
- dnacentersdk >= 2.4.9
- python >= 3.5
seealso:
- name: Cisco DNA Center documentation for Compliance ComplianceDetailsOfDeviceV1
  description: Complete reference of the ComplianceDetailsOfDeviceV1 API.
  link: https://developer.cisco.com/docs/dna-center/#!compliance-details-of-device
notes:
  - SDK Method used are
    compliance.Compliance.compliance_details_of_device_v1,

  - Paths used are
    get /dna/intent/api/v1/compliance/{deviceUuid}/detail,

"""

EXAMPLES = r"""
- name: Get all Compliance Device By Id V1
  cisco.dnac.compliance_device_by_id_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}}"
    category: string
    complianceType: string
    diffList: True
    status: string
    remediationSupported: True
    deviceUuid: 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": [
        {
          "deviceUuid": "string",
          "complianceType": "string",
          "status": "string",
          "state": "string",
          "lastSyncTime": 0,
          "lastUpdateTime": 0,
          "sourceInfoList": [
            {
              "name": "string",
              "nameWithBusinessKey": "string",
              "sourceEnum": "string",
              "type": "string",
              "appName": "string",
              "count": 0,
              "ackStatus": "string",
              "businessKey": {
                "resourceName": "string",
                "businessKeyAttributes": {},
                "otherAttributes": {
                  "name": "string",
                  "cfsAttributes": {
                    "displayName": "string",
                    "appName": "string",
                    "description": "string",
                    "source": "string",
                    "type": "string"
                  }
                }
              },
              "diffList": [
                {
                  "op": "string",
                  "configuredValue": "string",
                  "intendedValue": "string",
                  "moveFromPath": "string",
                  "businessKey": "string",
                  "path": "string",
                  "extendedAttributes": {
                    "attributeDisplayName": "string",
                    "path": "string",
                    "dataConverter": "string",
                    "type": "string"
                  },
                  "ackStatus": "string",
                  "instanceUUID": "string",
                  "displayName": "string"
                }
              ],
              "displayName": "string"
            }
          ],
          "ackStatus": "string",
          "version": "string",
          "remediationSupported": true
        }
      ],
      "deviceUuid": "string"
    }
"""
