Kaydet (Commit) 89d38033 authored tarafından Joffrey F's avatar Joffrey F

Add prune_volumes method

Signed-off-by: 's avatarJoffrey F <joffrey@docker.com>
üst 7f0c2e75
......@@ -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):
"""
......
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):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment