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 /ufmRestV2/Topology_Compare/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