diff --git a/entrypoint.sh b/entrypoint.sh index 80bbcaa..194da85 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -26,14 +26,17 @@ ROLES=$ROLES # finding IPv4 addresses from application names. name_resolver() { + local DNS_IP local DNS=$1 APP_IP="" + UP_COUNT=0; + SRV_COUNT=0; echo "DNS: "$DNS; for D in $(echo $DNS); do - D=$(echo $D | cut -d "-" -f1) + D=$(echo $D | cut -d "-" -f1) UP=$(docker ps --format '{{.Names}}\t{{.Status}}' | grep Up | awk '{print $1}' | grep $D"-") ; # filtering for ROLES variables if exists. if [[ "$ROLES" != "null" && ! -z "$ROLES" ]]; then @@ -46,8 +49,31 @@ name_resolver() { fi done done - UP=$UPS - fi + UP=$UPS + fi + + UP_COUNT=$((UP_COUNT+$(echo $UP | wc -w))); + + for SRV_FILE in $(echo $SERVICE_FILES); do + CONTAINER_NAMES=$(jq -r .containers[].NAME $SRV_FILE); + for NAME in $(echo $CONTAINER_NAMES); do + NEWNAME=$(echo $NAME | cut -d "-" -f1); + if [ "$D" == "$NEWNAME" ]; then + if [[ "$ROLES" != "null" && ! -z "$ROLES" ]]; then + C_ROLES=$(jq -r --arg NAME "$NAME" '.containers[] | select(.NAME==$NAME)' $SRV_FILE | jq -r .ROLES); + for ROLE in $(echo $ROLES); do + # TODO, ha C_ROLES tobb erteket tartalmaz + if [ "$ROLE" == "$C_ROLES" ]; then + SRV_COUNT=$((SRV_COUNT+1)); + fi + done + else + SRV_COUNT=$((SRV_COUNT+1)); + fi; + fi; + + done; + done if [ ! -z "$UP" ] ; then for D_IP in `echo $UP` ; @@ -57,13 +83,23 @@ name_resolver() { echo "APP_IP: "$APP_IP; done else - debug "no matching running process found for indentiying application IP addresses, exiting." - exit; + debug "no matching running process found" fi done; -} + if [ $UP_COUNT -lt $SRV_COUNT ]; then + if [ "$2" == "" ]; then RETRIES=0; + else RETRIES=$2; + fi; + if [ $RETRIES -le $RETRIES_NUMBER ]; then + debug "Try to reread container names at $RETRIES"; + sleep 1; + RETRIES=$((RETRIES+1)); + name_resolver $DNS $RETRIES; + fi + fi; +} # GETTING APPLICATIONS IP ADDRESSES if [ ! -z "$SOURCE" ]; then