Skip to content

Implementing New Providers

danmacpherson edited this page Feb 7, 2013 · 3 revisions

Implementing New Providers

Below are some notes on implementing support for a new cloud provider in Aeolus.

Overview

Getting Aeolus support for a new cloud provider requires making sure several key support your new provider.

  • Deltacloud needs a new driver added to support managing your new provider.
  • Image Factory likely needs to be updated to know how to build and push images to the new provider.
  • Aeolus Conductor needs some changes to know what credentials to collect, etc.
  1. Adding a new Deltacloud Driver

    • Adding a new Deltacloud driver is arguably the most important step, and will get you far.Fortunately, the Deltacloud team has some detailed documentation on adding a new driver for your provider.
  2. Image Factory support

  3. Aeolus Conductor changes

Update db/seeds.rb

The seeds.rb file contains initialization data for the database. You will need to define a ProviderType object. For instance, if you are adding support for Foo Bar provider, with a Deltacloud provider named “foo_bar”, you would want to add the following:

ProviderType.create!(:name => "Foo Bar", :deltacloud_driver => "foo_bar")

The :name attribute is what is displayed to the end user and may contain spaces and other character. :deltacloud_driver must match the provider type added in Deltacloud; it should not contain spaces and is customarily lower-cased.

Note that db/seeds.rb is only loaded when you run aeolus-configure, or if you manually run rake db:seeds, and is meant for initialization of a fresh database. Most of the time you’ll want to run aeolus-cleanup (warning: this will wipe your database and other configuration information) and then run aeolus-configure to include your new provider. (If you are savvy with the Using_the_Rails_console and don’t want to re-initialize your database from seeds.rb, you could run the line added to seeds.rb in the console.)

Modify ProvidersController to support new provider

Currently, app/controllers/providers_controller has a hard-coded list of supported provider types. (This may change in the future.) You just need to append the :name value above (e.g., “Foo Bar”) to the available_providers array. Until you do this, Conductor will not use the new provider.

en.yml changes

TBD, sorry :(

CredentialDefinitions

Before Conductor will collect credentials for a new ProviderType, you may need to create new CredentialDefinitions. However, seeds.rb will automatically create a “Username” and “Password” CredentialDefinition for all new providers when run. If that is all you are collecting, no action is needed here. If your provider does need additional authentication details (as is the case with Amazon EC2), you will need to edit seeds.rb to add extended CredentialDefinitions.

Getting Help

We’re always happy to help add support for new cloud providers! Feel free to contact us in #aeolus on Freenode, or join the aeolus-devel mailing list.

Clone this wiki locally