From a88fc50a627376db076c7ded9a6448cf05d23a93 Mon Sep 17 00:00:00 2001
From: caoyuan <cao.yuan@99cloud.net>
Date: Mon, 2 Jan 2017 22:14:52 +0800
Subject: [PATCH] Move mongodb precheck into its own role

Change-Id: I0c545d98eaf00642f82d575ceef8e0a2733090c2
Partially-implements: blueprint condition-pre-check
---
 ansible/roles/haproxy/tasks/precheck.yml      | 11 +++++++
 ansible/roles/mongodb/tasks/precheck.yml      | 25 ++++++++++++++++
 ansible/roles/prechecks/tasks/port_checks.yml | 30 -------------------
 3 files changed, 36 insertions(+), 30 deletions(-)

diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index f67403262..8a6856299 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -234,6 +234,17 @@
     - "{{ 'mistral_api' not in haproxy_stat }}"
     - inventory_hostname in groups['haproxy']
 
+- name: Checking free port for Mongodb HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ mongodb_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_mongodb | bool
+    - "{{ 'mongodb' not in haproxy_stat }}"
+    - inventory_hostname in groups['haproxy']
+
 - name: Checking free port for Murano API HAProxy
   wait_for:
     host: "{{ kolla_internal_vip_address }}"
diff --git a/ansible/roles/mongodb/tasks/precheck.yml b/ansible/roles/mongodb/tasks/precheck.yml
index ed97d539c..1eddb5b7f 100644
--- a/ansible/roles/mongodb/tasks/precheck.yml
+++ b/ansible/roles/mongodb/tasks/precheck.yml
@@ -1 +1,26 @@
 ---
+- name: Get container facts
+  kolla_container_facts:
+    name:
+      - mongodb
+  register: container_facts
+
+- name: Checking free port for Mongodb
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ mongodb_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['mongodb'] is not defined
+    - inventory_hostname in groups['mongodb']
+
+- name: Checking free port for Mongodb Web
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ mongodb_web_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['mongodb'] is not defined
+    - inventory_hostname in groups['mongodb']
diff --git a/ansible/roles/prechecks/tasks/port_checks.yml b/ansible/roles/prechecks/tasks/port_checks.yml
index a945766a4..77f760038 100644
--- a/ansible/roles/prechecks/tasks/port_checks.yml
+++ b/ansible/roles/prechecks/tasks/port_checks.yml
@@ -93,36 +93,6 @@
     - enable_iscsid | bool
     - inventory_hostname in groups['tgtd']
 
-- name: Checking free port for Mongodb
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ mongodb_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - inventory_hostname in groups['mongodb']
-    - enable_mongodb | bool
-
-- name: Checking free port for Mongodb Web
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ mongodb_web_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - inventory_hostname in groups['mongodb']
-    - enable_mongodb | bool
-
-- name: Checking free port for Mongodb HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ mongodb_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - inventory_hostname in groups['haproxy']
-    - enable_mongodb | bool
-
 - name: Checking free port for Rsync
   wait_for:
     host: "{{ hostvars[inventory_hostname]['ansible_' + storage_interface]['ipv4']['address'] }}"
-- 
GitLab