Skip to content

Commit b9089ac

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Fix get_segments_id with subnets without segment_id" into stable/2023.1
2 parents f361ce2 + 6b8d9d4 commit b9089ac

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
@@ -3896,7 +3896,7 @@ def get_segment_ids_for_network(
38963896
'Failed to get segment IDs for network %s' % network_id) from e
38973897
# The segment field of an unconfigured subnet could be None
38983898
return [subnet['segment_id'] for subnet in subnets
3899-
if subnet['segment_id'] is not None]
3899+
if subnet.get('segment_id') is not None]
39003900

39013901
def get_segment_id_for_subnet(
39023902
self,

nova/tests/unit/network/test_neutron.py

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

74337433
@mock.patch.object(neutronapi, 'get_client')
7434-
def test_get_segment_ids_for_network_with_no_segments(self, mock_client):
7434+
def test_get_segment_ids_for_network_with_segments_none(self, mock_client):
74357435
subnets = {'subnets': [{'segment_id': None}]}
74367436
mocked_client = mock.create_autospec(client.Client)
74377437
mock_client.return_value = mocked_client
@@ -7446,6 +7446,22 @@ def test_get_segment_ids_for_network_with_no_segments(self, mock_client):
74467446
mocked_client.list_subnets.assert_called_once_with(
74477447
network_id=uuids.network_id, fields='segment_id')
74487448

7449+
@mock.patch.object(neutronapi, 'get_client')
7450+
def test_get_segment_ids_for_network_with_no_segments(self, mock_client):
7451+
subnets = {'subnets': [{}]}
7452+
mocked_client = mock.create_autospec(client.Client)
7453+
mock_client.return_value = mocked_client
7454+
mocked_client.list_subnets.return_value = subnets
7455+
with mock.patch.object(
7456+
self.api, 'has_segment_extension', return_value=True,
7457+
):
7458+
res = self.api.get_segment_ids_for_network(
7459+
self.context, uuids.network_id)
7460+
self.assertEqual([], res)
7461+
mock_client.assert_called_once_with(self.context, admin=True)
7462+
mocked_client.list_subnets.assert_called_once_with(
7463+
network_id=uuids.network_id, fields='segment_id')
7464+
74497465
@mock.patch.object(neutronapi, 'get_client')
74507466
def test_get_segment_ids_for_network_fails(self, mock_client):
74517467
mocked_client = mock.create_autospec(client.Client)

0 commit comments

Comments
 (0)