Files
scwrypts/plugins/kube/redis/redis.module.zsh
T

95 lines
2.6 KiB
Bash
Raw Normal View History

2023-08-28 18:42:38 -06:00
#####################################################################
DEPENDENCIES+=(
redis-cli
docker
)
2024-05-10 13:32:02 -06:00
REQUIRED_ENV+=()
2023-08-28 18:42:38 -06:00
2024-05-10 13:32:02 -06:00
utils.environment.check SCWRYPTS_KUBECTL_REDIS --default managed
2023-08-28 18:42:38 -06:00
#####################################################################
2024-05-10 13:32:02 -06:00
kube.redis() {
2023-08-28 18:42:38 -06:00
[ ! $USAGE ] && local USAGE="
usage: [...options...]
options:
2023-08-30 17:26:13 -06:00
--subsession [0-9] use a particular subsession
2023-08-28 18:42:38 -06:00
-p, --prefix apply dynamic prefix to the next command line argument
2023-08-30 17:26:13 -06:00
--get-prefix output key prefix for current session+subsession
2024-05-10 13:32:02 -06:00
--get-static-definition output the static ZSH function definition for kube.redis
2023-08-28 18:42:38 -06:00
2023-08-30 17:26:13 -06:00
additional arguments and options are passed through to 'redis-cli'
2023-08-28 18:42:38 -06:00
"
2023-08-30 17:26:13 -06:00
2023-08-28 18:42:38 -06:00
local REDIS_ARGS=() USER_ARGS=()
2023-08-30 17:26:13 -06:00
[ $SUBSESSION ] || local SUBSESSION=0
local REDIS_PREFIX=$(eval echo '$SCWRYPTS_KUBECTL_REDIS_KEY_PREFIX__'$SCWRYPTS_KUBECTL_REDIS)
[ $REDIS_PREFIX ] && REDIS_PREFIX+=':'
2023-08-28 18:42:38 -06:00
while [[ $# -gt 0 ]]
do
2024-05-10 13:32:02 -06:00
case $1 in
( -p | --prefix ) USER_ARGS+=("${REDIS_PREFIX}${SCWRYPTS_ENV}:${SUBSESSION}:$2"); shift 1 ;;
2023-08-30 17:26:13 -06:00
2024-05-10 13:32:02 -06:00
( --subsession ) SUBSESSION=$2; shift 1 ;;
2023-08-28 18:42:38 -06:00
2024-05-10 13:32:02 -06:00
( --get-prefix ) echo $REDIS_PREFIX; return 0 ;;
( --get-static-definition ) ECHO_STATIC_DEFINITION=1 ;;
2023-08-28 18:42:38 -06:00
2024-05-10 13:32:02 -06:00
( * ) USER_ARGS+=($1) ;;
2023-08-28 18:42:38 -06:00
esac
shift 1
done
local REDIS_HOST=$(eval echo '$SCWRYPTS_KUBECTL_REDIS_HOST__'$SCWRYPTS_KUBECTL_REDIS)
local REDIS_PORT=$(eval echo '$SCWRYPTS_KUBECTL_REDIS_PORT__'$SCWRYPTS_KUBECTL_REDIS)
local REDIS_AUTH=$(eval echo '$SCWRYPTS_KUBECTL_REDIS_AUTH__'$SCWRYPTS_KUBECTL_REDIS)
[ $REDIS_HOST ] && REDIS_ARGS+=(-h $REDIS_HOST)
[ $REDIS_PORT ] && REDIS_ARGS+=(-p $REDIS_PORT)
[ $REDIS_AUTH ] && REDIS_ARGS+=(-a $REDIS_AUTH)
REDIS_ARGS+=(--raw)
[[ $ECHO_STATIC_DEFINITION -eq 1 ]] && {
2024-05-10 13:32:02 -06:00
echo "kube.redis() {\
2023-08-28 18:42:38 -06:00
local USER_ARGS=(); \
2023-08-30 17:26:13 -06:00
[ ! \$SUBSESSION ] && local SUBSESSION=0 ;\
2023-08-28 18:42:38 -06:00
while [[ \$# -gt 0 ]]; \
do \
case \$1 in
2024-05-10 13:32:02 -06:00
( -p | --prefix ) USER_ARGS+=(\"${REDIS_PREFIX}\${SCWRYPTS_ENV}:\${SUBSESSION}:\$2\"); shift 1 ;; \
( * ) USER_ARGS+=(\$1) ;; \
2023-08-28 18:42:38 -06:00
esac; \
shift 1; \
done; \
redis-cli ${REDIS_ARGS[@]} \${USER_ARGS[@]}; \
}" | sed 's/\s\+/ /g'
return 0
}
redis-cli ${REDIS_ARGS[@]} ${USER_ARGS[@]}
}
2024-05-10 13:32:02 -06:00
kube.redis ping 2>/dev/null | grep -qi pong || {
2023-08-28 18:42:38 -06:00
RPID=$(docker ps -a | grep scwrypts-kubectl-redis | awk '{print $1;}')
2024-05-10 13:32:02 -06:00
[ $RPID ] && echo.status 'refreshing redis instance' && docker rm -f $RPID
2023-08-28 18:42:38 -06:00
unset RPID
docker run \
--detach \
--name scwrypts-kubectl-redis \
--publish $SCWRYPTS_KUBECTL_REDIS_PORT__managed:6379 \
2026-05-05 15:31:50 -06:00
redis &>/dev/null
2023-08-28 18:42:38 -06:00
2024-05-10 13:32:02 -06:00
echo.status 'awaiting redis connection'
until kube.redis ping 2>/dev/null | grep -qi pong; do sleep 0.5; done
2023-08-28 18:42:38 -06:00
}