Merge pull request #139 from orchardup/fix-delete-volume

Fix delete volume
This commit is contained in:
Ben Firshman 2014-03-04 11:19:35 +00:00
commit 71533791dd
3 changed files with 20 additions and 10 deletions

View File

@ -170,19 +170,23 @@ class TopLevelCommand(Command):
"""
Remove stopped service containers.
Usage: rm [SERVICE...]
Usage: rm [options] [SERVICE...]
Options:
-v Remove volumes associated with containers
--force Don't ask to confirm removal
-v Remove volumes associated with containers
"""
all_containers = self.project.containers(service_names=options['SERVICE'], stopped=True)
stopped_containers = [c for c in all_containers if not c.is_running]
if len(stopped_containers) > 0:
print("Going to remove", list_containers(stopped_containers))
if yesno("Are you sure? [yN] ", default=False):
self.project.remove_stopped(service_names=options['SERVICE'],
remove_volumes=options['-v'])
if options.get('--force') \
or yesno("Are you sure? [yN] ", default=False):
self.project.remove_stopped(
service_names=options['SERVICE'],
v=options.get('-v', False)
)
else:
print("No stopped containers")

View File

@ -112,8 +112,7 @@ class Container(object):
return self.client.kill(self.id)
def remove(self, **options):
v = options.get('remove_volumes', False)
return self.client.remove_container(self.id, v=v)
return self.client.remove_container(self.id, **options)
def inspect_if_not_inspected(self):
if not self.has_been_inspected:

View File

@ -32,7 +32,7 @@ class CLITestCase(DockerClientTestCase):
self.assertIn('fig_simple_1', mock_stdout.getvalue())
@patch('sys.stdout', new_callable=StringIO)
def test_default_figfile(self, mock_stdout):
def test_ps_default_figfile(self, mock_stdout):
self.command.base_dir = 'tests/fixtures/multiple-figfiles'
self.command.dispatch(['up', '-d'], None)
self.command.dispatch(['ps'], None)
@ -43,7 +43,7 @@ class CLITestCase(DockerClientTestCase):
self.assertNotIn('fig_yetanother_1', output)
@patch('sys.stdout', new_callable=StringIO)
def test_alternate_figfile(self, mock_stdout):
def test_ps_alternate_figfile(self, mock_stdout):
self.command.base_dir = 'tests/fixtures/multiple-figfiles'
self.command.dispatch(['-f', 'fig2.yml', 'up', '-d'], None)
self.command.dispatch(['-f', 'fig2.yml', 'ps'], None)
@ -53,6 +53,14 @@ class CLITestCase(DockerClientTestCase):
self.assertNotIn('fig_another_1', output)
self.assertIn('fig_yetanother_1', output)
def test_rm(self):
service = self.command.project.get_service('simple')
service.create_container()
service.kill()
self.assertEqual(len(service.containers(stopped=True)), 1)
self.command.dispatch(['rm', '--force'], None)
self.assertEqual(len(service.containers(stopped=True)), 0)
def test_scale(self):
project = self.command.project
@ -74,4 +82,3 @@ class CLITestCase(DockerClientTestCase):
self.command.scale({'SERVICE=NUM': ['simple=0', 'another=0']})
self.assertEqual(len(project.get_service('simple').containers()), 0)
self.assertEqual(len(project.get_service('another').containers()), 0)