123 lines
3.8 KiB
Bash
123 lines
3.8 KiB
Bash
#! /bin/sh
|
|
|
|
cd /scripts
|
|
|
|
DOCKER_REGISTRY_URL=$DOCKER_REGISTRY_URL
|
|
USER_INIT_PATH=$USER_INIT_PATH
|
|
REDIS_SERVER=$REDIS_SERVER
|
|
REDIS_PORT=$REDIS_PORT
|
|
|
|
SOURCE=$SOURCE
|
|
SMARTHOST_PROXY_PATH=$SMARTHOST_PROXY_PATH
|
|
|
|
GIT_URL=$GIT_URL
|
|
TOKEN=$TOKEN
|
|
REPO=$REPO
|
|
|
|
MAIN_DOMAIN=$MAIN_DOMAIN
|
|
VERSIONS_CONFIG_FILE=$VERSIONS_CONFIG_FILE
|
|
PROXY_DELAY=$PROXY_DELAY
|
|
|
|
|
|
VERSIONS_CONFIG_FILE=$VERSIONS_CONFIG_FILE
|
|
|
|
if [ -z "$CURL_SLEEP_SHORT" ]; then
|
|
CURL_SLEEP_SHORT=10
|
|
fi
|
|
|
|
if [ -z "$CURL_RETRIES" ]; then
|
|
CURL_RETRIES=360
|
|
fi
|
|
|
|
check_redis_availability() {
|
|
REDIS_SERVER="$1"
|
|
REDIS_PORT="$2"
|
|
CURL_RETRIES="$3"
|
|
CURL_SLEEP_SHORT="$4"
|
|
|
|
for retries in $(seq 0 "$((CURL_RETRIES + 1))"); do
|
|
if [ "$retries" -le "$CURL_RETRIES" ]; then
|
|
CHECK_REDIS_SERVER="redis-cli -h '$REDIS_SERVER' -p '$REDIS_PORT' PING"
|
|
REDIS_RESPONSE="$(eval "$CHECK_REDIS_SERVER")"
|
|
|
|
# echo "$REDIS_SERVER server's reply to PING: $REDIS_RESPONSE"
|
|
|
|
if [ "$REDIS_RESPONSE" = "PONG" ]; then
|
|
echo "Connected to $REDIS_SERVER:$REDIS_PORT"
|
|
break
|
|
else
|
|
sleep "$CURL_SLEEP_SHORT"
|
|
fi
|
|
else
|
|
echo "Couldn't reach server at $REDIS_SERVER:$REDIS_PORT after [$CURL_RETRIES] retries, exiting."
|
|
exit 1
|
|
fi
|
|
done
|
|
}
|
|
###
|
|
|
|
# CHECKING SYSTEM ENVIRONMENTS
|
|
## DOCKER VARIABLES
|
|
## VERSION CHECK
|
|
## FILESYSTEM VARIABLES
|
|
## PORTS VARIABLES
|
|
|
|
# REDIS_SERVER EXISTENCE
|
|
## REDIS_PORT EXISTENCE
|
|
## VERSION CHECK
|
|
|
|
# WEBSERVER EXISTENCE
|
|
## WEBSERVER_PORT EXISTENCE
|
|
## VERSION CHECK
|
|
|
|
# SUMMARY
|
|
|
|
|
|
# poll redis infinitely for scheduler jobs
|
|
check_redis_availability $REDIS_SERVER $REDIS_PORT $CURL_RETRIES $CURL_SLEEP_SHORT
|
|
echo "Scheduler initialized, starting listening for deploy events"
|
|
while true; do
|
|
|
|
IDS=""
|
|
|
|
# GET DEPLOYMENT IDs FROM generate key
|
|
IDS=$(redis-cli -h $REDIS_SERVER -p $REDIS_PORT SMEMBERS generate)
|
|
if [[ "$IDS" != "0" && "$IDS" != "" ]]; then
|
|
|
|
# PROCESSING IDS
|
|
for I in $(echo $IDS); do
|
|
|
|
### READ DATA FROM REDIS
|
|
JSON=$(redis-cli -h $REDIS_SERVER -p $REDIS_PORT GET $I | base64 -d)
|
|
DOMAIN=$(echo "$JSON" | jq -r '.DOMAIN')
|
|
TYPE=$(echo "$JSON" | jq -r '.TYPE')
|
|
ACTION=$(echo "$JSON" | jq -r '.ACTION')
|
|
PAYLOAD=$(echo "$JSON" | jq -r '.PAYLOAD')
|
|
|
|
JSON_TARGET=$(echo $JSON | jq -rc .'STATUS="0"' | base64 -w0);
|
|
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $I "$JSON_TARGET";
|
|
|
|
if [ "$TYPE" == "DOMAIN" ]; then
|
|
/scripts/zone2git.sh "$I" "$DOMAIN" "$ACTION" "$PAYLOAD" "$GIT_URL" "$TOKEN" "$REPO";
|
|
|
|
elif [ "$TYPE" == "VPN" ]; then
|
|
/scripts/create_vpn.sh "$I" "$DOMAIN" "$ACTION" "$PAYLOAD" "$REDIS_SERVER" "$REDIS_PORT" "$NAMESPACE" "$KUBERNETES" "$KUBERNETES_ENVIRONMENT" "$USER_INIT_PATH" "$VERSIONS_CONFIG_FILE" "$DOCKER_REGISTRY_URL" "$SMARTHOST_PROXY_PATH" "$MAIN_DOMAIN" "$SOURCE" "$PROXY_DELAY";
|
|
fi
|
|
|
|
if [ "$?" == "0" ]; then
|
|
JSON_TARGET=$(echo $JSON | jq -rc .'STATUS="1"' | base64 -w0);
|
|
else
|
|
JSON_TARGET=$(echo $JSON | jq -rc .'STATUS="2"' | base64 -w0);
|
|
fi
|
|
|
|
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $I "$JSON_TARGET";
|
|
|
|
# MOVE ID from generate into generated
|
|
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SREM generate $I
|
|
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SADD generated $I
|
|
|
|
done
|
|
fi
|
|
|
|
sleep 1
|
|
done |