Deltacloud Drivers
Deltacloud provides drivers for a growing number of popular IaaS cloud providers. This page contains notes pertinent to specific cloud provider drivers, such as the credentials that should be used for a given cloud provider. Furthermore the information here outlines the mechanism through which any API call sent by a given client to a Deltacloud server instance may be routed to a specific driver, regardless of the 'default' driver that the Deltacloud server was invoked for.
Dynamic driver switching
When the Deltacloud server is started it is passed a parameter that specifies the default driver to be used for API operations:
$ deltacloudd -i ec2
The above for example starts the Detlacloud server with the Amazon EC2 driver. Whilst it is possible to start a number of Deltacloud server instances for each cloud provider that you wish to connect to (e.g., on different ports), a mechanism is provided with which to instruct the server to use a specific driver, regardless of the current default. The Deltacloud API drivers colletion (e.g. GET /api/drivers) provides a list of all currently supported cloud provider drivers.
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 in the notes for each driver below.
The driver and provider can be selected in one of two ways:
- Through the request headers
X-Deltacloud-DriverandX-Deltacloud-Provider. For example, including the headersX-Deltacloud-Driver: ec2andX-Deltacloud-Provider: eu-west-1ensures 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
driverandproviderin theapicomponent of the server's URL. For example, requestinghttp://localhost:3001/api;driver=ec2;provider=eu-west-1has the same effect as using the two request headers in the example above.
Driver functionality and Credentials
Compute Driver Functionality
| 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 | yes | 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 | yes | yes | yes | yes | yes | yes | yes | yes | yes |
| OpenStack | yes | yes | yes | yes | yes | yes | yes | yes | yes |
Storage Driver Functionality
| Create new buckets | Update/delete buckets | 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 | yes | yes | yes | yes | yes | yes |
Deltacloud uses basic HTTP authentication to receive credentials from the client and passes them through to the backend cloud it is talking to. The credentials always consist of a username and password, and are never stored on the server. The exact credentials for logging into the server, and where you find them, depends on the backend cloud that the server is talking to.
The following table gives details about the credentials that must be provided for each of the supported clouds. The entry from the Driver column needs to be passed as the -i option to the deltacloudd server daemon. Note that some of the drivers require additional information, e.g., API endpoint URL's, be passed through environment variables, as addressed in the Notes for Specific Drivers section below.
Cloud provider credentials
| Cloud | Driver | Username | Password | Notes |
|---|---|---|---|---|
| mock | mock | mockuser | mockpassword | The mock driver doesn't talk to any cloud; it just pretends to be a cloud |
| Amazon EC2/S3 | ec2 | Access Key ID | Secret Access Key | This information can be found on the Security Credentials page in your AWS account |
| Eucalyptus | eucalyptus | Access Key ID | Secret Access Key | |
| GoGrid | gogrid | API Key | Shared Secret | Go to My Account > API Keys for your account and click on the key you want to use to find the shared secret. |
| IBM SBC | sbc | Username | Password | |
| Microsoft Azure (Storage Account only) | azure | Public Storage Account Name | Primary Access Key | The Storage Account Name is chosen when you create the service (e.g. name in http://name.blob.core.windows.net/). This and the access key are available from the service control panel. |
| OpenNebula | opennebula | OpenNebula user | OpenNebula password | Set the environment variable OCCI_URL to the address on which OpenNebula's OCCI server is listening. |
| Rackspace Cloud Servers/Cloud Files | rackspace | Rackspace user name | API Key | Obtain the key from the API Access page in your control panel |
| RHEV-M | rhevm | RHEV-M user name plus Windows domain , e.g., admin@rhevm.example.com | RHEV-M password | Set environment variable API_PROVIDER to the URL of the RHEV-M REST API endpoint. |
| Rimuhosting | rimuhosting | not used (?) | API Key | |
| Terremark | terremark | Username | Password | |
| VMware vSphere | vsphere | vSphere user | vSphere user password | Set environment variable API_PROVIDER to the hostname of the vSphere server |
| OpenStack | openstack | OpenStack user | OpenStack user password | Set environment variable API_PROVIDER to the URL of OpenStack API entrypoint |
Notes on specific drivers
EC2 Driver
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.
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 supports latest release of Red Hat Enterprise Virtualization Manager (3.0 currently). In order to make the driver work with this provider, you need to set an/the API_PROVIDER environment variable or use the 'X-Deltacloud-Provider' request header to the URL of the RHEV-M REST API entry point. The usual URL looks like:
API_PROVIDER="https://rhevm.hostname.com:8443/rhevm-api;645e425e-66fe-4ac9-8874-537bd10ef08d"
Note: To make sure that you have right credentials, you can try to access https://rhevm.hostname.com:8443/rhevm-api in your browser. If you're able to authenticate within the browser, then the crendentials you used are valid Deltacloud credentials.
Note: In order to make RHEV-M driver work properly, you need to set the RHEV-M Data Center UUID you want to speak with in API_PROVIDER url (see the example above). To obtain a list of all Data Centers you can choose from, start Deltacloud API without specifying a datacenter in the API_PROVIDER URL and do this request:
GET /api/drivers/rhevm?format=xml
The list of possible datacenters will appear in the 'providers' section.
VMware vSphere Driver
For details on how to make the VMware vSphere driver work with Deltacloud API, please refer to vSphere Setup in Aeolus project wiki.
In order to connect to vSphere, you need to set the API_PROVIDER environment variable or use the 'X-Deltacloud-Provider' HTTP header in the request to the vSphere host you want to use. Example:
API_PROVIDER="vsphere.hostname.com"
The username and password in 401 challenge should be the same as those used in the vSphere Control Center.
OpenStack Driver
To connect to OpenStack API, you will need to set the API_provider environment variable or the 'X-Deltacloud-Provider' HTTP header to a valid OpenStack API entrypoint.
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.
The OpenNebula driver has been updated to support v3.x of the OpenNebula API. The driver is contributed by Daniel Molina who has also put together a 'how to' for using OpenNebula through Deltacloud which is available here.
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.