Last week my new iPhone application SiMU Lab was placed for sale (free) on the Apple App Store. I had been working on it for about 9 months, yet only a handful of people inside and outside of Cisco knew about the work. When it came to light on it¿s launch day I was asked to write a blog post about why and how I wrote the application. This is that blog post.
What is SiMU Lab? A simple explanation of SiMU is that it is an iPhone interface for Ciscos Unified Compute System (UCS). Because it is on an iPhone it focuses on things that you might need to do when you are away from your desk and stays away from the nitty-gritty configuration you need to do to install or truly use the power of the system. It is a simple system, which shows what could be possible with the XML API built into UCS.
The development of SiMU started while I was in class for the UCS late last year. We briefly covered the XML interface that¿s used by the UCSM (manager for the UCS). I was in San Jose, CA staying in a hotel bored the first night when a though came through my head that XML is basically just formatted text and if I could write my own application that sends and receives text, I could control an entire UCS from it. Was it possible that I could control hundreds of servers and the infrastructure from something that just sends and receives text?
One of the benefits of class was that we had access to the UCS labs and they were ours until about 1am each night. That first night I started using a telnet interface to the UCSM to login, get a session cookie, and logout. It really was as easy as sending text and reading the reply. That is when I decided I was going to do something but I was not quite sure what yet. I wanted "it" to be useful so people would want to use it. I also thought it should show how the UCSM XML API is open and easy to use (I am in sales after all). And finally it should have some sort of "wow" factor to enhance both of the privies objectives. That lead me to the idea of writing an iPhone app.
I've done some PERL programming to parse text files before, and had a C programming class in college about 16 years ago so the idea of building an application in Objective C (The Apple object oriented programming language) was fairly daunting. I downloaded the Apple iPhone SDK the next day in the background while paying attention in class. That evening I went to work on my new app. By the next morning I had built the first screen and had written the code to login to the lab system. After a few modifications I was able to get it working. By the end the week (working in the evenings since I was in class all day) I was able to start pulling basic information from the UCS and storing it temporarily in the iPhone so I could use it later.
There were a few things that I was most concerned about while building the application with respect to the UCS. The first was security. The UCS XML API uses the same login authentication methods as the standard GUI and SSH do, so my application (and yours) can't usurp the security settings set by the system administrator. It is also capable of using SSL to encrypt all of the transactions so as long as you can make an HTTPS connection, you've got that covered. My second biggest concern was the possibility of doing something "bad" in the API and causing an unexplained error or problem on the system. This is where I found how good the programers were that developed the API. I did some terrible things with both poorly formatted XML, and general abuse of the system while never causing a problem to the units I was working on. I'm not saying that you can't somehow cause a problem, but I did some pretty bad things by mistake and never did. I did get a lot of return XML code saying that I didn't do anything useful and that I should try again. It didn't really say that, but that's how I interpreted it.
One of the great things about the UCSM Java application that comes embedded in the UCS system is that it both logs all of the XML data that it sends and receives, and you are able to right-click many things in the GUI and it will show you the XML code for that object. I used both of these extensively over the next few weeks to figure out how to work with the API and get the information I wanted. We (Cisco) has since created the Cisco Developer Community that not only gives you the XML Schemes, but also many examples of how to interact with the UCSM. I'm using the resources there quite a bit lately, especially the UCS Platform Emulator. The Emulator is a virtual machine that you run under VMware and it simulates a UCS system with user assignable numbers of chassis and blades. In the current version you can have 8 chassis with 8 blades each (current version of the Emulator). The Emulator is a great way to do development anywhere and anytime you want without having to have access to a real UCS system (It is running right now on my computer as I type this) and it is free from Cisco when you fill out some paperwork at the development site.
Nine months ago I did not know about the XML API for UCS or about XML either. I also didn't know anything about iPhone programming and the SDK. With the help of the Internet (I would have to guess that 60% of my application is code that I derived at some point from Internet searches) and the Cisco Developer Community I was able to build my application and get it posted to the app store. If someone like me with almost no programming experience can build something useful and informative there has to be people out there that can truly build a great application. I am looking forward to what the next person can build to manage and control the UCS. It is ready for the next great thing, you just need to go out there and build it.
Tige Phillips (Cisco Systems Engineer) released his Simple iPhone Monitoring of UCS in a lab (SiMU Lab) tool to the iTunes App Store (Link to iTunes Store is below). Many of our Systems Engineers been testing the beta version for a while now and the feeling of power (and control) that it gives you when you are looking at your iPhone to control an entire UCS system is amazing! It is also a proof point that the XML interface of UCS Manager really is powerful. Can you do this with your legacy blade servers?
If you have a UCS system (and an iPhone/iPad) you may be interested in giving this a try. Here is a summary of the supported features.
- Assign blades to Service Profiles
- Change descriptions of Blades and Service Profiles
- Change Service Profile assignment
- Save Username and Server Address
- Turn blades off/on and reset them
- Turn on both chassis and blade locator lights
- Un-associate blades from Service Profiles
- View information on Errors, Blades, PSUs, Server Profiles
NOTE: This is not an officially supported (via Cisco TAC) Cisco tool, but rather an excellent example of the flexibility of open interfaces available through the Cisco UCS.Link to iTunes Download