Fix get_network_details_v2 exception

get_network_details_v2 implementation should be consistent with
the base metadata service implementation.
The method should return None in case the underlying metadata
does not exist or if it is invalid.

Change-Id: Ida3fe780f22dc20db6bd8ed3f43728a2671b46da
Closes-Bug: #1796053
This commit is contained in:
Adrian Vladu 2018-10-04 13:03:16 +03:00
parent 2773599be3
commit 9bd096803e
2 changed files with 16 additions and 1 deletions

View File

@ -238,7 +238,11 @@ class BaseOpenStackService(base.BaseMetadataService):
return services
def get_network_details_v2(self):
network_data = self._get_network_data()
try:
network_data = self._get_network_data()
except base.NotExistingMetadataException:
LOG.info("V2 network metadata not found")
return
links = self._parse_network_data_links(
network_data.get("links", []))

View File

@ -488,3 +488,14 @@ class TestBaseOpenStackService(unittest.TestCase):
def test_get_network_details_v2_invalid_bond_lb_algo(self):
self._test_get_network_details_v2(invalid_bond_lb_algo=True)
@mock.patch(MODPATH + ".BaseOpenStackService._get_network_data")
@mock.patch(MODPATH + ".LOG.info")
def test_get_network_details_v2_no_metadata(self, mock_log_exception,
mock_get_network_data):
mock_get_network_data.side_effect = (
base.NotExistingMetadataException('failed to get metadata'))
network_details = self._service.get_network_details_v2()
self.assertIsNone(network_details)
self.assertTrue(mock_log_exception.called)