diff options
author | Jason Pleau <jason@jpleau.ca> | 2018-03-30 15:31:04 -0400 |
---|---|---|
committer | Jason Pleau <jason@jpleau.ca> | 2018-03-30 15:31:04 -0400 |
commit | fa27a6cfe201f8d4241fff59aaa0867cb238122f (patch) | |
tree | 39cb120dc1156f582169450814904ffa716a4f32 /docker/api/secret.py | |
parent | 7c25f0634f5ff158a492426fa6238e4e6351008b (diff) |
New upstream version 3.2.1
Diffstat (limited to 'docker/api/secret.py')
-rw-r--r-- | docker/api/secret.py | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/docker/api/secret.py b/docker/api/secret.py new file mode 100644 index 0000000..fa4c2ab --- /dev/null +++ b/docker/api/secret.py @@ -0,0 +1,102 @@ +import base64 + +import six + +from .. import errors +from .. import utils + + +class SecretApiMixin(object): + @utils.minimum_version('1.25') + def create_secret(self, name, data, labels=None, driver=None): + """ + Create a secret + + Args: + name (string): Name of the secret + data (bytes): Secret data to be stored + labels (dict): A mapping of labels to assign to the secret + driver (DriverConfig): A custom driver configuration. If + unspecified, the default ``internal`` driver will be used + + Returns (dict): ID of the newly created secret + """ + if not isinstance(data, bytes): + data = data.encode('utf-8') + + data = base64.b64encode(data) + if six.PY3: + data = data.decode('ascii') + body = { + 'Data': data, + 'Name': name, + 'Labels': labels + } + + if driver is not None: + if utils.version_lt(self._version, '1.31'): + raise errors.InvalidVersion( + 'Secret driver is only available for API version > 1.31' + ) + + body['Driver'] = driver + + url = self._url('/secrets/create') + return self._result( + self._post_json(url, data=body), True + ) + + @utils.minimum_version('1.25') + @utils.check_resource('id') + def inspect_secret(self, id): + """ + Retrieve secret metadata + + Args: + id (string): Full ID of the secret to remove + + Returns (dict): A dictionary of metadata + + Raises: + :py:class:`docker.errors.NotFound` + if no secret with that ID exists + """ + url = self._url('/secrets/{0}', id) + return self._result(self._get(url), True) + + @utils.minimum_version('1.25') + @utils.check_resource('id') + def remove_secret(self, id): + """ + Remove a secret + + Args: + id (string): Full ID of the secret to remove + + Returns (boolean): True if successful + + Raises: + :py:class:`docker.errors.NotFound` + if no secret with that ID exists + """ + url = self._url('/secrets/{0}', id) + res = self._delete(url) + self._raise_for_status(res) + return True + + @utils.minimum_version('1.25') + def secrets(self, filters=None): + """ + List secrets + + Args: + filters (dict): A map of filters to process on the secrets + list. Available filters: ``names`` + + Returns (list): A list of secrets + """ + url = self._url('/secrets') + params = {} + if filters: + params['filters'] = utils.convert_filters(filters) + return self._result(self._get(url, params=params), True) |