summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2011-11-08 16:00:46 +0000
committerGerrit Code Review <review@openstack.org>2011-11-08 16:00:46 +0000
commit53ea6a8e09c20e520f8cabc9c686b2363efe45cc (patch)
tree56820d2571eedf60c24097c02d4f51ffafbb79ac
parentab633ec05494a8bde82a4a6d90ab057f1a4f9bbd (diff)
parent77e1684332cfc6e2cad1f1fc93ab5fa6caf231b9 (diff)
downloadnova-53ea6a8e09c20e520f8cabc9c686b2363efe45cc.tar.gz
nova-53ea6a8e09c20e520f8cabc9c686b2363efe45cc.tar.xz
nova-53ea6a8e09c20e520f8cabc9c686b2363efe45cc.zip
Merge "Removing duplicate kernel/ramdisk check in OSAPI"
-rw-r--r--nova/api/openstack/servers.py52
-rw-r--r--nova/tests/api/openstack/contrib/test_createserverext.py5
-rw-r--r--nova/tests/api/openstack/test_servers.py62
3 files changed, 1 insertions, 118 deletions
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index 949a33f43..a9b5af653 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -191,45 +191,6 @@ class Controller(object):
msg = _("Server name is an empty string")
raise exc.HTTPBadRequest(explanation=msg)
- def _get_kernel_ramdisk_from_image(self, req, image_service, image_id):
- """Fetch an image from the ImageService, then if present, return the
- associated kernel and ramdisk image IDs.
- """
- context = req.environ['nova.context']
- image_meta = image_service.show(context, image_id)
- # NOTE(sirp): extracted to a separate method to aid unit-testing, the
- # new method doesn't need a request obj or an ImageService stub
- kernel_id, ramdisk_id = self._do_get_kernel_ramdisk_from_image(
- image_meta)
- return kernel_id, ramdisk_id
-
- @staticmethod
- def _do_get_kernel_ramdisk_from_image(image_meta):
- """Given an ImageService image_meta, return kernel and ramdisk image
- ids if present.
-
- This is only valid for `ami` style images.
- """
- image_id = image_meta['id']
- if image_meta['status'] != 'active':
- raise exception.ImageUnacceptable(image_id=image_id,
- reason=_("status is not active"))
-
- if image_meta.get('container_format') != 'ami':
- return None, None
-
- try:
- kernel_id = image_meta['properties']['kernel_id']
- except KeyError:
- raise exception.KernelNotFoundForImage(image_id=image_id)
-
- try:
- ramdisk_id = image_meta['properties']['ramdisk_id']
- except KeyError:
- ramdisk_id = None
-
- return kernel_id, ramdisk_id
-
def _get_injected_files(self, personality):
"""
Create a list of injected files from the personality attribute
@@ -363,15 +324,6 @@ class Controller(object):
if str(image_href).startswith(req.application_url):
image_href = image_href.split('/').pop()
- try:
- image_service, image_id = image.get_image_service(context,
- image_href)
- kernel_id, ramdisk_id = self._get_kernel_ramdisk_from_image(
- req, image_service, image_id)
- except Exception, e:
- msg = _("Cannot find requested image %(image_href)s: %(e)s" %
- locals())
- raise exc.HTTPBadRequest(explanation=msg)
personality = server_dict.get('personality')
config_drive = server_dict.get('config_drive')
@@ -440,9 +392,7 @@ class Controller(object):
(instances, resv_id) = self.compute_api.create(context,
inst_type,
- image_id,
- kernel_id=kernel_id,
- ramdisk_id=ramdisk_id,
+ image_href,
display_name=name,
display_description=name,
key_name=key_name,
diff --git a/nova/tests/api/openstack/contrib/test_createserverext.py b/nova/tests/api/openstack/contrib/test_createserverext.py
index fe1a7a94f..f7ee96917 100644
--- a/nova/tests/api/openstack/contrib/test_createserverext.py
+++ b/nova/tests/api/openstack/contrib/test_createserverext.py
@@ -138,11 +138,6 @@ class CreateserverextTest(test.TestCase):
compute_api = MockComputeAPI()
self.stubs.Set(nova.compute, 'API',
self._make_stub_method(compute_api))
- image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
- self.stubs.Set(
- nova.api.openstack.servers.Controller,
- '_get_kernel_ramdisk_from_image',
- self._make_stub_method((image_uuid, image_uuid)))
return compute_api
def _setup_mock_network_api(self):
diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py
index d7f44ddd1..aa9c5c02c 100644
--- a/nova/tests/api/openstack/test_servers.py
+++ b/nova/tests/api/openstack/test_servers.py
@@ -1409,10 +1409,6 @@ class ServersControllerCreateTest(test.TestCase):
def queue_get_for(context, *args):
return 'network_topic'
- def kernel_ramdisk_mapping(*args, **kwargs):
- image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
- return (image_uuid, image_uuid)
-
fakes.stub_out_networking(self.stubs)
fakes.stub_out_rate_limiting(self.stubs)
fakes.stub_out_key_pair_funcs(self.stubs)
@@ -1431,8 +1427,6 @@ class ServersControllerCreateTest(test.TestCase):
self.stubs.Set(nova.db, 'queue_get_for', queue_get_for)
self.stubs.Set(nova.network.manager.VlanManager, 'allocate_fixed_ip',
fake_method)
- self.stubs.Set(servers.Controller, "_get_kernel_ramdisk_from_image",
- kernel_ramdisk_mapping)
self.stubs.Set(nova.compute.api.API, "_find_host", find_host)
def _test_create_instance(self):
@@ -2385,62 +2379,6 @@ class TestAddressesXMLSerialization(test.TestCase):
str(ip['addr']))
-class TestGetKernelRamdiskFromImage(test.TestCase):
- """
- If we're building from an AMI-style image, we need to be able to fetch the
- kernel and ramdisk associated with the machine image. This information is
- stored with the image metadata and return via the ImageService.
-
- These tests ensure that we parse the metadata return the ImageService
- correctly and that we handle failure modes appropriately.
- """
-
- def test_status_not_active(self):
- """We should only allow fetching of kernel and ramdisk information if
- we have a 'fully-formed' image, aka 'active'
- """
- image_meta = {'id': 1, 'status': 'queued'}
- self.assertRaises(exception.Invalid, self._get_k_r, image_meta)
-
- def test_not_ami(self):
- """Anything other than ami should return no kernel and no ramdisk"""
- image_meta = {'id': 1, 'status': 'active', 'container_format': 'vhd'}
- kernel_id, ramdisk_id = self._get_k_r(image_meta)
- self.assertEqual(kernel_id, None)
- self.assertEqual(ramdisk_id, None)
-
- def test_ami_no_kernel(self):
- """If an ami is missing a kernel it should raise NotFound"""
- image_meta = {'id': 1, 'status': 'active', 'container_format': 'ami',
- 'properties': {'ramdisk_id': 1}}
- self.assertRaises(exception.NotFound, self._get_k_r, image_meta)
-
- def test_ami_no_ramdisk(self):
- """If an ami is missing a ramdisk, return kernel ID and None for
- ramdisk ID
- """
- image_meta = {'id': 1, 'status': 'active', 'container_format': 'ami',
- 'properties': {'kernel_id': 1}}
- kernel_id, ramdisk_id = self._get_k_r(image_meta)
- self.assertEqual(kernel_id, 1)
- self.assertEqual(ramdisk_id, None)
-
- def test_ami_kernel_ramdisk_present(self):
- """Return IDs if both kernel and ramdisk are present"""
- image_meta = {'id': 1, 'status': 'active', 'container_format': 'ami',
- 'properties': {'kernel_id': 1, 'ramdisk_id': 2}}
- kernel_id, ramdisk_id = self._get_k_r(image_meta)
- self.assertEqual(kernel_id, 1)
- self.assertEqual(ramdisk_id, 2)
-
- @staticmethod
- def _get_k_r(image_meta):
- """Rebinding function to a shorter name for convenience"""
- kernel_id, ramdisk_id = servers.Controller.\
- _do_get_kernel_ramdisk_from_image(image_meta)
- return kernel_id, ramdisk_id
-
-
class ServersViewBuilderTest(test.TestCase):
def setUp(self):