Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_network/node/stats_node.py
diff options
context:
space:
mode:
Diffstat (limited to 'sugar_network/node/stats_node.py')
-rw-r--r--sugar_network/node/stats_node.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/sugar_network/node/stats_node.py b/sugar_network/node/stats_node.py
index 0cba0b8..61a4a28 100644
--- a/sugar_network/node/stats_node.py
+++ b/sugar_network/node/stats_node.py
@@ -40,8 +40,6 @@ stats_node_rras = Option(
],
type_cast=Option.list_cast, type_repr=Option.list_repr)
-_MAX_FRAME = 64
-
_logger = logging.getLogger('node.stats_node')
@@ -71,17 +69,27 @@ class Sniffer(object):
if values is not None:
self._rrd[resource].put(values, timestamp=timestamp)
- def report(self, dbs, start, end, resolution):
+ def report(self, dbs, start, end, records):
result = {}
- for rdb in self._rrd:
- if rdb.name not in dbs:
- continue
+
+ rdbs = [self._rrd[i] for i in dbs if i in self._rrd]
+ if not rdbs:
+ return result
+
+ if not start:
+ start = min([i.first for i in rdbs])
+ if not end:
+ end = max([i.last for i in rdbs])
+ resolution = max(1, (end - start) / records)
+
+ for rdb in rdbs:
info = result[rdb.name] = []
for ts, ds_values in rdb.get(start, end, resolution):
values = {}
for name in dbs[rdb.name]:
values[name] = ds_values.get(name)
info.append((ts, values))
+
return result