06-14-2018 07:31 PM
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!
07-05-2018 06:37 AM
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.
07-09-2018 09:29 AM
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?
07-10-2018 07:06 AM
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 = requests.post(login_url, 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)
bridge_domains.append(each.attrib)
return (bridge_domains)
07-05-2018 06:51 AM
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.
07-09-2018 09:27 AM
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?
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide