Resolves #455 - volumes_from a service with no containers.

Signed-off-by: Daniel Nephin <dnephin@gmail.com>
This commit is contained in:
Daniel Nephin 2014-08-30 11:33:25 -04:00
commit f5d43b6452
2 changed files with 51 additions and 6 deletions

View file

@ -5,6 +5,7 @@ from .packages.docker.errors import APIError
import logging
import re
import os
from operator import attrgetter
import sys
from .container import Container
from .progress_stream import stream_output, StreamOutputError
@ -285,12 +286,17 @@ class Service(object):
def _get_volumes_from(self, intermediate_container=None):
volumes_from = []
for v in self.volumes_from:
if isinstance(v, Service):
for container in v.containers(stopped=True):
volumes_from.append(container.id)
elif isinstance(v, Container):
volumes_from.append(v.id)
for volume_source in self.volumes_from:
if isinstance(volume_source, Service):
containers = volume_source.containers(stopped=True)
if not containers:
volumes_from.append(volume_source.create_container().id)
else:
volumes_from.extend(map(attrgetter('id'), containers))
elif isinstance(volume_source, Container):
volumes_from.append(volume_source.id)
if intermediate_container:
volumes_from.append(intermediate_container.id)