Return DELETED status when deleting a nonexistent member
This patch changes the provisioning_status returned to octavia-api for the deletion operation of a member that doesn't exist associated with a pool. Instead of returning ERROR for not having located it, we will return DELETED to sync OVN DB with Octavia DB. This way, the user won't be able to perform unnecessary UPDATE/DELETE operations on this member in the future. Closes-Bug: #2065566 Change-Id: Id355fcb0ad5b66bf646be2e4ccbdacf1b40c1d7c
This commit is contained in:
@@ -2185,9 +2185,7 @@ class OvnProviderHelper():
|
||||
return pool_status
|
||||
else:
|
||||
msg = f"Member {member[constants.ID]} not found in the pool"
|
||||
raise driver_exceptions.DriverError(
|
||||
user_fault_string=msg,
|
||||
operator_fault_string=msg)
|
||||
LOG.warning(msg)
|
||||
|
||||
def _members_in_subnet(self, ovn_lb, subnet_id):
|
||||
for key, value in ovn_lb.external_ids.items():
|
||||
|
||||
@@ -2212,7 +2212,7 @@ class TestOvnProviderHelper(ovn_base.TestOvnOctaviaBase):
|
||||
self.assertEqual(status['pools'][0]['provisioning_status'],
|
||||
constants.ACTIVE)
|
||||
self.assertEqual(status['members'][0]['provisioning_status'],
|
||||
constants.ERROR)
|
||||
constants.DELETED)
|
||||
|
||||
@mock.patch.object(ovn_helper.OvnProviderHelper, '_remove_member')
|
||||
def test_member_delete_exception(self, mock_remove_member):
|
||||
@@ -2220,6 +2220,8 @@ class TestOvnProviderHelper(ovn_base.TestOvnOctaviaBase):
|
||||
status = self.helper.member_delete(self.member)
|
||||
self.assertEqual(status['pools'][0]['provisioning_status'],
|
||||
constants.ACTIVE)
|
||||
self.assertEqual(status['members'][0]['provisioning_status'],
|
||||
constants.ERROR)
|
||||
|
||||
def test_member_delete_disabled_lb(self):
|
||||
self.helper._find_ovn_lb_with_pool_key.side_effect = [
|
||||
|
||||
Reference in New Issue
Block a user