Skip to content

Commit 4aaeae3

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Fix get_segments_id with subnets without segment_id" into stable/wallaby
2 parents a4e6b5a + e6c3819 commit 4aaeae3

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

nova/network/neutron.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3579,7 +3579,7 @@ def get_segment_ids_for_network(
35793579
'Failed to get segment IDs for network %s' % network_id) from e
35803580
# The segment field of an unconfigured subnet could be None
35813581
return [subnet['segment_id'] for subnet in subnets
3582-
if subnet['segment_id'] is not None]
3582+
if subnet.get('segment_id') is not None]
35833583

35843584
def get_segment_id_for_subnet(
35853585
self,

nova/tests/unit/network/test_neutron.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6328,7 +6328,7 @@ def test_get_segment_ids_for_network_passes(self, mock_client):
63286328
network_id=uuids.network_id, fields='segment_id')
63296329

63306330
@mock.patch.object(neutronapi, 'get_client')
6331-
def test_get_segment_ids_for_network_with_no_segments(self, mock_client):
6331+
def test_get_segment_ids_for_network_with_segments_none(self, mock_client):
63326332
subnets = {'subnets': [{'segment_id': None}]}
63336333
mocked_client = mock.create_autospec(client.Client)
63346334
mock_client.return_value = mocked_client
@@ -6343,6 +6343,22 @@ def test_get_segment_ids_for_network_with_no_segments(self, mock_client):
63436343
mocked_client.list_subnets.assert_called_once_with(
63446344
network_id=uuids.network_id, fields='segment_id')
63456345

6346+
@mock.patch.object(neutronapi, 'get_client')
6347+
def test_get_segment_ids_for_network_with_no_segments(self, mock_client):
6348+
subnets = {'subnets': [{}]}
6349+
mocked_client = mock.create_autospec(client.Client)
6350+
mock_client.return_value = mocked_client
6351+
mocked_client.list_subnets.return_value = subnets
6352+
with mock.patch.object(
6353+
self.api, '_has_segment_extension', return_value=True,
6354+
):
6355+
res = self.api.get_segment_ids_for_network(
6356+
self.context, uuids.network_id)
6357+
self.assertEqual([], res)
6358+
mock_client.assert_called_once_with(self.context, admin=True)
6359+
mocked_client.list_subnets.assert_called_once_with(
6360+
network_id=uuids.network_id, fields='segment_id')
6361+
63466362
@mock.patch.object(neutronapi, 'get_client')
63476363
def test_get_segment_ids_for_network_fails(self, mock_client):
63486364
mocked_client = mock.create_autospec(client.Client)

0 commit comments

Comments
 (0)