# 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][coregem] Ruby gem: [coregem]: http://rubygems.org/gems/deltacloud-core # 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
### EC2 Driver For the Amazon EC2 you need to install the [aws](https://github.com/appoxy/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](http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key) 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](http://www.opennebula.org/) 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.