12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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"] = "All good in the hood boss"
- returnResponse["content"] = "<b>%s / %s Services showing as online. Check <a href=%s target=_blank>here</a> for more info. </br> <p>" % (services_up, total_services, statping_endpoint)
- return(returnResponse)
- else:
- # return a numpty message
- returnResponse["style"] = "is-danger"
- returnResponse["title"] = "Halp"
- # need to build the return message to include the failures as a formatted list
- numptyList = "<ul>"
- for i in failure_list:
- numptyList += "<li>" + i + "</li>"
- numptyList += "</ul>"
- returnResponse["content"] = "<b>%s / %s Services showing as online. Check <a href=%s target=_blank>here</a> for more info. </br> <p> <br>Here are the numpties that are letting the side down:</br> %s" % (services_up, total_services, numptyList, statping_endpoint)
-
- return(returnResponse)
- except:
- returnResponse["style"] = "is-danger"
- returnResponse["title"] = "I have the sads"
- returnResponse["content"] = "Like, man cannot even holla at Statping."
-
- 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)
|