From 955e40d3d0b1aa62d4237ee2692361bab6435c90 Mon Sep 17 00:00:00 2001 From: KeyserSosa Date: Thu, 12 Feb 2009 13:17:49 -0800 Subject: [PATCH] fix Alerter and re-implement name filtering in service monitor --- r2/r2/lib/services.py | 13 +++++++------ r2/supervise_watcher.py | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/r2/r2/lib/services.py b/r2/r2/lib/services.py index a4a3f03e6..2b14d7ea5 100644 --- a/r2/r2/lib/services.py +++ b/r2/r2/lib/services.py @@ -97,20 +97,21 @@ class AppServiceMonitor(Wrapped): return h.load.most_recent() def __iter__(self): + if not self.hostlogs: + self.hostlogs = [self.from_cache(host) for host in self._hosts] + self.hostlogs = filter(None, self.hostlogs) return iter(self.hostlogs) def render(self, *a, **kw): - self.hostlogs = [self.from_cache(host) - for host in self._hosts] - self.hostlogs = filter(None, self.hostlogs) + self.hostlogs = list(self) return Wrapped.render(self, *a, **kw) - def monitor(self, loop = True, loop_time = 2, *a, **kw): + def monitor(self, srvname, loop = True, loop_time = 2, *a, **kw): host = g.reddit_host h = HostLogger(host, self) while True: - h.monitor(*a, **kw) + h.monitor(srvname, *a, **kw) self.set_cache(h) if loop: @@ -256,7 +257,7 @@ class HostLogger(object): del self.services[pid] - def monitor(self, srvname = None, + def monitor(self, srvname, srv_params = {}, top_params = {}, db_params = {}): # (re)populate the service listing for name, status, pid, t in supervise_list(**srv_params): diff --git a/r2/supervise_watcher.py b/r2/supervise_watcher.py index d238f338e..e079a28a2 100644 --- a/r2/supervise_watcher.py +++ b/r2/supervise_watcher.py @@ -90,8 +90,8 @@ def Alert(restart_list = ['MEM','CPU'], -def Run(*a, **kw): - AppServiceMonitor().monitor(*a, **kw) +def Run(srvname, *a, **kw): + AppServiceMonitor().monitor(srvname, *a, **kw) def Test(num, load = 1., pid = 0): services = Services()