diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2014-05-13 00:36:52 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2014-05-13 00:36:52 (GMT) |
commit | 745194765f8ba4a0ea5fcbda249b64d9743d6697 (patch) | |
tree | 9de5f37989b9d155749b53a689292f29bcdb1349 /sugar_network/toolkit/rrd.py | |
parent | e0008f8b1cd2ccb1e044dfbabfa30c54d07d71fa (diff) |
Handy API command to get totals
Diffstat (limited to 'sugar_network/toolkit/rrd.py')
-rw-r--r-- | sugar_network/toolkit/rrd.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/sugar_network/toolkit/rrd.py b/sugar_network/toolkit/rrd.py index d8386e5..bacf519 100644 --- a/sugar_network/toolkit/rrd.py +++ b/sugar_network/toolkit/rrd.py @@ -203,14 +203,20 @@ class _Db(object): def first(self): return self._meta['first'] or 0 - def values(self, timestamp): + def values(self, timestamp=None): + result = None if timestamp and timestamp - self.last <= self.step and \ 'pending' in self._meta: - return self._meta['pending'] - info = rrdtool.info(self.path) - result = {} - for field in self.field_names: - result[field] = float(info.get('ds[%s].last_ds' % field) or 0) + result = self._meta['pending'] + elif not timestamp or timestamp == self.last: + info = rrdtool.info(self.path) + result = {} + for field in self.field_names: + result[field] = float(info.get('ds[%s].last_ds' % field) or 0) + else: + timestamp -= self.step + for __, result in self.get(timestamp, timestamp, self.step): + pass return result def put(self, values, timestamp): |