+
+HEALTHPORT=8000
+docker run -d \
+--name dcae-health \
+-p ${HEALTHPORT}:80 \
+-v "$(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf" \
+-v "/tmp/healthcheck:/www/healthcheck" \
+--label "SERVICE_80_NAME=dcae-health" \
+--label "SERVICE_80_CHECK_HTTP=/healthcheck" \
+--label "SERVICE_80_CHECK_INTERVAL=15s" \
+--label "SERVICE_80_CHECK_INITIAL_STATUS=passing" \
+ nginx
+
+echo "Healthcheck API available at http://${MYFLOATIP}:${HEALTHPORT}/healthcheck"
+echo " http://${MYFLOATIP}:${HEALTHPORT}/R1"
+echo " http://${MYFLOATIP}:${HEALTHPORT}/R2MIN"
+echo " http://${MYFLOATIP}:${HEALTHPORT}/R2PLUS"
+
+# run forever for updating health status based on consul
+set +e
+while :
+do
+ rm -rf /tmp/healthcheck/*
+ # all registered services
+ SERVICES=$(curl -s http://consul:8500/v1/agent/services |jq '. | to_entries[] | .value.Service')
+ # passing services
+ SERVICES=$(curl -s http://consul:8500/v1/health/state/passing | jq '.[] | .ServiceName')
+
+ # remove empty lines/entries
+ SERVICES=$(echo "$SERVICES" | sed '/^\s*\"\"\s*$/d' |sed '/^\s*$/d')
+
+ SERVICES_JSON=$(echo "$SERVICES" | sed 's/\"$/\",/g' | sed '$ s/.$//')
+
+ echo "$(date): running healthy services:"
+ echo ">>> " $SERVICES
+ PLT_CONSUL=$(echo "$SERVICES" |grep consul)
+ PLT_CBS=$(echo "$SERVICES" |grep "config_binding_service")
+ MVP_PG_HOLMES=$(echo "$SERVICES" |grep "pgHolmes")
+ MVP_VES=$(echo "$SERVICES" |grep "mvp.*ves")
+ MVP_TCA=$(echo "$SERVICES" |grep "mvp.*tca")
+ MVP_HR=$(echo "$SERVICES" |grep "mvp.*holmes-rule")
+ MVP_HE=$(echo "$SERVICES" |grep "mvp.*holmes-engine")
+
+ PLT_CM=$(echo "$SERVICES" |grep "cloudify.*manager")
+ PLT_DH=$(echo "$SERVICES" |grep "deployment.*handler")
+ PLT_PH=$(echo "$SERVICES" |grep "policy.*handler")
+ PLT_SCH=$(echo "$SERVICES" |grep "service.*change.*handler")
+ PLT_INV=$(echo "$SERVICES" |grep "inventory")
+ PLT_PG_INVENTORY=$(echo "$SERVICES" |grep "pgInventory")
+
+ PLUS_MHB=$(echo "$SERVICES" |grep "heartbeat")
+ PLUS_PRH=$(echo "$SERVICES" |grep "prh")
+ PLUS_MPR=$(echo "$SERVICES" |grep "mapper")
+ PLUS_TRAP=$(echo "$SERVICES" |grep "snmptrap")
+
+ DATA="{\"healthy\" : \"$(date)\", \"healthy_services\": [${SERVICES_JSON}]}"
+ if [[ -n "$PLT_CONSUL" && -n "$PLT_CBS" && -n "$MVP_PG_HOLMES" && -n "$MVP_VES" && \
+ -n "$MVP_TCA" && -n "$MVP_HR" && -n "$MVP_HE" ]]; then
+ echo "${DATA}" > /tmp/healthcheck/r2mvp_healthy.yaml
+ echo "${DATA}" > /tmp/healthcheck/services.yaml
+ echo ">>>>>> enough services satisfying R2MIN service deployment"
+ else
+ echo ">>>>>> not enough services satisfying R2MIN service deployment"
+ fi
+
+ if [[ -n "$PLT_CONSUL" && -n "$PLT_CBS" && -n "$PLT_CM" && -n "$PLT_DH" && \
+ -n "$PLT_PH" && -n "$PLT_SCH" && -n "$PLT_INV" && -n "$PLT_PG_INVENTORY" ]]; then
+ echo ">>>>>> enough services satisfying R2 platform deployment"
+ echo "${DATA}" > /tmp/healthcheck/r2_healthy.yaml
+
+ if [[ -n "$PLUS_MHB" && -n "$PLUS_PRH" && -n "$PLUS_MPR" && -n "$PLUS_TRAP" ]]; then
+ echo ">>>>>> enough services satisfying R2PLUS deployment"
+ echo "${DATA}" > /tmp/healthcheck/r2plus_healthy.yaml
+ else
+ echo ">>>>>> not enough services satisfying R2PLUS service deployment"
+ fi
+ else
+ echo ">>>>>> not enough services satisfying R2 platform or R2PLUS service deployment"
+ fi
+ sleep 60
+done
+