summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorJohn Tran <jtran@attinteractive.com>2011-04-06 18:22:03 -0700
committerJohn Tran <jtran@attinteractive.com>2011-04-06 18:22:03 -0700
commit655eb8fbd21376e694f8134e42f10ddbc1aafb0e (patch)
treeae6a1cdb23b4ac21d46a6230e8d05ff1dbcfe73e /nova/api
parent134b1b4caa9df1cbba54b09625696e4f60147e05 (diff)
ec2 api run_instances checks for image status must be 'available'. Overhauled test_run_instances for working set of test assertions
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/ec2/cloud.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index 58effd134..0ea0e3603 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -814,10 +814,18 @@ class CloudController(object):
if kwargs.get('ramdisk_id'):
ramdisk = self._get_image(context, kwargs['ramdisk_id'])
kwargs['ramdisk_id'] = ramdisk['id']
+ image = self._get_image(context, kwargs['image_id'])
+ if not image:
+ raise exception.NotFound(_('Image %s not found') %
+ kwargs['image_id'])
+ if not 'properties' in image or \
+ (not 'image_state' in image['properties']) or \
+ (image['properties']['image_state'] is not 'available'):
+ raise exception.ApiError(_('Image must be available'))
instances = self.compute_api.create(context,
instance_type=instance_types.get_by_type(
kwargs.get('instance_type', None)),
- image_id=self._get_image(context, kwargs['image_id'])['id'],
+ image_id = image['id'],
min_count=int(kwargs.get('min_count', max_count)),
max_count=max_count,
kernel_id=kwargs.get('kernel_id'),