On Mar 18, 2010, at 1:18 PM, Henri Kivelä wrote: > > SoftLayer has SOAP and XML-RPC interfaces. I went trough the pain to try ZSI, > soappy and SUDS. None of them works for creating virtual guests (ordering > part of the API). ZSI and soappy - don't remember the exact problems. SUDS > has problems with performance (SL returns WSDL/XSD which can be close to 1MB, > processing takes seconds), and then with multi-refs when parsing/building > order templates. > > XML-RPC API works, but there was no support for the complex data types > required for ordering. SL fixed this quickly when requested, however. I think xmlrpclib is the way to go, since it won't add any third party dependencies.
> > The API not only covers virtual guests, but pretty much everything. It's > quite powerful. Creating "instances" has to be done by constructing a complex > datatype including varying product items. There are no ready "instance types" > to use. Existing examples were getting a template out from a running node, > modifying it and then using it for ordering. That template call returns a lot > of data, but I was able to get just the required parts out of there and > that's now in the code as an example template. Building new templates takes > time, should make a tool for it. Available packages and items can be digged > out using the API. > > With CloudLayer, which is interesting when it comes to libcloud, there are > two different parts of API (at least): for hardware and virtual guests. > Hardware here is the Bare Metal servers which are bare metal, not virtualized > at all like the name says. Those can be ordered on hourly basis, so I decided > to include it in the implementation, there is need for it. Does someone > disagree with libcloud having this support... > > Because of the data structures for hardware and virtual guests have > differences, destroy_node and other functions have to take this into account. > The implementation is there, could be done neater in proper OO way but works > now. We should probably subclass SoftLayerDriver as SoftLayerBareMetalDriver? > > What is missing: > > - Support for ordering bare metal instances. I've been working on this with > SL support, hope to get it done soon. It's a bit more complicated since there > is no function to get a ready template out of the API. > - create_node function parameters may need to be changed after this bare > metal thing works ... need to think how to do it so that it's easy to > understand and use. Order quantity is missing from there. > - Testing cases. The MockHttp way cannot be used, since xmlrpclib is used. > Maybe something that uses dicts as fixtures. Last night I checked some test cases in, take a look when you have a chance. > > After all, it's quite close. Please have a look and tell if this could be > merged to apache/libcloud, what needs to be done and changed. At least you > can take some code/ideas from there if nothing else ;) I'll poke at your code and merge some of it in tonight or tomorrow. Thanks! Jeremy
