summaryrefslogtreecommitdiffstats
path: root/custodia/client.py
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-10-27 14:39:01 -0400
committerSimo Sorce <simo@redhat.com>2015-11-06 20:55:12 -0500
commit2780854f1e206563b7451087984f729d0b748d35 (patch)
tree96a33bd15e62b50d8c5ad0ccbe2f851f0132cf6d /custodia/client.py
parentb1b848ff0974c0643e57af810e4a215bf437f0cf (diff)
downloadcustodia-2780854f1e206563b7451087984f729d0b748d35.tar.gz
custodia-2780854f1e206563b7451087984f729d0b748d35.tar.xz
custodia-2780854f1e206563b7451087984f729d0b748d35.zip
Refactor CustodiaClient interface
Use the term secret and not key to refer to .. well .. secrets. Store the last response instead of returning it to the caller, this way there is a consistent way to get access to it and only as needed. Change the name to CustodiaSimpleClient in preparaion for extending the support to other Secret types. Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'custodia/client.py')
-rw-r--r--custodia/client.py68
1 files changed, 43 insertions, 25 deletions
diff --git a/custodia/client.py b/custodia/client.py
index 4a17927..221080a 100644
--- a/custodia/client.py
+++ b/custodia/client.py
@@ -50,6 +50,7 @@ class CustodiaHTTPClient(object):
self.session.mount('http+unix://', HTTPUnixAdapter())
self.headers = dict(DEFAULT_HEADERS)
self.url = url
+ self._last_response = None
def set_simple_auth_keys(self, name, key,
name_header='CUSTODIA_AUTH_ID',
@@ -68,9 +69,15 @@ class CustodiaHTTPClient(object):
return headers
def _request(self, cmd, path, **kwargs):
+ self._last_response = None
url = self._join_url(path)
kwargs['headers'] = self._add_headers(**kwargs)
- return cmd(url, **kwargs)
+ self._last_response = cmd(url, **kwargs)
+ return self._last_response
+
+ @property
+ def last_response(self):
+ return self._last_response
def delete(self, path, **kwargs):
return self._request(self.session.delete, path, **kwargs)
@@ -90,45 +97,56 @@ class CustodiaHTTPClient(object):
def put(self, path, **kwargs):
return self._request(self.session.put, path, **kwargs)
+ def container_name(self, name):
+ return name if name.endswith('/') else name + '/'
+
+ def create_container(self, name):
+ raise NotImplementedError
+
+ def list_container(self, name):
+ raise NotImplementedError
+
+ def delete_container(self, name):
+ raise NotImplementedError
+
+ def get_secret(self, name):
+ raise NotImplementedError
+
+ def set_secret(self, name, value):
+ raise NotImplementedError
+
+ def del_secret(self, name):
+ raise NotImplementedError
+
-class CustodiaClient(CustodiaHTTPClient):
+class CustodiaSimpleClient(CustodiaHTTPClient):
def create_container(self, name):
- r = self.post(name if name.endswith('/') else name + '/')
+ r = self.post(self.container_name(name))
r.raise_for_status()
- return r
def delete_container(self, name):
- r = self.delete(name if name.endswith('/') else name + '/')
+ r = self.delete(self.container_name(name))
r.raise_for_status()
- return r
def list_container(self, name):
- r = self.get(name if name.endswith('/') else name + '/')
+ r = self.get(self.container_name(name))
r.raise_for_status()
- return r
+ return r.json()
- def get_key(self, name):
+ def get_secret(self, name):
r = self.get(name)
r.raise_for_status()
- return r
-
- def set_key(self, name, data_to_json):
- r = self.put(name, json=data_to_json)
- r.raise_for_status()
- return r
-
- def del_key(self, name):
- r = self.delete(name)
- r.raise_for_status()
- return r
-
- def get_simple_key(self, name):
- simple = self.get_key(name).json()
+ simple = r.json()
ktype = simple.get("type", None)
if ktype != "simple":
raise TypeError("Invalid key type: %s" % ktype)
return simple["value"]
- def set_simple_key(self, name, value):
- self.set_key(name, {"type": "simple", "value": value})
+ def set_secret(self, name, value):
+ r = self.put(name, json={"type": "simple", "value": value})
+ r.raise_for_status()
+
+ def del_secret(self, name):
+ r = self.delete(name)
+ r.raise_for_status()