Set lock_path on compute and gateway nodes

PROD-34246

Change-Id: I3de5fffdd24ea059488d66bd7084dd5da032df88
diff --git a/metadata/service/compute/ovn/single.yml b/metadata/service/compute/ovn/single.yml
index 644e76b..a1fb5bc 100644
--- a/metadata/service/compute/ovn/single.yml
+++ b/metadata/service/compute/ovn/single.yml
@@ -16,6 +16,8 @@
       controller_vip: ${_param:cluster_vip_address}
       external_access: true
       external_bridge: ${_param:ovn_external_bridge}
+      concurrency:
+        lock_path: '/var/lib/neutron/lock'
       backend:
         engine: ovn
         ovsdb_connection: tcp:127.0.0.1:6640
diff --git a/metadata/service/compute/single.yml b/metadata/service/compute/single.yml
index baeb03c..075c9a5 100644
--- a/metadata/service/compute/single.yml
+++ b/metadata/service/compute/single.yml
@@ -12,6 +12,8 @@
     compute:
       enabled: true
       version: ${_param:neutron_version}
+      concurrency:
+        lock_path: '/var/lib/neutron/lock'
       message_queue:
         engine: rabbitmq
         host: ${_param:cluster_vip_address}
diff --git a/metadata/service/gateway/single.yml b/metadata/service/gateway/single.yml
index 631e749..5dfa8c4 100644
--- a/metadata/service/gateway/single.yml
+++ b/metadata/service/gateway/single.yml
@@ -11,6 +11,8 @@
     gateway:
       enabled: true
       version: ${_param:neutron_version}
+      concurrency:
+        lock_path: '/var/lib/neutron/lock'
       message_queue:
         engine: rabbitmq
         host: ${_param:cluster_vip_address}
diff --git a/neutron/compute.sls b/neutron/compute.sls
index 708a51d..d968c54 100644
--- a/neutron/compute.sls
+++ b/neutron/compute.sls
@@ -46,6 +46,16 @@
     - group: neutron
 {%- endif %}
 
+{%- if compute.get('concurrency', {}).lock_path is defined %}
+neutron_compute_lock_path_{{ compute.concurrency.lock_path }}:
+  file.directory:
+  - name: {{ compute.concurrency.lock_path }}
+  - user: neutron
+  - group: neutron
+  - mode: 750
+  - makedirs: True
+{%- endif %}
+
   {% if compute.backend.engine == "ml2" %}
 
     {% if compute.get('dhcp_agent_enabled', False) %}
diff --git a/neutron/files/pike/neutron-generic.conf b/neutron/files/pike/neutron-generic.conf
index 13f9b3f..1a51bbb 100644
--- a/neutron/files/pike/neutron-generic.conf
+++ b/neutron/files/pike/neutron-generic.conf
@@ -1281,7 +1281,7 @@
 # (string value)
 # Deprecated group/name - [DEFAULT]/lock_path
 #lock_path = /tmp
-lock_path = $state_path/lock
+lock_path = {{ neutron.get('concurrency', {}).get('lock_path', '/var/lib/neutron/lock') }}
 
 
 [oslo_messaging_amqp]
diff --git a/neutron/gateway.sls b/neutron/gateway.sls
index e51990a..58cc81e 100644
--- a/neutron/gateway.sls
+++ b/neutron/gateway.sls
@@ -112,6 +112,20 @@
   - require:
     - pkg: neutron_gateway_packages
 
+{%- if gateway.get('concurrency', {}).lock_path is defined %}
+neutron_gateway_lock_path_{{ gateway.concurrency.lock_path }}:
+  file.directory:
+  - name: {{ gateway.concurrency.lock_path }}
+  - user: neutron
+  - group: neutron
+  - mode: 750
+  - makedirs: True
+  - require:
+    - pkg: neutron_gateway_packages
+  - require_in:
+    - service: neutron_gateway_services
+{%- endif %}
+
 {%- for service_name in gateway.services %}
 {{ service_name }}_default:
   file.managed:
diff --git a/neutron/server.sls b/neutron/server.sls
index 5bbc033..ec3f767 100644
--- a/neutron/server.sls
+++ b/neutron/server.sls
@@ -269,7 +269,7 @@
 {%- endif %}
 
 {%- if server.get('concurrency', {}).lock_path is defined %}
-neutron_lock_path_{{ server.concurrency.lock_path }}:
+neutron_server_lock_path_{{ server.concurrency.lock_path }}:
   file.directory:
   - name: {{ server.concurrency.lock_path }}
   - user: neutron
diff --git a/neutron/upgrade/render_config.sls b/neutron/upgrade/render_config.sls
index 1c6971e..c94d49e 100644
--- a/neutron/upgrade/render_config.sls
+++ b/neutron/upgrade/render_config.sls
@@ -63,10 +63,21 @@
   - template: jinja
 {%- endfor %}
 
-{%- if server.get('concurrency', {}).lock_path is defined %}
-neutron_upgrade_lock_path_{{ server.concurrency.lock_path }}:
+{%- if server.enabled %}
+  {%- set _data = server %}
+  {%- set type = 'server' %}
+{%- elif gateway.enabled %}
+  {%- set _data = gateway %}
+  {%- set type = 'gateway' %}
+{%- elif compute.enabled %}
+  {%- set _data = compute %}
+  {%- set type = 'compute' %}
+{%- endif %}
+
+{%- if _data is defined and _data.get('concurrency', {}).lock_path is defined %}
+neutron_upgrade_{{ type }}_lock_path_{{ _data.concurrency.lock_path }}:
   file.directory:
-  - name: {{ server.concurrency.lock_path }}
+  - name: {{ _data.concurrency.lock_path }}
   - user: neutron
   - group: neutron
   - mode: 750