Repository: qpid-dispatch
Updated Branches:
  refs/heads/master 2d1bd7fb0 -> cb0a14ba2


DISPATCH-113 - From Mick Goulish - Added last-topology-change time in qdstat. 
This closes #117.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/cb0a14ba
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/cb0a14ba
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/cb0a14ba

Branch: refs/heads/master
Commit: cb0a14ba26efe0b3c85834129fe89598548310a4
Parents: 2d1bd7f
Author: Ted Ross <[email protected]>
Authored: Mon Nov 28 14:12:55 2016 -0500
Committer: Ted Ross <[email protected]>
Committed: Mon Nov 28 14:12:55 2016 -0500

----------------------------------------------------------------------
 python/qpid_dispatch/management/qdrouter.json |  5 +++++
 python/qpid_dispatch_internal/router/node.py  |  5 +++--
 tools/qdstat                                  | 14 ++++++++++++--
 3 files changed, 20 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/cb0a14ba/python/qpid_dispatch/management/qdrouter.json
----------------------------------------------------------------------
diff --git a/python/qpid_dispatch/management/qdrouter.json 
b/python/qpid_dispatch/management/qdrouter.json
index 39af630..741ad0f 100644
--- a/python/qpid_dispatch/management/qdrouter.json
+++ b/python/qpid_dispatch/management/qdrouter.json
@@ -1225,7 +1225,12 @@
                 "cost": {
                     "description": "Reachability cost",
                     "type": "integer"
+                },
+                "lastTopoChange": {
+                     "description": "Timestamp showing the most recent change 
to this node's neighborhood.",
+                     "type": "integer"
                 }
+
             }
         },
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/cb0a14ba/python/qpid_dispatch_internal/router/node.py
----------------------------------------------------------------------
diff --git a/python/qpid_dispatch_internal/router/node.py 
b/python/qpid_dispatch_internal/router/node.py
index 231e3f2..9822169 100644
--- a/python/qpid_dispatch_internal/router/node.py
+++ b/python/qpid_dispatch_internal/router/node.py
@@ -59,7 +59,8 @@ class NodeTracker(object):
             "linkState": [ls for ls in self.link_state.peers], # List of 
neighbour nodes
             "nextHop":  "(self)",
             "validOrigins": [],
-            "address": Address.topological(self.my_id, 
area=self.container.area)
+            "address": Address.topological(self.my_id, 
area=self.container.area),
+            "lastTopoChange" : self.last_topology_change
         })
 
 
@@ -123,7 +124,7 @@ class NodeTracker(object):
         ## Enter flux mode if things are changing
         ##
         if self.link_state_changed or self.recompute_topology:
-            self.last_topology_change = now
+            self.last_topology_change = int(round(now))
             if not self.flux_mode:
                 self.flux_mode = True
                 self.container.log(LOG_TRACE, "Entered Router Flux Mode")

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/cb0a14ba/tools/qdstat
----------------------------------------------------------------------
diff --git a/tools/qdstat b/tools/qdstat
index 546c243..1e8ced3 100755
--- a/tools/qdstat
+++ b/tools/qdstat
@@ -25,7 +25,7 @@ import sys
 import locale
 import socket
 import re
-from time import ctime
+from time import ctime, strftime, gmtime
 import  qpid_dispatch_site
 from qpid_dispatch.management.client import Url, Node, Entity
 from qpid_dispatch_internal.management.qdrouter import QdSchema
@@ -296,13 +296,19 @@ class BusManager(Node):
             heads.append(Header("valid-origins"))
         rows = []
 
-        cols = ('id', 'nextHop', 'routerLink')
+        cols = ('id', 'nextHop', 'routerLink', 'lastTopoChange')
         if self.opts.verbose:
             cols += ('cost', 'linkState', 'validOrigins')
         objects  = self.query('org.apache.qpid.dispatch.router.node', cols)
 
+        # Find the most recent topo change in this neighborhood.
+        lastTopoChange = 0.0
+
         for node in objects:
             row = []
+            if node.lastTopoChange:
+                if float(node.lastTopoChange) > lastTopoChange:
+                    lastTopoChange = float(node.lastTopoChange)
             row.append(node.id)
             if node.nextHop != None:
                 row.append(node.nextHop)
@@ -318,6 +324,10 @@ class BusManager(Node):
             rows.append(row)
         if len(rows) > 0:
             title = "Routers in the Network"
+            # Use gmtime to make times comparable across large networks.
+            if lastTopoChange > 1.0:
+                topoLine = "\nLast Topology Change: " + strftime('%A %b %d 
%H:%M:%S %Y',gmtime(lastTopoChange)) + " GMT"
+                title += topoLine
             sort = Sorter(heads, rows, 'router-id')
             dispRows = sort.getSorted()
             disp.formattedTable(title, heads, dispRows)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to