From b63d71607a31e87d585dfda6ae19371032145f02 Mon Sep 17 00:00:00 2001
From: guochao <guochao@winhong.com>
Date: Mon, 21 Aug 2017 11:50:15 +0800
Subject: [PATCH] Add swift ring files check in prechecks

Precheck will fail when swift ring files do not exists.

Change-Id: I20e7c9dbe527015ac2b01e85907637feb0deacbc
---
 ansible/roles/swift/tasks/precheck.yml | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/ansible/roles/swift/tasks/precheck.yml b/ansible/roles/swift/tasks/precheck.yml
index e5f622a194..50291c03c9 100644
--- a/ansible/roles/swift/tasks/precheck.yml
+++ b/ansible/roles/swift/tasks/precheck.yml
@@ -62,3 +62,22 @@
   when:
     - container_facts['swift_proxy_server'] is not defined
     - inventory_hostname in groups['swift-proxy-server']
+
+- name: Checking Swift ring files
+  run_once: True
+  local_action: stat path="{{ node_custom_config }}/swift/{{ item }}"
+  register: swift_ring_files
+  with_items:
+    - "account.builder"
+    - "account.ring.gz"
+    - "container.builder"
+    - "container.ring.gz"
+    - "object.builder"
+    - "object.ring.gz"
+
+- name: Fail if ring files don't exist
+  run_once: True
+  local_action: fail msg="Swift ring files do not exist. Ensure .builder and .gz are available for each of account/container/object under {{ node_custom_config }}/swift before deploying Swift."
+  with_items: '{{ swift_ring_files.results }}'
+  when:
+    - item.stat.exists == false