Initialize Routers from given config file. 
   39    def buildRouters(self, config):
   40        r"""!Initialize Routers from given config file
   41 
   42        @param config: instance of ConfigYaml class
   43        @return True or False"""
   44        self.config = config
   45        self._routerDict = {}  
   46        routerDict_tmp = {}
   47        logging.debug("build routers")
   48 
   49        
   50        
   51        for router in config.get("router"):
   52            if router.get("name") is None or router.get("route") is None:
   53                logging.error("name or route not found in router: %s", router)
   54                return False
   55            if router.get("name") in self._routerDict:
   56                logging.error("duplicated router name: %s", router.get("name"))
   57                return False
   58            routerDict_tmp[router.get("name")] = Router(router.get("name"))
   59 
   60        for router in config.get("router"):
   61            routerName = router.get("name")
   62 
   63            for route in router.get("route"):
   64                routeType = route.get("type")
   65                routeRes = route.get("res")
   66                routeName = route.get("name", default=routeRes)
   67 
   68                routeConfig = route.get("config", default=ConfigYAML())  
   69 
   70                if routeType is None or routeRes is None:
   71                    logging.error("type or name not found in route: %s", route)
   72                    return False
   73 
   74                try:
   75                    if routeType == "plugin":
   76                        importedFile = importlib.import_module(routeType + "." + routeRes)
   77                        loadedClass = importedFile.BoswatchPlugin(routeConfig)
   78                        routerDict_tmp[routerName].addRoute(Route(routeName,
   79                                                                  loadedClass._run,
   80                                                                  loadedClass._getStatistics,
   81                                                                  loadedClass._cleanup))
   82 
   83                    elif routeType == "module":
   84                        importedFile = importlib.import_module(routeType + "." + routeRes)
   85                        loadedClass = importedFile.BoswatchModule(routeConfig)
   86                        routerDict_tmp[routerName].addRoute(Route(routeName,
   87                                                                  loadedClass._run,
   88                                                                  loadedClass._getStatistics,
   89                                                                  loadedClass._cleanup))
   90 
   91                    elif routeType == "router":
   92                        routerDict_tmp[routerName].addRoute(Route(routeName, routerDict_tmp[routeRes].runRouter))
   93 
   94                    else:
   95                        logging.error("unknown type '%s' in %s", routeType, route)
   96                        return False
   97 
   98                except ModuleNotFoundError:
   99                    logging.exception("%s not found: %s", route.get("type"), route.get("res"))
  100                    return False
  101 
  102        logging.debug("finished building routers")
  103        self._routerDict = routerDict_tmp
  104        self._showRouterRoute()
  105        return True
  106