summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2011-01-10 14:49:34 +0000
committerTarmac <>2011-01-10 14:49:34 +0000
commit4830cb5d8959c06fbe480481823bc922a2a59e3e (patch)
treeaba17bd3b69a01b19f58940f0d0c8f4989db21dd /nova/api
parentd9d334bb5520bbbc4af6760cabb9bfd022ec13ef (diff)
parentc8566628d4c15bcaf16baf8fca2a31528e7eac13 (diff)
Fixes describe_instances to filter by a list of instance_ids.
Also adds a test to verify that we don't break this again.
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/ec2/cloud.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index 5360f2de7..7f1a414f3 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -25,7 +25,6 @@ datastore.
import base64
import datetime
import IPy
-import re
import os
from nova import compute
@@ -35,7 +34,6 @@ from nova import db
from nova import exception
from nova import flags
from nova import log as logging
-from nova import quota
from nova import network
from nova import rpc
from nova import utils
@@ -596,19 +594,24 @@ class CloudController(object):
return [{label: x} for x in lst]
def describe_instances(self, context, **kwargs):
- return self._format_describe_instances(context)
+ return self._format_describe_instances(context, **kwargs)
- def _format_describe_instances(self, context):
- return {'reservationSet': self._format_instances(context)}
+ def _format_describe_instances(self, context, **kwargs):
+ return {'reservationSet': self._format_instances(context, **kwargs)}
def _format_run_instances(self, context, reservation_id):
i = self._format_instances(context, reservation_id=reservation_id)
assert len(i) == 1
return i[0]
- def _format_instances(self, context, **kwargs):
+ def _format_instances(self, context, instance_id=None, **kwargs):
reservations = {}
- instances = self.compute_api.get_all(context, **kwargs)
+ # NOTE(vish): instance_id is an optional list of ids to filter by
+ if instance_id:
+ instance_id = [ec2_id_to_id(x) for x in instance_id]
+ instances = [self.compute_api.get(context, x) for x in instance_id]
+ else:
+ instances = self.compute_api.get_all(context, **kwargs)
for instance in instances:
if not context.user.is_admin():
if instance['image_id'] == FLAGS.vpn_image_id: