summaryrefslogtreecommitdiff
path: root/tcwg-cleanup-stale-containers.sh
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2016-11-08 11:57:05 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2016-11-08 11:57:59 +0000
commit165de3e50f830ef1900bbfa50e4beea1a1c73336 (patch)
treeecdce75e91960e208bcf0cb72d86be80820bf6c0 /tcwg-cleanup-stale-containers.sh
parentd0f6072260c4da985242941d834e8847efc8d81a (diff)
tcwg-cleanup-stale-containers: Add
Change-Id: I8e6dc272ca016b59f0d7d55a26f1d90f492e5e1b
Diffstat (limited to 'tcwg-cleanup-stale-containers.sh')
-rw-r--r--tcwg-cleanup-stale-containers.sh56
1 files changed, 56 insertions, 0 deletions
diff --git a/tcwg-cleanup-stale-containers.sh b/tcwg-cleanup-stale-containers.sh
new file mode 100644
index 00000000..fc0e753a
--- /dev/null
+++ b/tcwg-cleanup-stale-containers.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+set -e
+
+docker_ps_opts=""
+dry_run=false
+hours="10"
+
+OPTS="`getopt -o v -l docker_ps_opts:,dry_run,hours: -- "$@"`"
+while test $# -gt 1; do
+ case $1 in
+ --docker_ps_opts) docker_ps_opts="$2"; shift ;;
+ --dry_run) dry_run="$2"; shift ;;
+ --hours) hours="$2"; shift ;;
+ -v) set -x ;;
+ esac
+ shift
+done
+
+if [ "$hours" -lt "1" ]; then
+ echo "ERROR: Refusing to delete containers that are $hours days old"
+ exit 1
+fi
+
+echo "Container report before:"
+docker ps $docker_ps_opts
+
+rm_containers=()
+for container in $(docker ps --format "{{.ID}} {{.RunningFor}}" $docker_ps_opts | grep "hour" | cut -d" " -f 1); do
+ if [ "$(docker ps --format "{{.ID}} {{.RunningFor}}" $docker_ps_opts | grep "$container:" | cut -d" " -f 2)" -gt "$hours" ]; then
+ rm_containers=("${rm_containers[@]}" $container)
+ fi
+done
+
+status="0"
+if [ ${#rm_containers[@]} != 0 ]; then
+ echo "Removing containers: ${rm_containers[@]}"
+ if ! $dry_run; then
+ for container in "${rm_containers[@]}"; do
+ echo "Removing container $container"
+ docker rm -f -v $container | true
+ if [ x"${PIPESTATUS[0]}" = x"0" ]; then
+ echo "SUCCESS"
+ else
+ echo "FAILED"
+ status="1"
+ fi
+ done
+ else
+ echo "DRY_RUN: NOT REMOVING CONTAINERS"
+ fi
+
+ echo "Containers report after:"
+ docker ps $docker_ps_opts
+fi
+exit $status