Browse Source

get_nodestatus() accepts node instead of rawid, too

This yields a huge performance gain if the node has been retrieved
already (i.e. in BaseStorage.status).
Helge Jung 9 years ago
parent
commit
fdae2d4a79
1 changed files with 4 additions and 3 deletions
  1. 4 3
      ffstatus/basestorage.py

+ 4 - 3
ffstatus/basestorage.py

@@ -96,7 +96,7 @@ class BaseStorage(object):
             node = self.data[item_id]
 
             nodes += 1
-            if self.get_nodestatus(item_id) == 'active':
+            if self.get_nodestatus(node=node) == 'active':
                 nodes_active += 1
 
             sum_clients += node.get('clientcount', 0)
@@ -242,11 +242,12 @@ class BaseStorage(object):
         # MAC address not found
         return None
 
-    def get_nodestatus(self, rawid):
+    def get_nodestatus(self, rawid=None, node=None):
         """Determine node's status."""
 
         # search node by the given id
-        node = self.find_node(rawid)
+        if node is None and not rawid is None:
+            node = self.find_node(rawid)
 
         # handle unknown nodes
         if node is None: