From 84b0492ccfd61a0e7f04db48abb83ec708ddb2d4 Mon Sep 17 00:00:00 2001 From: Jason Koelker Date: Wed, 14 Sep 2011 10:15:20 -0500 Subject: run the instances filter through the network api first, then through the db --- nova/compute/api.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/nova/compute/api.py b/nova/compute/api.py index d674224e5..acf7715ff 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -904,7 +904,7 @@ class API(base.Base): if 'reservation_id' in filters: recurse_zones = True - instances = self.db.instance_get_all_by_filters(context, filters) + instances = self._get_instances_by_filters(context, filters) if not recurse_zones: return instances @@ -929,6 +929,16 @@ class API(base.Base): return instances + def _get_instances_by_filters(self, context, filters): + ip_instances = None + if 'ip6' in filters or 'ip' in filters: + ids = self.network_api.get_instance_ids_by_ip_filter(context, + filters) + ip_instances = [self.db.instance_get(id) for id in ids] + + return self.db.instance_get_all_by_filters(context, filters, + ip_instances) + def _cast_compute_message(self, method, context, instance_id, host=None, params=None): """Generic handler for RPC casts to compute. -- cgit