From 293f764f0777935b15319706c00d79d6cdaca722 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Thu, 16 Feb 2012 09:56:22 +0100 Subject: [PATCH] Call monitor.update only once for particular class --- tuned/monitors/repository.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/tuned/monitors/repository.py b/tuned/monitors/repository.py index 846cd7d..c5d1ce3 100644 --- a/tuned/monitors/repository.py +++ b/tuned/monitors/repository.py @@ -14,20 +14,18 @@ class MonitorRepository(tuned.patterns.Singleton): log.debug("creating monitor %s" % plugin_name) # TODO: exception handling monitor_cls = self._loader.load(plugin_name) - - for monitor in self._monitors: - if (isinstance(monitor, monitor_cls) and - (monitor.devices == devices or devices == None)): - return monitor - monitor_instance = monitor_cls(devices) - self._monitors.add(monitor_instance) + + if not monitor_cls in self._monitors: + self._monitors.add(monitor_cls) return monitor_instance def delete(self, monitor): assert isinstance(monitor, self._loader.interface) monitor.cleanup() - self._monitors.remove(monitor) + + if len(monitor._instances) == 0: + self._monitors.remove(type(monitor)) def update(self): for monitor in self._monitors: