import os import requests from flask import Flask from flask import jsonify from flask_cors import CORS, cross_origin def get_result(): services_up = 0 failure_list = [] returnResponse = {"style": "", "title": "", "content": ""} statping_endpoint = os.getenv("STATPING_ENDPOINT") try: print("%sapi/services/" % statping_endpoint) response = requests.get("%sapi/services/" % statping_endpoint, verify=False) # If we get a response if response.status_code == 200: # Get the total number of services returned total_services = len(response.json()) # Iterate through the response for key in response.json(): # If the service is online, incrememnt the up count if key["online"] == True: services_up += 1 # Otherwise append the name to the naughty list else: failure_list.append(key["name"]) # Check the number of up services is equal to the total number of services if total_services == services_up: # if so, return a success object returnResponse["style"] = "is-success" returnResponse["title"] = "Everything is up and running" returnResponse["content"] = ( "Online %s / %s. Check here for more info.

" % (services_up, total_services, statping_endpoint) ) return returnResponse else: # return a numpty message returnResponse["style"] = "is-danger" returnResponse["title"] = "Service disruption" # need to build the return message to include the failures as a formatted list numptyList = "

" returnResponse["content"] = ( "Online %s / %s. Check here for more info.


These are reported down:
%s" % (services_up, total_services, statping_endpoint, numptyList) ) return returnResponse except: returnResponse["style"] = "is-danger" returnResponse["title"] = "Issue with upstream" returnResponse["content"] = "Statping is unreachable, check your endpoint: %s" % statping_endpoint return returnResponse app = Flask(__name__) app.config["JSON_SORT_KEYS"] = False cors = CORS(app) app.config["CORS_HEADERS"] = "Content-Type" @app.route("/endpoint/", methods=["GET"]) @cross_origin() def welcome(): return jsonify(get_result()) if __name__ == "__main__": app.run(host="0.0.0.0", port=8099)