Merge "[OVN] Fix logic issue while deleting port with QoS" into stable/ussuri

This commit is contained in:
Zuul 2020-07-24 04:20:07 +00:00 committed by Gerrit Code Review
commit df5b28c2e5
3 changed files with 13 additions and 9 deletions

View File

@ -188,7 +188,7 @@ class OVNClientQosExtension(object):
def update_port(self, txn, port, original_port, reset=False, delete=False,
qos_rules=None):
if not reset and not original_port:
if (not reset and not original_port) and not delete:
# If there is no information about the previous QoS policy, do not
# make any change, unless the port is new or the QoS information
# must be reset (delete any previous configuration and set new

View File

@ -564,17 +564,13 @@ class OVNClient(object):
if ovn_port is None:
return
network_id = ovn_port.external_ids.get(
ovn_network_name = ovn_port.external_ids.get(
ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)
# TODO(lucasagomes): For backward compatibility, if network_id
# is not in the OVNDB, look at the port_object
if not network_id and port_object:
network_id = port_object['network_id']
network_id = ovn_network_name.strip('neutron-')
with self._nb_idl.transaction(check_error=True) as txn:
txn.add(self._nb_idl.delete_lswitch_port(
port_id, network_id))
port_id, ovn_network_name))
p_object = ({'id': port_id, 'network_id': network_id}
if not port_object else port_object)
@ -586,7 +582,7 @@ class OVNClient(object):
# Check if the port being deleted is a virtual parent
if (ovn_port.type != ovn_const.LSP_TYPE_VIRTUAL and
self._is_virtual_port_supported()):
ls = self._nb_idl.ls_get(network_id).execute(
ls = self._nb_idl.ls_get(ovn_network_name).execute(
check_error=True)
cmd = self._nb_idl.unset_lswitch_port_to_virtual_type
for lsp in ls.ports:

View File

@ -253,6 +253,14 @@ class TestOVNClientQosExtension(test_plugin.Ml2PluginV2TestCase):
self.mock_rules.assert_called_once_with(
mock.ANY, port.id, port.network_id, self.qos_policies[0].id, None)
def test_delete_port(self):
self.mock_rules.reset_mock()
self.qos_driver.delete_port(mock.ANY, self.ports[1])
# Assert that rules are deleted
self.mock_rules.assert_called_once_with(
mock.ANY, self.ports[1].id, self.ports[1].network_id, None, None)
def test_update_network(self):
"""Test update network.