From 4fde486dc8b29b8d087ab4bfff0e626b2479abd2 Mon Sep 17 00:00:00 2001
From: Paul Bourke <paul.bourke@oracle.com>
Date: Wed, 22 Mar 2017 13:14:37 +0000
Subject: [PATCH] Only start one glance_api when using file backend

The default backend storage for Glance in Kolla is file, as this is the
easiest to deploy. However, this leads to frustration in a multinode
scenario as the volumes aren't shared.

This change sets glance_api to only start on one control node when using
the file backend.

DocImpact
Closes-Bug: #1681301
Change-Id: I2c167bae6f34a102cd7fe66401d7defe13bf2bf7
---
 ansible/roles/glance/defaults/main.yml | 2 ++
 ansible/roles/glance/handlers/main.yml | 3 +--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 139825d34a..45aabcff30 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -69,6 +69,8 @@ glance_backends:
 
 glance_store_backends: "{{ glance_backends|selectattr('enabled', 'equalto', true)|list }}"
 
+glance_api_hosts: "{{ groups['glance-api']|first if glance_backend_file | bool and glance_file_datadir_volume == 'glance' else groups['glance-api'] }}"
+
 ####################
 # OpenStack
 ####################
diff --git a/ansible/roles/glance/handlers/main.yml b/ansible/roles/glance/handlers/main.yml
index c914190cb6..328494e8e9 100644
--- a/ansible/roles/glance/handlers/main.yml
+++ b/ansible/roles/glance/handlers/main.yml
@@ -15,14 +15,13 @@
     volumes: "{{ service.volumes }}"
   when:
     - action != "config"
-    - inventory_hostname in groups[service.group]
+    - inventory_hostname in glance_api_hosts
     - service.enabled | bool
     - config_json.changed | bool
       or glance_conf.changed | bool
       or policy_json.changed | bool
       or glance_api_container.changed | bool
 
-
 - name: Restart glance-registry container
   vars:
     service_name: "glance-registry"