Skip to content

Commit

Permalink
feat: accept all / filters / keep_storage in prune_builds (#3192)
Browse files Browse the repository at this point in the history
Added in API v1.39.

---------

Signed-off-by: Emran Batmanghelich <emran.bm@gmail.com>
  • Loading branch information
emranbm authored Dec 5, 2023
1 parent a9b5494 commit 3d0a3f1
Showing 1 changed file with 29 additions and 2 deletions.
31 changes: 29 additions & 2 deletions docker/api/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,10 +279,24 @@ def build(self, path=None, tag=None, quiet=False, fileobj=None,
return self._stream_helper(response, decode=decode)

@utils.minimum_version('1.31')
def prune_builds(self):
def prune_builds(self, filters=None, keep_storage=None, all=None):
"""
Delete the builder cache
Args:
filters (dict): Filters to process on the prune list.
Needs Docker API v1.39+
Available filters:
- dangling (bool): When set to true (or 1), prune only
unused and untagged images.
- until (str): Can be Unix timestamps, date formatted
timestamps, or Go duration strings (e.g. 10m, 1h30m) computed
relative to the daemon's local time.
keep_storage (int): Amount of disk space in bytes to keep for cache.
Needs Docker API v1.39+
all (bool): Remove all types of build cache.
Needs Docker API v1.39+
Returns:
(dict): A dictionary containing information about the operation's
result. The ``SpaceReclaimed`` key indicates the amount of
Expand All @@ -293,7 +307,20 @@ def prune_builds(self):
If the server returns an error.
"""
url = self._url("/build/prune")
return self._result(self._post(url), True)
if (filters, keep_storage, all) != (None, None, None) \
and utils.version_lt(self._version, '1.39'):
raise errors.InvalidVersion(
'`filters`, `keep_storage`, and `all` args are only available '
'for API version > 1.38'
)
params = {}
if filters is not None:
params['filters'] = utils.convert_filters(filters)
if keep_storage is not None:
params['keep-storage'] = keep_storage
if all is not None:
params['all'] = all
return self._result(self._post(url, params=params), True)

def _set_auth_headers(self, headers):
log.debug('Looking for auth config')
Expand Down

0 comments on commit 3d0a3f1

Please sign in to comment.