On Jul 11, 2011, at 9:23 AM, Sandy Walsh wrote:

> Ugh, sorry, burned again by outlook web. Let me continue ...
> 
> I'm still stewing on this but at first blush this seems like an artificial 
> abstraction. What do we really gain from having another layer above the 
> service api's? Can't they just live at the service api?
> 
> For example:
> 
> nova.compute.api:create_instance()
> 
> vs. 
> 
> nova.business_layer:create_instance()
> 
> What's the real win here?
> 

I was initially confused by the self.compute_api.create call in the 
nova/api/ec2/cloud.py:CloudController.run_instances method. I think my source 
of confusion was: why is the compute API being called directly, shouldn't the 
scheduler do this? (I didn't realize at the time that this leads to a scheduler 
request). 

Would pushing this down one layer have helped me understand this better? In 
retrospect, maybe not...


> I agree that the heavy lifting logic should be removed from the os/ec2 api 
> layers and only be doing parameter checking ... but they may also do 
> mapping/translations to the underlying service api's.
> 
> Perhaps the issue is that the lower level (nova.[service].api) doesn't have a 
> formal enough definition and is getting pulled in two directions by ec2/os 
> api? Perhaps making this layer have a clear contract is what we're missing?
> 

Yeah, I'm not sure what the best solution is here...


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



> -S
> 
> 
> 
> From: Lorin Hochstein [lo...@isi.edu]
> 
> 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.
> 
> 
> This email may include confidential information. If you received it in error, 
> please delete it.

_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to