Validate expected parameters in add/remove router interfaces
The add and remove router interface methods check that interface_info is not empty but don't check if it contains any of expected parameters: port_id and subnet_id This patch adds a helper method to validate that interface_info contains at least one of the expected parameters Include a unit test for the empty port_id and subnet_id case Closes-Bug: #1325982 Change-Id: Ia370565235a33a847704b972c875d8f1573306c0
This commit is contained in:
parent
86a912999c
commit
673d6cf65f
@ -403,11 +403,11 @@ class L3_NAT_db_mixin(l3.RouterPluginBase):
|
||||
return DEVICE_OWNER_ROUTER_INTF
|
||||
|
||||
def _validate_interface_info(self, interface_info):
|
||||
if not interface_info:
|
||||
port_id_specified = interface_info and 'port_id' in interface_info
|
||||
subnet_id_specified = interface_info and 'subnet_id' in interface_info
|
||||
if not (port_id_specified or subnet_id_specified):
|
||||
msg = _("Either subnet_id or port_id must be specified")
|
||||
raise n_exc.BadRequest(resource='router', msg=msg)
|
||||
port_id_specified = 'port_id' in interface_info
|
||||
subnet_id_specified = 'subnet_id' in interface_info
|
||||
if port_id_specified and subnet_id_specified:
|
||||
msg = _("Cannot specify both subnet-id and port-id")
|
||||
raise n_exc.BadRequest(resource='router', msg=msg)
|
||||
|
@ -786,6 +786,13 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
|
||||
None,
|
||||
p['port']['id'])
|
||||
|
||||
def test_router_add_interface_empty_port_and_subnet_ids(self):
|
||||
with self.router() as r:
|
||||
self._router_interface_action('add', r['router']['id'],
|
||||
None, None,
|
||||
expected_code=exc.
|
||||
HTTPBadRequest.code)
|
||||
|
||||
def test_router_add_interface_port_bad_tenant_returns_404(self):
|
||||
with mock.patch('neutron.context.Context.to_dict') as tdict:
|
||||
admin_context = {'roles': ['admin']}
|
||||
|
Loading…
Reference in New Issue
Block a user