Deltacloud Drivers

Deltacloud provides drivers for a growing number of popular clouds. All drivers can handle a set of standard operations, some of them also support a number of optional operations to expose the features of specific clouds more closely. The drivers and their capabilities are:

Setting up the code

To set up a Deltacloud core and the drivers, install the deltacloud-core Ruby gem:

# gem install deltacloud-core

RPM package will be available soon.

Launch the server

The server is launched with the deltacloudd command and pass it the name of the driver you want to use:

$ deltacloudd -i mock

This will start a webserver running the mock driver on http://localhost:3001/api; you can simply browse to that URL to get a pretty view of the objects the driver deals with.

Dynamic driver switching

The driver specified with the -i switch when deltacloudd is launched is the default driver. Clients can switch drivers for any request. The list of drivers supported by the server can be obtained from the drivers collection.

Some drivers also support the notion of a provider. Changing the provider makes it possible to use the same driver against different instances of a cloud, for example different regions in EC2 or different installations of RHEV-M. The possible range of values for the provider is driver-specific, and listed below for each driver.

The driver and provider can be selected in one of two ways:

  1. Through the request headers X-Deltacloud-Driver and X-Deltacloud-Provider. For example, including the headers X-Deltacloud-Driver: ec2 and X-Deltacloud-Provider: eu-west-1 ensures that a request will be serviced by the EC2 driver, and that the driver will use the eu-west-1 region in EC2.
  2. Through the matrix request parameters driver and provider in the api component of the server's URL. For example, requesting http://localhost:3001/api;driver=ec2;provider=eu-west-1 has the same effect as using the two request headers mentioned above.

Notes on specific drivers

Compute Drivers

  Create new instances Start stopped instances Stop running instances Reboot running instances Destroy instances List all/get details about hardware profiles List all/get details about realms List all/get details about images List all/get details about instances
Amazon EC2 yes no yes yes yes yes yes yes yes
Eucalyptus yes no yes yes yes yes yes yes yes
IBM SBC yes yes yes yes yes yes yes yes yes
GoGrid yes no yes yes yes yes yes yes yes
OpenNebula yes yes yes no yes yes yes yes yes
Rackspace yes no yes yes yes yes yes yes yes
RHEV-M yes yes yes yes yes yes yes yes yes
RimuHosting yes yes yes yes yes yes yes yes yes
Terremark yes yes yes yes yes yes yes yes yes
vSphere coming soon yes yes yes yes yes yes yes yes yes

Storage Drivers

  Create new containers Update/delete containers Create new blobs Update/delete blobs Read/write blob attributes Read/write individual blob attributes
Amazon S3 yes yes yes yes yes yes
Eucalyptus Walrus yes yes yes yes yes yes
Rackspace CloudFiles yes yes yes yes yes yes
Microsoft Azure yes yes yes yes yes yes
Google Storage coming soon TBD TBD TBD TBD TBD TBD

EC2 Driver

For the Amazon EC2 you need to install the aws Ruby gem:

# gem install aws

When using the driver for Amazon EC2, the credentials passed in response to the HTTP 401 authentication challenge should be your access_key and secret_access_key

These credentials may be found on the Access Identifiers page at Amazon AWS.

The providers for the EC2 driver correspond to AWS's regions, and currently are us-east-1, us-east-1, eu-west-1, ap-southeast-1.

Eucalyptus Driver

The Eucalyptus driver is based on the EC2 driver, and therefore also requires the aws gem.

The driver allows selecting the Eucalyptus installation by setting a provider in the format

ec2=IP[:PORT];s3=IP[:PORT]

For example, for the Eucalyptus installation at 192.168.1.1:8773 and a Walrus installation at 192.168.1.2:8773, the driver can be pointed at that installation by passing the request headers

X-Deltacloud-Driver: eucalyptus
X-Deltacloud-Provider: ec2=192.168.1.1:8773;s3=192.168.1.2:8773

RHEV-M Driver

The RHEV-M driver needs to be installed on a Windows machine which has the RHEV-M Powershell API installed and configured. Assuming the directory structure above is followed, you should copy the file deltacloud/deltacloud-driver-rhevm/config/rhevm_config.yaml.EXAMPLE to be rhevm_config.yaml and edit the file woith the domain you are logging into. The username and pasword is provided via the API.

The actual RHEVM instance you are connecting to is controlled by the RHEVM.dll.config file which is referenced from the profile.ps1 file located in My Documents/WindowsPowershell directory

Rackspace Driver

When using the Rackspace-cloud driver (Rackspace cloud used to be called "Mosso") - the password in a HTTP 401 challenge should be your API key, NOT your rackspace account password. (you can get the API-key, or generate a new one, from the rackspace console).

RimuHosting

Further details coming soon.

OpenNebula

When using the OpenNebula driver, the credentials passed in response to the HTTP 401 authentication challenge should be your OpenNebula user and password.

The address, on which the OCCI server is listening, needs to be defined in an environment variable called OCCI_URL.

IBM Smartcloud Driver

When using the IBM SmartCloud driver, the credentials passed in response to the HTTP 401 authentication challenge should be your IBM SmartCloud username and password.