From d7d8fc8069eb15e4b705ccf3d5620faf7c3c28b5 Mon Sep 17 00:00:00 2001
From: Vladislav Belogrudov <vladislav.belogrudov@oracle.com>
Date: Tue, 18 Oct 2016 18:00:45 +0300
Subject: [PATCH] Murano fails to deploy - cannot check core library

Murano sometimes fails to deploy due to delay in haproxy
identifying started API services. Instead of waiting for all the
services and checking existance of core library via VIP deploy
task should connect to one of the services directly for testing
service status and for package import.

Change-Id: I2934579edc910e81730dd89dbd8ff9eb11a2cc1c
Closes-Bug: #1634531
---
 ansible/roles/murano/tasks/start.yml | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/ansible/roles/murano/tasks/start.yml b/ansible/roles/murano/tasks/start.yml
index 5d8282f120..a4311b1051 100644
--- a/ansible/roles/murano/tasks/start.yml
+++ b/ansible/roles/murano/tasks/start.yml
@@ -23,9 +23,9 @@
       - "kolla_logs:/var/log/kolla/"
   when: inventory_hostname in groups['murano-api']
 
-- name: Waiting for Murano API service to be ready
+- name: Waiting for Murano API service to be ready on first node
   wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    host: "{{ api_interface_address }}"
     port: "{{ murano_api_port }}"
     connect_timeout: 1
     timeout: 60
@@ -34,7 +34,7 @@
   until: check_murano_port | success
   retries: 10
   delay: 6
-  when: inventory_hostname in groups['murano-api']
+  delegate_to: "{{ groups['murano-api'][0] }}"
 
 - name: Checking if Murano core library package exists
   command: "docker exec murano_api murano \
@@ -43,11 +43,13 @@
                 --os-project-name admin \
                 --os-auth-url \
                     {{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }}/v3 \
+                --murano-url \
+                    {{ admin_protocol }}://{{ api_interface_address }}:{{ murano_api_port }} \
                 package-list"
   register: status
   changed_when: False
   run_once: True
-  when: inventory_hostname in groups['murano-api']
+  delegate_to: "{{ groups['murano-api'][0] }}"
 
 - name: Importing Murano core library package
   command: "docker exec murano_api murano \
@@ -56,8 +58,10 @@
                 --os-project-name admin \
                 --os-auth-url \
                     {{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }}/v3 \
+                --murano-url \
+                    {{ admin_protocol }}://{{ api_interface_address }}:{{ murano_api_port }} \
                 package-import --is-public /io.murano.zip"
   run_once: True
+  delegate_to: "{{ groups['murano-api'][0] }}"
   when:
-    - inventory_hostname in groups['murano-api']
     - status.stdout.find("io.murano") == -1
-- 
GitLab