diff --git a/nova/api/openstack/compute/routes.py b/nova/api/openstack/compute/routes.py index 6ee8f6fa777a..e6cb61f73115 100644 --- a/nova/api/openstack/compute/routes.py +++ b/nova/api/openstack/compute/routes.py @@ -222,10 +222,7 @@ keypairs_controller = functools.partial( limits_controller = functools.partial( - _create_controller, limits.LimitsController, - [ - ], - []) + _create_controller, limits.LimitsController, [], []) migrations_controller = functools.partial(_create_controller, diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 9b467379af1c..bd221aacf3dc 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -526,6 +526,7 @@ class ServersController(wsgi.Controller): # Sets the legacy_bdm flag if we got a legacy block device mapping. create_kwargs['legacy_bdm'] = True elif block_device_mapping_v2: + # Have to check whether --image is given, see bug 1433609 image_href = server_dict.get('imageRef') image_uuid_specified = image_href is not None try: diff --git a/nova/api/openstack/compute/views/servers.py b/nova/api/openstack/compute/views/servers.py index 51123ea348e6..ee858b0c25ef 100644 --- a/nova/api/openstack/compute/views/servers.py +++ b/nova/api/openstack/compute/views/servers.py @@ -210,10 +210,7 @@ class ViewBuilder(common.ViewBuilder): show_extended_attr = context.can( esa_policies.BASE_POLICY_NAME, fatal=False) if show_extended_attr: - server["server"][ - "OS-EXT-SRV-ATTR:hypervisor_hostname"] = instance.node - - properties = ['host', 'name'] + properties = ['host', 'name', 'node'] if api_version_request.is_supported(request, min_version='2.3'): # NOTE(mriedem): These will use the OS-EXT-SRV-ATTR prefix # below and that's OK for microversion 2.3 which is being @@ -226,11 +223,13 @@ class ViewBuilder(common.ViewBuilder): for attr in properties: if attr == 'name': key = "OS-EXT-SRV-ATTR:instance_%s" % attr + elif attr == 'node': + key = "OS-EXT-SRV-ATTR:hypervisor_hostname" else: # NOTE(mriedem): Nothing after microversion 2.3 should use # the OS-EXT-SRV-ATTR prefix for the attribute key name. key = "OS-EXT-SRV-ATTR:%s" % attr - server["server"][key] = instance[attr] + server["server"][key] = getattr(instance, attr) if show_extended_status: # NOTE(gmann): Removed 'locked_by' from extended status # to make it same as V2. If needed it can be added with @@ -290,16 +289,15 @@ class ViewBuilder(common.ViewBuilder): def detail(self, request, instances): """Detailed view of a list of instance.""" coll_name = self._collection_name + '/detail' + context = request.environ['nova.context'] if api_version_request.is_supported(request, min_version='2.47'): # Determine if we should show extra_specs in the inlined flavor # once before we iterate the list of instances - context = request.environ['nova.context'] show_extra_specs = context.can(fes_policies.POLICY_ROOT % 'index', fatal=False) else: show_extra_specs = False - context = request.environ['nova.context'] show_extended_attr = context.can( esa_policies.BASE_POLICY_NAME, fatal=False) show_host_status = False diff --git a/nova/tests/functional/api_samples_test_base.py b/nova/tests/functional/api_samples_test_base.py index 130c064a86aa..7aebab3e18e9 100644 --- a/nova/tests/functional/api_samples_test_base.py +++ b/nova/tests/functional/api_samples_test_base.py @@ -67,7 +67,6 @@ def objectify(data): class ApiSampleTestBase(integrated_helpers._IntegratedTestBase): - all_extensions = True sample_dir = None microversion = None _use_common_server_api_samples = False diff --git a/nova/tests/unit/api/openstack/compute/microversions.py b/nova/tests/unit/api/openstack/compute/microversions.py index 862be55d0d83..187ce8f21675 100644 --- a/nova/tests/unit/api/openstack/compute/microversions.py +++ b/nova/tests/unit/api/openstack/compute/microversions.py @@ -102,27 +102,6 @@ class MicroversionsExtendsBaseController(wsgi.Controller): return {'base_param': 'base_val'} -class MicroversionsExtendsController1(wsgi.Controller): - @wsgi.Controller.api_version("2.3") - @wsgi.extends - def show(self, req, resp_obj, id): - resp_obj.obj['extend_ctrlr1'] = 'val_1' - - -class MicroversionsExtendsController2(wsgi.Controller): - @wsgi.Controller.api_version("2.4") - @wsgi.extends - def show(self, req, resp_obj, id): - resp_obj.obj['extend_ctrlr2'] = 'val_2' - - -class MicroversionsExtendsController3(wsgi.Controller): - @wsgi.Controller.api_version("2.2", "2.3") - @wsgi.extends - def show(self, req, resp_obj, id): - resp_obj.obj['extend_ctrlr3'] = 'val_3' - - mv_controller = functools.partial(routes._create_controller, MicroversionsController, [], []) @@ -140,12 +119,7 @@ mv4_controller = functools.partial(routes._create_controller, mv5_controller = functools.partial(routes._create_controller, - MicroversionsExtendsBaseController, - [ - MicroversionsExtendsController1, - MicroversionsExtendsController2, - MicroversionsExtendsController3 - ], []) + MicroversionsExtendsBaseController, [], []) ROUTES = ( diff --git a/nova/tests/unit/api/openstack/compute/test_flavors.py b/nova/tests/unit/api/openstack/compute/test_flavors.py index b95b0304376b..a9683de00d85 100644 --- a/nova/tests/unit/api/openstack/compute/test_flavors.py +++ b/nova/tests/unit/api/openstack/compute/test_flavors.py @@ -67,9 +67,6 @@ class FlavorsTestV21(test.TestCase): self._prefix + url, version=self.microversion) def _set_expected_body(self, expected, flavor): - # NOTE(oomichi): On v2.1 API, some extensions of v2.0 are merged - # as core features and we can get the following parameters as the - # default. expected['OS-FLV-EXT-DATA:ephemeral'] = flavor.ephemeral_gb expected['OS-FLV-DISABLED:disabled'] = flavor.disabled expected['swap'] = flavor.swap diff --git a/nova/tests/unit/api/openstack/compute/test_limits.py b/nova/tests/unit/api/openstack/compute/test_limits.py index 902eb49e62f6..c10c35dc5e33 100644 --- a/nova/tests/unit/api/openstack/compute/test_limits.py +++ b/nova/tests/unit/api/openstack/compute/test_limits.py @@ -454,7 +454,6 @@ class LimitsControllerTestV236(BaseLimitTestSuite): "totalRAMUsed": 256, "totalCoresUsed": 10, "totalInstancesUsed": 2, - }, }, } diff --git a/nova/tests/unit/api/openstack/compute/test_microversions.py b/nova/tests/unit/api/openstack/compute/test_microversions.py index 104c5eb4e299..dabcd00c8b3a 100644 --- a/nova/tests/unit/api/openstack/compute/test_microversions.py +++ b/nova/tests/unit/api/openstack/compute/test_microversions.py @@ -262,26 +262,6 @@ class LegacyMicroversionsTest(test.NoDBTestCase): def test_microversions_inner_function_v21(self): self._test_microversions_inner_function('2.1', 'controller4_val1') - @mock.patch("nova.api.openstack.api_version_request.max_api_version") - def test_with_extends_decorator(self, mock_maxver): - mock_maxver.return_value = api_version.APIVersionRequest('2.4') - - req = fakes.HTTPRequest.blank('/v2/fake/microversions5/item') - req.headers = {'X-OpenStack-Nova-API-Version': '2.4'} - res = req.get_response(self.app) - self.assertEqual(200, res.status_int) - - expected_res = { - "extend_ctrlr2": "val_2", - "extend_ctrlr1": "val_1", - "base_param": "base_val"} - - resp_json = jsonutils.loads(res.body) - for param in resp_json: - self.assertIn(param, expected_res) - self.assertEqual(expected_res[param], resp_json[param]) - self.assertEqual(3, len(resp_json)) - @mock.patch("nova.api.openstack.api_version_request.max_api_version") def _test_microversions_actions(self, ret_code, ret_header, req_header, mock_maxver):