diff --git a/neutron/compute.sls b/neutron/compute.sls
index af5637f..5e61e6e 100644
--- a/neutron/compute.sls
+++ b/neutron/compute.sls
@@ -1,9 +1,9 @@
 {% from "neutron/map.jinja" import compute, fwaas with context %}
 {%- if compute.enabled %}
 
-{% if compute.backend.engine == "ml2" %}
+  {% if compute.backend.engine == "ml2" %}
 
-{% if compute.get('dhcp_agent_enabled', False) %}
+    {% if compute.get('dhcp_agent_enabled', False) %}
 neutron_dhcp_agent_packages:
   pkg.installed:
   - names:
@@ -27,248 +27,21 @@
   - require:
     - pkg: neutron_dhcp_agent_packages
 
-{% endif %}
+    {% endif %}
 
-{%- if compute.opendaylight is defined %}
-{%- include "neutron/opendaylight/client.sls" %}
-{%- else %}
-neutron_compute_packages:
-  pkg.installed:
-  - names: {{ compute.pkgs }}
-
-{% if compute.get('bgp_vpn', {}).get('enabled', False) and compute.bgp_vpn.driver == "bagpipe" %}
-{%- include "neutron/services/_bagpipe.sls" %}
-{% endif %}
-
-/etc/neutron/neutron.conf:
-  file.managed:
-  - source: salt://neutron/files/{{ compute.version }}/neutron-generic.conf.{{ grains.os_family }}
-  - template: jinja
-  - require:
-    - pkg: neutron_compute_packages
-
-{% if compute.backend.sriov is defined %}
-
-neutron_sriov_package:
-  pkg.installed:
-  - name: neutron-sriov-agent
-
-/etc/neutron/plugins/ml2/sriov_agent.ini:
-  file.managed:
-  - source: salt://neutron/files/{{ compute.version }}/sriov_agent.ini
-  - template: jinja
-  - watch_in:
-    - service: neutron_compute_services
-  - require:
-    - pkg: neutron_compute_packages
-    - pkg: neutron_sriov_package
-
-neutron_sriov_service:
-  service.running:
-  - name: neutron-sriov-agent
-  - enable: true
-  {%- if grains.get('noservices') %}
-  - onlyif: /bin/false
-  {%- endif %}
-  - watch_in:
-    - service: neutron_compute_services
-  - watch:
-    - file: /etc/neutron/neutron.conf
-    - file: /etc/neutron/plugins/ml2/openvswitch_agent.ini
-    - file: /etc/neutron/plugins/ml2/sriov_agent.ini
-    {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
-    - file: rabbitmq_ca_neutron_compute
+    {%- if compute.opendaylight is defined %}
+      {%- include "neutron/opendaylight/client.sls" %}
+    {%- else %}
+      {%- include "neutron/ml2_ovs/init.sls" %}
     {%- endif %}
 
-{% endif %}
-
-{% if compute.dvr %}
-
-{%- if fwaas.get('enabled', False) %}
-include:
-- neutron.fwaas
-{%- endif %}
-
-{%- if not grains.get('noservices', False) and pillar.haproxy is not defined %}
-# NOTE(mpolenchuk): haproxy is used as a replacement for
-# neutron-ns-metadata-proxy Python implementation starting from Pike
-haproxy:
-  service.dead:
-  - enable: False
-  - require:
-    - pkg: neutron_dvr_packages
-{%- if compute.get('dhcp_agent_enabled', False) %}
-    - pkg: neutron_dhcp_agent_packages
-{%- endif %}
-{%- endif %}
-
-neutron_dvr_packages:
-  pkg.installed:
-  - names:
-    - neutron-l3-agent
-    - neutron-metadata-agent
-
-neutron_dvr_agents:
-  service.running:
-    - enable: true
-    - names:
-      - neutron-l3-agent
-      - neutron-metadata-agent
-    - watch:
-      - file: /etc/neutron/neutron.conf
-      - file: /etc/neutron/l3_agent.ini
-      - file: /etc/neutron/metadata_agent.ini
-      {%- if fwaas.get('enabled', False) %}
-      - file: /etc/neutron/fwaas_driver.ini
-      {% endif %}
-      {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
-      - file: rabbitmq_ca_neutron_compute
-      {%- endif %}
-    - require:
-      - pkg: neutron_dvr_packages
-
-/etc/neutron/l3_agent.ini:
-  file.managed:
-  - source: salt://neutron/files/{{ compute.version }}/l3_agent.ini
-  - template: jinja
-  - watch_in:
-    - service: neutron_compute_services
-  - require:
-    - pkg: neutron_dvr_packages
-
-/etc/neutron/metadata_agent.ini:
-  file.managed:
-  - source: salt://neutron/files/{{ compute.version }}/metadata_agent.ini
-  - template: jinja
-  - watch_in:
-    - service: neutron_compute_services
-  - require:
-    - pkg: neutron_dvr_packages
-
-{% endif %}
-
-/etc/neutron/plugins/ml2/openvswitch_agent.ini:
-  file.managed:
-  - source: salt://neutron/files/{{ compute.version }}/openvswitch_agent.ini
-  - template: jinja
-  - require:
-    - pkg: neutron_compute_packages
-
-neutron_compute_services:
-  service.running:
-  - names: {{ compute.services }}
-  - enable: true
-  - watch:
-    - file: /etc/neutron/neutron.conf
-    - file: /etc/neutron/plugins/ml2/openvswitch_agent.ini
-    {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
-    - file: rabbitmq_ca_neutron_compute
-    {%- endif %}
-
-{%- set neutron_compute_services_list = compute.services %}
-{%- if compute.backend.sriov is defined %}
-  {%- do neutron_compute_services_list.append('neutron-sriov-agent') %}
-{%- endif %}
-{%- if compute.dvr %}
-  {%- do neutron_compute_services_list.extend(['neutron-l3-agent', 'neutron-metadata-agent']) %}
-{%- endif %}
-{%- if compute.get('dhcp_agent_enabled', False) %}
-  {%- do neutron_compute_services_list.append('neutron-dhcp-agent') %}
-{%- endif %}
-
-{%- for service_name in neutron_compute_services_list %}
-{{ service_name }}_default:
-  file.managed:
-    - name: /etc/default/{{ service_name }}
-    - source: salt://neutron/files/default
-    - template: jinja
-    - defaults:
-        service_name: {{ service_name }}
-        values: {{ compute }}
-    - require:
-      - pkg: neutron_compute_packages
-{% if compute.backend.sriov is defined %}
-      - pkg: neutron_sriov_package
-{% endif %}
-{% if compute.dvr %}
-      - pkg: neutron_dvr_packages
-{% endif %}
-    - watch_in:
-      - service: neutron_compute_services
-{% if compute.backend.sriov is defined %}
-      - service: neutron_sriov_service
-{% endif %}
-{% if compute.dvr %}
-      - service: neutron_dvr_agents
-{% endif %}
-{% endfor %}
-
-{%- if compute.logging.log_appender %}
-
-{%- if compute.logging.log_handlers.get('fluentd', {}).get('enabled', False) %}
-neutron_compute_fluentd_logger_package:
-  pkg.installed:
-    - name: python-fluent-logger
-{%- endif %}
-
-{% for service_name in neutron_compute_services_list %}
-{{ service_name }}_logging_conf:
-  file.managed:
-    - name: /etc/neutron/logging/logging-{{ service_name }}.conf
-    - source: salt://oslo_templates/files/logging/_logging.conf
-    - template: jinja
-    - makedirs: True
-    - user: neutron
-    - group: neutron
-    - defaults:
-        service_name: {{ service_name }}
-        _data: {{ compute.logging }}
-    - require:
-      - pkg: neutron_compute_packages
-{% if compute.backend.sriov is defined %}
-      - pkg: neutron_sriov_package
-{% endif %}
-{% if compute.dvr %}
-      - pkg: neutron_dvr_packages
-{% endif %}
-{%- if compute.logging.log_handlers.get('fluentd', {}).get('enabled', False) %}
-      - pkg: neutron_compute_fluentd_logger_package
-{%- endif %}
-    - watch_in:
-      - service: neutron_compute_services
-{% if compute.backend.sriov is defined %}
-      - service: neutron_sriov_service
-{% endif %}
-{% if compute.dvr %}
-      - service: neutron_dvr_agents
-{% endif %}
-{% endfor %}
-
-{% endif %}
-
-{%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
-rabbitmq_ca_neutron_compute:
-{%- if compute.message_queue.ssl.cacert is defined %}
-  file.managed:
-    - name: {{ compute.message_queue.ssl.cacert_file }}
-    - contents_pillar: neutron:compute:message_queue:ssl:cacert
-    - mode: 0444
-    - makedirs: true
-{%- else %}
-  file.exists:
-   - name: {{ compute.message_queue.ssl.get('cacert_file', compute.cacert_file) }}
-{%- endif %}
-{%- endif %}
-
-{%- endif %}{# !OpenDaylight #}
-
-{%- elif compute.backend.engine == "ovn" %}
+  {%- elif compute.backend.engine == "ovn" %}
 
 ovn_packages:
   pkg.installed:
   - names: {{ compute.pkgs_ovn }}
 
-{%- if not grains.get('noservices', False) %}
+    {%- if not grains.get('noservices', False) %}
 
 remote_ovsdb_access:
   cmd.run:
@@ -284,7 +57,7 @@
   - name: "ovs-vsctl set open .
   external-ids:ovn-encap-ip={{ compute.local_ip }}"
 
-{%- if compute.get('external_access', True) %}
+      {%- if compute.get('external_access', True) %}
 
 set_bridge_external_id:
   cmd.run:
@@ -296,18 +69,20 @@
   - name: "ovs-vsctl set open .
    external-ids:ovn-bridge-mappings=physnet1:{{ compute.external_bridge }}"
 
-{%- endif %}
+      {%- endif %}
 
 ovn_services:
   service.running:
   - names: {{ compute.services_ovn }}
   - enable: true
-  {%- if grains.get('noservices') %}
+      {%- if grains.get('noservices') %}
   - onlyif: /bin/false
-  {%- endif %}
+      {%- endif %}
   - require:
     - pkg: ovn_packages
 
-{%- endif %}
-{%- endif %}
+    {%- endif %}
+
+  {%- endif %}
+
 {%- endif %}
diff --git a/neutron/ml2_ovs/init.sls b/neutron/ml2_ovs/init.sls
new file mode 100644
index 0000000..f1fcdda
--- /dev/null
+++ b/neutron/ml2_ovs/init.sls
@@ -0,0 +1,236 @@
+{% from "neutron/map.jinja" import compute, fwaas with context %}
+{%- if compute.enabled %}
+
+  {% if compute.backend.engine == "ml2" %}
+
+neutron_compute_packages:
+  pkg.installed:
+  - names: {{ compute.pkgs }}
+
+    {% if compute.get('bgp_vpn', {}).get('enabled', False) and compute.bgp_vpn.driver == "bagpipe" %}
+      {%- include "neutron/services/_bagpipe.sls" %}
+    {% endif %}
+
+/etc/neutron/neutron.conf:
+  file.managed:
+  - source: salt://neutron/files/{{ compute.version }}/neutron-generic.conf.{{ grains.os_family }}
+  - template: jinja
+  - require:
+    - pkg: neutron_compute_packages
+
+    {% if compute.backend.sriov is defined %}
+
+neutron_sriov_package:
+  pkg.installed:
+  - name: neutron-sriov-agent
+
+/etc/neutron/plugins/ml2/sriov_agent.ini:
+  file.managed:
+  - source: salt://neutron/files/{{ compute.version }}/sriov_agent.ini
+  - template: jinja
+  - watch_in:
+    - service: neutron_compute_services
+  - require:
+    - pkg: neutron_compute_packages
+    - pkg: neutron_sriov_package
+
+neutron_sriov_service:
+  service.running:
+  - name: neutron-sriov-agent
+  - enable: true
+      {%- if grains.get('noservices') %}
+  - onlyif: /bin/false
+      {%- endif %}
+  - watch_in:
+    - service: neutron_compute_services
+  - watch:
+    - file: /etc/neutron/neutron.conf
+    - file: /etc/neutron/plugins/ml2/openvswitch_agent.ini
+    - file: /etc/neutron/plugins/ml2/sriov_agent.ini
+      {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
+    - file: rabbitmq_ca_neutron_compute
+      {%- endif %}
+
+    {% endif %}
+
+    {% if compute.dvr %}
+
+      {%- if fwaas.get('enabled', False) %}
+include:
+- neutron.fwaas
+      {%- endif %}
+
+      {%- if not grains.get('noservices', False) and pillar.haproxy is not defined %}
+# NOTE(mpolenchuk): haproxy is used as a replacement for
+# neutron-ns-metadata-proxy Python implementation starting from Pike
+haproxy:
+  service.dead:
+  - enable: False
+  - require:
+    - pkg: neutron_dvr_packages
+        {%- if compute.get('dhcp_agent_enabled', False) %}
+    - pkg: neutron_dhcp_agent_packages
+        {%- endif %}
+      {%- endif %}
+
+neutron_dvr_packages:
+  pkg.installed:
+  - names:
+    - neutron-l3-agent
+    - neutron-metadata-agent
+
+neutron_dvr_agents:
+  service.running:
+    - enable: true
+    - names:
+      - neutron-l3-agent
+      - neutron-metadata-agent
+    - watch:
+      - file: /etc/neutron/neutron.conf
+      - file: /etc/neutron/l3_agent.ini
+      - file: /etc/neutron/metadata_agent.ini
+      {%- if fwaas.get('enabled', False) %}
+      - file: /etc/neutron/fwaas_driver.ini
+      {% endif %}
+      {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
+      - file: rabbitmq_ca_neutron_compute
+      {%- endif %}
+    - require:
+      - pkg: neutron_dvr_packages
+
+/etc/neutron/l3_agent.ini:
+  file.managed:
+  - source: salt://neutron/files/{{ compute.version }}/l3_agent.ini
+  - template: jinja
+  - watch_in:
+    - service: neutron_compute_services
+  - require:
+    - pkg: neutron_dvr_packages
+
+/etc/neutron/metadata_agent.ini:
+  file.managed:
+  - source: salt://neutron/files/{{ compute.version }}/metadata_agent.ini
+  - template: jinja
+  - watch_in:
+    - service: neutron_compute_services
+  - require:
+    - pkg: neutron_dvr_packages
+
+    {% endif %}
+
+/etc/neutron/plugins/ml2/openvswitch_agent.ini:
+  file.managed:
+  - source: salt://neutron/files/{{ compute.version }}/openvswitch_agent.ini
+  - template: jinja
+  - require:
+    - pkg: neutron_compute_packages
+
+neutron_compute_services:
+  service.running:
+  - names: {{ compute.services }}
+  - enable: true
+  - watch:
+    - file: /etc/neutron/neutron.conf
+    - file: /etc/neutron/plugins/ml2/openvswitch_agent.ini
+    {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
+    - file: rabbitmq_ca_neutron_compute
+    {%- endif %}
+
+    {%- set neutron_compute_services_list = compute.services %}
+    {%- if compute.backend.sriov is defined %}
+      {%- do neutron_compute_services_list.append('neutron-sriov-agent') %}
+    {%- endif %}
+    {%- if compute.dvr %}
+      {%- do neutron_compute_services_list.extend(['neutron-l3-agent', 'neutron-metadata-agent']) %}
+    {%- endif %}
+    {%- if compute.get('dhcp_agent_enabled', False) %}
+      {%- do neutron_compute_services_list.append('neutron-dhcp-agent') %}
+    {%- endif %}
+
+    {%- for service_name in neutron_compute_services_list %}
+{{ service_name }}_default:
+  file.managed:
+    - name: /etc/default/{{ service_name }}
+    - source: salt://neutron/files/default
+    - template: jinja
+    - defaults:
+        service_name: {{ service_name }}
+        values: {{ compute }}
+    - require:
+      - pkg: neutron_compute_packages
+      {% if compute.backend.sriov is defined %}
+      - pkg: neutron_sriov_package
+      {% endif %}
+      {% if compute.dvr %}
+      - pkg: neutron_dvr_packages
+      {% endif %}
+    - watch_in:
+      - service: neutron_compute_services
+      {% if compute.backend.sriov is defined %}
+      - service: neutron_sriov_service
+      {% endif %}
+      {% if compute.dvr %}
+      - service: neutron_dvr_agents
+      {% endif %}
+    {% endfor %}
+
+    {%- if compute.logging.log_appender %}
+
+      {%- if compute.logging.log_handlers.get('fluentd', {}).get('enabled', False) %}
+neutron_compute_fluentd_logger_package:
+  pkg.installed:
+    - name: python-fluent-logger
+      {%- endif %}
+
+      {% for service_name in neutron_compute_services_list %}
+{{ service_name }}_logging_conf:
+  file.managed:
+    - name: /etc/neutron/logging/logging-{{ service_name }}.conf
+    - source: salt://oslo_templates/files/logging/_logging.conf
+    - template: jinja
+    - makedirs: True
+    - user: neutron
+    - group: neutron
+    - defaults:
+        service_name: {{ service_name }}
+        _data: {{ compute.logging }}
+    - require:
+      - pkg: neutron_compute_packages
+        {% if compute.backend.sriov is defined %}
+      - pkg: neutron_sriov_package
+        {% endif %}
+        {% if compute.dvr %}
+      - pkg: neutron_dvr_packages
+        {% endif %}
+        {%- if compute.logging.log_handlers.get('fluentd', {}).get('enabled', False) %}
+      - pkg: neutron_compute_fluentd_logger_package
+        {%- endif %}
+    - watch_in:
+      - service: neutron_compute_services
+        {% if compute.backend.sriov is defined %}
+      - service: neutron_sriov_service
+        {% endif %}
+        {% if compute.dvr %}
+      - service: neutron_dvr_agents
+        {% endif %}
+      {% endfor %}
+
+    {% endif %}
+
+    {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
+rabbitmq_ca_neutron_compute:
+      {%- if compute.message_queue.ssl.cacert is defined %}
+  file.managed:
+    - name: {{ compute.message_queue.ssl.cacert_file }}
+    - contents_pillar: neutron:compute:message_queue:ssl:cacert
+    - mode: 0444
+    - makedirs: true
+      {%- else %}
+  file.exists:
+   - name: {{ compute.message_queue.ssl.get('cacert_file', compute.cacert_file) }}
+      {%- endif %}
+    {%- endif %}
+
+  {%- endif %}
+
+{%- endif %}
