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

Add 'force' parameter in remove_volume

Signed-off-by: 's avatarJoffrey F <joffrey@docker.com>
üst 39deace7
......@@ -115,17 +115,27 @@ class VolumeApiMixin(object):
return self._result(self._get(url), True)
@utils.minimum_version('1.21')
def remove_volume(self, name):
def remove_volume(self, name, force=False):
"""
Remove a volume. Similar to the ``docker volume rm`` command.
Args:
name (str): The volume's name
force (bool): Force removal of volumes that were already removed
out of band by the volume driver plugin.
Raises:
``docker.errors.APIError``: If volume failed to remove.
:py:class:`docker.errors.APIError`
If volume failed to remove.
"""
url = self._url('/volumes/{0}', name)
params = {}
if force:
if utils.version_lt(self._version, '1.25'):
raise errors.InvalidVersion(
'force removal was introduced in API 1.25'
)
params = {'force': force}
url = self._url('/volumes/{0}', name, params=params)
resp = self._delete(url)
self._raise_for_status(resp)
......@@ -10,9 +10,18 @@ class Volume(Model):
"""The name of the volume."""
return self.attrs['Name']
def remove(self):
"""Remove this volume."""
return self.client.api.remove_volume(self.id)
def remove(self, force=False):
"""
Remove this volume.
Args:
force (bool): Force removal of volumes that were already removed
out of band by the volume driver plugin.
Raises:
:py:class:`docker.errors.APIError`
If volume failed to remove.
"""
return self.client.api.remove_volume(self.id, force=force)
class VolumeCollection(Collection):
......
......@@ -49,6 +49,13 @@ class TestVolumes(BaseAPIIntegrationTest):
self.client.create_volume(name)
self.client.remove_volume(name)
@requires_api_version('1.25')
def test_force_remove_volume(self):
name = 'shootthebullet'
self.tmp_volumes.append(name)
self.client.create_volume(name)
self.client.remove_volume(name, force=True)
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