Hi All, I had a great chat with Nirmal on IRC today. I got a good feel for what it will take to add Rackspace support to Stratos. Here are the work items and stumbling blocks we identified.
1. Get Stratos code and IDE setup (Done). 2. Learn how to deploy Stratos as a user. 3. Learn how to deploy Stratos as a developer from an IDE to test changes to the Cloud Controller (CC). 4. Create a Cartridge (i.e. an Image) [1] for Rackspace. Intermediate stumbling block here is that Rackspace doesn't support customized public images but it does support customized private images. That means we'll have to provide a guide for users to create an Image that will work with Stratos. FYI, Rackspace users can't share images but a user can share an images with it's sub-users. Cartridge creation could be eased by use of Rackspace Deployments [2] but it would take time to get up to speed on that too. 5. Implement a RackspaceIaas by extending org.apache.stratos.cloud.controller.interfaces.Iaas. Minor stumbling block here is that Rackspace doesn't have floating/elastic IPs. Not really a big deal. Picking up the auto assigned public IP after the instance has started will suffice. Iaas.associateAddress() will need to return an empty String. 6. Get the Stratos payload into the Cartridge instance. Major stumbling block here is that Rackspace doesn't support cloud-init like functionality. Servers can be created with something similar known as Personality [3] but it's pretty limited. We could hack something together so that the Image has a script that expects a URL (or some other data) in the Personality file that directs it to download the payload from the CC. This means something would have to be built into the CC to allow this download of the payload file. This was just our initial stab at the problem. Suggestions or alternatives are welcome. 7. Security Rackspace supports key pairs so that's okay. Intermediate stumbling block here is that Rackspace doesn't support security groups. We might have to lock down the machines manually with iptables or something. Here's the list of ports that Stratos uses [4]. 8. Documentation. User and developer documentation 9. Examples. Examples on how to use it. Can anyone see anything we've missed? Are there any assumptions hidden in here? As the Rackspace cloud evolves, some of these pain points will go away. But for now, this is what we have to deal with. Thanks, Everett [1] https://cwiki.apache.org/confluence/display/STRATOS/Creating+a+Cartridge [2] http://www.rackspace.com/blog/automate-your-deployments-quickly-easily-launch-your-app-in-the-rackspace-cloud/ [3] http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Personality-d1e2543.html [4] https://cwiki.apache.org/confluence/display/STRATOS/Common+IaaS+Configurations
