Merge "[OVS] Make QoS OVS agent deletion operations more resilient"

This commit is contained in:
Zuul 2020-06-23 21:33:17 +00:00 committed by Gerrit Code Review
commit d37c9259c7
2 changed files with 7 additions and 8 deletions

View File

@ -715,8 +715,8 @@ class OVSBridge(BaseOVS):
self.set_controller_field('inactivity_probe', interval * 1000) self.set_controller_field('inactivity_probe', interval * 1000)
def _set_egress_bw_limit_for_port(self, port_name, max_kbps, def _set_egress_bw_limit_for_port(self, port_name, max_kbps,
max_burst_kbps): max_burst_kbps, check_error=True):
with self.ovsdb.transaction(check_error=True) as txn: with self.ovsdb.transaction(check_error=check_error) as txn:
txn.add(self.ovsdb.db_set('Interface', port_name, txn.add(self.ovsdb.db_set('Interface', port_name,
('ingress_policing_rate', max_kbps))) ('ingress_policing_rate', max_kbps)))
txn.add(self.ovsdb.db_set('Interface', port_name, txn.add(self.ovsdb.db_set('Interface', port_name,
@ -743,8 +743,7 @@ class OVSBridge(BaseOVS):
def delete_egress_bw_limit_for_port(self, port_name): def delete_egress_bw_limit_for_port(self, port_name):
if not self.port_exists(port_name): if not self.port_exists(port_name):
return return
self._set_egress_bw_limit_for_port( self._set_egress_bw_limit_for_port(port_name, 0, 0, check_error=False)
port_name, 0, 0)
def find_qos(self, port_name): def find_qos(self, port_name):
qos = self.ovsdb.db_find( qos = self.ovsdb.db_find(
@ -915,12 +914,11 @@ class OVSBridge(BaseOVS):
return max_kbps, max_burst_kbit return max_kbps, max_burst_kbit
def delete_ingress_bw_limit_for_port(self, port_name): def delete_ingress_bw_limit_for_port(self, port_name):
self.ovsdb.db_clear('Port', port_name,
'qos').execute(check_error=False)
qos = self.find_qos(port_name) qos = self.find_qos(port_name)
queue = self.find_queue(port_name, QOS_DEFAULT_QUEUE) queue = self.find_queue(port_name, QOS_DEFAULT_QUEUE)
does_port_exist = self.port_exists(port_name)
with self.ovsdb.transaction(check_error=True) as txn: with self.ovsdb.transaction(check_error=True) as txn:
if does_port_exist:
txn.add(self.ovsdb.db_clear("Port", port_name, 'qos'))
if qos: if qos:
txn.add(self.ovsdb.db_destroy('QoS', qos['_uuid'])) txn.add(self.ovsdb.db_destroy('QoS', qos['_uuid']))
if queue: if queue:

View File

@ -471,7 +471,8 @@ class OVS_Lib_Test(base.BaseTestCase):
) as port_exists_mock: ) as port_exists_mock:
self.br.delete_egress_bw_limit_for_port("test_port") self.br.delete_egress_bw_limit_for_port("test_port")
port_exists_mock.assert_called_once_with("test_port") port_exists_mock.assert_called_once_with("test_port")
set_egress_mock.assert_called_once_with("test_port", 0, 0) set_egress_mock.assert_called_once_with("test_port", 0, 0,
check_error=False)
def test_delete_egress_bw_limit_for_port_port_not_exists(self): def test_delete_egress_bw_limit_for_port_port_not_exists(self):
with mock.patch.object( with mock.patch.object(