Selaa lähdekoodia

Pick the first container

Rather than inefficiently looping through all the containers that a
service has and overriding each volumes_from value, pick the first
one and return that.

Signed-off-by: Mazz Mosley <[email protected]>
Mazz Mosley 10 vuotta sitten
vanhempi
sitoutus
f9028703f4
3 muutettua tiedostoa jossa 6 lisäystä ja 5 poistoa
  1. 3 2
      compose/service.py
  2. 1 1
      tests/unit/project_test.py
  3. 2 2
      tests/unit/service_test.py

+ 3 - 2
compose/service.py

@@ -994,8 +994,9 @@ def build_volume_from(volume_from_spec):
         containers = volume_from_spec.source.containers(stopped=True)
         if not containers:
             return ["{}:{}".format(volume_from_spec.source.create_container().id, volume_from_spec.mode)]
-        else:
-            return ["{}:{}".format(container.id, volume_from_spec.mode) for container in containers]
+
+        container = containers[0]
+        return ["{}:{}".format(container.id, volume_from_spec.mode)]
     elif isinstance(volume_from_spec.source, Container):
         return ["{}:{}".format(volume_from_spec.source.id, volume_from_spec.mode)]
 

+ 1 - 1
tests/unit/project_test.py

@@ -211,7 +211,7 @@ class ProjectTest(unittest.TestCase):
                 'volumes_from': ['vol']
             }
         ], None)
-        self.assertEqual(project.get_service('test')._get_volumes_from(), [cid + ':rw' for cid in container_ids])
+        self.assertEqual(project.get_service('test')._get_volumes_from(), [container_ids[0] + ':rw'])
 
     def test_net_unset(self):
         project = Project.from_dicts('test', [

+ 2 - 2
tests/unit/service_test.py

@@ -98,7 +98,7 @@ class ServiceTest(unittest.TestCase):
         ]
         service = Service('test', volumes_from=[VolumeFromSpec(from_service, 'rw')], image='foo')
 
-        self.assertEqual(service._get_volumes_from(), [cid + ":rw" for cid in container_ids])
+        self.assertEqual(service._get_volumes_from(), [container_ids[0] + ":rw"])
 
     def test_get_volumes_from_service_container_exists_with_flags(self):
         for mode in ['ro', 'rw', 'z', 'rw,z', 'z,rw']:
@@ -110,7 +110,7 @@ class ServiceTest(unittest.TestCase):
             ]
             service = Service('test', volumes_from=[VolumeFromSpec(from_service, mode)], image='foo')
 
-            self.assertEqual(service._get_volumes_from(), container_ids)
+            self.assertEqual(service._get_volumes_from(), [container_ids[0]])
 
     def test_get_volumes_from_service_no_container(self):
         container_id = 'abababab'