Conductor Image Management API
In order to lock down components, it has been proposed that we offer an API on top of conductor that exposes
image management functionality (pretty much what is currently offered by aeolus-image command line).
This would mean that any client wanting to manipulate objects would talk directly with conductor and go
through conductor authentication etc... This gives a central point of contact for image related tasks
via the conductor API and also hides the bits and pieces going on in the background, i.e. iwhd and
imagefactory, that really a user is not concerned about.
To recap the state of aeolus-image:
At the moment the rubygem aeolus-image that is used by conductor serves 2 purposes: firstly, it acts as a
client lib to iwhd (which conductor uses in the new catalogue functionality); secondly it holds all the
logic for the CLI.
So as it stands, we need to:
1) Rip out the object model (iwhd client part) of aeolus-image and place it in a new rubygem; this will serve
solely as a client lib rubygem for iwhd and imagefactory called "aeolus-image-resource" (or another
better name)
2) Add imagefactory interaction to the iwhd/imagefactory client lib rubygem - aeolus-image-resource.
This will interface with the new ImageFactory REST API, and will be used to create builds and push images
etc... using the same object model that is currently in place inside aeolus-image, which is used for
interfacing with iwhd. This will also replace code that talks to the imagefactorys qmf interface which is
in the aeolus-image CLI code.
3) Add to the current REST API in conductor, to add in the extra resources we need:
images
builds
target_images
provider_images
This probably just consists of wrapping the aeolus-image-resource calls in the relevant controllers.
(Continue reading)