diff options
Diffstat (limited to 'libs/service_status_client.py')
| -rw-r--r-- | libs/service_status_client.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/libs/service_status_client.py b/libs/service_status_client.py new file mode 100644 index 0000000..bac0ed7 --- /dev/null +++ b/libs/service_status_client.py @@ -0,0 +1,50 @@ +import requests +from requests.packages.urllib3.exceptions import InsecureRequestWarning +import json + + +class ServiceStatusClient(object): + def __init__(self, host=None): + requests.packages.urllib3.disable_warnings(InsecureRequestWarning) + self.session = requests.Session() + self.host = host + self.base_url = "%s/api/v2.0" % self.host + + def store_result(self, resp): + self.status_code = resp.status_code + self.body = resp.text + try: + self.json = resp.json + except Exception: + self.json = None + + def get(self, url=None, params=None, headers={}, timeout=60): + resp = self.session.get(url=url, + params=params, + headers=headers, + timeout=timeout, + verify=False) + self.store_result(resp) + return resp + + def post(self, url=None, data=None, headers={}, timeout=60): + resp = self.session.post(url=url, + data=data, + headers=headers, + timeout=timeout, + verify=False) + self.store_result(resp) + return resp + + def get_service_managers(self): + regions = [] + self.get(url="%s/" % self.base_url) + for project in [p for p in self.json()["projects"]]: + self.get(url="%s/%s/project-status" % (self.base_url, project["project"]), + params={"depth": "2"}) + for site in [r for r in self.json()["sites"]]: + for region in site["regions"]: + if region["attributes"]["live-date"] != "TBD": + regions.append({"name": "%s-%s" % (region["region"].replace("r", "s"), region["site"]), + "connectionUrl": "%s:13000/v3" % region["attributes"]["dashboard-url"].replace("/dashboard", "")}) + return regions |
