From afeb95dfc924ed7e768d76bc5ae4bd4c55e9dcb3 Mon Sep 17 00:00:00 2001 From: Aaron Rosen Date: Fri, 29 Mar 2013 18:09:28 -0700 Subject: Query quantum once for instance's security groups This patch adds the method get_instance_security_group_bindings() which returns all the instance_id's and security groups for a given tenant. This method is then used to avoid querying quantum for it's security groups when using GET /v2//servers/detail. Fixes bug 1161518 Change-Id: Ia28d5573c264f0316ab9fb257ca8e7ae35679883 --- nova/api/openstack/compute/contrib/security_groups.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'nova/api') diff --git a/nova/api/openstack/compute/contrib/security_groups.py b/nova/api/openstack/compute/contrib/security_groups.py index c019011f5..700d9b71e 100644 --- a/nova/api/openstack/compute/contrib/security_groups.py +++ b/nova/api/openstack/compute/contrib/security_groups.py @@ -482,10 +482,11 @@ class SecurityGroupsOutputController(wsgi.Controller): # quantum security groups the requested security groups for the # instance are not in the db and have not been sent to quantum yet. if req.method != 'POST': + sg_instance_bindings = ( + self.security_group_api + .get_instances_security_groups_bindings(context)) for server in servers: - groups = ( - self.security_group_api.get_instance_security_groups( - context, server['id'])) + groups = sg_instance_bindings.get(server['id']) if groups: server[key] = groups # In this section of code len(servers) == 1 as you can only POST -- cgit