Merge "Fix flavor specification at instance overview page" into stable/xena

This commit is contained in:
Zuul 2022-10-28 05:23:11 +00:00 committed by Gerrit Code Review
commit 23beefe2f7
2 changed files with 30 additions and 5 deletions

View File

@ -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):

View File

@ -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,