Fulcrum & Skytap's API

Skytap provides Infrastructure as a Service. They are a fantastic virtualization platform, hosted in the cloud, primarily targeting development, testing and training solutions.
  
Back in the summer of 2012, shortly after we started using Skytap, we were asked to create a series of training environments that refreshed on a complex schedule so that our trainers could go into the field and have known good working environments for the purpose of training 3,500 folks on the use of our software. We needed to stand up an environment for each classroom, that both instructors and students could use during the course, and refresh that environment at the end to make way for the next class. We turned to what was then a reasonably flushed out API for Skytap. Using that, and a crazy cron file we were able to produce what our team needed in order to have a successful summer training. Four years, three major revisions and two more sets of eyes has since transformed that little script that we called "Skynet" into a full fledged python module that we use to manipulate many aspects of our Skytap infrastructure.
  
With the current version of that script, we now can do a variety of tasks automatically, from suspending environments, deleting environments, maintaining users and groups, documenting our servers automatically in Confluence, and displaying Skytap vm statistics for users to easily access.
  
After the the summer, we continued using a modified version of Skynet to manage the suspension  
of all of our Skytap systems each evening in an effort to conserve the our Skytap resources. This worked well and we began to look at other uses for the Skytap API. When we realized that the API exposed all the metrics that Skytap uses to bill us, we began work on a dashboard for our Network Operations Center that allows us to keep an eye on our Skytap usage.
  
Up to this point we were documenting each of our Skytap environments in Atlassian's Confluence Cloud ("Confluence Wiki") - and like many of you this was done by hand, "when we had time..." that was not a workable solution so we brought in an intern who quickly demonstrated an aptitude with working with APIs. The next round of edits to Skynet gave him all that he needed to make our Skytap systems self document in Confluence. Nearly overnight we started getting requests from uses asking for improvements to these pages as they were already providing significant value and we were excited about what else the pages could show users. This is even more important due to the dynamic nature of Skytap, as we create and destroy servers throughout the development process, we have confidence that our systems are documented in a central location.
  
As our intern was completing this work, we began working with Okta ("Okta Identity Management") for authentication of our users here at Fulcrum. Okta also has an API and we thought it would be exciting to integrate the creation of users in Okta with those same users in Skytap. With this new task we decided to step back and rethink the design of the Skynet script.
  
The Skynet script, rebranded as the python module 'skytap', is intended as a full Python wrapper of the Skytap API allowing more flexible use of future projects. This redesign also succeeded at our internal goal of being able to open source this work to potentially help other companies that work with Skytap.
  
Now you can get this skynet script both from its github repository if you want to see the source, or from pip (`pip install skytap`) if you want to just dive in and use it.
  
- Skytap GitHub Repository 
- Skytap Documentation
- pypi (pip) page
  
There were some rock stars who contributed to both the module and this blog post who are worth mentioning:

Bill Wellington: One of the coolest dudes to ever set foot in Fulcrum.  He's talented, brilliant, and wicked fast with technology of any kind, but more importantly brings an incredible amount of positive energy, humor, and smiles to any environment, whether its the server room, an office, or a paintball field.  

Michael Knowles:  The colorful Fulcrum genius IT Director who keeps an enterprise humming smooth like butter and purring like a kitten.  He isn't just an impeccably (hip) dresser, he's a deep philosopher who's slowly figuring out how to solve the world's problems - and he can translate life's substrata of intellectual prisms and emotional DNA into visual art.  

Caleb Hawkins: The multifaceted Caleb is part strategist (loves games), part visual creator (talented photographer), and part Renaissance man (can play a mean Ukulele).  Oh... and part awesome, which is what he applied to Fulcrum technical solutions.
  
Cross posted at: wellingtonnet.net, mapledyne.comfulcrumblog.netskytap.com, and calebh93.github.io