diff options
author | Simo Sorce <simo@redhat.com> | 2015-10-27 14:39:01 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2015-11-06 20:55:12 -0500 |
commit | 2780854f1e206563b7451087984f729d0b748d35 (patch) | |
tree | 96a33bd15e62b50d8c5ad0ccbe2f851f0132cf6d /custodia/client.py | |
parent | b1b848ff0974c0643e57af810e4a215bf437f0cf (diff) | |
download | custodia-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.py | 68 |
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() |