← Back to team overview

openstack team mailing list archive

Re: Cross-zone instance identifiers in EC2 API - Is it worth the effort?

 

On Jul 8, 2011, at 10:36 AM, Sandy Walsh wrote:

> +1 to Soren's argument that ec2 is the 1000lb gorilla and should be central to nova. We definitely need to support it with as close to 100% compatibility as we can. 
> 
> Sounds like the only option is to "embrace and extend" it. Do everything it can do, and layer on what we need provided it doesn't break the core EC2 commands. If the customer wants pure EC2, they'll have to live with the limitations.
> 
> That said, is this the proposal I'm hearing? ...
> 
> Since our separation is done at the service.api layer, the service.api's get pulled in two directions with each change in ec2/os. The idea is to have ec2 be a translation layer to os api? Preventing ec2 api from calling [service].api directly?
> 
> So, instead of 
> 
> EC2 Client   OS Client
>   |             |
> EC2 API        OS API
>    \           /
>   [Service] API
> 
> We'd be shifting to:
> 
> EC2 Client ---- EC2 API
>                        |
> OS Client ------ OS API
>                        |
>                 [Service] API
> 
> I need to think more about this, but at first blush, it doesn't seem like such a [bad] thing? At some point the abstraction layer needs to be locked down doesn't it?
> 

I think it actually looks more like this right now: 


EC2 Client   OS Client
  |             |
EC2 API        OS API
   \           /
  [nova-*] service APIs

There isn't really a single back-end API for the front-end APIs to call into. Instead, each of them makes calls to the multiple service APIs (e.g., scheduler, network, compute). 

I would advocate for something more like this:


EC2 Client   OS Client
  |             |
EC2 API        OS API
   \           /
  internal nova API
          |
  [nova-*] service APIs


This is a single, unified API that is meant only for internal use. This would reduce the coupling between front-end and back-end. It would make it easier for someone with less expertise in the code (hello!) to find the location in the code that answers questions like: "What does nova do when a user requests that an instance is launched?"   They would just look at the internal API and find the appropriate method. It would also make it easier to add additional front-ends, if there's ever any interest in that.


Lorin
--
Lorin Hochstein, Computer Scientist
USC Information Sciences Institute
703.812.3710
http://www.east.isi.edu/~lorin


Follow ups

References