Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cisco-en-programmability/dnacenter_reports_operations
Cisco DNA Center report operations - create and run a new client detail report, receive the webhooks status notifications and download the report when completed.
https://github.com/cisco-en-programmability/dnacenter_reports_operations
cisco cisco-dna-center flask python reports rest-apis webhook
Last synced: 25 days ago
JSON representation
Cisco DNA Center report operations - create and run a new client detail report, receive the webhooks status notifications and download the report when completed.
- Host: GitHub
- URL: https://github.com/cisco-en-programmability/dnacenter_reports_operations
- Owner: cisco-en-programmability
- License: other
- Created: 2021-06-04T01:49:40.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-06-15T03:03:09.000Z (over 3 years ago)
- Last Synced: 2024-08-03T20:02:59.794Z (4 months ago)
- Topics: cisco, cisco-dna-center, flask, python, reports, rest-apis, webhook
- Language: Python
- Homepage:
- Size: 43.9 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-cisco-dnac - dnacenter_reports_operations
README
# Cisco DNA Center Report Operations
This repo is for an application that will create a new Cisco DNA Center Client Detail report, receive notifications when the report is in progress and completed.
It will download the report file from Cisco DNA Center using APIs.
This app is to be used only for demos or lab environments, it is not written for production.Please follow these recommendations for production Flask deployments: https://flask.palletsprojects.com/en/1.1.x/deploying/.
**Cisco Products & Services:**
- Cisco DNA Center
**Tools & Frameworks:**
- Python environment to run the Flask App as a Webhook Receiver - "report_receiver.py"
- Python environment to execute the application that will create and run the report - "dnacenter_create_report.py"**Usage**
The application "dnacenter_create_report_download.py" will identify:
- report group id for the report category "Client"
- report view id for the report "Client Detail"
- the configured webhook id where to send the report status notifications
- construct the payload required to create the new report
- create a new report
- identify when the report is starting execution
- check when the execution completed successfully
- download the report file and save to a fileSample Output:
```
/Users/gzapodea/PythonCode/dnacenter_reports_operations/venv/bin/python /Users/gzapodea/PythonCode/dnacenter_reports_operations/dnacenter_create_report_download.pyCreate Report App Run Start, 2021-06-14 19:54:50
Report Category: Client
Report View Group Id is: d7afe5c9-4941-4251-8bf5-0fb643e90847
Report View Name: Client Detail
Report View Id is: e8e66b17-4aeb-4857-af81-f472023bb05eClient Report Detail
{
"viewId": "e8e66b17-4aeb-4857-af81-f472023bb05e",
"viewName": "Client Detail",
"description": "This client report view provides detailed information about the list of clients that are seen in the network",
"viewInfo": null,
"schedules": [
{
"type": "SCHEDULE_NOW",
"default": true
},
{
"type": "SCHEDULE_LATER",
"default": false
},
{
"type": "SCHEDULE_RECURRENCE",
"default": false
}
],
"deliveries": [
{
"type": "DOWNLOAD",
"default": true
},
{
"type": "EMAIL",
"default": false
},
{
"type": "WEBHOOK",
"default": false
}
],
"formats": [
{
"name": "CSV",
"format": "CSV",
"template": {
"jsTemplateId": "BJYghfA3z"
},
"default": true
},
{
"name": "Tableau Data Extract",
"format": "TDE",
"template": null,
"default": false
},
{
"name": "JSON",
"format": "JSON",
"template": null,
"default": false
}
],
...
}Report submitted
Report id: 8ba4c05e-3d07-47d6-8761-0761783b30f9Wait for report execution to start
!!!!!!!!!!!!!!!Report execution started, wait for process to complete
!!!!!!!!!!!!!!!!!!!!!!!!!!Report execution completed
Report execution id: a9a82752-8b0c-451c-a03d-aec7c757b25fReport content:
{'client_details': [], 'filters': [{'name': 'Location', 'displayName': 'Location', 'values': []}, {'name': 'DeviceType', 'displayName': 'Device Type', 'values': ['']}, {'name': 'SSID', 'displayName': 'SSID', 'values': []}, {'name': 'Band', 'displayName': 'Band', 'values': []}, {'name': 'startTime', 'displayName': 'Start Time', 'values': ['2021-06-14 02:55:17.581 AM UTC']}, {'name': 'endTime', 'displayName': 'End Time', 'values': ['2021-06-15 02:55:17.581 AM UTC']}]}
Client report file savedCreate Report App Run End, 2021-06-14 19:55:48
Process finished with exit code 0
```
The application "dnacenter_create_report_webhook.py" will identify:
- report group id for the report category "Client"
- report view id for the report "Client Detail"
- the configured webhook id where to send the report status notifications
- construct the payload required to create the new report
- create a new reportSample Output:
```
/Users/gzapodea/PythonCode/dnacenter_reports_operations/venv/bin/python /Users/gzapodea/PythonCode/dnacenter_reports_operations/dnacenter_create_report.pyCreate Report App Run Start, 2021-06-03 17:58:25
Report Category: Client
Report View Group Id is: d7afe5c9-4941-4251-8bf5-0fb643e90847
Report View Name: Client Detail
Report View Id is: e8e66b17-4aeb-4857-af81-f472023bb05e
Webhook Name: LinuxMint_Report
Webhook Id: 8dcbeb87-420b-49f1-b813-a0c0046e3672Client Report Detail
{
"viewId": "e8e66b17-4aeb-4857-af81-f472023bb05e",
"viewName": "Client Detail",
"description": "This client report view provides detailed information about the list of clients that are seen in the network",
"viewInfo": null,
"schedules": [
{
"type": "SCHEDULE_NOW",
"default": true
},
{
"type": "SCHEDULE_LATER",
"default": false
},
{
"type": "SCHEDULE_RECURRENCE",
"default": false
}
],
"deliveries": [
{
"type": "DOWNLOAD",
"default": true
},
{
"type": "EMAIL",
"default": false
},
{
"type": "WEBHOOK",
"default": false
}
],
"formats": [
{
"name": "CSV",
"format": "CSV",
"template": {
"jsTemplateId": "BJYghfA3z"
},
"default": true
},
{
"name": "Tableau Data Extract",
"format": "TDE",
"template": null,
"default": false
},
{
"name": "JSON",
"format": "JSON",
"template": null,
"default": false
}
...
]
}Report submitted
Create Report App Run End, 2021-06-03 17:58:28
```
The "report_receiver.py" will receive the Cisco DNA Center report notifications, download and save the report file when completed.
Sample Output:
```Webhook Received
Payload:
{'Event Id': '7332787b-d727-48a1-baba-288385bdf6df', 'Event Timestamp': 1622765873532, 'Event Name': 'Report [Client Report Detail 24h] - In Progress', 'Event Type': 'APP', 'Cisco DNA Center Event Context link. **This link is active only in the context of Cisco DNA Center. You must have necessary permissions to login': 'https://10.93.141.35/data-sets-reports?report-tab=list&list-tab=my-reports&data-set-id=f8a68f72-aeaf-42ab-b665-f142a9335816', 'Event Details': {'name': 'Report [Client Report Detail 24h]', 'status': 'In Progress', 'status update @': 'Fri Jun 04 00:17:53 UTC 2021'}}173.36.240.173 - - [03/Jun/2021 17:17:56] "POST /dnacenter_report HTTP/1.1" 202 -
Webhook Received
Payload:
{'Event Id': 'd717cec1-0b12-4c37-95fb-efb4603dfe27', 'Event Timestamp': 1622765900832, 'Event Name': 'Report [Client Report Detail 24h] - Success', 'Event Type': 'APP', 'Cisco DNA Center Event Context link. **This link is active only in the context of Cisco DNA Center. You must have necessary permissions to login': 'https://10.93.141.35/data-sets-reports?report-tab=list&list-tab=my-reports&data-set-id=f8a68f72-aeaf-42ab-b665-f142a9335816&execution-id=f2ce8bed-1734-4652-9150-ab3aa013fae8', 'Event Details': {'name': 'Report [Client Report Detail 24h]', 'status': 'Success', 'status update @': 'Fri Jun 04 00:18:20 UTC 2021'}}Report Id: f8a68f72-aeaf-42ab-b665-f142a9335816
Execution Id: f2ce8bed-1734-4652-9150-ab3aa013fae8Report content:
{'client_details': [], 'filters': [{'name': 'Location', 'displayName': 'Location', 'values': []}, {'name': 'DeviceType', 'displayName': 'Device Type', 'values': ['']}, {'name': 'SSID', 'displayName': 'SSID', 'values': []}, {'name': 'Band', 'displayName': 'Band', 'values': []}, {'name': 'startTime', 'displayName': 'Start Time', 'values': ['2021-06-03 00:17:54.022 AM UTC']}, {'name': 'endTime', 'displayName': 'End Time', 'values': ['2021-06-04 00:17:54.022 AM UTC']}]}
Client report file saved
```
This sample code is for proof of concepts and labs**License**
This project is licensed to you under the terms of the [Cisco Sample Code License](./LICENSE).