Skip to content

Implementing_New_Providers

Matt Wagner edited this page Oct 25, 2012 · 1 revision

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 Aeolus Components support your new provider.

  1. Deltacloud needs a new driver added to support managing your new provider.
  2. Image Factory likely needs to be updated to know how to build and push images to the new provider.
  3. 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

The documented functionality isn’t in Image Factory just yet as of 16-May–2012, but https://github.com/aeolusproject/imagefactory/blob/feature/plugins/Documentation/ImageFactory-Plugins.markdown describes the way plugins for providers can be written in the future.

3 - Aeolus Conductor changes

This commit by Oneiroi shows a few of the changes that are needed. In greater detail:

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|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