Tuesday, March 3, 2009

ECP and the ActualMachine

The ActualMachine class in the Enomaly Elastic Computing platform is the abstraction layer that interacts with Libvirt to control virtual machines. Not every method of this class interacts with Libvirt directly. In fact, most methods in the ActualMachine class don't directly interact with Libvirt. There are plenty of methods in this class. The ECP development team is in agreement that this number can certainly be brought down to something a little more cohesive.

To start, we'd like to focus on maintaining the handful of ActualMachine methods that interact directly with Libvirt. As an example, the shutdown() method directly interacts with Libvirt. This is necessary in order to shutdown the virtual machine.

The reason we are going to tackle these Libvirt-coupled methods first is because they are absolutely critical to ECP. Without a clear understanding of how these primitive abstractions behave, we hit a brick wall. I think the ActualMachine class gained a lot of weight in turns of the sheer number of methods because we didn't understand what was happening at the primitive level. By primitive, I mean the primitive reason for ActualMachine's existence. Once we are able to hammer out what it is that the ActualMachine is responsible for, we can lose a lot of the current functionality. Losing it is a good thing in this case. It will come back in a much nicer form.

For an idea of what is happening with the ActualMachine class, take a look at this.