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 <mazz@houseofmnowster.com>
This commit is contained in:
Mazz Mosley 2015-10-06 13:11:49 +01:00
parent 0ff84a78c6
commit f9028703f4
3 changed files with 6 additions and 5 deletions

View File

@ -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)]

View File

@ -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', [

View File

@ -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'