Move parsing of volumes_from to the last step of config parsing.
Includes creating a new compose.config.types module for all the domain objects. Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
parent
c9ca5e86b0
commit
068edfa313
9 changed files with 74 additions and 45 deletions
|
|
@ -19,10 +19,8 @@ from .legacy import check_for_legacy_containers
|
|||
from .service import ContainerNet
|
||||
from .service import ConvergenceStrategy
|
||||
from .service import Net
|
||||
from .service import parse_volume_from_spec
|
||||
from .service import Service
|
||||
from .service import ServiceNet
|
||||
from .service import VolumeFromSpec
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
|
@ -38,10 +36,7 @@ def sort_service_dicts(services):
|
|||
return [link.split(':')[0] for link in links]
|
||||
|
||||
def get_service_names_from_volumes_from(volumes_from):
|
||||
return [
|
||||
parse_volume_from_spec(volume_from).source
|
||||
for volume_from in volumes_from
|
||||
]
|
||||
return [volume_from.source for volume_from in volumes_from]
|
||||
|
||||
def get_service_dependents(service_dict, services):
|
||||
name = service_dict['name']
|
||||
|
|
@ -192,16 +187,15 @@ class Project(object):
|
|||
def get_volumes_from(self, service_dict):
|
||||
volumes_from = []
|
||||
if 'volumes_from' in service_dict:
|
||||
for volume_from_config in service_dict.get('volumes_from', []):
|
||||
volume_from_spec = parse_volume_from_spec(volume_from_config)
|
||||
for volume_from_spec in service_dict.get('volumes_from', []):
|
||||
# Get service
|
||||
try:
|
||||
service_name = self.get_service(volume_from_spec.source)
|
||||
volume_from_spec = VolumeFromSpec(service_name, volume_from_spec.mode)
|
||||
service = self.get_service(volume_from_spec.source)
|
||||
volume_from_spec = volume_from_spec._replace(source=service)
|
||||
except NoSuchService:
|
||||
try:
|
||||
container_name = Container.from_id(self.client, volume_from_spec.source)
|
||||
volume_from_spec = VolumeFromSpec(container_name, volume_from_spec.mode)
|
||||
container = Container.from_id(self.client, volume_from_spec.source)
|
||||
volume_from_spec = volume_from_spec._replace(source=container)
|
||||
except APIError:
|
||||
raise ConfigurationError(
|
||||
'Service "%s" mounts volumes from "%s", which is '
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue