Cisco Support Community
cancel
Showing results for 
Search instead for 
Did you mean: 
cancel

REST API Troubleshooting

REST API Troubleshooting

Introduction

 

Every interface to the APIC goes through the REST API - CLI, GUI, Python SDK, etc.  When something does not appear to be working properly with the REST API, it can have significant impact on the system as a whole because it is the ONLY interface we have to the APIC.  Knowing how to debug and troubleshoot the REST API can be extremely useful.

 

This document will detail some little known REST API query strings as well as indicate which logs on the APIC can be monitored to see what is going on with the REST API.

 

REST API Troubleshooting

 

All REST API queries go through the web server on node.  Logs for web server are saved on the specific APIC or nodes that the REST APIC queries are being run against at:

 

On the APIC:
/var/log/dme/log/nginx.bin.log
On fabric nodes:
/var/log/dme/log/nginx.log

These logs role over, so if something occurred a while ago you may have to go back in time and look at files that are compressed.

 

Having the REST API return what was modified by the POST request

 

You can have POST requests return what was modified rather than an empty imdata post using a rsp-subtree option set to full (it will return the entire modified Mo), modified (it will return only what was modified), or no (the default behavior of returning nothing).  This can be useful in cases beyond debugging as well where you need the results of a dynamic configuration.  This does have limits though.  For example you can not get a full subtree for the polUni Mo for both GET or POST.

 

Here is an example -

 

POST:

 

https://10.10.10.1/api/mo/uni.xml?rsp-subtree=modified
<fvTenant name="Test3" />

Response:

 

<imdata>
    <fvTenant childAction="deleteNonPresent" 
        descr="" dn="uni/tn-Test3" 
        lcOwn="local" modTs="2014-07-16T18:27:11.408+00:00" 
        monPolDn="" 
        name="Test3" ownerKey="" ownerTag="" rn="" status="created" uid="15374">                 
        <fvRsTenantMonPol 
            childAction="deleteNonPresent" forceResolve="no" lcOwn="local" 
            modTs="2014-07-16T18:27:11.408+00:00" 
            monPolDn="" rType="mo" rn="rsTenantMonPol"
            state="unformed" stateQual="none" status="created" 
            tCl="monEPGPol" tContextDn="" tDn="" tRn="" 
            tType="name" tnMonEPGPolName="" uid="0" />
    </fvTenant>
</imdata>

Having the REST API return what is configured on a MO

 

You can have a GET request return just the configuration of a Managed Object (MO) by using the rsp-subtree=full&rsp-prop-include=config-only options.

 

For example:

 

GET:

 

https://10.10.10.1/api/node/mo/uni/tn-Test3.xml?rsp-subtree=full&rsp-prop-include=config-only

 

Response:

 

<imdata totalCount="1">
    <fvTenant descr="" dn="uni/tn-Test3" name="Test3" ownerKey="" ownerTag="">
        <fvRsTenantMonPol tnMonEPGPolName="" />
    </fvTenant>
</imdata>

 

Comments
Community Member

Hi Expert 

Great Post , this helped me to get a REST GET in Postman to work , where can i get more info about this details to learn how to ask the APIC after information about exampels Teanant and interface info like VPC or mac addres tables it seems quiet hard tto get this info out of the APIC if you don´t have read the whole SDK

Community Member

Hi,

Maybe this will help:

http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/1-x/api/rest/b_APIC_RESTful_API_User_Guide.pdf - at least from page 49 and forward.

 

You can also use the API Inspector from the GUI to get more familiarized with the structure if you haven't already, the first part describes how to use it effectively.

http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/1-x/api/rest/b_APIC_RESTful_API_User_Guide/b_IFC_RESTful_API_User_Guide_chapter_0100.html

 

535
Views
0
Helpful
2
Comments