diff options
| author | Carlos Konstanski <ckonstanski@pippiandcarlos.com> | 2017-11-08 12:32:35 -0700 |
|---|---|---|
| committer | Carlos Konstanski <ckonstanski@pippiandcarlos.com> | 2017-11-08 12:32:35 -0700 |
| commit | 6847b337f4c821a15aceccb0f01abafbe9c0f042 (patch) | |
| tree | 683cae64faac991c6ed006d2d9150136404a7dbb /libs | |
| parent | 521eda718eb6e629c3bc8ae9bff7fa58251467ad (diff) | |
Glance gateway: fetch AUTH_URLs from Openbook
Closes-Bug: OB-1054
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/__init__.py | 2 | ||||
| -rw-r--r-- | libs/openbook_client.py | 56 |
2 files changed, 57 insertions, 1 deletions
diff --git a/libs/__init__.py b/libs/__init__.py index 609997c..4d33869 100644 --- a/libs/__init__.py +++ b/libs/__init__.py @@ -1 +1 @@ -__all__ = ["environment", "keystone", "glance"] +__all__ = ["environment", "keystone", "glance", "openbook_client"] 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 |
