Merge "[OVN] Fix logic issue while deleting port with QoS" into stable/ussuri
This commit is contained in:
commit
df5b28c2e5
|
@ -188,7 +188,7 @@ class OVNClientQosExtension(object):
|
||||||
|
|
||||||
def update_port(self, txn, port, original_port, reset=False, delete=False,
|
def update_port(self, txn, port, original_port, reset=False, delete=False,
|
||||||
qos_rules=None):
|
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
|
# If there is no information about the previous QoS policy, do not
|
||||||
# make any change, unless the port is new or the QoS information
|
# make any change, unless the port is new or the QoS information
|
||||||
# must be reset (delete any previous configuration and set new
|
# must be reset (delete any previous configuration and set new
|
||||||
|
|
|
@ -564,17 +564,13 @@ class OVNClient(object):
|
||||||
if ovn_port is None:
|
if ovn_port is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
network_id = ovn_port.external_ids.get(
|
ovn_network_name = ovn_port.external_ids.get(
|
||||||
ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)
|
ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)
|
||||||
|
network_id = ovn_network_name.strip('neutron-')
|
||||||
# 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']
|
|
||||||
|
|
||||||
with self._nb_idl.transaction(check_error=True) as txn:
|
with self._nb_idl.transaction(check_error=True) as txn:
|
||||||
txn.add(self._nb_idl.delete_lswitch_port(
|
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}
|
p_object = ({'id': port_id, 'network_id': network_id}
|
||||||
if not port_object else port_object)
|
if not port_object else port_object)
|
||||||
|
@ -586,7 +582,7 @@ class OVNClient(object):
|
||||||
# Check if the port being deleted is a virtual parent
|
# Check if the port being deleted is a virtual parent
|
||||||
if (ovn_port.type != ovn_const.LSP_TYPE_VIRTUAL and
|
if (ovn_port.type != ovn_const.LSP_TYPE_VIRTUAL and
|
||||||
self._is_virtual_port_supported()):
|
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)
|
check_error=True)
|
||||||
cmd = self._nb_idl.unset_lswitch_port_to_virtual_type
|
cmd = self._nb_idl.unset_lswitch_port_to_virtual_type
|
||||||
for lsp in ls.ports:
|
for lsp in ls.ports:
|
||||||
|
|
|
@ -253,6 +253,14 @@ class TestOVNClientQosExtension(test_plugin.Ml2PluginV2TestCase):
|
||||||
self.mock_rules.assert_called_once_with(
|
self.mock_rules.assert_called_once_with(
|
||||||
mock.ANY, port.id, port.network_id, self.qos_policies[0].id, None)
|
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):
|
def test_update_network(self):
|
||||||
"""Test update network.
|
"""Test update network.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue