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:
- Through the request headers
X-Deltacloud-Driver
andX-Deltacloud-Provider
. For example, including the headersX-Deltacloud-Driver: ec2
andX-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. - Through the matrix request parameters
driver
andprovider
in theapi
component of the server's URL. For example, requestinghttp://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.