summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/__init__.py2
-rw-r--r--libs/openbook_client.py56
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