mirror of https://github.com/docker/docker-py.git
92 lines
2.4 KiB
Python
92 lines
2.4 KiB
Python
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 remove
|
|
|
|
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)
|