Ability to set lock_path

PROD-34037

Change-Id: I0b462d1debf0fe57192cca3b63cc550560f722c6
diff --git a/README.rst b/README.rst
index 2ed2f57..6c9c9e4 100644
--- a/README.rst
+++ b/README.rst
@@ -31,6 +31,8 @@
         bind:
           api:
             address: 127.0.0.1
+        concurrency:
+          lock_path: '/var/lib/designate'
         database:
           engine: mysql
           host: 127.0.0.1
diff --git a/designate/files/pike/designate.conf.Debian b/designate/files/pike/designate.conf.Debian
index d0283b6..154fe98 100644
--- a/designate/files/pike/designate.conf.Debian
+++ b/designate/files/pike/designate.conf.Debian
@@ -620,6 +620,7 @@
 # Path for Oslo Concurrency to store lock files, defaults to the value
 # of the state_path setting.
 #lock_path = $state_path
+lock_path = {{ server.get('concurrency', {}).get('lock_path', '/var/lib/designate') }}
 
 ########################
 ## Coordination
diff --git a/designate/server.sls b/designate/server.sls
index dbdedbc..9525d55 100644
--- a/designate/server.sls
+++ b/designate/server.sls
@@ -141,6 +141,20 @@
   - require_in:
     - sls: designate.db.offline_sync
 
+{%- if server.get('concurrency', {}).lock_path is defined %}
+designate_lock_path_{{ server.concurrency.lock_path }}:
+  file.directory:
+  - name: {{ server.concurrency.lock_path }}
+  - user: designate
+  - group: designate
+  - mode: 750
+  - makedirs: True
+  - require:
+    - pkg: designate_server_packages
+  - require_in:
+    - service: designate_server_services
+{%- endif %}
+
 designate_pool_sync:
   cmd.run:
     - name: designate-manage pool-manager-cache sync
diff --git a/designate/upgrade/render_config.sls b/designate/upgrade/render_config.sls
index 98c08ac..b0ad505 100644
--- a/designate/upgrade/render_config.sls
+++ b/designate/upgrade/render_config.sls
@@ -17,4 +17,14 @@
   - source: salt://designate/files/{{ server.version }}/api-paste.ini
   - template: jinja
 
+{%- if server.get('concurrency', {}).lock_path is defined %}
+designate_upgrade_lock_path_{{ server.concurrency.lock_path }}:
+  file.directory:
+  - name: {{ server.concurrency.lock_path }}
+  - user: designate
+  - group: designate
+  - mode: 750
+  - makedirs: True
+{%- endif %}
+
 {%- endif %}
diff --git a/metadata/service/server/cluster.yml b/metadata/service/server/cluster.yml
index 064cfd7..72a6ed9 100644
--- a/metadata/service/server/cluster.yml
+++ b/metadata/service/server/cluster.yml
@@ -18,6 +18,8 @@
       bind:
         api:
           address: ${_param:cluster_local_address}
+      concurrency:
+        lock_path: '/var/lib/designate'
       database:
         engine: mysql
         host: ${_param:cluster_vip_address}
diff --git a/metadata/service/server/single.yml b/metadata/service/server/single.yml
index 2cf8bfe..ace7f3b 100644
--- a/metadata/service/server/single.yml
+++ b/metadata/service/server/single.yml
@@ -18,6 +18,8 @@
       bind:
         api:
           address: ${_param:single_address}
+      concurrency:
+        lock_path: '/var/lib/designate'
       database:
         engine: mysql
         host: ${_param:single_address}