make sure proper exceptions are raised for ec2 id conversion and add tests

This commit is contained in:
Vishvananda Ishaya
2011-05-11 11:02:01 -07:00
parent eebd99a695
commit 672af33630
2 changed files with 19 additions and 2 deletions

View File

@@ -972,7 +972,7 @@ class ImageCommands(object):
try: try:
internal_id = ec2utils.ec2_id_to_id(old_image_id) internal_id = ec2utils.ec2_id_to_id(old_image_id)
image = self.image_service.show(context, internal_id) image = self.image_service.show(context, internal_id)
except exception.NotFound: except (exception.InvalidEc2Id, exception.ImageNotFound):
image = self.image_service.show_by_name(context, old_image_id) image = self.image_service.show_by_name(context, old_image_id)
return image['id'] return image['id']

View File

@@ -28,10 +28,12 @@ import StringIO
import webob import webob
from nova import context from nova import context
from nova import exception
from nova import test from nova import test
from nova.api import ec2 from nova.api import ec2
from nova.api.ec2 import cloud
from nova.api.ec2 import apirequest from nova.api.ec2 import apirequest
from nova.api.ec2 import cloud
from nova.api.ec2 import ec2utils
from nova.auth import manager from nova.auth import manager
@@ -101,6 +103,21 @@ class XmlConversionTestCase(test.TestCase):
self.assertEqual(conv('-0'), 0) self.assertEqual(conv('-0'), 0)
class Ec2utilsTestCase(test.TestCase):
def test_ec2_id_to_id(self):
self.assertEqual(ec2utils.ec2_id_to_id('i-0000001e'), 30)
self.assertEqual(ec2utils.ec2_id_to_id('ami-1d'), 29)
def test_bad_ec2_id(self):
self.assertRaises(exception.InvalidEc2Id,
ec2utils.ec2_id_to_id,
'badone')
def test_id_to_ec2_id(self):
self.assertEqual(ec2utils.id_to_ec2_id(30), 'i-0000001e')
self.assertEqual(ec2utils.id_to_ec2_id(29, 'ami-%08x'), 'ami-0000001d')
class ApiEc2TestCase(test.TestCase): class ApiEc2TestCase(test.TestCase):
"""Unit test for the cloud controller on an EC2 API""" """Unit test for the cloud controller on an EC2 API"""
def setUp(self): def setUp(self):