def _add_default_image(framework: Namespace, config: Namespace): if "image" not in framework: framework.image = copy.deepcopy(config.docker.image_defaults) else: framework.image = Namespace.merge(config.docker.image_defaults, framework.image) if framework.image.tag is None: framework.image.tag = framework.version.lower() if framework.image.image is None: framework.image.image = framework.name.lower() if framework.image.author is None: framework.image.author = ""
def _add_default_image(framework: Namespace, config: Namespace, props: Optional[List[str]] = None): if "image" not in framework: framework.image = copy.deepcopy(config.docker.image_defaults) else: framework.image = Namespace.merge(config.docker.image_defaults, framework.image) if framework.image.tag is None and (not props or 'tag' in props): framework.image.tag = framework.version.lower() if framework.image.image is None and (not props or 'image' in props): framework.image.image = framework.name.lower() if framework.image.author is None and (not props or 'author' in props): framework.image.author = ""
def _load_and_merge_framework_definitions( frameworks_file: Union[str, List[str]]) -> Namespace: """ Load and merge the framework file(s), does not allow duplicate definitions. """ log.info("Loading frameworks definitions from %s.", frameworks_file) if not isinstance(frameworks_file, list): frameworks_file = [frameworks_file] definitions_by_file = [config_load(file) for file in frameworks_file] for d1, d2 in itertools.combinations( [set(dir(d)) for d in definitions_by_file], 2): if d1.intersection(d2) != set(): raise ValueError( f"Duplicate entry '{d1.intersection(d2).pop()}' found.") return Namespace.merge(*definitions_by_file)