diff options
author | Zuul <zuul@review.opendev.org> | 2022-10-28 05:23:11 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-10-28 05:23:11 +0000 |
commit | 23beefe2f787f2e9c95f188fa4fae2107438f0e9 (patch) | |
tree | a793764c35754f241d81423157ebaea40e3e19f1 | |
parent | a066d00916bdb9eb9a131294a125b6f1f1f2dbe9 (diff) | |
parent | 6a6f49e51528e516754405ff194dcfa521e54c7d (diff) | |
download | horizon-23beefe2f787f2e9c95f188fa4fae2107438f0e9.tar.gz |
Merge "Fix flavor specification at instance overview page" into stable/xena
-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 5eafb48b2..57cf18325 100644 --- a/openstack_dashboard/dashboards/project/instances/tests.py +++ b/openstack_dashboard/dashboards/project/instances/tests.py @@ -1330,6 +1330,7 @@ class InstanceDetailTests(InstanceTestBase): "server_get", "instance_volumes_list", "flavor_get", + "flavor_list", 'is_feature_available', ), api.neutron: ( @@ -1342,7 +1343,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: @@ -1377,8 +1378,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 \ @@ -1562,6 +1567,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 29f3a1b8d..47aabb930 100644 --- a/openstack_dashboard/dashboards/project/instances/views.py +++ b/openstack_dashboard/dashboards/project/instances/views.py @@ -527,9 +527,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, |