X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_mon%2Fdashboarder%2Fdashboarder.py;h=1d523cffea0c8fec8400f98d81c794bc3c1dec12;hb=refs%2Fchanges%2F01%2F13801%2F2;hp=bed157aeb9ce2d2bce78858a75cd8462dab8ee21;hpb=8e4179facf22c8096992f0a83caeec9f2f4996c7;p=osm%2FMON.git diff --git a/osm_mon/dashboarder/dashboarder.py b/osm_mon/dashboarder/dashboarder.py index bed157a..1d523cf 100644 --- a/osm_mon/dashboarder/dashboarder.py +++ b/osm_mon/dashboarder/dashboarder.py @@ -35,26 +35,28 @@ log = logging.getLogger(__name__) class Dashboarder: - def __init__(self, config: Config, loop=None): + def __init__(self, config: Config): self.conf = config self.service = DashboarderService(config) - if not loop: - loop = asyncio.get_event_loop() - self.loop = loop self.msg_bus = MessageBusClient(config) # run consumer for grafana user management def run(self): - self.loop.run_until_complete(self.start()) + asyncio.run(self.start()) - async def start(self): + async def start(self, wait_time=5): topics = ["users", "project"] - try: - await self.msg_bus.aioread(topics, self._user_msg) - except Exception as e: - # Failed to subscribe to kafka topics - log.error("Error when subscribing to topics %s", str(topics)) - log.exception("Exception %s", str(e)) + while True: + try: + await self.msg_bus.aioread(topics, self._user_msg) + break + except Exception as e: + # Failed to subscribe to kafka topics + log.error("Error when subscribing to topic(s) %s", str(topics)) + log.exception("Exception %s", str(e)) + # Wait for some time for kaka to stabilize and then reattempt to subscribe again + time.sleep(wait_time) + log.info("Retrying to subscribe the kafka topic(s) %s", str(topics)) async def _user_msg(self, topic, key, values): log.debug( @@ -141,6 +143,7 @@ class Dashboarder: time.sleep(int(self.conf.get("dashboarder", "interval"))) continue try: + self.grafana_cleanup() self.create_dashboards() time.sleep(int(self.conf.get("dashboarder", "interval"))) except Exception: @@ -149,3 +152,10 @@ class Dashboarder: def create_dashboards(self): self.service.create_dashboards() log.debug("Dashboarder Service > create_dashboards called!") + + def grafana_cleanup(self): + # Cleaning up non existing users from grafana + self.service.delete_non_existing_users() + # TODO + # Cleanup of teams from grafana + log.debug("Deleted non existing users from dashbaorder service")