port_forwarding: validate args before invoking db update (cont.)

This is a follow up for https://review.opendev.org/#/c/738145/

During backporting review, it became clear that unit test had a
flaw. It assumed that order of items in dictionary that make up
the exception message did not change. That is not true, based
on the python version used.

This follow up also includes a review feedback that did not make
into the original change: rename function that raises exception
to have "raise" in its name (raise_port_forwarding_update_failed).

Change-Id: I6fcd64e205e584017e6c9022f82a5497ea1cc576
Closes-Bug: #1878299
This commit is contained in:
Flavio Fernandes 2020-08-05 17:10:27 -04:00 committed by Flavio Fernandes
parent b425ca45dd
commit 5f9b5dd861
2 changed files with 5 additions and 6 deletions

View File

@ -471,7 +471,7 @@ class PortForwardingPlugin(fip_pf.PortForwardingPluginBase):
msg=message)
def _check_port_forwarding_update(self, context, pf_obj):
def _check_port_forwarding_update_failed(conflict):
def _raise_port_forwarding_update_failed(conflict):
message = _("Another port forwarding entry with the same "
"attributes already exists, conflicting "
"values are %s") % conflict
@ -499,7 +499,7 @@ class PortForwardingPlugin(fip_pf.PortForwardingPluginBase):
# Ensure there are no conflicts on the outside
if (obj.floating_ip_address == pf_obj.floating_ip_address and
obj.external_port == pf_obj.external_port):
_check_port_forwarding_update_failed(
_raise_port_forwarding_update_failed(
{'floating_ip_address': str(obj.floating_ip_address),
'external_port': obj.external_port})
# Ensure there are no conflicts in the inside
@ -507,7 +507,7 @@ class PortForwardingPlugin(fip_pf.PortForwardingPluginBase):
if (obj.internal_port_id == pf_obj.internal_port_id and
obj.internal_ip_address == pf_obj.internal_ip_address and
obj.internal_port == pf_obj.internal_port):
_check_port_forwarding_update_failed(
_raise_port_forwarding_update_failed(
{'internal_port_id': obj.internal_port_id,
'internal_ip_address': str(obj.internal_ip_address),
'internal_port': obj.internal_port})

View File

@ -246,7 +246,7 @@ class TestPortForwardingPlugin(testlib_api.SqlTestCase):
mock_pf_get_objects.return_value = [pf_obj, other_pf_obj]
self.assertRaisesRegex(
lib_exc.BadRequest,
"already exist.*same_fip_addr.*same_ext_port",
"already exist.*same_fip_addr",
self.pf_plugin._check_port_forwarding_update,
self.ctxt, pf_obj)
mock_get_port.assert_called_once_with(self.ctxt, mock.ANY)
@ -269,8 +269,7 @@ class TestPortForwardingPlugin(testlib_api.SqlTestCase):
mock_pf_get_objects.return_value = [pf_obj, other_pf_obj]
self.assertRaisesRegex(
lib_exc.BadRequest,
"already exist.*same_int_port_id.*{}.*same_int_port".format(
same_internal_ip),
"already exist.*{}".format(same_internal_ip),
self.pf_plugin._check_port_forwarding_update,
self.ctxt, pf_obj)
mock_get_port.assert_called_once_with(self.ctxt, 'same_int_port_id')