Scalable Architecture and APIs 3.4

OpenNebula has been designed to be easily adapted to any infrastructure and easily extended with new components. The result is a modular system that can implement a variety of Cloud architectures and can interface with multiple datacenter services. In this document we will review the main interfaces of OpenNebula (see figure 1 for an overview), their use and give pointers to additional documentation for each one. We have classified the interfaces in two categories: end-user cloud and system interfaces. Cloud interfaces are primary used to develop tools targeted to the end-user, and they provide a high level abstraction of the functionality provided by the Cloud. On the other hand, the system interfaces expose the full functionality of OpenNebula and are mainly used to adapt and tune the behavior of OpenNebula to the target infrastructure.

Figure 1: OpenNebula Interfaces

1. Cloud Interfaces

Cloud interfaces enable you to manage virtual machines, networks and images through a simple and easy-to-use REST API. The Cloud interfaces hide most of the complexity of a Cloud and are specially suited for end-users. OpenNebula implements two different interfaces, namely:

Use the cloud interface if… you are developing portals, tools or specialized solutions for end-users.

You can find more information at… EC2-Query reference, and OCCI reference guides.

2. System Interfaces

2.1. The OpenNebula XML-RPC Interface

The XML-RPC interface is the primary interface for OpenNebula, and it exposes all the functionality to interface the OpenNebula daemon. Through the XML-RPC interface you can control and manage any OpenNebula resource, including virtual machines, networks, images, users, hosts and clusters.

Use the XML-RPC interface if… you are developing specialized libraries for Cloud applications or you need a low-level interface with the OpenNebula core.

You can find more information at… XML-RPC reference guide.

2.2. The OpenNebula Cloud API (OCA)

The OpenNebula Cloud API provides a simplified and convenient way to interface the OpenNebula core. The OCA interfaces exposes the same functionality as that of the XML-RPC interface. OpenNebula includes two language bindings for OCA: Ruby and JAVA.

Use the OCA interface if… you are developing advanced IaaS tools that need full access to the OpenNebula functionality.

You can find more information at… OCA-Ruby reference guide and the OCA-JAVA reference guide.

2.3. The OpenNebula Drivers Interfaces

The interactions between OpenNebula and the Cloud infrastructure are performed by specific drivers each one addressing a particular area:

Use the driver interfaces if… you need OpenNebula to interface any specific storage, virtualization, monitoring or authorization system already deployed in your datacenter or to tune the behavior of the standard OpenNebula drivers.

You can find more information at… the storage system, the information system and the Authorization system guides.

2.4. The OpenNebula DataBase

OpenNebula saves its state and lots of accounting information in a persistent data-base. OpenNebula can use MySQL or SQLite database that can be easily interfaced with any of DB tool.

Use the OpenNebula DB if… you need to generate custom accounting or billing reports.

You can find more information at… the database schema page.