Add option to disable DHCP on gateway nodes
Related-Prod: PROD-30105
Change-Id: I0df5de0f7a4a8deed1eccb66e1c43395a23452ea
diff --git a/README.rst b/README.rst
index 8986c63..b48e194 100644
--- a/README.rst
+++ b/README.rst
@@ -945,6 +945,17 @@
dhcp_agent_enabled: true
....
+Neutron with DHCP agent disabled on gateway node
+------------------------------------------------
+
+.. code-block:: yaml
+
+ neutron:
+ ....
+ gateway:
+ dhcp_agent_enabled: false
+ ....
+
Neutron with metadata agent on compute node
-------------------------------------------
diff --git a/neutron/gateway.sls b/neutron/gateway.sls
index 61b4372..b1b61f7 100644
--- a/neutron/gateway.sls
+++ b/neutron/gateway.sls
@@ -83,6 +83,7 @@
{%- endif %}
{%- endif %}
+{% if gateway.get('dhcp_agent_enabled', True) %}
/etc/neutron/dhcp_agent.ini:
file.managed:
- source: salt://neutron/files/{{ gateway.version }}/dhcp_agent.ini
@@ -91,6 +92,7 @@
- template: jinja
- require:
- pkg: neutron_gateway_packages
+{%- endif %}
/etc/neutron/metadata_agent.ini:
file.managed:
@@ -176,7 +178,9 @@
- watch:
- file: /etc/neutron/neutron.conf
- file: /etc/neutron/metadata_agent.ini
+ {% if gateway.get('dhcp_agent_enabled', True) %}
- file: /etc/neutron/dhcp_agent.ini
+ {%- endif %}
{%- if gateway.opendaylight is not defined %}
- file: /etc/neutron/l3_agent.ini
{%- if gateway.backend.get('mechanism', {}).get('lb', {}).get('driver', {}) == "linuxbridge" %}
diff --git a/neutron/map.jinja b/neutron/map.jinja
index 8312d13..9e6cb36 100644
--- a/neutron/map.jinja
+++ b/neutron/map.jinja
@@ -72,8 +72,14 @@
{%- set opendaylight_enabled = pillar.neutron.gateway is defined and pillar.neutron.gateway.opendaylight is defined %}
{%- set linuxbridge_enabled = pillar.neutron.gateway is defined and pillar.neutron.gateway.get('backend', {}).get('mechanism', {}).get('lb', {}).get('driver', {}) == "linuxbridge" %}
-{%- set pkgs_list = ['neutron-dhcp-agent', 'neutron-metadata-agent'] %}
-{%- set services_list = ['neutron-metadata-agent', 'neutron-dhcp-agent'] %}
+{%- set dhcp_enabled = pillar.neutron.gateway is defined and pillar.neutron.gateway.get('dhcp_agent_enabled', True) %}
+{%- set pkgs_list = ['neutron-metadata-agent'] %}
+
+{%- set services_list = ['neutron-metadata-agent'] %}
+{%- if dhcp_enabled %}
+{%- do pkgs_list.extend(['neutron-dhcp-agent']) %}
+{%- do services_list.extend(['neutron-dhcp-agent']) %}
+{%- endif %}
{%- if linuxbridge_enabled %}
{%- do pkgs_list.extend(['neutron-linuxbridge-agent', 'neutron-l3-agent']) %}
{%- do services_list.extend(['neutron-linuxbridge-agent', 'neutron-l3-agent']) %}