prewikka/master: Analyzer retrieval fixes and speedup.
[email protected] Wed, 10 Jun 2009 12:54:04 +0200 (CEST)
| Newsgroups | gmane.comp.security.ids.prelude.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 78826d2f202eed44ee222353ead7d13ec5b9ef0b Author: Yoann Vandoorselaere <[email protected]> Date: Tue Jun 9 12:36:20 2009 +0200 Analyzer retrieval fixes and speedup. Make the database requests used to generate the agents view simpler, which should provide a minor speedup. Make the getAnalyzer() function simpler. Prevent failure in case an analyzer has no analyzerID set. Fixes #350. ======================================== prewikka/IDMEFDatabase.py | 47 ++++++++++++++++++-------------------------- prewikka/views/sensor.py | 4 +-- 2 files changed, 20 insertions(+), 31 deletions(-) ======================================== diff --git a/prewikka/IDMEFDatabase.py b/prewikka/IDMEFDatabase.py index 3b7a562..25c6e88 100644 --- a/prewikka/IDMEFDatabase.py +++ b/prewikka/IDMEFDatabase.py @@ -520,34 +520,25 @@ class IDMEFDatabase: ident = self.getLastHeartbeatIdent(analyzerid) heartbeat = self.getHeartbeat(ident) - index = 0 - while True: - if not heartbeat["heartbeat.analyzer(%d).name" % (index + 1)]: - break - index += 1 - - analyzer = { } - analyzer["analyzerid"] = analyzerid - analyzer["name"] = heartbeat.get("heartbeat.analyzer(%d).name" % index) - analyzer["model"] = heartbeat.get("heartbeat.analyzer(%d).model" % index) - analyzer["version"] = heartbeat.get("heartbeat.analyzer(%d).version" % index) - analyzer["class"] = heartbeat.get("heartbeat.analyzer(%d).class" % index) - analyzer["ostype"] = heartbeat.get("heartbeat.analyzer(%d).ostype" % index) - analyzer["osversion"] = heartbeat.get("heartbeat.analyzer(%d).osversion" % index) - analyzer["node_name"] = heartbeat.get("heartbeat.analyzer(%d).node.name" % index) - analyzer["node_location"] = heartbeat.get("heartbeat.analyzer(%d).node.location" % index) + path = [] + analyzer = {} + analyzerd = { "path": path, "node_addresses": [], "node_name": None, "node_location": None } - i = 0 - analyzer["node_addresses"] = [ ] - while True: - address = heartbeat.get("heartbeat.analyzer(%d).node.address(%d).address" % (index, i)) - if not address: - break - analyzer["node_addresses"].append(address) - i += 1 + for a in heartbeat["analyzer"]: + path.append(a["analyzerid"]) + analyzer = a + + for column in "analyzerid", "name", "model", "version", "class", "ostype", "osversion": + analyzerd[column] = analyzer.get(column, None) + + analyzerd["node_name"] = analyzer.get("node.name") + analyzerd["node_location"] = analyzer.get("node.location") + + for addr in analyzer.get("node.address.address", []): + analyzerd["node_addresses"].append(addr) - analyzer["last_heartbeat_time"] = heartbeat.get("heartbeat.create_time") - analyzer["last_heartbeat_interval"] = heartbeat["heartbeat.heartbeat_interval"] - analyzer["last_heartbeat_status"] = heartbeat.getAdditionalData("Analyzer status") + analyzerd["last_heartbeat_time"] = heartbeat.get("heartbeat.create_time") + analyzerd["last_heartbeat_interval"] = heartbeat.get("heartbeat.heartbeat_interval") + analyzerd["last_heartbeat_status"] = heartbeat.getAdditionalData("Analyzer status") - return analyzer + return analyzerd diff --git a/prewikka/views/sensor.py b/prewikka/views/sensor.py index bff7eaa..4236da7 100644 --- a/prewikka/views/sensor.py +++ b/prewikka/views/sensor.py @@ -99,7 +99,6 @@ class SensorListing(view.View): self._heartbeat_count = int(env.config.general.getOptionValue("heartbeat_count", 30)) self._heartbeat_error_margin = int(env.config.general.getOptionValue("heartbeat_error_margin", 3)) - def render(self): analyzers = { } @@ -111,8 +110,7 @@ class SensorListing(view.View): locations = { } nodes = { } - for analyzer_path in self.env.idmef_db.getAnalyzerPaths(): - analyzerid = analyzer_path[-1] + for analyzerid in self.env.idmef_db.getAnalyzerids(): analyzer = self.env.idmef_db.getAnalyzer(analyzerid) parameters = { "analyzerid": analyzer["analyzerid"] } _______________________________________________ Prelude-cvslog site list [email protected] http://lists.prelude-ids.org/mailman/listinfo/prelude-cvslog