From 6847b337f4c821a15aceccb0f01abafbe9c0f042 Mon Sep 17 00:00:00 2001 From: Carlos Konstanski Date: Wed, 8 Nov 2017 12:32:35 -0700 Subject: Glance gateway: fetch AUTH_URLs from Openbook Closes-Bug: OB-1054 --- libs/openbook_client.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 libs/openbook_client.py (limited to 'libs/openbook_client.py') diff --git a/libs/openbook_client.py b/libs/openbook_client.py new file mode 100644 index 0000000..d938db1 --- /dev/null +++ b/libs/openbook_client.py @@ -0,0 +1,56 @@ +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": "multipart/form-data"}, + 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/serviceManagers") + return [obj["conectionUrl"] for obj in self.json -- cgit v1.3