-
Notifications
You must be signed in to change notification settings - Fork 27
Implementing New Providers
Below are some notes on implementing support for a new cloud provider in Aeolus.
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.
-
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.
-
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.
-
Aeolus Conductor changes
- This commit by Oneiroi shows a few of the changes that are needed. In greater detail:
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.)
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.
TBD, sorry :(
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.
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.