mirror of https://github.com/docker/docker-py.git
Add 'force' parameter in remove_volume
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
39deace7c6
commit
a24b114af3
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue