feat: accept filters and keep_storage in prune_builds#3192
feat: accept filters and keep_storage in prune_builds#3192milas merged 4 commits intodocker:mainfrom
Conversation
Signed-off-by: Emran Batmanghelich <emran.bm@gmail.com>
milas
left a comment
There was a problem hiding this comment.
Thank you for the PR! I requested a couple of small changes:
- Add the
allparameter which was added to API v1.39 at the same time: https://docs.docker.com/engine/api/v1.39/#tag/Image/operation/BuildPrune - Add a programmatic API version check before using the new parameters
docker/api/build.py
Outdated
|
|
||
| @utils.minimum_version('1.31') | ||
| def prune_builds(self): | ||
| def prune_builds(self, filters=None, keep_storage=None): |
There was a problem hiding this comment.
There's also all, which is a boolean and was added at the same time as filters and keep-storage - let's add that as well
| params = {} | ||
| if filters is not None: | ||
| params['filters'] = utils.convert_filters(filters) | ||
| if keep_storage is not None: | ||
| params['keep-storage'] = keep_storage | ||
| return self._result(self._post(url, params=params), True) |
There was a problem hiding this comment.
These args were added in API v1.39 - typically, we add a check for them, e.g.
if utils.version_lt(self._version, '1.39'):
raise errors.InvalidVersion(
'`keep-storage` arg only available for API version > 1.38'
)(if you look for utils.version_lt or utils.version_gte you'll see a bunch of examples - they're not 100% consistent so do whatever makes sense here, e.g. I'm fine if there's a single check if ANY of filters / keep_storage / any are not None since they were all added together in the same API version)
Signed-off-by: Emran Batmanghelich <emran.bm@gmail.com>
milas
left a comment
There was a problem hiding this comment.
Thanks for the speedy turn-around
LGTM, just needs a small fix from copy-paste 🙃
Signed-off-by: Milas Bowman <devnull@milas.dev>
Oh sorry 😢 |
|
Merged! Thanks for the PR! ❤️ |
Make the
api.prune_buildsmethod acceptfiltersandkeep-storageargs to pass to the docker API. The API details can be found here.