Refactor circular-reference check

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
This commit is contained in:
Mazz Mosley 2015-07-03 14:05:35 +01:00
parent ba71e2a549
commit 6a6e7934bd
1 changed files with 3 additions and 1 deletions
compose

View File

@ -147,10 +147,11 @@ class ServiceLoader(object):
self.filename = filename
self.already_seen = already_seen or []
def make_service_dict(self, name, service_dict):
def detect_cycle(self, name):
if self.signature(name) in self.already_seen:
raise CircularReference(self.already_seen + [self.signature(name)])
def make_service_dict(self, name, service_dict):
service_dict = service_dict.copy()
service_dict['name'] = name
service_dict = resolve_environment(service_dict, working_dir=self.working_dir)
@ -182,6 +183,7 @@ class ServiceLoader(object):
other_config = load_yaml(other_config_path)
other_service_dict = other_config[extends_options['service']]
other_loader.detect_cycle(extends_options['service'])
other_service_dict = other_loader.make_service_dict(
service_dict['name'],
other_service_dict,