Almost a year ago, I start a side project to create a web service that automates End-of-Life (EoL) checks. It targets primarily to equipment from Cisco Systems. My primary intention was to learn Django and some other web technologies. Furthermore, I liked to play with the Cisco API console (more specific the Cisco EoX API). I used the first version now for quite some time. Some months ago, I decided to extend this Project a little bit. The first step was a review of what I’ve done last year. I recognized fast that the code needs some updates...
Today, I like to give you a brief introduction to a python library called invoke that is used to execute custom tasks within a shell session. Furthermore, I like to show you how invoke is used to simplify the execution of Ansible playbooks within the Product Database.
In my last post, I took a look on how to parse information from a Cisco IOS configuration using regular expressions. This post focuses on the same use case as the last one, but this time I use the ciscoconfparse library. The use of the library doesn't mean that you can ignore regular expressions at all. You need at least a basic understanding of it. Before continuing, I highly recommend to read my last post about Parse Cisco IOS configurations using RegEx. I will reuse some of the RegEx and skip the detailed explanation in this post.
In one of my earlier posts, I parse IP parameters from an existing Cisco IOS configuration using ciscoconfparse. In this post, I'll like to provide some basic patterns how to parse (almost any) information from a running configuration, but first without using any library. I just take a look at the python standard library and regular expressions (RegEx).
During some coding work for my day job, I require a way to validate the format (or schema) for some JSON data. If you need a quick refresh, what JSON is and how to work with it in python, take a look at one of my earlier posts about python dictionaries and JSON. As an additional requirement, the validation step should include default data for certain keys that are not found in the original data.