From 89341013a08f3f382262799ee6e335f38448b4b3 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 11 Jul 2014 16:39:23 -0700 Subject: [PATCH] Fix volumes_from container Closes #311. Signed-off-by: Aanand Prasad --- fig/project.py | 4 ++-- tests/integration/project_test.py | 40 +++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/fig/project.py b/fig/project.py index a0b9150bc..d8044c7d7 100644 --- a/fig/project.py +++ b/fig/project.py @@ -135,8 +135,8 @@ class Project(object): volumes_from.append(service) except NoSuchService: try: - container = Container.from_id(client, volume_name) - volumes_from.append(Container.from_id(client, volume_name)) + container = Container.from_id(self.client, volume_name) + volumes_from.append(container) except APIError: raise ConfigurationError('Service "%s" mounts volumes from "%s", which is not the name of a service or container.' % (service_dict['name'], volume_name)) del service_dict['volumes_from'] diff --git a/tests/integration/project_test.py b/tests/integration/project_test.py index f52476828..83a988a14 100644 --- a/tests/integration/project_test.py +++ b/tests/integration/project_test.py @@ -1,9 +1,49 @@ from __future__ import unicode_literals from fig.project import Project, ConfigurationError +from fig.container import Container from .testcases import DockerClientTestCase class ProjectTest(DockerClientTestCase): + def test_volumes_from_service(self): + project = Project.from_config( + name='figtest', + config={ + 'data': { + 'image': 'busybox:latest', + 'volumes': ['/var/data'], + }, + 'db': { + 'image': 'busybox:latest', + 'volumes_from': ['data'], + }, + }, + client=self.client, + ) + db = project.get_service('db') + data = project.get_service('data') + self.assertEqual(db.volumes_from, [data]) + + def test_volumes_from_container(self): + data_container = Container.create( + self.client, + image='busybox:latest', + volumes=['/var/data'], + name='figtest_data_container', + ) + project = Project.from_config( + name='figtest', + config={ + 'db': { + 'image': 'busybox:latest', + 'volumes_from': ['figtest_data_container'], + }, + }, + client=self.client, + ) + db = project.get_service('db') + self.assertEqual(db.volumes_from, [data_container]) + def test_start_stop_kill_remove(self): web = self.create_service('web') db = self.create_service('db')