From c7dd8309f3b554d7b58fde001a8aae5709ab6311 Mon Sep 17 00:00:00 2001
From: caoyuan <cao.yuan@99cloud.net>
Date: Fri, 23 Dec 2016 11:03:09 +0800
Subject: [PATCH] Move cloudkitty precheck into its own role

Change-Id: Ic9bc03de9636a357cc414897976cb91db44ad02b
Partially-implements: blueprint condition-pre-check
---
 ansible/roles/cloudkitty/tasks/precheck.yml   | 15 ++++++++++++++
 ansible/roles/haproxy/tasks/precheck.yml      | 11 ++++++++++
 ansible/roles/prechecks/tasks/port_checks.yml | 20 -------------------
 3 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/ansible/roles/cloudkitty/tasks/precheck.yml b/ansible/roles/cloudkitty/tasks/precheck.yml
index ed97d539c0..c8b7844b64 100644
--- a/ansible/roles/cloudkitty/tasks/precheck.yml
+++ b/ansible/roles/cloudkitty/tasks/precheck.yml
@@ -1 +1,16 @@
 ---
+- name: Get container facts
+  kolla_container_facts:
+    name:
+      - cloudkitty_api
+  register: container_facts
+
+- name: Checking free port for Cloudkitty API
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ cloudkitty_api_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['cloudkitty_api'] is not defined
+    - inventory_hostname in groups['cloudkitty-api']
diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index a0f618fb18..a9d9b31d1a 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -14,6 +14,17 @@
 - set_fact:
     haproxy_stat: "{{ haproxy_stat_shell.stdout|default('') }}"
 
+- name: Checking free port for Cloudkitty API HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ cloudkitty_api_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_cloudkitty | bool
+    - "{{ 'cloudkitty_api' not in haproxy_stat }}"
+    - inventory_hostname in groups['haproxy']
+
 - name: Checking free port for Glance API HAProxy
   wait_for:
     host: "{{ kolla_internal_vip_address }}"
diff --git a/ansible/roles/prechecks/tasks/port_checks.yml b/ansible/roles/prechecks/tasks/port_checks.yml
index c61c639733..3177288c50 100644
--- a/ansible/roles/prechecks/tasks/port_checks.yml
+++ b/ansible/roles/prechecks/tasks/port_checks.yml
@@ -133,26 +133,6 @@
     - enable_cinder | bool
     - inventory_hostname in groups['haproxy']
 
-- name: Checking free port for Cloudkitty API
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ cloudkitty_api_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_cloudkitty | bool
-    - inventory_hostname in groups['cloudkitty-api']
-
-- name: Checking free port for Cloudkitty API HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ cloudkitty_api_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_cloudkitty | bool
-    - inventory_hostname in groups['haproxy']
-
 - name: Checking free port for Etcd Peer
   wait_for:
     host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"