I have the following scenario where I'm building a custom IaaS cloud service such that: The IaaS cloud uses an arbitrary cluster of hosts, i.e., the cluster nodes can possibly have different OS and VMM (Virtual Machine Monitor) like in a volunteer infrastructure situation. I need to ensure that the "service layer" via which the client creates, controls and manages the VMs is decoupled from the hypervisor specific details. For instance, I'd like to have a JDBC style API/SPI (let me call it VMMC -- Virtual Machine Monitor Connector API) to interact with the VMM and VMs. The API should shield the service layer from the VMM specific nuances, and the SPI allows plugging in the hypervisors without affecting the service layer code. A VMM would have a driver for such an SPI (analogous to JDBC drivers for different RDBMS engines). As of now, I could not find out any standard API/SPI against which I can code my service layer and also hope to get some "drivers"