Hi all,

I just sent a patch (ACE-277 ) with functionality to configure cloud nodes from 
the UI before starting them. This was only possible from a configuration file 
before with the limitation that you could only launch one type of node (the 
same hardware, image, bootscript etc.). 
To support this some refactoring in the NodeLauncher and AmazonNodeLauncher 
were required which I would like to discuss here.

The NodeLauncher interface should be independent of the type of nodes being 
used (e.g. cloud nodes, embedded devices etc.). The UI however should contain 
configuration options specific for the type of nodes being launched. 
Configuring cloud nodes using jclouds for example should support setting a 
hardware type, private key file, image id etc. Those properties are not 
relevant for launching other types of nodes/devices. 

A new interface NodeLauncherConfig is introduced. This interface is empty 
because as described above it's impossible to come up with a list of 
configuration properties that all our potential target types support. This way 
the NodeLauncher interface is still abstract, while it supports the concept of 
configuration.

A NodeLauncher implementation should provide an implementation of NodeLauncher 
with specific properties for that kind of nodes it can launch. The 
AmazonNodeLauncher for example should provide an implementation with properties 
reflecting the jclouds API. The NodeLauncher implementation should cast the 
NodeLauncher interface to it's specific implementation to do anything useful 
with it.

The UI is also specifically built for a type of node. The current 
implementation is specifically built for cloud nodes for example. A NodePanel 
should therefore also cast the NodeLauncherConfig to the specific 
implementation. This doesn't brake abstractions, because the UI is designed for 
specific implementation. A new type of node launcher should also provide a new 
UI. 

Another thing to improve is changing the AmazonNodeLauncher to a more general 
JcloudsNodeLauncher so that it can launch nodes on different clouds. I made 
some preparations for that in this patch, and can finalize that work after this 
patch is applied.

Cheers,

Paul Bakker

Reply via email to