Kaydet (Commit) 32bc17e1 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 f7040822
...@@ -117,17 +117,27 @@ class VolumeApiMixin(object): ...@@ -117,17 +117,27 @@ class VolumeApiMixin(object):
return self._result(self._get(url), True) return self._result(self._get(url), True)
@utils.minimum_version('1.21') @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. Remove a volume. Similar to the ``docker volume rm`` command.
Args: Args:
name (str): The volume's name 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: Raises:
:py:class:`docker.errors.APIError`
``docker.errors.APIError``: If volume failed to remove. 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) resp = self._delete(url)
self._raise_for_status(resp) self._raise_for_status(resp)
...@@ -10,9 +10,18 @@ class Volume(Model): ...@@ -10,9 +10,18 @@ class Volume(Model):
"""The name of the volume.""" """The name of the volume."""
return self.attrs['Name'] return self.attrs['Name']
def remove(self): def remove(self, force=False):
"""Remove this volume.""" """
return self.client.api.remove_volume(self.id) 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): class VolumeCollection(Collection):
......
...@@ -49,6 +49,13 @@ class TestVolumes(BaseAPIIntegrationTest): ...@@ -49,6 +49,13 @@ class TestVolumes(BaseAPIIntegrationTest):
self.client.create_volume(name) self.client.create_volume(name)
self.client.remove_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): def test_remove_nonexistent_volume(self):
name = 'shootthebullet' name = 'shootthebullet'
with pytest.raises(docker.errors.NotFound): 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