From 03b4c706fae54a381b78c0f516499bfac986fb26 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rados=C5=82aw=20Piliszek?= <radoslaw.piliszek@gmail.com>
Date: Tue, 13 Aug 2019 20:22:54 +0200
Subject: [PATCH] Allow cinder coordination backend to be configured
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is to allow operator to prevent enabling redis and/or
etcd from magically configuring cinder coordinator.

Note this change is backwards-compatible.

Change-Id: Ie10be55968e43e3b9cc347b1b58771c1f7b1b910
Related-Bug: #1840070
Signed-off-by: Radosław Piliszek <radoslaw.piliszek@gmail.com>
---
 ansible/group_vars/all.yml                                  | 2 ++
 ansible/roles/cinder/templates/cinder.conf.j2               | 4 ++--
 etc/kolla/globals.yml                                       | 2 ++
 ...riable-cinder-coordination-backend-3426a4e1bd22cbbb.yaml | 6 ++++++
 4 files changed, 12 insertions(+), 2 deletions(-)
 create mode 100644 releasenotes/notes/new-variable-cinder-coordination-backend-3426a4e1bd22cbbb.yaml

diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 23f3bc6e86..407d01bef5 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -820,6 +820,8 @@ cinder_backend_ceph: "{{ enable_ceph }}"
 cinder_backend_vmwarevc_vmdk: "no"
 cinder_volume_group: "cinder-volumes"
 cinder_target_helper: "tgtadm"
+# Valid options are [ '', redis, etcd ]
+cinder_coordination_backend: "{{ 'redis' if enable_redis|bool else 'etcd' if enable_etcd|bool else '' }}"
 
 # Valid options are [ nfs, swift, ceph ]
 cinder_backup_driver: "ceph"
diff --git a/ansible/roles/cinder/templates/cinder.conf.j2 b/ansible/roles/cinder/templates/cinder.conf.j2
index 476dc44412..64796fc1dc 100644
--- a/ansible/roles/cinder/templates/cinder.conf.j2
+++ b/ansible/roles/cinder/templates/cinder.conf.j2
@@ -206,9 +206,9 @@ auth_endpoint = {{ keystone_internal_url }}
 {% endif %}
 
 [coordination]
-{% if enable_redis | bool %}
+{% if cinder_coordination_backend == 'redis' %}
 backend_url = {{ redis_connection_string }}
-{% elif enable_etcd | bool %}
+{% elif cinder_coordination_backend == 'etcd' %}
 # NOTE(jeffrey4l): python-etcd3 module do not support multi endpoint here.
 backend_url = etcd3://{{ hostvars[groups['etcd'][0]]['ansible_' + hostvars[groups['etcd'][0]]['api_interface']]['ipv4']['address'] }}:{{ etcd_client_port }}
 {% endif %}
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 006c2adc2e..7604f1e7b8 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -420,6 +420,8 @@
 #cinder_backend_ceph: "{{ enable_ceph }}"
 #cinder_backend_vmwarevc_vmdk: "no"
 #cinder_volume_group: "cinder-volumes"
+# Valid options are [ '', redis, etcd ]
+#cinder_coordination_backend: "{{ 'redis' if enable_redis|bool else 'etcd' if enable_etcd|bool else '' }}"
 
 # Valid options are [ nfs, swift, ceph ]
 #cinder_backup_driver: "ceph"
diff --git a/releasenotes/notes/new-variable-cinder-coordination-backend-3426a4e1bd22cbbb.yaml b/releasenotes/notes/new-variable-cinder-coordination-backend-3426a4e1bd22cbbb.yaml
new file mode 100644
index 0000000000..b4053b48ea
--- /dev/null
+++ b/releasenotes/notes/new-variable-cinder-coordination-backend-3426a4e1bd22cbbb.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Cinder coordination backend can now be configured via
+    cinder_coordination_backend variable.
+    Coordination is optional and can now be set to either redis or etcd.