Anyone that builds an XaaS (or even a complex website) ends up building a management layer on top of their cloud; there's no point in everyone rebuilding the same thing, and it should probably have a sane API. FathomCloud can replace that management layer.
There are definitely lots of rough edges. If anyone wants to try it out, please email me with any issues and I'll do my best. And I'm happy to answer any questions!
For a simple instance, inbound traffic only works over IPv6. That's not really practical today, so there's support for floating IPv4 addresses. You can assign one IPv4 to an instance running a load balancer (haproxy, nginx), and then that uses IPv6 to talk to the backend instances. That's going to be documented within the week (I hope!)
Sadly, EC2 doesn't support IPv6, so we use protocol 41 (which wraps IPv6 in IPv4 packets), giving each EC2 instance a 2002: address. They can then talk to each other, or to other FathomCloud instances. They can talk to IPv6 servers that have a 2002: address configured.
Finally, most end-users don't have IPv6 either. There's a trick using SSH and tunnels to give you a quick-and-easy VPN, so you can get onto IPv6 from any machine. I'm going to blog about this, as it's the easiest way to get IPv6 and you get a VPN for free.
So it's a bit messy in the details, but with IPv4 floating IPs I think it all works. Using a single floating IPv4 to a loadbalancer is "the right thing to do" anyway in a cloud webserver setup. And I think it's totally worth it to say goodbye to NAT forever!
Part of the idea was not to use _any_ of the existing OpenStack code. Otherwise the temptation to copy-and-paste from OpenStack would have been too high, and copying and pasting defeats the whole purpose of doing a second implementation.
Equally, while I think there are some concepts that I hope will make it into the official OpenStack (such as a consistent Swift), there can be no copy and paste 'upstream' either because of the language barrier, which means that FathomCloud can be a true playground for experimentation.
I was writing a cross-provider control console. Got a fair way along, but haven't released it.
The only call that I think _might_ be dangerous to expose is the login API, but that should be rate-limited and / or have lockout anyway.
I've opened a bug to support CORS in FathomCloud. It's not a lot of work (I already have the filter in the repo, it's just not configured in). I just want to think it through to make sure it's safe: https://github.com/fathomdb/cloud/issues/50
I haven't chased it up, but I think it's an important use-case.
It's definitely an important use case - no argument here :-)