Пример #1
0
    def emane_check(self) -> None:
        """
        Check if emane is installed and load models.

        :return: nothing
        """
        # check for emane
        path = utils.which("emane", required=False)
        if not path:
            logging.info("emane is not installed")
            return

        # get version
        emane_version = utils.cmd("emane --version")
        logging.info("using emane: %s", emane_version)

        # load default emane models
        self.load_models(EMANE_MODELS)

        # load custom models
        custom_models_path = self.session.options.get_config(
            "emane_models_dir")
        if custom_models_path:
            emane_models = utils.load_classes(custom_models_path, EmaneModel)
            self.load_models(emane_models)
Пример #2
0
    def emane_check(self) -> None:
        """
        Check if emane is installed and load models.

        :return: nothing
        """
        try:
            # check for emane
            args = "emane --version"
            emane_version = utils.cmd(args)
            logging.info("using EMANE: %s", emane_version)
            self.session.distributed.execute(lambda x: x.remote_cmd(args))

            # load default emane models
            self.load_models(EMANE_MODELS)

            # load custom models
            custom_models_path = self.session.options.get_config(
                "emane_models_dir")
            if custom_models_path:
                emane_models = utils.load_classes(custom_models_path,
                                                  EmaneModel)
                self.load_models(emane_models)
        except CoreCommandError:
            logging.info("emane is not installed")
Пример #3
0
    def add_services(cls, path: Path) -> List[str]:
        """
        Method for retrieving all CoreServices from a given path.

        :param path: path to retrieve services from
        :return: list of core services that failed to load
        """
        service_errors = []
        services = utils.load_classes(path, CoreService)
        for service in services:
            if not service.name:
                continue
            try:
                cls.add(service)
            except (CoreError, ValueError) as e:
                service_errors.append(service.name)
                logger.debug("not loading service(%s): %s", service.name, e)
        return service_errors
Пример #4
0
    def add_services(cls, path):
        """
        Method for retrieving all CoreServices from a given path.

        :param str path: path to retrieve services from
        :return: list of core services that failed to load
        :rtype: list[str]
        """
        service_errors = []
        services = utils.load_classes(path, CoreService)
        for service in services:
            if not service.name:
                continue
            service.on_load()

            try:
                cls.add(service)
            except ValueError as e:
                service_errors.append(service.name)
                logging.debug("not loading service: %s", e)
        return service_errors
Пример #5
0
    def emane_check(self):
        """
        Check if emane is installed and load models.

        :return: nothing
        """
        try:
            # check for emane
            emane_version = utils.check_cmd(["emane", "--version"])
            logging.info("using EMANE: %s", emane_version)

            # load default emane models
            self.load_models(EMANE_MODELS)

            # load custom models
            custom_models_path = self.session.options.get_config("emane_models_dir")
            if custom_models_path:
                emane_models = utils.load_classes(custom_models_path, EmaneModel)
                self.load_models(emane_models)
        except CoreCommandError:
            logging.info("emane is not installed")
Пример #6
0
    def load(self, path: str) -> List[str]:
        """
        Search path provided for configurable services and add them for being managed.

        :param path: path to search configurable services
        :return: list errors when loading and adding services
        """
        path = pathlib.Path(path)
        subdirs = [x for x in path.iterdir() if x.is_dir()]
        subdirs.append(path)
        service_errors = []
        for subdir in subdirs:
            logging.debug("loading config services from: %s", subdir)
            services = utils.load_classes(str(subdir), ConfigService)
            for service in services:
                try:
                    self.add(service)
                except CoreError as e:
                    service_errors.append(service.name)
                    logging.debug("not loading service(%s): %s", service.name, e)
        return service_errors
Пример #7
0
    def load(cls, path: Path, emane_prefix: Path) -> List[str]:
        """
        Search and load custom emane models and make them available.

        :param path: path to search for custom emane models
        :param emane_prefix: installed emane prefix
        :return: list of errors encountered loading emane models
        """
        subdirs = [x for x in path.iterdir() if x.is_dir()]
        subdirs.append(path)
        errors = []
        for subdir in subdirs:
            logger.debug("loading emane models from: %s", subdir)
            models = utils.load_classes(subdir, EmaneModel)
            for model in models:
                logger.debug("loading emane model: %s", model.name)
                try:
                    model.load(emane_prefix)
                    cls.models[model.name] = model
                except CoreError as e:
                    errors.append(model.name)
                    logger.debug("not loading emane model(%s): %s", model.name,
                                 e)
        return errors