QoS policy update with placement: handle missing key

Closes-Bug: #1898994
Change-Id: Ibb826346117cd5cc824fff55d123497a19370f5c
This commit is contained in:
elajkat 2020-10-08 09:58:06 +02:00
parent 8cfc9a412b
commit 3605e9f82d
2 changed files with 15 additions and 0 deletions

View File

@ -193,6 +193,8 @@ class QoSPlugin(qos.QoSPluginBase):
context = kwargs['context']
orig_port = kwargs['original_port']
original_policy_id = orig_port.get(qos_consts.QOS_POLICY_ID)
if qos_consts.QOS_POLICY_ID not in kwargs['port']:
return
policy_id = kwargs['port'].get(qos_consts.QOS_POLICY_ID)
if policy_id == original_policy_id:

View File

@ -1340,6 +1340,19 @@ class TestQosPluginDB(base.BaseQosTestCase):
mock_alloc_change.assert_called_once_with(
qos1_obj, None, kwargs['original_port'])
def test_check_port_for_placement_allocation_change_no_qos_update(self):
qos1_obj = self._make_qos_policy()
kwargs = self._prepare_for_port_placement_allocation_change(
qos1=qos1_obj, qos2=None)
kwargs['port'].pop('qos_policy_id')
with mock.patch.object(
self.qos_plugin,
'_change_placement_allocation') as mock_alloc_change:
self.qos_plugin._check_port_for_placement_allocation_change(
'PORT', 'before_update', 'test_plugin', **kwargs)
mock_alloc_change.assert_not_called()
def _prepare_port_for_placement_allocation(self, qos1, qos2=None,
min_kbps1=1000, min_kbps2=2000):
rule1_obj = self._make_qos_minbw_rule(qos1.id, min_kbps=min_kbps1)