Recent posts

Learn Python: Dissecting Netmiko - Part 2

May 05, 2020

This is the second post in this series. If you missed Part 1, you can find it here. Dissecting ConnectHandler Let’s continue our ConnectHandler investigation. When we look at the code, the first thing we if statement: 1 2 3 4 5 if kwargs["device_type"] not in platforms: raise ValueError( "Unsupported device_type: " "curre...

Learn Python: Dissecting Netmiko - Part 1

May 04, 2020

In the not too distant past, I was a network engineer. In fact, it’s my interest in network automation that led me to DevOps, but I digress. During my network engineering days, my favourite tools were Ansible and Netmiko. Given how heavily I used Netmiko, I really wanted to give back to the project and the community. There was one “slight” probl...

Writing a Grafana backend using the Simple JSON datasource & Flask

April 17, 2018

I’ve used Grafana for several years. Ever since the first time I used it, I have wanted to sit down and write a server which would provide metrics to it through the Simple JSON datasource plugin. I’m happy to announce that I have finally gotten around to doing just that. The tool is called PyGraf and will be opened sourced in the very near futur...

Kubernetes from the Ground Up: Server Components

April 13, 2018

In the previous post, Choosing a configuration method, we looked at the three ways in which a Kubernetes cluster can be configured. In this post we’ll go through the components which make up the cluster. Kubernetes clusters have two types of servers: masters and nodes. The masters provide the control plane for the cluster while the nodes take c...

Installing & using Python virtualenv

April 05, 2018

virtualenv, as the name suggests, creates virtual Python environments. If you’re familiar with server virtualisation, virtualenv acts in a similar fashion to virtual machines in that the environments share the same physical hardware, but they’re completely separated from one another. virtualenv is very useful for when you’re working on multiple...