Ability to set lock_path

PROD-34037

Change-Id: Iad261dc3529838be47da35a40a12cf101e4b4313
diff --git a/README.rst b/README.rst
index 210b7ef..aeb895e 100644
--- a/README.rst
+++ b/README.rst
@@ -519,6 +519,8 @@
         bind:
           address: 172.20.0.1
           port: 9696
+        concurrency:
+          lock_path: '/var/lib/neutron/lock'
         database:
           engine: mysql
           host: 127.0.0.1
diff --git a/metadata/service/control/cluster.yml b/metadata/service/control/cluster.yml
index e296c90..f95a0b7 100644
--- a/metadata/service/control/cluster.yml
+++ b/metadata/service/control/cluster.yml
@@ -21,6 +21,8 @@
       bind:
         address: ${_param:cluster_local_address}
         port: 9696
+      concurrency:
+        lock_path: '/var/lib/neutron/lock'
       database:
         engine: mysql
         host: ${_param:cluster_vip_address}
diff --git a/metadata/service/control/single.yml b/metadata/service/control/single.yml
index 9275ed3..44917e3 100644
--- a/metadata/service/control/single.yml
+++ b/metadata/service/control/single.yml
@@ -25,6 +25,8 @@
       bind:
         address: ${_param:single_address}
         port: 9696
+      concurrency:
+        lock_path: '/var/lib/neutron/lock'
       database:
         engine: mysql
         host: ${_param:single_address}
diff --git a/neutron/files/pike/neutron-server.conf b/neutron/files/pike/neutron-server.conf
index 1e9c5e8..4938383 100644
--- a/neutron/files/pike/neutron-server.conf
+++ b/neutron/files/pike/neutron-server.conf
@@ -1431,7 +1431,7 @@
 # (string value)
 # Deprecated group/name - [DEFAULT]/lock_path
 #lock_path = /tmp
-lock_path = $state_path/lock
+lock_path = {{ server.get('concurrency', {}).get('lock_path', '/var/lib/neutron/lock') }}
 
 
 [oslo_messaging_amqp]
diff --git a/neutron/server.sls b/neutron/server.sls
index 304c32c..5bbc033 100644
--- a/neutron/server.sls
+++ b/neutron/server.sls
@@ -268,6 +268,20 @@
     - service: neutron_server_services
 {%- endif %}
 
+{%- if server.get('concurrency', {}).lock_path is defined %}
+neutron_lock_path_{{ server.concurrency.lock_path }}:
+  file.directory:
+  - name: {{ server.concurrency.lock_path }}
+  - user: neutron
+  - group: neutron
+  - mode: 750
+  - makedirs: True
+  - require:
+    - pkg: neutron_server_packages
+  - require_in:
+    - service: neutron_server_services
+{%- endif %}
+
 {%- if server.backend.engine == "ovn" %}
 
 ovn_packages:
diff --git a/neutron/upgrade/render_config.sls b/neutron/upgrade/render_config.sls
index c088792..1c6971e 100644
--- a/neutron/upgrade/render_config.sls
+++ b/neutron/upgrade/render_config.sls
@@ -62,3 +62,13 @@
   - source: {{ source }}
   - template: jinja
 {%- endfor %}
+
+{%- if server.get('concurrency', {}).lock_path is defined %}
+neutron_upgrade_lock_path_{{ server.concurrency.lock_path }}:
+  file.directory:
+  - name: {{ server.concurrency.lock_path }}
+  - user: neutron
+  - group: neutron
+  - mode: 750
+  - makedirs: True
+{%- endif %}