From e6effb8245dc2a1d76353f1712103f634cc62f96 Mon Sep 17 00:00:00 2001
From: Hans Feldt <2808287+hafe@users.noreply.github.com>
Date: Tue, 13 Oct 2020 00:47:22 +0200
Subject: [PATCH] Make reset work for crio (#6812)

crio refuses to delete pods when cni is unavailable which is the
case e.g. using calico with kdd datastore. See:

https://github.com/cri-o/cri-o/issues/4084

Fix by deleting storage associated with containers. Stop and disable
crio service so switching container runtime can be done.
---
 roles/reset/tasks/main.yml | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/roles/reset/tasks/main.yml b/roles/reset/tasks/main.yml
index 03e2e63ea..48a7b8d8c 100644
--- a/roles/reset/tasks/main.yml
+++ b/roles/reset/tasks/main.yml
@@ -92,6 +92,21 @@
     - containerd
   when: container_manager in ["crio", "containerd"] and deploy_container_engine|default(true)
 
+- name: reset | stop and disable crio service
+  service:
+    name: crio
+    state: stopped
+    enabled: false
+  failed_when: false
+  tags: [ crio ]
+  when: container_manager == "crio"
+
+- name: reset | forcefully wipe CRI-O's container and image storage
+  command: "crio wipe -f"
+  failed_when: false
+  tags: [ crio ]
+  when: container_manager == "crio"
+
 - name: reset | stop all cri pods
   shell: "set -o pipefail && crictl pods -q | xargs -r crictl -t 60s stopp"
   args:
@@ -100,10 +115,8 @@
   retries: 5
   until: remove_all_cri_containers.rc == 0
   delay: 5
-  tags:
-    - crio
-    - containerd
-  when: container_manager in ["crio", "containerd"]
+  tags: [ containerd ]
+  when: container_manager == "containerd"
 
 - name: reset | remove all cri pods
   shell: "set -o pipefail && crictl pods -q | xargs -r crictl -t 60s rmp"
@@ -113,10 +126,8 @@
   retries: 5
   until: remove_all_cri_containers.rc == 0
   delay: 5
-  tags:
-    - crio
-    - containerd
-  when: container_manager in ["crio", "containerd"]
+  tags: [ containerd ]
+  when: container_manager == "containerd"
 
 - name: reset | stop etcd services
   service:
-- 
GitLab