diff options
author | Suren A. Chilingaryan <csa@suren.me> | 2019-10-06 04:43:13 +0200 |
---|---|---|
committer | Suren A. Chilingaryan <csa@suren.me> | 2019-10-06 04:43:13 +0200 |
commit | acd54ba601e34dafac063f94054bb80348e73dcd (patch) | |
tree | bb904bbf2d58e2a97d2649193c29d31f174ef8e1 /scripts/maintain/prunerc.sh | |
parent | 55ae94fdb6a6508f30c0eb0f5dfe95a11ac9682f (diff) | |
download | ands-acd54ba601e34dafac063f94054bb80348e73dcd.tar.gz ands-acd54ba601e34dafac063f94054bb80348e73dcd.tar.bz2 ands-acd54ba601e34dafac063f94054bb80348e73dcd.tar.xz ands-acd54ba601e34dafac063f94054bb80348e73dcd.zip |
Script to fullhy clean-up outdated rc
Diffstat (limited to 'scripts/maintain/prunerc.sh')
-rw-r--r-- | scripts/maintain/prunerc.sh | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/maintain/prunerc.sh b/scripts/maintain/prunerc.sh new file mode 100644 index 0000000..166ede6 --- /dev/null +++ b/scripts/maintain/prunerc.sh @@ -0,0 +1,60 @@ +#! /bin/bash + +setup="" +commit=0 +prune_stopped=0 + +while [ -n "$1" ]; do + case "$1" in + -c | --commit ) commit=1; shift ;; + -s | --stopped ) prune_stopped=1; shift ;; + -n | --setup ) setup="-n $2"; shift 2;; + * ) echo "$0 [-n project] [--commit] [--stopped]"; break ;; + esac +done + + +dcs="$(oc $setup get dc | grep -v NAME)" + +while read -r dc; do + name=$(echo "$dc" | awk '{ print $1 }') + revision=$(echo "$dc" | awk '{ print $2 }') + dc_desired=$(echo "$dc" | awk '{ print $3 }') + dc_current=$(echo "$dc" | awk '{ print $4 }') + + rcname="$name-$revision" + rc="$(oc $setup get rc $rcname | grep -v NAME)" + desired=$(echo "$rc" | awk '{ print $2 }') + current=$(echo "$rc" | awk '{ print $3 }') + ready=$(echo "$rc" | awk '{ print $4 }') + + if [ $dc_desired -ne $dc_current ]; then + [ $commit -eq 1 ] && echo "Skipping faulty dc/$name" + continue + elif [ $desired -ne $current -o $desired -ne $ready ]; then + [ $commit -eq 1 ] && echo "Skipping not completely ready dc/$name" + continue + elif [ $desired -eq 0 -a $prune_stopped -ne 1 ]; then + [ $commit -eq 1 ] && echo "Skipping stopped dc/$name (last one could be faulty)" + continue + fi + + + rcs="$(oc $setup get rc -l openshift.io/deployment-config.name=$name | grep -v NAME)" + + while read -r oldrc; do + oldname=$(echo "$oldrc" | awk '{ print $1 }') + desired=$(echo "$oldrc" | awk '{ print $2 }') + + [ $oldname = $rcname ] && continue + [ $desired -ne 0 ] && continue + + if [ $commit -eq 1 ]; then + echo "Removing: $oldname (keeping $rcname[$ready])" + oc $setup delete rc "$oldname" + else + echo "Will remove: $oldname (keeping $rcname[$ready])" + fi + done <<< "$rcs" + +done <<< "$dcs" |