mirror of https://github.com/docker/docker-py.git
Add prune_volumes method
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
7f0c2e7531
commit
89d3803344
|
@ -115,6 +115,28 @@ class VolumeApiMixin(object):
|
|||
url = self._url('/volumes/{0}', name)
|
||||
return self._result(self._get(url), True)
|
||||
|
||||
@utils.minimum_version('1.25')
|
||||
def prune_volumes(self, filters=None):
|
||||
"""
|
||||
Delete unused volumes
|
||||
|
||||
Args:
|
||||
filters (dict): Filters to process on the prune list.
|
||||
|
||||
Returns:
|
||||
(dict): A dict containing a list of deleted volume IDs and
|
||||
the amount of disk space reclaimed in bytes.
|
||||
|
||||
Raises:
|
||||
:py:class:`docker.errors.APIError`
|
||||
If the server returns an error.
|
||||
"""
|
||||
params = {}
|
||||
if filters:
|
||||
params['filters'] = utils.convert_filters(filters)
|
||||
url = self._url('/volumes/prune')
|
||||
return self._result(self._post(url, params=params), True)
|
||||
|
||||
@utils.minimum_version('1.21')
|
||||
def remove_volume(self, name, force=False):
|
||||
"""
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
from ..api import APIClient
|
||||
from .resource import Model, Collection
|
||||
|
||||
|
||||
|
@ -91,3 +92,7 @@ class VolumeCollection(Collection):
|
|||
if not resp.get('Volumes'):
|
||||
return []
|
||||
return [self.prepare_model(obj) for obj in resp['Volumes']]
|
||||
|
||||
def prune(self, filters=None):
|
||||
return self.client.api.prune_volumes(filters=filters)
|
||||
prune.__doc__ = APIClient.prune_volumes.__doc__
|
||||
|
|
|
@ -299,5 +299,5 @@ class PruneImagesTest(BaseAPIIntegrationTest):
|
|||
self.tmp_imgs.append('hello-world')
|
||||
img_id = self.client.inspect_image('hello-world')['Id']
|
||||
result = self.client.prune_images()
|
||||
assert img_id in result['ImagesDeleted']
|
||||
assert img_id in [img['Deleted'] for img in result['ImagesDeleted']]
|
||||
assert result['SpaceReclaimed'] > 0
|
||||
|
|
|
@ -56,6 +56,14 @@ class TestVolumes(BaseAPIIntegrationTest):
|
|||
self.client.create_volume(name)
|
||||
self.client.remove_volume(name, force=True)
|
||||
|
||||
@requires_api_version('1.25')
|
||||
def test_prune_volumes(self):
|
||||
name = 'hopelessmasquerade'
|
||||
self.client.create_volume(name)
|
||||
self.tmp_volumes.append(name)
|
||||
result = self.client.prune_volumes()
|
||||
assert name in result['VolumesDeleted']
|
||||
|
||||
def test_remove_nonexistent_volume(self):
|
||||
name = 'shootthebullet'
|
||||
with pytest.raises(docker.errors.NotFound):
|
||||
|
|
Loading…
Reference in New Issue