Extend configurable skippability of neutron calls to project instance detail
The OPENSTACK_INSTANCE_RETRIEVE_IP_ADDRESSES config aids in envs struggling to load the instance list due to having too many ports or bad neutron plugin performance. However, the config does not apply its effect to the instance detail page, which cannot be loaded due to the neutron calls taking too long. This patch extends the config option to the instance detail page, allowing the same benefit (and side-effects) of the instance list page. Related-bug: #2045168 Change-Id: I3e71a208a1c7212e168d63a259f2adddf27dbabf (cherry picked from commit95089025fd
) (cherry picked from commit4de36bb649
)
This commit is contained in:
parent
068e207393
commit
e621c9d745
|
@ -1338,7 +1338,8 @@ class InstanceDetailTests(InstanceTestBase):
|
||||||
def _get_instance_details(self, server, qs=None,
|
def _get_instance_details(self, server, qs=None,
|
||||||
flavor_return=None, volumes_return=None,
|
flavor_return=None, volumes_return=None,
|
||||||
security_groups_return=None,
|
security_groups_return=None,
|
||||||
flavor_exception=False, nova_api_ge_2_47=False):
|
flavor_exception=False, nova_api_ge_2_47=False,
|
||||||
|
skip_servers_update_addresses=False):
|
||||||
|
|
||||||
url = reverse('horizon:project:instances:detail', args=[server.id])
|
url = reverse('horizon:project:instances:detail', args=[server.id])
|
||||||
if qs:
|
if qs:
|
||||||
|
@ -1369,6 +1370,9 @@ class InstanceDetailTests(InstanceTestBase):
|
||||||
|
|
||||||
self.mock_server_get.assert_called_once_with(
|
self.mock_server_get.assert_called_once_with(
|
||||||
helpers.IsHttpRequest(), server.id)
|
helpers.IsHttpRequest(), server.id)
|
||||||
|
if skip_servers_update_addresses:
|
||||||
|
self.mock_servers_update_addresses.assert_not_called()
|
||||||
|
else:
|
||||||
self.mock_servers_update_addresses.assert_called_once_with(
|
self.mock_servers_update_addresses.assert_called_once_with(
|
||||||
helpers.IsHttpRequest(), mock.ANY)
|
helpers.IsHttpRequest(), mock.ANY)
|
||||||
self.mock_instance_volumes_list.assert_called_once_with(
|
self.mock_instance_volumes_list.assert_called_once_with(
|
||||||
|
@ -1408,6 +1412,20 @@ class InstanceDetailTests(InstanceTestBase):
|
||||||
self.mock_is_extension_supported.assert_called_once_with(
|
self.mock_is_extension_supported.assert_called_once_with(
|
||||||
helpers.IsHttpRequest(), 'mac-learning')
|
helpers.IsHttpRequest(), 'mac-learning')
|
||||||
|
|
||||||
|
@override_settings(OPENSTACK_INSTANCE_RETRIEVE_IP_ADDRESSES=False)
|
||||||
|
@helpers.create_mocks({api.neutron: ['is_extension_supported']})
|
||||||
|
def test_instance_details_skip_servers_update_addresses(self):
|
||||||
|
server = self.servers.first()
|
||||||
|
|
||||||
|
self.mock_is_extension_supported.return_value = False
|
||||||
|
|
||||||
|
self._get_instance_details(
|
||||||
|
server,
|
||||||
|
skip_servers_update_addresses=True)
|
||||||
|
|
||||||
|
self.mock_is_extension_supported.assert_called_once_with(
|
||||||
|
helpers.IsHttpRequest(), 'mac-learning')
|
||||||
|
|
||||||
@helpers.create_mocks({api.neutron: ['is_extension_supported']})
|
@helpers.create_mocks({api.neutron: ['is_extension_supported']})
|
||||||
def test_instance_details_volume_sorting(self):
|
def test_instance_details_volume_sorting(self):
|
||||||
server = self.servers.first()
|
server = self.servers.first()
|
||||||
|
|
|
@ -535,6 +535,8 @@ class DetailView(tabs.TabView):
|
||||||
exceptions.handle(self.request, msg, ignore=True)
|
exceptions.handle(self.request, msg, ignore=True)
|
||||||
|
|
||||||
def _update_addresses(self, instance):
|
def _update_addresses(self, instance):
|
||||||
|
if not settings.OPENSTACK_INSTANCE_RETRIEVE_IP_ADDRESSES:
|
||||||
|
return
|
||||||
instance_id = instance.id
|
instance_id = instance.id
|
||||||
try:
|
try:
|
||||||
api.network.servers_update_addresses(self.request, [instance])
|
api.network.servers_update_addresses(self.request, [instance])
|
||||||
|
|
Loading…
Reference in New Issue