diff options
| author | Jenkins <jenkins@review.openstack.org> | 2011-11-08 16:00:46 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2011-11-08 16:00:46 +0000 |
| commit | 53ea6a8e09c20e520f8cabc9c686b2363efe45cc (patch) | |
| tree | 56820d2571eedf60c24097c02d4f51ffafbb79ac | |
| parent | ab633ec05494a8bde82a4a6d90ab057f1a4f9bbd (diff) | |
| parent | 77e1684332cfc6e2cad1f1fc93ab5fa6caf231b9 (diff) | |
| download | nova-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.py | 52 | ||||
| -rw-r--r-- | nova/tests/api/openstack/contrib/test_createserverext.py | 5 | ||||
| -rw-r--r-- | nova/tests/api/openstack/test_servers.py | 62 |
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): |
