| import base64 |
| |
| import six |
| |
| from .. import utils |
| |
| |
| class ConfigApiMixin(object): |
| @utils.minimum_version('1.30') |
| def create_config(self, name, data, labels=None): |
| """ |
| Create a config |
| |
| Args: |
| name (string): Name of the config |
| data (bytes): Config data to be stored |
| labels (dict): A mapping of labels to assign to the config |
| |
| Returns (dict): ID of the newly created config |
| """ |
| 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 |
| } |
| |
| url = self._url('/configs/create') |
| return self._result( |
| self._post_json(url, data=body), True |
| ) |
| |
| @utils.minimum_version('1.30') |
| @utils.check_resource('id') |
| def inspect_config(self, id): |
| """ |
| Retrieve config metadata |
| |
| Args: |
| id (string): Full ID of the config to inspect |
| |
| Returns (dict): A dictionary of metadata |
| |
| Raises: |
| :py:class:`docker.errors.NotFound` |
| if no config with that ID exists |
| """ |
| url = self._url('/configs/{0}', id) |
| return self._result(self._get(url), True) |
| |
| @utils.minimum_version('1.30') |
| @utils.check_resource('id') |
| def remove_config(self, id): |
| """ |
| Remove a config |
| |
| Args: |
| id (string): Full ID of the config to remove |
| |
| Returns (boolean): True if successful |
| |
| Raises: |
| :py:class:`docker.errors.NotFound` |
| if no config with that ID exists |
| """ |
| url = self._url('/configs/{0}', id) |
| res = self._delete(url) |
| self._raise_for_status(res) |
| return True |
| |
| @utils.minimum_version('1.30') |
| def configs(self, filters=None): |
| """ |
| List configs |
| |
| Args: |
| filters (dict): A map of filters to process on the configs |
| list. Available filters: ``names`` |
| |
| Returns (list): A list of configs |
| """ |
| url = self._url('/configs') |
| params = {} |
| if filters: |
| params['filters'] = utils.convert_filters(filters) |
| return self._result(self._get(url, params=params), True) |