Cisco Blogs

Programmability in Python: Confessions of a Networking Guy

January 29, 2014 - 2 Comments

I am not qualified to discuss it much, but can you guess what this does?

     ne = NetworkElement("", "JasonsApp")
     conn = ne.connect("admin", "cisco", sc)
     intf1 = ne.get_interface_by_name("FastEthernet0/1")


If you guessed that it logs into a switch at and disables interface F0/1 for 5 seconds and re-enables it, then you guessed right.

Let us talk a little about putting the “ability” in programmability.  Did I code in college? Yes. Was I good at it? Not really. Dijksta’s algorithm (the actual coding bit) drove me crazy, however, actually using and operating networks quickly became my cup of tea. I became a network geek. Subnets? Awesome! Cisco CLI? Sweet. Using Enhanced Interior Gateway Routing Protocol (EIGRP)? Yay! AVVID? Even better. But I never wanted to see C++ or another “program” again.

Fast forward to 2014.  I’m still a networking guy but now I’m seeing code again.  The good news is, maybe like you, I hang out with some really cool people. I challenged a couple of them to help me demonstrate program “ability” to networking people on the show floor at CiscoLive Milan…with me as the test subject!

I love CLI. I don’t need tools. While lucky enough to remember some of this programming stuff, I remained a skeptic. This was the mission that Shelly Cadora and Ralph Schmieder took on. They came back to me with lights. No kidding. PoE lights.

Network Programming Made Easy with Python at Cisco Live Milan

Jason coding at the Network Programming Made Easy with Python area at Cisco Live Milan

As a first test, Shelly asked me to enable all the lights. I did it successfully. Comfort zone CLI; “interface range”, “shut” and “no shut.” Then Shelly fired up some Python she wrote and began to control the lights. The lights performed an SOS pattern. A cylon pattern. Then some lights turned on when other lights turned off. She asked me how quickly I could do all that. I did not have much to say. Human fingers typing CLI could not compete with the speed and efficiency of a Python algorithm.

That’s when I asked to see the code, all 15 lines of it. And here’s the thing. Even networking people like me can read Python. That’s when I started to have an emotional reaction. Suddenly I saw programmability for what it was – a new way to drive to interact with the same things that I’d worked with my whole career.

I hacked away a while, put a few virtual routers on my machine and learned about this thing called “git” and Voila! I was “programming” again. But I’m directly programming those things I know very well: routers and switches. Sure, I’m a novice again but it feels great. I can see the things that I code translate into other tasks. I am starting to make the routers in my virtual network do all kinds of things.

As I type this, I am at Cisco Live Milan.  I am not scheduling meetings. I am not replying to e-mail. I am not creating a presentation. I am not on Tweeting. I am programming .. ROUTERS!

So stop by the Cisco ONE Platform area (under the red banners) in the World of Solutions. What can you make the lights do? More importantly, if you are a Networking person, do you react to this the same way I did?

In an effort to keep conversations fresh, Cisco Blogs closes comments after 60 days. Please visit the Cisco Blogs hub page for the latest content.


  1. Great insight into how network engineers will react to SDN. Thanks for sharing

  2. Jason - You have pointed out a major dilemma that is cooking in network engineers. How much coding do I have to learn. The engineer's value will remain in creating the algorithm, that is, lights forming a SOS pattern solves a data center problem. There are hundred of use cases to built up that can be useful in day to day opertations.