diff --git a/boswatch/router/router.py b/boswatch/router/router.py index 9f84b19..496cf38 100644 --- a/boswatch/router/router.py +++ b/boswatch/router/router.py @@ -28,7 +28,7 @@ class Router: @param name: name of the router""" self._name = name self._routeList = [] - logging.debug("[%s] new router", self._name) + logging.debug("[%s] add new router", self._name) def addRoute(self, route): """!Adds a route point to the router @@ -46,8 +46,8 @@ class Router: """ logging.debug("[%s] started", self._name) for routeObject in self._routeList: - logging.debug("[%s] -> run route: %s", self._name, routeObject) - bwPacket_tmp = routeObject.callback(copy.deepcopy(bwPacket)) # copy bwPacket to prevent edit the original + logging.debug("[%s] -> run route: %s", self._name, routeObject.name) + bwPacket_tmp = routeObject.callback._run(copy.deepcopy(bwPacket)) # copy bwPacket to prevent edit the original if bwPacket_tmp is None: # returning None doesnt change the bwPacket continue diff --git a/boswatch/router/routerManager.py b/boswatch/router/routerManager.py index 71ad4ec..7ba76fa 100644 --- a/boswatch/router/routerManager.py +++ b/boswatch/router/routerManager.py @@ -64,23 +64,25 @@ class RouterManager: for route in router.get("route"): routeType = route.get("type") - routeName = route.get("name") + routeRes = route.get("res") + routeName = route.get("name", default=routeRes) + routeConfig = route.get("config", default=ConfigYAML()) # if no config - build a empty - if routeType is None or routeName is None: + if routeType is None or routeRes is None: logging.error("type or name not found in route: %s", route) return False try: if routeType == "plugin": - importedFile = importlib.import_module(routeType + "." + routeName) + importedFile = importlib.import_module(routeType + "." + routeRes) loadedClass = importedFile.BoswatchPlugin(routeConfig) - routerDict_tmp[routerName].addRoute(Route(routeName, loadedClass._run)) + routerDict_tmp[routerName].addRoute(Route(routeName, loadedClass)) elif routeType == "module": - importedFile = importlib.import_module(routeType + "." + routeName) + importedFile = importlib.import_module(routeType + "." + routeRes) loadedClass = importedFile.BoswatchModule(routeConfig) - routerDict_tmp[routerName].addRoute(Route(routeName, loadedClass._run)) + routerDict_tmp[routerName].addRoute(Route(routeName, loadedClass)) elif routeType == "router": routerDict_tmp[routerName].addRoute(Route(routeName, routerDict_tmp[routeName].runRouter)) @@ -91,7 +93,7 @@ class RouterManager: # except ModuleNotFoundError: # only since Py3.6 except ImportError: - logging.error("%s not found: %s", route.get("type"), route.get("name")) + logging.error("%s not found: %s", route.get("type"), route.get("res")) return False logging.debug("finished building routers") diff --git a/config/server.yaml b/config/server.yaml index bf17173..651b259 100644 --- a/config/server.yaml +++ b/config/server.yaml @@ -19,7 +19,8 @@ router: - name: Router 1 route: - type: module - name: filter.modeFilter + res: filter.modeFilter + name: Filter Fms/Zvei config: allowed: - fms diff --git a/docu/docs/config.md b/docu/docs/config.md index 3a10798..3a327f5 100644 --- a/docu/docs/config.md +++ b/docu/docs/config.md @@ -110,7 +110,8 @@ Jeder Router kann eine beliebige Anzahl einzelner Routenpunkte enthalten. Diese |Feld|Beschreibung|Default| |----|------------|-------| |type|Art des Routenpunktes (module, plugin, router)|| -|name|Zu ladende Resource (Siehe entsprechende Kapitel)|| +|res|Zu ladende Resource (Siehe entsprechende Kapitel)|| +|name|Optionaler Name des Routenpunktes|gleich wie Resource| |config|Konfigurationseinstellungen des Routenpunktes (Siehe entsprechende Kapitel)|| **Beispiel:** @@ -119,7 +120,8 @@ router: - name: Router 1 route: - type: module - name: filter.modeFilter + res: filter.modeFilter + name: Filter Fms/Zvei config: allowed: - fms diff --git a/docu/docs/modul/mode_filter.md b/docu/docs/modul/mode_filter.md index 5f167f7..03d1a2d 100644 --- a/docu/docs/modul/mode_filter.md +++ b/docu/docs/modul/mode_filter.md @@ -16,7 +16,7 @@ Mit diesem Modul ist es Möglich, die Pakete auf bestimmte Modes (FMS, POCSAG, Z **Beispiel:** ```yaml - type: module - name: filter.modeFilter + res: filter.modeFilter config: allowed: - fms