Skip to content

Commit b84f249

Browse files
authored
Merge pull request #9726 from prezha/cleanup-linux
amend linux cleanup script with full minikube, docker and kvm cleanup
2 parents 9aac4f7 + e442cde commit b84f249

File tree

1 file changed

+78
-6
lines changed

1 file changed

+78
-6
lines changed

hack/jenkins/cron/cleanup_and_reboot_Linux.sh

+78-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22

3-
# Copyright 2019 The Kubernetes Authors All rights reserved.
3+
# Copyright 2020 The Kubernetes Authors All rights reserved.
44
#
55
# Licensed under the Apache License, Version 2.0 (the "License");
66
# you may not use this file except in compliance with the License.
@@ -36,11 +36,83 @@ logger "cleanup_and_reboot is happening!"
3636
# kill jenkins to avoid an incoming request
3737
killall java
3838

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+
3955
# 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
44116

45117
# Linux-specific cleanup
46118

@@ -51,4 +123,4 @@ systemctl list-unit-files --state=enabled \
51123
| xargs systemctl disable
52124

53125
# 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

Comments
 (0)