diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2016-11-08 11:57:05 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2016-11-08 11:57:59 +0000 |
commit | 165de3e50f830ef1900bbfa50e4beea1a1c73336 (patch) | |
tree | ecdce75e91960e208bcf0cb72d86be80820bf6c0 /tcwg-cleanup-stale-containers.sh | |
parent | d0f6072260c4da985242941d834e8847efc8d81a (diff) |
tcwg-cleanup-stale-containers: Add
Change-Id: I8e6dc272ca016b59f0d7d55a26f1d90f492e5e1b
Diffstat (limited to 'tcwg-cleanup-stale-containers.sh')
-rw-r--r-- | tcwg-cleanup-stale-containers.sh | 56 |
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 |