From 57ee8b3751955380934e89c041296f6bd6f75a49 Mon Sep 17 00:00:00 2001
From: caoyuan <cao.yuan@99cloud.net>
Date: Wed, 28 Dec 2016 14:08:35 +0800
Subject: [PATCH] Move heat precheck into its own role

Change-Id: I7de1322ae1efe3797ed5be8ebe2f7359142b077f
Partially-implements: blueprint condition-pre-check
---
 ansible/roles/haproxy/tasks/precheck.yml      | 22 ++++++++++++
 ansible/roles/heat/tasks/precheck.yml         | 26 ++++++++++++++
 ansible/roles/prechecks/tasks/port_checks.yml | 36 -------------------
 3 files changed, 48 insertions(+), 36 deletions(-)

diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index 8a68c6c89..0d5972e77 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -58,6 +58,28 @@
     - inventory_hostname in groups['haproxy']
     - "{{ 'glance_registry' not in haproxy_stat }}"
 
+- name: Checking free port for Heat API HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ heat_api_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_heat | bool
+    - "{{ 'heat_api' not in haproxy_stat }}"
+    - inventory_hostname in groups['haproxy']
+
+- name: Checking free port for Heat API CFN HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ heat_api_cfn_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_heat | bool
+    - "{{ 'heat_api_cfn' not in haproxy_stat }}"
+    - inventory_hostname in groups['haproxy']
+
 - name: Checking free port for watcher API HAProxy
   wait_for:
     host: "{{ kolla_internal_vip_address }}"
diff --git a/ansible/roles/heat/tasks/precheck.yml b/ansible/roles/heat/tasks/precheck.yml
index ed97d539c..6391fbdff 100644
--- a/ansible/roles/heat/tasks/precheck.yml
+++ b/ansible/roles/heat/tasks/precheck.yml
@@ -1 +1,27 @@
 ---
+- name: Get container facts
+  kolla_container_facts:
+    name:
+      - heat_api
+      - heat_api_cfn
+  register: container_facts
+
+- name: Checking free port for Heat API
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ heat_api_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['heat_api'] is not defined
+    - inventory_hostname in groups['heat-api']
+
+- name: Checking free port for Heat API CFN
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ heat_api_cfn_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['heat_api_cfn'] is not defined
+    - inventory_hostname in groups['heat-api-cfn']
diff --git a/ansible/roles/prechecks/tasks/port_checks.yml b/ansible/roles/prechecks/tasks/port_checks.yml
index 9e94f9065..b2427d886 100644
--- a/ansible/roles/prechecks/tasks/port_checks.yml
+++ b/ansible/roles/prechecks/tasks/port_checks.yml
@@ -193,45 +193,9 @@
     - enable_haproxy | bool
     - inventory_hostname in groups['haproxy']
 
-- name: Checking free port for Heat API
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ heat_api_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_heat | bool
-    - inventory_hostname in groups['heat-api']
 
-- name: Checking free port for Heat API HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ heat_api_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_heat | bool
-    - inventory_hostname in groups['haproxy']
 
-- name: Checking free port for Heat API CFN
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ heat_api_cfn_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_heat | bool
-    - inventory_hostname in groups['heat-api-cfn']
 
-- name: Checking free port for Heat API CFN HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ heat_api_cfn_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_heat | bool
-    - inventory_hostname in groups['haproxy']
 
 - name: Checking free port for Horizon
   wait_for:
-- 
GitLab