import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning import json class OpenbookClient(object): def __init__(self, host=None, port=None, username=None, password=None): requests.packages.urllib3.disable_warnings(InsecureRequestWarning) self.session = requests.Session() self.host = host self.port = port self.base_url = "https://%s:%s" % (self.host, self.port) self.username = username self.password = password self.token = None 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_token(self): if self.token is None: resp = self.session.post(url="%s/api/v4/login/simple" % self.base_url, data="username=%s&password=%s" % (self.username, self.password), headers={"Content-Type": "application/x-www-form-urlencoded"}, verify=False) self.token = resp.headers["token"] return self.token def get(self, url=None, params=None, headers={}, timeout=10): headers["x-openbook-auth"] = self.get_token() 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=10): headers["x-openbook-auth"] = self.get_token() 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): self.get(url="%s/api/v4/serviceManagers" % self.base_url) return [{"name": obj["name"], "connectionUrl": obj["conectionUrl"]} for obj in self.json()]