Avoid KeyError when accessing "dns_name" as it may not exist
Neutron LBaaS does not pass a full copy of the request_data
into this function, and causes the port create to fail
with a KeyError
Change-Id: Ib81cbbaf24a4ffaa983e1b05146aea0dc74e29bb
Fixes-Bug: #1605336
(cherry picked from commit 625fdb423e
)
This commit is contained in:
parent
0a22fcfdaf
commit
b0778fe801
@ -75,7 +75,7 @@ class DNSExtensionDriver(api.ExtensionDriver):
|
|||||||
db_data[dns.DNSDOMAIN] = new_value
|
db_data[dns.DNSDOMAIN] = new_value
|
||||||
|
|
||||||
def process_create_port(self, plugin_context, request_data, db_data):
|
def process_create_port(self, plugin_context, request_data, db_data):
|
||||||
if not request_data[dns.DNSNAME]:
|
if not request_data.get(dns.DNSNAME):
|
||||||
return
|
return
|
||||||
network = self._get_network(plugin_context, db_data['network_id'])
|
network = self._get_network(plugin_context, db_data['network_id'])
|
||||||
if not network[dns.DNSDOMAIN]:
|
if not network[dns.DNSDOMAIN]:
|
||||||
|
@ -460,6 +460,24 @@ class DNSIntegrationTestCase(test_plugin.Ml2PluginV2TestCase):
|
|||||||
self.assertFalse(
|
self.assertFalse(
|
||||||
mock_admin_client.recordsets.delete.call_args_list)
|
mock_admin_client.recordsets.delete.call_args_list)
|
||||||
|
|
||||||
|
def test_create_port_dns_name_field_missing(self, *mocks):
|
||||||
|
res = self._create_network(self.fmt, 'test_network', True)
|
||||||
|
net = self.deserialize(self.fmt, res)['network']
|
||||||
|
cidr = '10.0.0.0/24'
|
||||||
|
self._create_subnet(self.fmt, net['id'], cidr)
|
||||||
|
port_request = {
|
||||||
|
'port': {
|
||||||
|
'network_id': net['id'],
|
||||||
|
'tenant_id': net['tenant_id'],
|
||||||
|
'name': 'mugsie',
|
||||||
|
'admin_state_up': True,
|
||||||
|
'device_id': '',
|
||||||
|
'device_owner': '',
|
||||||
|
'fixed_ips': ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self._create_port('json', net['id'], **port_request)
|
||||||
|
|
||||||
def test_dns_driver_loaded_after_server_restart(self, *mocks):
|
def test_dns_driver_loaded_after_server_restart(self, *mocks):
|
||||||
dns_integration.DNS_DRIVER = None
|
dns_integration.DNS_DRIVER = None
|
||||||
config.cfg.CONF.set_override('dns_domain', DNSDOMAIN)
|
config.cfg.CONF.set_override('dns_domain', DNSDOMAIN)
|
||||||
|
Loading…
Reference in New Issue
Block a user