Exemplo n.º 1
0
    def from_config(  # type: ignore
            cls,
            config: Dict[str, Any],
            project_name: str,
            config_globals=None):
        """
        Construct an instance from a block of YAML config file which represents
        a single Machine; loaded as a ``dict``.

        Parameters
        ----------
        config: dict
            The loaded block of config which represents a 'Machine' in YAML
        project_name: str
            Name of the project this Machine belongs to.
        config_globals:
            The block of config within the YAML file within `globals`

        Returns
        -------
        :class:`~Machine`
        """
        if config_globals is None:
            config_globals = dict()

        name = config["name"]
        model = config.get("model") or config_globals.get("model")

        local_runtime = config.get("runtime", dict())
        runtime = patch_dict(config_globals.get("runtime", dict()),
                             local_runtime)

        dataset_config = patch_dict(config.get("dataset", dict()),
                                    config_globals.get("dataset", dict()))
        dataset = GordoBaseDataset.from_dict(dataset_config)
        evaluation = patch_dict(config_globals.get("evaluation", dict()),
                                config.get("evaluation", dict()))

        metadata = Metadata(
            user_defined={
                "global-metadata": config_globals.get("metadata", dict()),
                "machine-metadata": config.get("metadata", dict()),
            })
        return cls(
            name,
            model,
            dataset,
            metadata=metadata,
            runtime=runtime,
            project_name=project_name,
            evaluation=evaluation,
        )
Exemplo n.º 2
0
 def get_default_globals(cls, gordo_version: str) -> dict:
     current_version = parse(gordo_version)
     unifying_version = parse(cls.UNIFYING_GORDO_VERSION)
     if current_version >= unifying_version:
         docker_images = cls.UNIFIED_DOCKER_IMAGES
     else:
         docker_images = cls.SPLITED_DOCKER_IMAGES
     default_globals = cls.DEFAULT_CONFIG_GLOBALS
     return patch_dict(copy(default_globals), docker_images)
Exemplo n.º 3
0
    def __init__(self, config: dict, project_name: str):
        default_globals = self.DEFAULT_CONFIG_GLOBALS
        default_globals["runtime"]["influx"][  # type: ignore
            "resources"] = _calculate_influx_resources(  # type: ignore
                len(config["machines"]))

        passed_globals = config.get("globals", dict())
        patched_globals = patch_dict(default_globals, passed_globals)
        if patched_globals.get("runtime"):
            patched_globals["runtime"] = fix_runtime(
                patched_globals.get("runtime"))
        self.project_name = project_name
        self.machines = [
            Machine.from_config(conf,
                                project_name=project_name,
                                config_globals=patched_globals)
            for conf in config["machines"]
        ]  # type: List[Machine]

        self.globals = patched_globals
Exemplo n.º 4
0
    def __init__(
        self,
        config: dict,
        project_name: str,
        gordo_version: Optional[str] = None,
        model_builder_env: Optional[dict] = None,
    ):
        if gordo_version is None:
            gordo_version = __version__
        default_globals = self.get_default_globals(gordo_version)
        default_globals["runtime"]["influx"][  # type: ignore
            "resources"
        ] = _calculate_influx_resources(  # type: ignore
            len(config["machines"])
        )

        passed_globals = config.get("globals", dict())

        # keeping it for back-compatibility
        if model_builder_env is not None and not (
            passed_globals
            and "runtime" in passed_globals
            and "builder" in passed_globals["runtime"]
            and "env" in passed_globals["runtime"]["builder"]
        ):
            if "builder" not in default_globals["runtime"]:
                default_globals["runtime"]["builder"] = {}
            default_globals["runtime"]["builder"]["env"] = model_builder_env

        patched_globals = patch_dict(default_globals, passed_globals)
        patched_globals = self.prepare_patched_globals(patched_globals)

        self.project_name = project_name
        self.machines: List[Machine] = [
            Machine.from_config(
                conf, project_name=project_name, config_globals=patched_globals
            )
            for conf in config["machines"]
        ]

        self.globals: dict = patched_globals