Browse Source

Initial code

Nikola Kotur 3 years ago
commit
118a8722df
5 changed files with 77 additions and 0 deletions
  1. 2 0
      .gitignore
  2. 7 0
      Dockerfile
  3. 1 0
      README.md
  4. 66 0
      main.py
  5. 1 0
      requirements.txt

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+.env
+*~

+ 7 - 0
Dockerfile

@@ -0,0 +1,7 @@
+FROM python:3-alpine
+WORKDIR /usr/src/app
+COPY ./main.py .
+RUN python -m pip install --upgrade pip
+RUN pip3 install flask requests flask_cors
+CMD ["main.py"]
+ENTRYPOINT ["python3"]

+ 1 - 0
README.md

@@ -0,0 +1 @@
+From: https://whyitno.work/i-can-python-a-little/

+ 66 - 0
main.py

@@ -0,0 +1,66 @@
+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)

+ 1 - 0
requirements.txt

@@ -0,0 +1 @@
+pip3 install flask requests flask_cors