← Back to team overview

openstack team mailing list archive

Re: Canonical AWSOME

 

>
> If EC2 API is limiting what we can do, that's not going to change just
> because you move the EC2 API implementation into a proxy in front of the
> OpenStack API. The only difference is that it's suddenly the AWSOME
> development team's problem.
>

I think it's actually the EC2 API caller's problem.  It's easy to map a
subset to a superset, but you can't cover the superset with the subset.
 Suppose Quantum defines e.g. Layer 2 security groups, which I think has no
parallel in EC2.  If you want to use L2 security groups, you'd have to use
the OpenStack API.

A nice AWSOME developer might treat it as their problem, but it's not
really.

> With one native API, we can focus all our energies on making sure that API
> > works.  Then, knowing that the native API works, we can build other APIs
> on
> > top through simple translation layers, and they will work also.  Other
> APIs
> > can be built on top in the same way (e.g. OCCI)
>
> Sorry, I'm having trouble here.. Are you suggesting that having two
> sibling frontend API's talking to a shared backend API is poor software
> engineering, but layering similar purposed API's on top of each other
> like this is good software engineering?


Obviously not when you put it like that :-)

The difference that I see is whether the 'service' layer is documented and
kept stable (i.e. subject to API evolution rules).  Right now, we do that
work for the OpenStack API only.

I think it's great if someone is going to document and stabilize our
internal APIs.  However, unless you're willing to do it personally, I don't
think anyone should assume it'll be done.

So my viewpoint is that, while it would be great to have interface
contracts on all our internal interfaces, I'll believe it when I see it.
 Until then, we have one stable interface, and so using that stable
interface as the service layer seems like a sensible approach.

I can see us using ProtocolBuffers or JSON schema for messages that go over
the message bus, maybe even in Folsom.  I can't see us locking down the
other code interfaces before we give up on this Python thing and port to
Java, i.e. it's not going to happen.

Actually, I think JSON schema for our message-bus messages might be a
really good idea (tm).  Violations could just be warnings until we get
things locked down... maybe I should propose a blueprint? (Although I have
enough of a blueprint backlog as it is...)

Justin

Follow ups

References