diff options
author | Zuul <zuul@review.opendev.org> | 2022-10-29 01:22:51 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-10-29 01:22:51 +0000 |
commit | ab9ff5725e6a0aa67d19706a983f18a4f3444cee (patch) | |
tree | 3c168b97c6ee07996478ffa6d8b2062c2cb298ed | |
parent | 6dcc2d0e6f106a8a6f0defb81835898b6fd705da (diff) | |
parent | 21244d6f832555aca0fca733a51a5025f4975629 (diff) | |
download | horizon-ab9ff5725e6a0aa67d19706a983f18a4f3444cee.tar.gz |
Merge "Fix flavor specification at instance overview page" into stable/ussuri
-rw-r--r-- | openstack_dashboard/dashboards/project/instances/tests.py | 24 | ||||
-rw-r--r-- | openstack_dashboard/dashboards/project/instances/views.py | 11 |
2 files changed, 30 insertions, 5 deletions
diff --git a/openstack_dashboard/dashboards/project/instances/tests.py b/openstack_dashboard/dashboards/project/instances/tests.py index 722ca8668..12d224df4 100644 --- a/openstack_dashboard/dashboards/project/instances/tests.py +++ b/openstack_dashboard/dashboards/project/instances/tests.py @@ -1425,6 +1425,7 @@ class InstanceDetailTests(InstanceTestBase): "server_get", "instance_volumes_list", "flavor_get", + "flavor_list", "extension_supported", 'is_feature_available', ), @@ -1438,7 +1439,7 @@ class InstanceDetailTests(InstanceTestBase): def _get_instance_details(self, server, qs=None, flavor_return=None, volumes_return=None, security_groups_return=None, - flavor_exception=False): + flavor_exception=False, nova_api_ge_2_47=False): url = reverse('horizon:project:instances:detail', args=[server.id]) if qs: @@ -1475,8 +1476,12 @@ class InstanceDetailTests(InstanceTestBase): helpers.IsHttpRequest(), mock.ANY) self.mock_instance_volumes_list.assert_called_once_with( helpers.IsHttpRequest(), server.id) - self.mock_flavor_get.assert_called_once_with( - helpers.IsHttpRequest(), server.flavor['id']) + if nova_api_ge_2_47: + self.mock_flavor_list.assert_called_once_with( + helpers.IsHttpRequest()) + else: + self.mock_flavor_get.assert_called_once_with( + helpers.IsHttpRequest(), server.flavor['id']) self.mock_server_security_groups.assert_called_once_with( helpers.IsHttpRequest(), server.id) self.mock_floating_ip_simple_associate_supported \ @@ -1662,6 +1667,19 @@ class InstanceDetailTests(InstanceTestBase): self.mock_is_extension_supported.assert_called_once_with( helpers.IsHttpRequest(), 'mac-learning') + @helpers.create_mocks({api.neutron: ['is_extension_supported']}) + def test_instance_details_nova_api_ge_2_47(self): + server = self.servers.first() + server.flavor = { + 'original_name': 'm1.tiny', + } + self.mock_is_extension_supported.return_value = False + res = self._get_instance_details(server, nova_api_ge_2_47=True) + self.assertTemplateUsed(res, + 'project/instances/_detail_overview.html') + self.mock_is_extension_supported.assert_called_once_with( + helpers.IsHttpRequest(), 'mac-learning') + @helpers.create_mocks({api.nova: ['server_console_output'], api.neutron: ['is_extension_supported']}) def test_instance_log(self): diff --git a/openstack_dashboard/dashboards/project/instances/views.py b/openstack_dashboard/dashboards/project/instances/views.py index cdc4d59b3..15c075f1d 100644 --- a/openstack_dashboard/dashboards/project/instances/views.py +++ b/openstack_dashboard/dashboards/project/instances/views.py @@ -519,9 +519,16 @@ class DetailView(tabs.TabView): def _get_flavor(self, instance): instance_id = instance.id + flavor_id = instance.flavor.get('id') try: - instance.full_flavor = api.nova.flavor_get( - self.request, instance.flavor["id"]) + if flavor_id: # Nova API <= 2.46 + instance.full_flavor = api.nova.flavor_get( + self.request, flavor_id) + else: + flavors = api.nova.flavor_list(self.request) + flavor_name_dict = dict((str(f.name), f) for f in flavors) + instance.full_flavor = \ + flavor_name_dict[instance.flavor['original_name']] except Exception: msg = _('Unable to retrieve flavor information for instance ' '"%(name)s" (%(id)s).') % {'name': instance.name, |