Validating ACI switch/spine connectivity.
search cancel

Validating ACI switch/spine connectivity.

book

Article ID: 383043

calendar_today

Updated On:

Products

VMware Telco Cloud Service Assurance VMware Smart Assurance

Issue/Introduction

When ACI switch/spine down alert is received in Smarts, what API query to be used to understand its genuineness. 

Environment

Smarts - 10.1.x

TCSA - 2.4

Resolution

To understand connectivity to ACI controller, run the below queries in same order:

curl -k -X POST -H 'Content-Type: application/json' <PROTOCOL>://<IP>:<PORT>/api/aaaLogin.json -c /tmp/cookie.txt -d '{"aaaUser":{"attributes":{"name":"<USERNAME>","pwd":"<PASSWORD>"}}}'
curl -k -b /tmp/cookie.txt -X GET -H 'Content-Type: application/json' <PROTOCOL>://<APIC-IP>:<PORT>/api/class/topSystem.json

Note: Replace <USERNAME>, <PASSWORD>, <PROTOCOL>, <PORT> and <Device IP> with appropriate values.

In output received using above queries, if "state":"in-service" that implies that connectivity to ACI is fine from Smarts. 

 

To understand connectivity to Spine/leaf, run python script (spine_leaf_connectivity_test.py) attached to this article:

Note: In the script, replace <USERNAME>, <PASSWORD>, <PROTOCOL>, <PORT> and <Device IP> with appropriate values.

Script by default has https, if needed change it to http.

Basically, script will call below query to get spine/leaf status:

base_url + 'api/class/fabricNode.json?query-target-filter=and(ne(fabricNode.role,%22unsupported%22),ne(fabricNode.role,%22controller%22)) '

where base_url is <PROTOCOL>://<IP>:<PORT>/api.

From the script output, if adst is off for leaf/spine which will set IsFabricStateDown to TRUE which will trigger Down alarm in Smarts.

Example: u'adSt': u'off'

Additional Information

Logic to create spine Unresponsive and Down are based on its Fabric Sate. The relevant attribute in Smarts is IsFabricStateDown.

If IsUnresponsive_internal is true then it could be because of IsFabricStateDown is true or the below.

IsEveryIPUnresponsive &&
IsEveryIPv6Unresponsive &&
IsEveryServiceUnresponsive &&
(HasFaultInstrumentedService || HasFaultInstrumentedSAP)))

where 'HasFaultInstrumentedService' will be set to true whenever any of the instrumented HostServices has a fault, and 'HasFaultInstrumentedSAP' will be set to true whenever any of the instrumented HostAccessPoints has a fault.

Attachments

spine_leaf_connectivity_test.py get_app