diff options
| author | Jason Koelker <jason@koelker.net> | 2011-09-14 10:15:20 -0500 |
|---|---|---|
| committer | Jason Koelker <jason@koelker.net> | 2011-09-14 10:15:20 -0500 |
| commit | 84b0492ccfd61a0e7f04db48abb83ec708ddb2d4 (patch) | |
| tree | 08b5a001fb27f633ea3dfa54541effb6ddd2f6a2 | |
| parent | dff4897056f41333dadd7b110692d80a409eb29a (diff) | |
run the instances filter through the network api first, then through the db
| -rw-r--r-- | nova/compute/api.py | 12 |
1 files changed, 11 insertions, 1 deletions
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. |
