diff --git a/etc/dhcp_agent.ini b/etc/dhcp_agent.ini index 425684b04f6..583f136e64b 100644 --- a/etc/dhcp_agent.ini +++ b/etc/dhcp_agent.ini @@ -62,8 +62,9 @@ # Override the default dnsmasq settings with this file # dnsmasq_config_file = -# Use another DNS server before any in /etc/resolv.conf. -# dnsmasq_dns_server = +# Comma-separated list of DNS servers which will be used by dnsmasq +# as forwarders. +# dnsmasq_dns_servers = # Limit number of leases to prevent a denial-of-service. # dnsmasq_lease_max = 16777216 diff --git a/neutron/agent/linux/dhcp.py b/neutron/agent/linux/dhcp.py index 137f7a9272e..734938377d4 100644 --- a/neutron/agent/linux/dhcp.py +++ b/neutron/agent/linux/dhcp.py @@ -49,9 +49,10 @@ OPTS = [ cfg.StrOpt('dnsmasq_config_file', default='', help=_('Override the default dnsmasq settings with this file')), - cfg.StrOpt('dnsmasq_dns_server', - help=_('Use another DNS server before any in ' - '/etc/resolv.conf.')), + cfg.ListOpt('dnsmasq_dns_servers', + help=_('Comma-separated list of the DNS servers which will be ' + 'used as forwarders.'), + deprecated_name='dnsmasq_dns_server'), cfg.BoolOpt('dhcp_delete_namespaces', default=False, help=_("Delete namespace after removing a dhcp server.")), cfg.IntOpt( @@ -364,8 +365,10 @@ class Dnsmasq(DhcpLocalProcess): min(possible_leases, self.conf.dnsmasq_lease_max)) cmd.append('--conf-file=%s' % self.conf.dnsmasq_config_file) - if self.conf.dnsmasq_dns_server: - cmd.append('--server=%s' % self.conf.dnsmasq_dns_server) + if self.conf.dnsmasq_dns_servers: + cmd.extend( + '--server=%s' % server + for server in self.conf.dnsmasq_dns_servers) if self.conf.dhcp_domain: cmd.append('--domain=%s' % self.conf.dhcp_domain) diff --git a/neutron/tests/unit/test_linux_dhcp.py b/neutron/tests/unit/test_linux_dhcp.py index 3ab90b84a40..e2a07a2c8b7 100644 --- a/neutron/tests/unit/test_linux_dhcp.py +++ b/neutron/tests/unit/test_linux_dhcp.py @@ -663,11 +663,19 @@ class TestDnsmasq(TestBase): self._test_spawn(['--conf-file=']) def test_spawn_cfg_dns_server(self): - self.conf.set_override('dnsmasq_dns_server', '8.8.8.8') + self.conf.set_override('dnsmasq_dns_servers', ['8.8.8.8']) self._test_spawn(['--conf-file=', '--server=8.8.8.8', '--domain=openstacklocal']) + def test_spawn_cfg_multiple_dns_server(self): + self.conf.set_override('dnsmasq_dns_servers', ['8.8.8.8', + '9.9.9.9']) + self._test_spawn(['--conf-file=', + '--server=8.8.8.8', + '--server=9.9.9.9', + '--domain=openstacklocal']) + def test_spawn_max_leases_is_smaller_than_cap(self): self._test_spawn( ['--conf-file=', '--domain=openstacklocal'],