Ability to set lock_path

PROD-34037

Change-Id: I48a064669a226a7b1854d82135aa8304e642f2d7
diff --git a/README.rst b/README.rst
index ba17691..17d5c9f 100644
--- a/README.rst
+++ b/README.rst
@@ -19,6 +19,8 @@
       bind:
         address: 0.0.0.0
         port: 6385
+      concurrency:
+        lock_path: '/var/lib/ironic/tmp'
       database:
         engine: mysql
         host: localhost
@@ -44,6 +46,8 @@
     conductor:
       enabled: true
       version: mitaka
+      concurrency:
+        lock_path: '/var/lib/ironic/tmp'
       database:
         engine: mysql
         host: localhost
diff --git a/ironic/_common.sls b/ironic/_common.sls
index 0b636ec..a254226 100644
--- a/ironic/_common.sls
+++ b/ironic/_common.sls
@@ -53,3 +53,16 @@
       - service: {{ ironic.service }}
 {% endif %}
 
+{%- if ironic.get('concurrency', {}).lock_path is defined %}
+ironic_{{ service_name }}_lock_path_{{ ironic.concurrency.lock_path }}:
+  file.directory:
+  - name: {{ ironic.concurrency.lock_path }}
+  - user: ironic
+  - group: ironic
+  - mode: 750
+  - makedirs: True
+  - require:
+    - pkg: ironic_common_pkgs
+  - require_in:
+    - service: {{ ironic.service }}
+{%- endif %}
diff --git a/ironic/api.sls b/ironic/api.sls
index 46836e3..c2188ed 100644
--- a/ironic/api.sls
+++ b/ironic/api.sls
@@ -69,7 +69,7 @@
       - sls: ironic.db.offline_sync
     - watch:
       - file: /etc/ironic/ironic.conf
-      - file: /etc/ironic/policy.json
+      - file: /etc/ironic/{{ api.get('oslo_policy', {}).get('policy_file', 'policy.json') }}
 
 /etc/ironic/{{ api.get('oslo_policy', {}).get('policy_file', 'policy.json') }}:
   file.managed:
diff --git a/ironic/files/pike/ironic.conf b/ironic/files/pike/ironic.conf
index b7aba78..3f3ff42 100644
--- a/ironic/files/pike/ironic.conf
+++ b/ironic/files/pike/ironic.conf
@@ -3058,6 +3058,7 @@
 # used, a lock path must be set. (string value)
 # Deprecated group/name - [DEFAULT]/lock_path
 #lock_path = <None>
+lock_path = {{ ironic.get('concurrency', {}).get('lock_path', '/var/lib/ironic/tmp') }}
 
 
 [oslo_messaging_amqp]
diff --git a/ironic/upgrade/render_config.sls b/ironic/upgrade/render_config.sls
index 68d0a19..8d652be 100644
--- a/ironic/upgrade/render_config.sls
+++ b/ironic/upgrade/render_config.sls
@@ -14,3 +14,13 @@
   file.managed:
   - source: salt://ironic/files/{{ ironic.version }}/ironic.conf
   - template: jinja
+
+{%- if ironic.get('concurrency', {}).lock_path is defined %}
+ironic_upgrade_{{ service_name }}_lock_path_{{ ironic.concurrency.lock_path }}:
+  file.directory:
+  - name: {{ ironic.concurrency.lock_path }}
+  - user: ironic
+  - group: ironic
+  - mode: 750
+  - makedirs: True
+{%- endif %}
diff --git a/metadata/service/api/cluster.yml b/metadata/service/api/cluster.yml
index 1ccc55e..efb647a 100644
--- a/metadata/service/api/cluster.yml
+++ b/metadata/service/api/cluster.yml
@@ -25,6 +25,8 @@
         address: ${_param:cluster_local_address}
         port: 6385
         protocol: 'http'
+      concurrency:
+        lock_path: '/var/lib/ironic/tmp'
       message_queue:
         engine: rabbitmq
         port: 5672
diff --git a/metadata/service/api/single.yml b/metadata/service/api/single.yml
index bde3356..affaab3 100644
--- a/metadata/service/api/single.yml
+++ b/metadata/service/api/single.yml
@@ -25,6 +25,8 @@
         address: ${_param:single_address}
         port: 6385
         protocol: 'http'
+      concurrency:
+        lock_path: '/var/lib/ironic/tmp'
       message_queue:
         engine: rabbitmq
         port: 5672
diff --git a/metadata/service/conductor/cluster.yml b/metadata/service/conductor/cluster.yml
index 79b0bc3..bdd6b61 100644
--- a/metadata/service/conductor/cluster.yml
+++ b/metadata/service/conductor/cluster.yml
@@ -11,6 +11,8 @@
   ironic:
     conductor:
       enabled: true
+      concurrency:
+        lock_path: '/var/lib/ironic/tmp'
       logging:
         log_appender: ${_param:openstack_log_appender}
         log_handlers:
diff --git a/metadata/service/conductor/single.yml b/metadata/service/conductor/single.yml
index d6f89d9..f6a136b 100644
--- a/metadata/service/conductor/single.yml
+++ b/metadata/service/conductor/single.yml
@@ -10,6 +10,8 @@
   ironic:
     conductor:
       enabled: true
+      concurrency:
+        lock_path: '/var/lib/ironic/tmp'
       logging:
         log_appender: ${_param:openstack_log_appender}
         log_handlers: