File tree Expand file tree Collapse file tree 4 files changed +36
-1
lines changed Expand file tree Collapse file tree 4 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -116,6 +116,28 @@ def inspect_volume(self, name):
116
116
url = self ._url ('/volumes/{0}' , name )
117
117
return self ._result (self ._get (url ), True )
118
118
119
+ @utils .minimum_version ('1.25' )
120
+ def prune_volumes (self , filters = None ):
121
+ """
122
+ Delete unused volumes
123
+
124
+ Args:
125
+ filters (dict): Filters to process on the prune list.
126
+
127
+ Returns:
128
+ (dict): A dict containing a list of deleted volume IDs and
129
+ the amount of disk space reclaimed in bytes.
130
+
131
+ Raises:
132
+ :py:class:`docker.errors.APIError`
133
+ If the server returns an error.
134
+ """
135
+ params = {}
136
+ if filters :
137
+ params ['filters' ] = utils .convert_filters (filters )
138
+ url = self ._url ('/volumes/prune' )
139
+ return self ._result (self ._post (url , params = params ), True )
140
+
119
141
@utils .minimum_version ('1.21' )
120
142
def remove_volume (self , name , force = False ):
121
143
"""
Original file line number Diff line number Diff line change
1
+ from ..api import APIClient
1
2
from .resource import Model , Collection
2
3
3
4
@@ -92,3 +93,7 @@ def list(self, **kwargs):
92
93
if not resp .get ('Volumes' ):
93
94
return []
94
95
return [self .prepare_model (obj ) for obj in resp ['Volumes' ]]
96
+
97
+ def prune (self , filters = None ):
98
+ return self .client .api .prune_volumes (filters = filters )
99
+ prune .__doc__ = APIClient .prune_volumes .__doc__
Original file line number Diff line number Diff line change @@ -299,5 +299,5 @@ def test_prune_images(self):
299
299
self .tmp_imgs .append ('hello-world' )
300
300
img_id = self .client .inspect_image ('hello-world' )['Id' ]
301
301
result = self .client .prune_images ()
302
- assert img_id in result ['ImagesDeleted' ]
302
+ assert img_id in [ img [ 'Deleted' ] for img in result ['ImagesDeleted' ] ]
303
303
assert result ['SpaceReclaimed' ] > 0
Original file line number Diff line number Diff line change @@ -56,6 +56,14 @@ def test_force_remove_volume(self):
56
56
self .client .create_volume (name )
57
57
self .client .remove_volume (name , force = True )
58
58
59
+ @requires_api_version ('1.25' )
60
+ def test_prune_volumes (self ):
61
+ name = 'hopelessmasquerade'
62
+ self .client .create_volume (name )
63
+ self .tmp_volumes .append (name )
64
+ result = self .client .prune_volumes ()
65
+ assert name in result ['VolumesDeleted' ]
66
+
59
67
def test_remove_nonexistent_volume (self ):
60
68
name = 'shootthebullet'
61
69
with pytest .raises (docker .errors .NotFound ):
You can’t perform that action at this time.
0 commit comments