From 64972fc3b267bfb4ad29772c49baf94827333802 Mon Sep 17 00:00:00 2001 From: Lockszmith Date: Fri, 17 Nov 2023 12:09:57 -0500 Subject: [PATCH] get-ix-pods feature complete --- get-all-apps.sh | 14 ----------- get-ix-pods | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 14 deletions(-) delete mode 100755 get-all-apps.sh create mode 100755 get-ix-pods diff --git a/get-all-apps.sh b/get-all-apps.sh deleted file mode 100755 index a1abca1..0000000 --- a/get-all-apps.sh +++ /dev/null @@ -1,14 +0,0 @@ -#! /usr/bin/env bash -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -USER_HOME=$HOME -[[ -n "${SUDO_USER}" ]] && USER_HOME="$(eval "echo ~${SUDO_USER}")" -. ${SHRC_D:-$SCRIPT_DIR}/01_util.functions - -set -e - -k3s kubectl pods --namespace ix -s Ready \ - | sed 1d | grep -v svclb- \ - | sed -E 's/[[:space:]]([0-9]*|About)[a-z0-9 ]{5,12}ago[[:space:]]//' \ - | awk '{ print $4 }' \ - | sed 's/^ix-//' | sort -u - diff --git a/get-ix-pods b/get-ix-pods new file mode 100755 index 0000000..02e788e --- /dev/null +++ b/get-ix-pods @@ -0,0 +1,65 @@ +#! /usr/bin/env bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +USER_HOME=$HOME +[[ -n "${SUDO_USER}" ]] && USER_HOME="$(eval "echo ~${SUDO_USER}")" +. ${SHRC_D:-$SCRIPT_DIR}/01_util.functions + +set -e + +get-apps() { + k3s kubectl get --all-namespaces deployments.apps --sort-by='.metadata.namespace' "${@}" +} + +FILTER=('') + +ARG="${1:---all}" + +if [[ -n "$ARG" ]]; then + if [[ "$ARG" =~ ^-(a|-active)$ ]]; then + FILTER=(-v '\b0/0\b') + elif [[ "$ARG" =~ ^-(r|-ready)$ ]]; then + FILTER=('\b([1-9]\d*)/\1\b') + elif [[ "$ARG" =~ ^-(l|-limbo)$ ]]; then + FILTER=('\b([0-9]+)/(?!\1)([1-9][0-9]*)\b') + elif [[ "$ARG" =~ ^-(s|-stop|-stopped)$ ]]; then + FILTER=('\b0/0\b') + elif [[ "$ARG" =~ ^(-h|-?|/h|/?|--help)$ ]]; then + printf '%s\n' \ + 'Usage:' \ + " $(basename "$0") " \ + '' \ + ' Default behavior will list all apps' \ + '' \ + 'Arguments:' \ + ' -h | --help Display this help/usage message' \ + ' -A | --all (default) List all apps' \ + ' -a | --active List all active (non-stopped) apps' \ + ' -r | --ready List all active apps in ready state' \ + ' -s | --stopped List all apps in stopped state' \ + ' -l | --limbo List all active apps not in ready state' + exit 0 + elif [[ ! "$ARG" =~ ^(-A|--all)$ ]]; then + printf '%s\n' \ + "Invalid argument: $ARG" \ + >&2 + exit 1 + fi +fi + +APPS="$(get-apps)" +HEADER="$(head -n1 <<<"$APPS")" +APPS="$(tail +1 <<<"$APPS")" +APPS="$( + grep -E --color=no "$( + get-apps --output=json | jq -r ' + [.items[] + | select( .metadata.labels."app.kubernetes.io/managed-by" == "Helm" ) + | .metadata.namespace] + | join( "|" ) + ' + )" <<<"$APPS" \ + | grep -P "${FILTER[@]}" +)" +echo "$HEADER" +echo "$APPS" +