diff options
author | Steve Swor <sworisbreathing@users.noreply.github.com> | 2020-11-25 14:32:36 +1100 |
---|---|---|
committer | Ulysses Souza <ulyssessouza@gmail.com> | 2021-04-06 11:23:54 -0300 |
commit | 37e930f4d059b30261d24c5ddd315cef25e2fb87 (patch) | |
tree | 59589e9449f55b329123539a022a74aa151a7b65 | |
parent | 18fdc23b7cca98408f88beec3426c27070e9393f (diff) | |
download | docker-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.py | 15 | ||||
-rw-r--r-- | tests/integration/api_build_test.py | 17 |
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) |