summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Swor <sworisbreathing@users.noreply.github.com>2020-11-25 14:32:36 +1100
committerUlysses Souza <ulyssessouza@gmail.com>2021-04-06 11:23:54 -0300
commit37e930f4d059b30261d24c5ddd315cef25e2fb87 (patch)
tree59589e9449f55b329123539a022a74aa151a7b65
parent18fdc23b7cca98408f88beec3426c27070e9393f (diff)
downloaddocker-py-prune_build_cache.tar.gz
Add optional parameters for pruning build cache.prune_build_cache
Signed-off-by: Steve Swor <sworisbreathing@users.noreply.github.com>
-rw-r--r--docker/api/build.py15
-rw-r--r--tests/integration/api_build_test.py17
2 files changed, 30 insertions, 2 deletions
diff --git a/docker/api/build.py b/docker/api/build.py
index 365129a..f60aba0 100644
--- a/docker/api/build.py
+++ b/docker/api/build.py
@@ -275,10 +275,16 @@ class BuildApiMixin(object):
return self._stream_helper(response, decode=decode)
@utils.minimum_version('1.31')
- def prune_builds(self):
+ def prune_builds(self, prune_all=False, keep_storage=None, filters=None):
"""
Delete the builder cache
+ Args:
+ prune_all (bool): Remove all unused build cache, not just dangling
+ ones.
+ keep_storage (int): Amount of disk space to keep for cache.
+ filters (dict): Filters to process on the prune list.
+
Returns:
(dict): A dictionary containing information about the operation's
result. The ``SpaceReclaimed`` key indicates the amount of
@@ -288,8 +294,13 @@ class BuildApiMixin(object):
:py:class:`docker.errors.APIError`
If the server returns an error.
"""
+ params = {'all': prune_all}
+ if keep_storage is not None:
+ params['keep-storage'] = keep_storage
+ if filters is not None:
+ params['filters'] = utils.convert_filters(filters)
url = self._url("/build/prune")
- return self._result(self._post(url), True)
+ return self._result(self._post(url, params=params), True)
def _set_auth_headers(self, headers):
log.debug('Looking for auth config')
diff --git a/tests/integration/api_build_test.py b/tests/integration/api_build_test.py
index b830a10..5275c8f 100644
--- a/tests/integration/api_build_test.py
+++ b/tests/integration/api_build_test.py
@@ -593,3 +593,20 @@ class BuildTest(BaseAPIIntegrationTest):
prune_result = self.client.prune_builds()
assert 'SpaceReclaimed' in prune_result
assert isinstance(prune_result['SpaceReclaimed'], int)
+
+ @requires_api_version('1.31')
+ @pytest.mark.xfail(
+ True,
+ reason='Currently fails on 18.09: '
+ 'https://github.com/moby/moby/issues/37920'
+ )
+ def test_prune_builds_all(self):
+ prune_result = self.client.prune_builds(prune_all=True)
+ assert 'SpaceReclaimed' in prune_result
+ assert isinstance(prune_result['SpaceReclaimed'], int)
+
+ @requires_api_version('1.31')
+ def test_prune_builds_keep_storage(self):
+ prune_result = self.client.prune_builds(keep_storage=1)
+ assert 'SpaceReclaimed' in prune_result
+ assert isinstance(prune_result['SpaceReclaimed'], int)