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