Deltacloud, a cross-cloud web service API

Abstract

Deltacloud defines a web service API for interacting with cloud service providers and resources in those clouds in a unified manner. In addition, it consists of a number of implementations of this API for the most popular clouds.

Proposal

Define a REST-based API for managing and manipulating cloud resources in a manner that isolates the API client as much as possible from the particulars of specific cloud API's

Provide an open API definition for cloud providers for their IaaS clouds and a basis on which PaaS providers can layer their offering

Provide image management and directory capabilities as part of the API

The current implementation allows instance lifecycle management (create, start, stop, destroy, reboot), and querying of related resources like available images, instance sizes, and allowed instance actions for a number of public and private clouds

Future enhancements should broaden the scope of the API to include networking, firewalling, authentication, accounting, and image management

Background

An important issue for cloud users is that of avoiding lock-in to a specific cloud. By providing a cross-cloud API for infrastructure-as-a-service (IaaS) clouds, Deltacloud addresses this concern and strives to provide the best possible API for writing cloud-management applications that can target multiple clouds.

There are also no efforts currently to define a truly open-source cloud API, one for which there is a proper upstream, independent of any specific cloud provider. Deltacloud API strives to create a community around building an open-source cloud API in a manner that fully allows for tried-and-true open source mechanisms such as user-driven innovation.

By providing a web-service API, Deltacloud is language agnostic, and one of its subordinated goals is to provide a practical vocabulary for talking about IaaS cloud resources and operations on them.

Rationale

IaaS clouds provide numerous advantages to their users, for example, making provisioning new servers more agile. If users directly use the 'native' cloud API's, they risk locking themselves in to the API of a specific cloud provider.

There is therefore a strong need for an API that can be used across a wide range of public and private clouds, and that can serve as the basis for developing cloud management applications; in contrast to several existing language-specific efforts in this direction, Deltacloud is conceived as a web service.

This will allow the project to attract a broad community of users of the API and cloud providers interested in offering a truly open-source API, with a proper upstream community.

We strongly believe that the best way to drive such an API effort is by developing the API and open-source implementations of the API side-by-side.

Initial Goals

Deltacloud is an existing open source project; initially started by Red Hat, it has attracted a number of outside contributors. We look at moving this project to the ASF as the next step to broaden the community, and put the project on solid footing since the ASF governance model is well suited for the Deltacloud project goals. The ASF is a great location for Deltacloud to build a community and will benefit from ASL licensing.

Current Status

Deltacloud API is licensed under the LGPL:

Deltacloud Website (http://deltacloud.org) There are two projects hosted there: the API under consideration here and the Aggregator (not part of this proposal, though also open source)

Transition to Apache

All current contributors have consented to relicensing the Deltacloud API code under the Apache Software License 2.0; the code will be relicensed to ASL 2.0 on acceptance into the Incubator.

Meritocracy

Deltacloud API accepts patches from anybody, based solely on technical merit, and will give commit rights to contributors with a proven technical track record. Communication is done through an IRC channel on freenode and the two mailing lists above. The mailing lists will be migrated to the ASF project list on acceptance into the Incubator.

Community

Because it was started by Red Hat, the majority of the initial contribution is from Red Hat employees, though we have received and accepted a number of patches from outside sources, particularly, from a number of cloud providers. We expect that the project will greatly increase in contribution base, and this is one aspect the project will monitor in becoming ready for graduation.

API Developers

Alignment

Currently, there are no other Apache projects concerned with building a cross-cloud API as a web service. However, we feel it will be a strong complement to the set of Apache projects, and provide any other Apache project an API for interacting with any cloud provider.

Known Risks

Orphaned Products

Deltacloud API is actively used by other Red Hat projects. I have received interest in Deltacloud API both from some cloud providers and other organizations in joining the project. We feel that it is importatant to put formal governance in place both for the project and the contributors as the project expands. We feel the ASF is the best location for this.

Homogenous Developers

While much of the initial code base has been written by Red Hat, several of the backend drivers and some important aspects of the API design have been heavily influenced by outside contributors.

Reliance on Salaried Developers

Currently the project has mostly salaried developers. Expanding the diversity of the project's developers is one of the areas we will actively work on in the Incubator, and will be a crucial factor in making Deltacloud a successful project.

Relationships with Other Apache Products

Currently there are not really any stong relationships with other Apache projects. There is a certain amount of overlap with libcloud (http://incubator.apache.org/libcloud/), though the projects differ in scope and goals. At its most basic, libcloud is a Python in-process API, whereas Deltacloud is a web service written in Ruby.

An Excessive Fascination with the Apache Brand

We seek to build a lasting community around Deltacloud API; the most important reason for proposing this project for the incubator is to clarify project governance to other parties, to allow them more easily to join and contribute to the project, and for the project to be managed and governed independently.