1
1
#! /bin/bash
2
2
3
- # Copyright 2019 The Kubernetes Authors All rights reserved.
3
+ # Copyright 2020 The Kubernetes Authors All rights reserved.
4
4
#
5
5
# Licensed under the Apache License, Version 2.0 (the "License");
6
6
# you may not use this file except in compliance with the License.
@@ -36,11 +36,83 @@ logger "cleanup_and_reboot is happening!"
36
36
# kill jenkins to avoid an incoming request
37
37
killall java
38
38
39
+ # clean minikube left overs
40
+ echo -e " \ncleanup minikube..."
41
+ for user in " jenkins" " root" ; do
42
+ minikube=" $( sudo su - ${user} -c ' command -v minikube' ) "
43
+ if [ ! -x " ${minikube} " ]; then
44
+ minikube=" /tmp/minikube"
45
+ curl -sfL https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -o " ${minikube} " && chmod +x " ${minikube} " || true
46
+ fi
47
+ if [ -x " ${minikube} " ]; then
48
+ if sudo su - " ${user} " -c " ${minikube} delete --all --purge" > /dev/null 2>&1 ; then
49
+ echo " successfully cleaned up minikube for ${user} user using ${minikube} "
50
+ fi
51
+ fi
52
+ sudo killall --user " ${user} " minikube > /dev/null 2>&1 || true
53
+ done
54
+
39
55
# clean docker left overs
40
- docker rm -f -v $( docker ps -aq) > /dev/null 2>&1 || true
41
- docker volume prune -f || true
42
- docker volume ls || true
43
- docker system df || true
56
+ echo -e " \ncleanup docker..."
57
+ docker kill $( docker ps -aq) > /dev/null 2>&1 || true
58
+ docker system prune --volumes --force || true
59
+
60
+ # clean KVM left overs
61
+ echo -e " \ncleanup kvm..."
62
+ overview () {
63
+ echo -e " \n - KVM domains:"
64
+ sudo virsh list --all || true
65
+ echo " - KVM pools:"
66
+ sudo virsh pool-list --all || true
67
+ echo " - KVM networks:"
68
+ sudo virsh net-list --all || true
69
+ echo " - host networks:"
70
+ sudo ip link show || true
71
+ }
72
+ echo -e " \nbefore the cleanup:"
73
+ overview
74
+ for DOM in $( sudo virsh list --all --name ) ; do
75
+ if sudo virsh destroy " ${DOM} " ; then
76
+ if sudo virsh undefine " ${DOM} " ; then
77
+ echo " successfully deleted KVM domain:" " ${DOM} "
78
+ continue
79
+ fi
80
+ echo " unable to delete KVM domain:" " ${DOM} "
81
+ fi
82
+ done
83
+ # for POOL in $( sudo virsh pool-list --all --name ); do # better, but flag '--name' is not supported for 'virsh pool-list' command on older libvirt versions
84
+ for POOL in $( sudo virsh pool-list --all | awk ' NR>2 {print $1}' ) ; do
85
+ for VOL in $( sudo virsh vol-list " ${POOL} " ) ; do
86
+ if sudo virsh vol-delete --pool " ${POOL} " " ${VOLUME} " ; then # flag '--delete-snapshots': "delete snapshots associated with volume (must be supported by storage driver)"
87
+ echo " successfully deleted KVM pool/volume:" " ${POOL} " /" ${VOL} "
88
+ continue
89
+ fi
90
+ echo " unable to delete KVM pool/volume:" " ${POOL} " /" ${VOL} "
91
+ done
92
+ done
93
+ for NET in $( sudo virsh net-list --all --name ) ; do
94
+ if [ " ${NET} " != " default" ]; then
95
+ if sudo virsh net-destroy " ${NET} " ; then
96
+ if sudo virsh net-undefine " ${NET} " ; then
97
+ echo " successfully deleted KVM network" " ${NET} "
98
+ continue
99
+ fi
100
+ fi
101
+ echo " unable to delete KVM network" " ${NET} "
102
+ fi
103
+ done
104
+ # DEFAULT_BRIDGE is a bridge connected to the 'default' KVM network
105
+ DEFAULT_BRIDGE=$( sudo virsh net-info default | awk ' { if ($1 == "Bridge:") print $2 }' )
106
+ echo " bridge connected to the 'default' KVM network to leave alone:" " ${DEFAULT_BRIDGE} "
107
+ for VIF in $( sudo ip link show | awk -v defvbr=" ${DEFAULT_BRIDGE} .*" -F' : ' ' $2 !~ defvbr { if ($2 ~ /virbr.*/ || $2 ~ /vnet.*/) print $2 }' ) ; do
108
+ if sudo ip link delete " ${VIF} " ; then
109
+ echo " successfully deleted KVM interface" " ${VIF} "
110
+ continue
111
+ fi
112
+ echo " unable to delete KVM interface" " ${VIF} "
113
+ done
114
+ echo -e " \nafter the cleanup:"
115
+ overview
44
116
45
117
# Linux-specific cleanup
46
118
@@ -51,4 +123,4 @@ systemctl list-unit-files --state=enabled \
51
123
| xargs systemctl disable
52
124
53
125
# update and reboot
54
- apt update -y && apt upgrade -y && reboot
126
+ apt update -y && apt upgrade -y && apt-get autoclean && reboot
0 commit comments