From dd30520c628e175761930b111e31020db8cfcb36 Mon Sep 17 00:00:00 2001 From: genofire Date: Wed, 10 Jun 2020 12:48:18 +0200 Subject: [PATCH] improve control.py --- control.py | 14 +++++++++++++- metrics.py | 24 ++++++------------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/control.py b/control.py index 3bbf3c7..f865444 100644 --- a/control.py +++ b/control.py @@ -73,7 +73,7 @@ class EjabberdCtl(EjabberdApi): return result return result["s2s_outgoing"] - def fetch_registered(self, vhost=None): + def fetch_registered_count(self, vhost=None): if vhost is None: result = self.cmd("stats", {"name":"registeredusers"}) if "stat" in result: @@ -82,3 +82,15 @@ class EjabberdCtl(EjabberdApi): result = self.cmd("stats_host", {"name":"registeredusers", "host": vhost}) if "stat" in result: return result["stat"] + + def fetch_muc_count(self, vhost=None, muc_host="conference"): + host = "global" + if vhost is not None: + if self.verstring.major >= 19: + host = '.'.join([muc_host, vhost]) + else: + host = vhost + result = self.cmd("muc_online_rooms", {"host": host}) + if "rooms" in result: + return len(result["rooms"]) + return len(result) diff --git a/metrics.py b/metrics.py index 5fd5320..c21511b 100755 --- a/metrics.py +++ b/metrics.py @@ -53,18 +53,6 @@ class EjabberdMetrics(EjabberdCtl): return 4 return addr.version - def fetch_muc(self, vhost=None): - host = "global" - if vhost is not None: - if self.verstring.major >= 19: - host = '.'.join([self.muc_host, vhost]) - else: - host = vhost - result = self.cmd("muc_online_rooms", {"host": host}) - if "rooms" in result: - return len(result["rooms"]) - return len(result) - def update(self): # nodes self._nodes = self.fetch_nodes() @@ -75,17 +63,17 @@ class EjabberdMetrics(EjabberdCtl): # registered if not hasattr(self, "_registered"): self._registered = {} - self._registered[None] = self.fetch_registered() + self._registered[None] = self.fetch_registered_count() # muc if not hasattr(self, "_muc"): self._muc = {} - self._muc[None] = self.fetch_muc() + self._muc[None] = self.fetch_muc_count() # registered + muc for vhost in self._vhosts: - self._registered[vhost] = self.fetch_registered(vhost) - self._muc[vhost] = self.fetch_muc(vhost) + self._registered[vhost] = self.fetch_registered_count(vhost) + self._muc[vhost] = self.fetch_muc_count(vhost) # online user self._onlineuser = self.fetch_onlineuser() @@ -164,14 +152,14 @@ class EjabberdMetrics(EjabberdCtl): if not hasattr(self, "_registered"): self._registered = {} if vhost not in self._registered: - self._registered[vhost] = self.fetch_registered(vhost) + self._registered[vhost] = self.fetch_registered_count(vhost) return self._registered[vhost] def get_muc(self, vhost=None): if not hasattr(self, "_muc"): self._muc = {} if vhost not in self._muc: - self._muc[vhost] = self.fetch_muc(vhost) + self._muc[vhost] = self.fetch_muc_count(vhost) return self._muc[vhost] def get_vhosts(self):