Explorar o código

Fix volumes_from container

Closes #311.

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad %!s(int64=11) %!d(string=hai) anos
pai
achega
89341013a0
Modificáronse 2 ficheiros con 42 adicións e 2 borrados
  1. 2 2
      fig/project.py
  2. 40 0
      tests/integration/project_test.py

+ 2 - 2
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']

+ 40 - 0
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')