Here are a few -- instance_get_all_by_filters joins manually with instances_fill_metadata -- https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L1890 https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L1782 Almost all instance query functions manually join with instance_metadata. Another example was compute_node_get_all function which joined compute_node, services and ip tables. But it is simplified in current codebase (I am working on Juno) On Tue, Aug 11, 2015 at 3:09 PM, Clint Byrum <clint at fewbar.com> wrote: > Excerpts from Sachin Manpathak's message of 2015-08-12 05:40:36 +0800: > > Hi folks, > > Nova codebase seems to follow manual joins model where all data required > by > > an API is fetched from multiple tables and then joined manually by using > > (in most cases) python dictionary lookups. > > > > I was wondering about the basis reasoning for doing so. I usually find > > openstack services to be CPU bound in a medium sized environment and > > non-trivial utilization seems to be from parts of code which do manual > > joins. > > Could you please cite specific examples so we can follow along with your > thinking without having to repeat your analysis? > > Thanks! > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150811/3c0407de/attachment.html>