Fix flavor specification at instance overview page
The details page uses flavor id to resolve instance flavor, relying on legacy Nova API v2.46. This patch adds the current Nova API option, resolving instance flavor by flavor name, so flavor specification at instance overview page is displayed properly. Change-Id: I1fe45063c9d1cdd8682998329d81f843d30f80b3
This commit is contained in:
parent
535171fbf9
commit
d0e9e976f2
@ -1325,6 +1325,7 @@ class InstanceDetailTests(InstanceTestBase):
|
||||
"server_get",
|
||||
"instance_volumes_list",
|
||||
"flavor_get",
|
||||
"flavor_list",
|
||||
'is_feature_available',
|
||||
),
|
||||
api.neutron: (
|
||||
@ -1337,7 +1338,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:
|
||||
@ -1372,8 +1373,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 \
|
||||
@ -1557,6 +1562,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):
|
||||
|
@ -506,9 +506,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,
|
||||
|
Loading…
Reference in New Issue
Block a user