Showing results for 
Search instead for 
Did you mean: 

Cisco live innovative ideas.

Folks who attended Cisco live! W018. (And all others of course). Did anything spark any creativity in development for you as goals? There were a couple of items I came away with as good potentials. The interesting one being an "end point grabber"(page that can grab me a list of end points with in the fabric). Just trying to get the ideas out there. Gotta strike while the irons got and the ideas are still fresh in out minds!

5 Replies 5

Level 1
Level 1

If Cisco supported the current version of Python for their Cobra stuff I wanted to try that out, but I don't want to write a bunch of code and have to support multiple versons of python, so I am waiting. (It looks really cool though).

Now just using the straight API I am building a health checker for our ACI enviroment.  We have issues with EPGs tagging getting fat fingered and it auto checks that, along with getting to many SPAN sessions going.  Also we don't have a good way to alarm on ACI logs/alerts, so the program pulls those (anything envirmental, major, or critical).  It puts possable issues up on a webpage that is running Django.

Outside ACI I have a network crawler that finds everything connected via CDP (If there is demand I'll add OSPF/BGP), it runs though the network and builds a database of the output from a bunch of commands (show run, sh cdp entry *, show ip ospf neigh, sh ip bgp summ, sh ip int brief, sh int status, etc).  I built a program that will build a network map from the show cdp data, but with 12K routers/switches/APs (Edits out phones automatically) the map is not overly usable.  I built a program that makes smaller maps on demand: Say you tell the program you want "Device_A" and it will run though the database and build a map (in yEd) of anything with "Device_A" in it and everything directly attached: So it will have "Device_A", "Device_AB", the access points/switches/routers/etc plugged into "Device_A", and "Device_AB".  Currently I am trying to make that into a webpage.

There was a snapshot library that they mentioned in DEVNET that I want to mess with: Grab a snapshot of every device we have, stick it in a DB, then when something bad happens you can compair a current snapshot with the known good snap shot.  I would also like to that in with my mapping program above and compair everything connected to it.

Did you see the demo on NSO? its the config managemet tool they have, it looks incredibly powerful, I wanted to get a demo of it in my lab. Im curious on how far i can push it functioanlity wise, and the draw for me there was the 3rd party plugins. so with your EPG work are you oding a lot of that manually? like manual GUI work and then script to check the APICs?

Probably just  a website for now that queried the database.  It shouldn't need to be a huge select statment, just one for the mac address in question, should be really simple.  I just need an IOS-XR box at some point to play with.

I didn't see the NSO demo :-(.

For the EPG work I am doing it all though API, nothing manual, for example (Apparently the forum hates python code):

#Login and grab the token

def get_token(username, password, base_url):

  requests.packages.urllib3.disable_warnings()  # Disable warning message
  # create credentials structure
   name_pwd = {'aaaUser': {'attributes': {'name': username, 'pwd': password}}}

  json_credentials = json.dumps(name_pwd)

   # print (1)

  # log in to API
   login_url = base_url + 'aaaLogin.json'
   post_response =, data=json_credentials, verify=False)

   # pprint (post_response)

  # get token from login response structure
   auth = json.loads(post_response.text)

   # pprint (auth)
   login_attributes = auth['imdata'][0]['aaaLogin']['attributes']

  auth_token = login_attributes['token']

   # pprint (auth_token)
  # create cookie array from token
   cookies = {}

  cookies['APIC-Cookie'] = auth_token

   return cookies

#Pull bridge domain data

def pull_brige_domain_data (cookies,base_url):

  bridge_domains = []

   # read a sensor, incorporating token in request
   sensor_url = base_url + 'node/class/fvBD.xml?'
   #root = et.parse(urllib.urlopen(sensor_url)).getroot()
   get_response = requests.get(sensor_url, cookies=cookies, verify=False)

  root = et.fromstring(get_response.content)

   #pprint (root.attrib)
   for each in root:

   #pprint (each.attrib)

   return (bridge_domains)

Level 1
Level 1

Another idea I had was use the IOS-XR's ability to send data un-requested to build a central database of where what MAC address is plugged in:  So computer_1 plugges it's mac address into Switch1.  Switch1 sends that MAC address and it's port number to Server_A, Server_A puts into a database that MAC address aaaa.aaaa.aaaa is on Switch1 on Gi1/0/1.  Then when you get a ticket that computer_1 is having issues you just get the MAC address from the user and you know right where that PC is plugged in.  Also I would like the program that pulls the MAC from the DB to run a query on the wireless managment program (Prime or some simular), if it's a wireless mac return with noise levels, signal strenght, AP, all those wireless stats that are a pain in the ass to get.

interesting concept. i didn't realize that XR did that. what would the front end look like? would it just be like a web page and a PHP script doing a huge SELECT from an sql database?