Topology Compare REST API
This API is asynchronous, therefore will create a hidden job and return its ID in the response.
URL: POST ufmRestV2/reports/Topology_Compare
Payload: .topo file (the payload is optional and if you do not send it, then the topology is compared against the master typology).
Response: redirect to job ID
URL: GET ufmRestV2/reports/last_report/Topology_Compare
Response:
"{
{
"added": {
"nodes": [
{
"guid": "0002c9000002026c",
"system_name": "L0_R03_B15_I04",
"ip": "0.0.0.0",
"type": "switch"
},
{
"guid": "0002c90000012721",
"system_name": "H_5",
"ip": "0.0.0.0",
"type": "host"
}
],
"links": [
{
"source_guid": "0002c9000002026c",
"destination_guid": "0002c90000021b7c",
"name": "0002c9000002026c_28:0002c90000021b7c_4"
},
{
"source_guid": "0002c9000002026c",
"destination_guid": "0002c90000021b88",
"name": "0002c9000002026c_31:0002c90000021b88_4"
},
{
"source_guid": "0002c9000002026c",
"destination_guid": "0002c90000021b8c",
"name": "0002c9000002026c_32:0002c90000021b8c_4"
}
]
},
"removed": {
"nodes": [
{
"guid": "0002c9000002026c",
"system_name": "L0_R03_B15_I04",
"ip": "0.0.0.0",
"type": "switch"
},
{
"guid": "0002c90000012721",
"system_name": "H_5",
"ip": "0.0.0.0",
"type": "host"
}
],
"links": [
{
"source_guid": "0002c9000002026c",
"destination_guid": "0002c90000021b7c",
"name": "0002c9000002026c_28:0002c90000021b7c_4"
},
{
"source_guid": "0002c9000002026c",
"destination_guid": "0002c90000021b88",
"name": "0002c9000002026c_31:0002c90000021b88_4"
},
{
"source_guid": "0002c9000002026c",
"destination_guid": "0002c90000021b8c",
"name": "0002c9000002026c_32:0002c90000021b8c_4"
}
]
}
}
URL: GET /ufmRestV2/Topology_Compare
Response:
[
{
"report_id": "4",
"report_scope": "Periodic",
"timestamp": "2021-06-22 11:00:00"
},
{
"report_id": "5",
"report_scope": "Periodic",
"timestamp": "2021-06-22 11:05:00"
},
{
"report_id": "6",
"report_scope": "Periodic",
"timestamp": "2021-06-22 11:10:00"
},
]
URL: GET /ufmRest/reports/Topology_Compare/<report_id>
Response:
{
"title": "Topology Compare Report",
"date": "2021-01-21 12:02:00",
"sections": [
{
"title": "Topology Compare",
"description": "Compares planned topology to an actual one ",
"status": {
"severity": "Critical",
"value": "Completed Successfully. 3 Errors Found, 1 Warnings Found"
},
"elements": [
{
"status": {
"severity": "Critical",
"value": "Completed Successfully. 3 Errors Found, 1 Warnings Found"
},
"elements": [
{
"Detected Differences": " Found mismatches between the topology defined in /opt/ufm/data/fabric.topo and the discovered fabric.",
"Severity": "Warning"
},
{
"Detected Differences": " Total: 3 Additional nodes detected",
"Severity": "Critical"
},
{
"Detected Differences": " Unplanned node detected: r-hyp-sw01/U1",
"Severity": "Critical"
},
{
"Detected Differences": " Unplanned node detected: r-ufm254-hyp-03/mlx5_0",
"Severity": "Critical"
},
{
"Detected Differences": " Unplanned node detected: r-ufm254-hyp-04/U1",
"Severity": "Critical"
} ] } ] } ],
"Created by": "admin"
}
Update Master Topology File with Current Topology or External File
URL: POST ufmRestV2/Topology_Compare/master_topology
External file optional (if not sent, the API aligns the master topology with the current topology).
Description: generates the .topo file for the current topology. Could be synchronous or asynchronous call.
URL: POST ufmRestV2/Topology_Compare/topology_file
Request Data: N/A
Response:
{
"file_name": "mytop.topo"
}
Description: requests the file from the server side in order to download it on the local machine.
URL: GET /ufmRest/topology_file/<file_name>
Response: .topo file
URL: GET /ufmRest/notifications
Response:
[
{
"instanceID": 4,
"subject": "Topology Diff",
"severity": "Info",
"timestamp": "2021-01-29 15:16:18",
"read": true,
"body": {"is_stable":true} }]
Description: Acknowledge the notification once the user gets the message.
URL: PUT/ufmRest/notifications/>instanceID>
Response: 202 successful operation