From 790675be4f40a0662fcb3ba1aa17ff85d7bf1761 Mon Sep 17 00:00:00 2001
From: Eugene Bagdasaryan <ebagdasa@cisco.com>
Date: Mon, 29 Feb 2016 11:24:06 +0300
Subject: [PATCH] Sanity check for swift

This runs first sanity check for swift. Once
swift is deployed it checks list()

Change-Id: I613bf9f2893d66814863893ec5acde5aa252548d
Partially-Implements: blueprint sanity-check-container
---
 ansible/group_vars/all.yml           |  1 +
 ansible/roles/swift/tasks/check.yml  | 19 +++++++++++++++++++
 ansible/roles/swift/tasks/deploy.yml |  6 ++++++
 docker/kolla-toolbox/kolla_sanity.py |  4 ++++
 4 files changed, 30 insertions(+)
 create mode 100644 ansible/roles/swift/tasks/check.yml

diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index aef66ab4da..a4ca3d099b 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -32,6 +32,7 @@ kolla_enable_sanity_checks: "no"
 kolla_enable_sanity_keystone: "{{ kolla_enable_sanity_checks }}"
 kolla_enable_sanity_glance: "{{ kolla_enable_sanity_checks }}"
 kolla_enable_sanity_cinder: "{{ kolla_enable_sanity_checks }}"
+kolla_enable_sanity_swift: "{{ kolla_enable_sanity_checks }}"
 
 ####################
 # Database options
diff --git a/ansible/roles/swift/tasks/check.yml b/ansible/roles/swift/tasks/check.yml
new file mode 100644
index 0000000000..15e438c9dc
--- /dev/null
+++ b/ansible/roles/swift/tasks/check.yml
@@ -0,0 +1,19 @@
+---
+- name: Swift sanity checks
+  command: docker exec -t kolla_toolbox /usr/bin/ansible localhost
+    -m kolla_sanity
+    -a "service=swift
+        project=service
+        user=admin
+        password={{ swift_keystone_password }}
+        role=admin
+        region_name={{ openstack_region_name }}
+        auth={{ '{{ openstack_swift_auth }}' }}"
+    -e "{'openstack_swift_auth':{{ openstack_swift_auth }}}"
+  register: swift_sanity
+  changed_when: "{{ swift_sanity.stdout.find('localhost | SUCCESS => ') != -1 and (swift_sanity.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
+  until: swift_sanity.stdout.split()[2] == 'SUCCESS'
+  retries: 10
+  delay: 5
+  run_once: True
+  when: kolla_enable_sanity_swift | bool
\ No newline at end of file
diff --git a/ansible/roles/swift/tasks/deploy.yml b/ansible/roles/swift/tasks/deploy.yml
index 5b2e8a980b..0a9ab4fed3 100644
--- a/ansible/roles/swift/tasks/deploy.yml
+++ b/ansible/roles/swift/tasks/deploy.yml
@@ -16,3 +16,9 @@
         inventory_hostname in groups['swift-container-server'] or
         inventory_hostname in groups['swift-object-server'] or
         inventory_hostname in groups['swift-proxy-server']
+
+- include: check.yml
+  when: inventory_hostname in groups['swift-account-server'] or
+        inventory_hostname in groups['swift-container-server'] or
+        inventory_hostname in groups['swift-object-server'] or
+        inventory_hostname in groups['swift-proxy-server']
diff --git a/docker/kolla-toolbox/kolla_sanity.py b/docker/kolla-toolbox/kolla_sanity.py
index 1a0b4151a3..167663dec5 100644
--- a/docker/kolla-toolbox/kolla_sanity.py
+++ b/docker/kolla-toolbox/kolla_sanity.py
@@ -38,6 +38,10 @@ class SanityChecks(object):
     def cinder(cloud):
         [volume for volume in cloud.cinder_client.volumes.list()]
 
+    @staticmethod
+    def swift(cloud):
+        [container for container in cloud.swift_client.list()]
+
 
 def main():
     module = AnsibleModule(