diff --git a/config.yaml b/config.yaml index f58b519e..d2f0b4b0 100755 --- a/config.yaml +++ b/config.yaml @@ -185,7 +185,7 @@ options: type: int description: | Number of routers allowed per tenant. A negative value means unlimited. - quota-floatingip: + quota-floatingip: default: 50 type: int description: | @@ -398,6 +398,12 @@ options: description: | Minimum number of l3 agents to host a router. Only used when enable-l3ha is True + dhcp-agents-per-network: + default: 1 + type: int + description: | + The number of dhcp agents to be deployed per network. Note that if the + Calico plugin is being used, this option has no effect. nagios_servicegroups: default: "" type: string diff --git a/hooks/neutron_api_context.py b/hooks/neutron_api_context.py index 96dbe6eb..5af5aa26 100644 --- a/hooks/neutron_api_context.py +++ b/hooks/neutron_api_context.py @@ -174,6 +174,7 @@ class NeutronCCContext(context.NeutronContext): config('max-l3-agents-per-router') ctxt['min_l3_agents_per_router'] = \ config('min-l3-agents-per-router') + ctxt['dhcp_agents_per_network'] = config('dhcp-agents-per-network') ctxt['overlay_network_type'] = self.neutron_overlay_network_type ctxt['external_network'] = config('neutron-external-network') if config('neutron-plugin') in ['vsp']: diff --git a/templates/icehouse/neutron.conf b/templates/icehouse/neutron.conf index 4ef069c7..a0756a34 100644 --- a/templates/icehouse/neutron.conf +++ b/templates/icehouse/neutron.conf @@ -47,6 +47,8 @@ neutron_firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptable {% if neutron_plugin == 'Calico' -%} dhcp_agents_per_network = 1000 +{% else -%} +dhcp_agents_per_network = {{ dhcp_agents_per_network }} {% endif -%} {% include "parts/rabbitmq" %} @@ -82,7 +84,7 @@ quota_security_group_rule = {{ quota_security_group_rule }} quota_items = network,subnet,port {% endif -%} quota_network = {{ quota_network }} -quota_subnet = {{ quota_subnet }} +quota_subnet = {{ quota_subnet }} quota_port = {{ quota_port }} quota_vip = {{ quota_vip }} quota_pool = {{ quota_pool }} diff --git a/templates/juno/neutron.conf b/templates/juno/neutron.conf index d5ed593d..2e91e1af 100644 --- a/templates/juno/neutron.conf +++ b/templates/juno/neutron.conf @@ -47,6 +47,8 @@ neutron_firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptable {% if neutron_plugin == 'Calico' -%} dhcp_agents_per_network = 1000 +{% else -%} +dhcp_agents_per_network = {{ dhcp_agents_per_network }} {% endif -%} {% include "parts/rabbitmq" %} diff --git a/templates/kilo/neutron.conf b/templates/kilo/neutron.conf index b03b3e0f..6c56c153 100644 --- a/templates/kilo/neutron.conf +++ b/templates/kilo/neutron.conf @@ -51,6 +51,8 @@ neutron_firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptable {% if neutron_plugin == 'Calico' -%} dhcp_agents_per_network = 1000 +{% else -%} +dhcp_agents_per_network = {{ dhcp_agents_per_network }} {% endif -%} notify_nova_on_port_status_changes = True diff --git a/templates/liberty/neutron.conf b/templates/liberty/neutron.conf index 4a15e5f9..2f5d6997 100644 --- a/templates/liberty/neutron.conf +++ b/templates/liberty/neutron.conf @@ -51,6 +51,8 @@ neutron_firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptable {% if neutron_plugin == 'Calico' -%} dhcp_agents_per_network = 1000 +{% else -%} +dhcp_agents_per_network = {{ dhcp_agents_per_network }} {% endif -%} notify_nova_on_port_status_changes = True diff --git a/unit_tests/test_neutron_api_context.py b/unit_tests/test_neutron_api_context.py index c5b5acff..ea414f67 100644 --- a/unit_tests/test_neutron_api_context.py +++ b/unit_tests/test_neutron_api_context.py @@ -284,6 +284,7 @@ class NeutronCCContextTest(CharmTestCase): self.test_config.set('plumgrid-password', 'plumgrid') self.test_config.set('plumgrid-virtual-ip', '192.168.100.250') self.test_config.set('enable-ml2-port-security', True) + self.test_config.set('dhcp-agents-per-network', 3) def tearDown(self): super(NeutronCCContextTest, self).tearDown() @@ -297,6 +298,7 @@ class NeutronCCContextTest(CharmTestCase): 'debug': True, 'enable_dvr': False, 'l3_ha': False, + 'dhcp_agents_per_network': 3, 'external_network': 'bob', 'neutron_bind_port': self.api_port, 'verbose': True, @@ -331,6 +333,7 @@ class NeutronCCContextTest(CharmTestCase): 'debug': True, 'enable_dvr': False, 'l3_ha': False, + 'dhcp_agents_per_network': 3, 'external_network': 'bob', 'neutron_bind_port': self.api_port, 'verbose': True, @@ -376,6 +379,7 @@ class NeutronCCContextTest(CharmTestCase): 'overlay_network_type': 'gre', 'max_l3_agents_per_router': 2, 'min_l3_agents_per_router': 2, + 'dhcp_agents_per_network': 3, 'quota_floatingip': 50, 'quota_health_monitors': -1, 'quota_member': -1,