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
This commit is contained in:
parent
ab1b3f9bed
commit
625fdb423e
|
@ -76,7 +76,7 @@ class DNSExtensionDriver(api.ExtensionDriver):
|
|||
db_data[dns.DNSDOMAIN] = new_value
|
||||
|
||||
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
|
||||
dns_name, is_dns_domain_default = self._get_request_dns_name(
|
||||
request_data)
|
||||
|
|
|
@ -478,6 +478,24 @@ class DNSIntegrationTestCase(test_plugin.Ml2PluginV2TestCase):
|
|||
self.assertFalse(
|
||||
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_for_test(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.plugin.create_port(self.context, port_request)
|
||||
|
||||
def test_dns_driver_loaded_after_server_restart(self, *mocks):
|
||||
dns_integration.DNS_DRIVER = None
|
||||
net, port, dns_data_db = self._create_port_for_test()
|
||||
|
|
Loading…
Reference in New Issue