def synch_topologies(self) -> None: """ Sync the topologies with the statemgrs. """ self.state_managers = statemanagerfactory.get_all_state_managers(self.config.statemgr_config) try: for state_manager in self.state_managers: state_manager.start() except Exception as e: Log.critical(f"Found exception while initializing state managers: {e}", exc_info=True) sys.exit(1) def on_topologies_watch(state_manager, topologies) -> None: """watch topologies""" Log.info("State watch triggered for topologies.") Log.debug("Topologies: " + str(topologies)) cached_names = [t.name for t in self.get_stmgr_topologies(state_manager.name)] Log.debug(f"Existing topologies: {cached_names}") for name in cached_names: if name not in topologies: Log.info("Removing topology: %s in rootpath: %s", name, state_manager.rootpath) self.remove_topology(name, state_manager.name) for name in topologies: if name not in cached_names: self.add_new_topology(state_manager, name) for state_manager in self.state_managers: # The callback function with the bound # state_manager as first variable. onTopologiesWatch = partial(on_topologies_watch, state_manager) state_manager.get_topologies(onTopologiesWatch)