Do not ignore attributes in bulk port create
With unit tests that would have caught the bug. Change-Id: Ia4a68bdccecfbcb9d1aa49e2b14e06d139891c0f Closes-Bug: #2003553
This commit is contained in:
parent
092297454b
commit
ed68ba4a4c
|
@ -1748,13 +1748,13 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
|
||||||
self._process_port_binding(mech_context, port_dict)
|
self._process_port_binding(mech_context, port_dict)
|
||||||
|
|
||||||
# process allowed address pairs
|
# process allowed address pairs
|
||||||
db_port_obj[addr_apidef.ADDRESS_PAIRS] = (
|
port_dict[addr_apidef.ADDRESS_PAIRS] = (
|
||||||
self._process_create_allowed_address_pairs(
|
self._process_create_allowed_address_pairs(
|
||||||
context, port_dict,
|
context, port_dict,
|
||||||
port_dict.get(addr_apidef.ADDRESS_PAIRS)))
|
pdata.get(addr_apidef.ADDRESS_PAIRS)))
|
||||||
|
|
||||||
# handle DHCP setup
|
# handle DHCP setup
|
||||||
dhcp_opts = port_dict.get(edo_ext.EXTRADHCPOPTS, [])
|
dhcp_opts = pdata.get(edo_ext.EXTRADHCPOPTS, [])
|
||||||
self._process_port_create_extra_dhcp_opts(context, port_dict,
|
self._process_port_create_extra_dhcp_opts(context, port_dict,
|
||||||
dhcp_opts)
|
dhcp_opts)
|
||||||
# send PRECOMMIT_CREATE notification
|
# send PRECOMMIT_CREATE notification
|
||||||
|
|
|
@ -1689,6 +1689,55 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
|
||||||
ctx, ports
|
ctx, ports
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_create_ports_bulk_with_allowed_address_pairs(self):
|
||||||
|
ctx = context.get_admin_context()
|
||||||
|
with self.network() as net:
|
||||||
|
|
||||||
|
aap = [{
|
||||||
|
'ip_address': '1.2.3.4',
|
||||||
|
'mac_address': '01:23:45:67:89:ab',
|
||||||
|
}]
|
||||||
|
ports_in = {
|
||||||
|
'ports': [{'port': {
|
||||||
|
'allowed_address_pairs': aap,
|
||||||
|
'network_id': net['network']['id'],
|
||||||
|
'project_id': self._tenant_id,
|
||||||
|
|
||||||
|
'admin_state_up': True,
|
||||||
|
'device_id': '',
|
||||||
|
'device_owner': '',
|
||||||
|
'fixed_ips': constants.ATTR_NOT_SPECIFIED,
|
||||||
|
'name': '',
|
||||||
|
'security_groups': constants.ATTR_NOT_SPECIFIED,
|
||||||
|
}}]}
|
||||||
|
ports_out = self.plugin.create_port_bulk(ctx, ports_in)
|
||||||
|
self.assertEqual(aap, ports_out[0]['allowed_address_pairs'])
|
||||||
|
|
||||||
|
def test_create_ports_bulk_with_extra_dhcp_opts(self):
|
||||||
|
ctx = context.get_admin_context()
|
||||||
|
with self.network() as net:
|
||||||
|
|
||||||
|
edo = [{
|
||||||
|
'opt_name': 'domain-name-servers',
|
||||||
|
'opt_value': '10.0.0.1',
|
||||||
|
'ip_version': 4,
|
||||||
|
}]
|
||||||
|
ports_in = {
|
||||||
|
'ports': [{'port': {
|
||||||
|
'extra_dhcp_opts': edo,
|
||||||
|
'network_id': net['network']['id'],
|
||||||
|
'project_id': self._tenant_id,
|
||||||
|
|
||||||
|
'admin_state_up': True,
|
||||||
|
'device_id': '',
|
||||||
|
'device_owner': '',
|
||||||
|
'fixed_ips': constants.ATTR_NOT_SPECIFIED,
|
||||||
|
'name': '',
|
||||||
|
'security_groups': constants.ATTR_NOT_SPECIFIED,
|
||||||
|
}}]}
|
||||||
|
ports_out = self.plugin.create_port_bulk(ctx, ports_in)
|
||||||
|
self.assertEqual(edo, ports_out[0]['extra_dhcp_opts'])
|
||||||
|
|
||||||
def test_delete_port_no_notify_in_disassociate_floatingips(self):
|
def test_delete_port_no_notify_in_disassociate_floatingips(self):
|
||||||
ctx = context.get_admin_context()
|
ctx = context.get_admin_context()
|
||||||
plugin = directory.get_plugin()
|
plugin = directory.get_plugin()
|
||||||
|
|
Loading…
Reference in New Issue