From 8588bd655e6160f0ce4f98eab2f3bd15afffc8c4 Mon Sep 17 00:00:00 2001
From: Mauricio Lima <mauriciolimab@gmail.com>
Date: Fri, 8 Apr 2016 14:40:25 -0400
Subject: [PATCH] Add a role to cleanup containers after deployment

Change-Id: I5f422574d7e50ec9a1e5862b66ecbf39fe1594d2
Closes-Bug: #1531721
Implements: blueprint ansible-cleanup-role
---
 ansible/cleanup.yml                           |  4 ++++
 .../cleanup/tasks/cleanup_containers.yml      |  3 +++
 ansible/roles/cleanup/tasks/cleanup_host.yml  |  6 +++++
 ansible/roles/cleanup/tasks/copy_tools.yml    | 23 +++++++++++++++++++
 ansible/roles/cleanup/tasks/main.yml          |  6 +++++
 setup.cfg                                     |  3 +++
 tools/kolla-ansible                           |  5 ++++
 7 files changed, 50 insertions(+)
 create mode 100644 ansible/cleanup.yml
 create mode 100644 ansible/roles/cleanup/tasks/cleanup_containers.yml
 create mode 100644 ansible/roles/cleanup/tasks/cleanup_host.yml
 create mode 100644 ansible/roles/cleanup/tasks/copy_tools.yml
 create mode 100644 ansible/roles/cleanup/tasks/main.yml

diff --git a/ansible/cleanup.yml b/ansible/cleanup.yml
new file mode 100644
index 0000000000..14d5668cfb
--- /dev/null
+++ b/ansible/cleanup.yml
@@ -0,0 +1,4 @@
+---
+- hosts: all
+  roles:
+    - cleanup
diff --git a/ansible/roles/cleanup/tasks/cleanup_containers.yml b/ansible/roles/cleanup/tasks/cleanup_containers.yml
new file mode 100644
index 0000000000..1de1522678
--- /dev/null
+++ b/ansible/roles/cleanup/tasks/cleanup_containers.yml
@@ -0,0 +1,3 @@
+---
+- name: Cleaning all containers and volumes
+  command: /tmp/kolla-cleanup/tools/cleanup-containers
diff --git a/ansible/roles/cleanup/tasks/cleanup_host.yml b/ansible/roles/cleanup/tasks/cleanup_host.yml
new file mode 100644
index 0000000000..36a65fb791
--- /dev/null
+++ b/ansible/roles/cleanup/tasks/cleanup_host.yml
@@ -0,0 +1,6 @@
+---
+- name: Cleaning host
+  command: /tmp/kolla-cleanup/tools/cleanup-host
+
+- name: Removing kolla-cleanup folder
+  command: rm -rf /tmp/kolla-cleanup
diff --git a/ansible/roles/cleanup/tasks/copy_tools.yml b/ansible/roles/cleanup/tasks/copy_tools.yml
new file mode 100644
index 0000000000..737233c8e7
--- /dev/null
+++ b/ansible/roles/cleanup/tasks/copy_tools.yml
@@ -0,0 +1,23 @@
+---
+- name: Creating /kolla-cleanup/tools directory on node
+  file:
+    state: directory
+    path: /tmp/kolla-cleanup/tools
+
+- name: Copying validate-docker-execute.sh file
+  copy:
+    src: ../tools/validate-docker-execute.sh
+    dest: /tmp/kolla-cleanup/tools
+    mode: 0755
+
+- name: Copying cleanup-containers file
+  copy:
+    src: ../tools/cleanup-containers
+    dest: /tmp/kolla-cleanup/tools
+    mode: 0755
+
+- name: Copying cleanup-host file
+  copy:
+    src: ../tools/cleanup-host
+    dest: /tmp/kolla-cleanup/tools
+    mode: 0755
diff --git a/ansible/roles/cleanup/tasks/main.yml b/ansible/roles/cleanup/tasks/main.yml
new file mode 100644
index 0000000000..d7f8b1e1e2
--- /dev/null
+++ b/ansible/roles/cleanup/tasks/main.yml
@@ -0,0 +1,6 @@
+---
+- include: copy_tools.yml
+
+- include: cleanup_containers.yml
+
+- include: cleanup_host.yml
diff --git a/setup.cfg b/setup.cfg
index 59441c59e8..6d5664e470 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -22,6 +22,9 @@ packages =
 data_files =
     share/kolla/ansible = ansible/*
     share/kolla/docker = docker/*
+    share/kolla/tools = tools/validate-docker-execute.sh
+    share/kolla/tools = tools/cleanup-containers
+    share/kolla/tools = tools/cleanup-host
     share/kolla/doc = doc/*
     share/kolla/etc_examples = etc/*
     share/kolla = tools/init-runonce
diff --git a/tools/kolla-ansible b/tools/kolla-ansible
index 36ecc0397d..413df9c62e 100755
--- a/tools/kolla-ansible
+++ b/tools/kolla-ansible
@@ -41,6 +41,7 @@ Commands:
     prechecks    Do pre-deployment checks for hosts
     mariadb_recovery    Recover a completely stopped mariadb cluster
     deploy       Deploy and start all kolla containers
+    cleanup      Cleanup containers, volumes and host
     post-deploy  Do post deploy on deploy node
     pull         Pull all images for containers (only pulls, no runnnig container changes)
     reconfigure  Reconfigure OpenStack service
@@ -131,6 +132,10 @@ case "$1" in
         EXTRA_OPTS="$EXTRA_OPTS -e action=deploy"
         PLAYBOOK="${BASEDIR}/ansible/mariadb_recovery.yml"
         ;;
+(cleanup)
+        ACTION="Cleanup containers, volumes and host"
+        PLAYBOOK="${BASEDIR}/ansible/cleanup.yml"
+        ;;
 (deploy)
         ACTION="Deploying Playbooks"
         EXTRA_OPTS="$EXTRA_OPTS -e action=deploy"