Merge "Add "project_id" filter when changing the network segmentation ID" into stable/train

This commit is contained in:
Zuul 2020-03-07 00:12:32 +00:00 committed by Gerrit Code Review
commit 7eae9e69c7
2 changed files with 8 additions and 3 deletions

View File

@ -232,6 +232,7 @@ class TypeManager(stevedore.named.NamedExtensionManager):
Update operation is currently only supported for VLAN type segments,
and only the SEGMENTATION_ID field can be changed.
"""
project_id = network['project_id']
segmentation_id = net_data.get(provider.SEGMENTATION_ID)
network_type = segment[api.NETWORK_TYPE]
if network_type != constants.TYPE_VLAN:
@ -246,7 +247,8 @@ class TypeManager(stevedore.named.NamedExtensionManager):
api.PHYSICAL_NETWORK: segment[api.PHYSICAL_NETWORK],
api.SEGMENTATION_ID: segmentation_id}
self.validate_provider_segment(new_segment)
self.reserve_provider_segment(context, new_segment)
self.reserve_provider_segment(context, new_segment,
filters={'project_id': project_id})
self._update_network_segment(context, segment['id'], segmentation_id)
self.release_network_segment(context, segment)

View File

@ -213,7 +213,8 @@ class TypeManagerTestCase(base.BaseTestCase):
super(TypeManagerTestCase, self).setUp()
self.type_manager = managers.TypeManager()
self.ctx = mock.Mock()
self.network = {'id': uuidutils.generate_uuid()}
self.network = {'id': uuidutils.generate_uuid(),
'project_id': uuidutils.generate_uuid()}
def test_update_network_segment_no_vlan_no_segmentation_id(self):
net_data = {}
@ -248,7 +249,9 @@ class TypeManagerTestCase(base.BaseTestCase):
self.type_manager.update_network_segment(self.ctx, self.network,
net_data, segment)
mock_validate.assert_called_once_with(new_segment)
mock_reserve.assert_called_once_with(self.ctx, new_segment)
mock_reserve.assert_called_once_with(
self.ctx, new_segment,
filters={'project_id': self.network['project_id']})
mock_update_network_segment.assert_called_once_with(
self.ctx, segment['id'], segmentation_id)
mock_release.assert_called_once_with(self.ctx, segment)