예제 #1
0
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 = ""
예제 #2
0
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)