123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- from flask import Flask
- from flask import jsonify
- import requests
- from flask_cors import CORS, cross_origin
- def get_result():
- services_up = 0
- failure_list = []
- returnResponse = {"style":"", "title":"", "content":""}
- statping_endpoint = "http://192.168.81.253:8085/api/services/"
- try:
- response = requests.get(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=https://statping.hostname.com target=_blank>here</a> for more info. </br> <p>"%(services_up, total_services)
- 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=https://statping.hostname.com 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)
-
- 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)
|