Author: nsantos
Date: Mon Mar  1 21:04:47 2010
New Revision: 917718

URL: http://svn.apache.org/viewvc?rev=917718&view=rev
Log:
Add support for displaying subscriptions, with connection and queue info

Modified:
    qpid/trunk/qpid/tools/src/py/qpid-stat

Modified: qpid/trunk/qpid/tools/src/py/qpid-stat
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/tools/src/py/qpid-stat?rev=917718&r1=917717&r2=917718&view=diff
==============================================================================
--- qpid/trunk/qpid/tools/src/py/qpid-stat (original)
+++ qpid/trunk/qpid/tools/src/py/qpid-stat Mon Mar  1 21:04:47 2010
@@ -52,6 +52,7 @@
 #    print "     -s   Show Sessions"
     print "     -e   Show Exchanges"
     print "     -q   Show Queues"
+    print "     -u   Show Subscriptions"
     print
     print "     -S [--sort-by] COLNAME  Sort by column name"
     print "     -I [--increasing]       Sort by increasing value (default = 
decreasing)"
@@ -103,6 +104,7 @@
         self.sessions = {}
         self.exchanges = {}
         self.queues = {}
+        self.subscriptions = {}
         package = "org.apache.qpid.broker"
 
         list = qmf.getObjects(_class="connection", _package=package, 
_agent=self.brokerAgent)
@@ -123,6 +125,10 @@
         for queue in list:
             self.queues[queue.getObjectId()] = queue
 
+        list = qmf.getObjects(_class="subscription", _package=package, 
_agent=self.brokerAgent)
+        for subscription in list:
+            self.subscriptions[subscription.getObjectId()] = subscription
+
     def getName(self):
         return self.broker.getUrl()
 
@@ -373,12 +379,57 @@
             dispRows = rows
         disp.formattedTable(title, heads, dispRows)
 
+    def displaySubscriptions(self, subs):
+        disp = Display(prefix="  ")
+        heads = []
+        if self.cluster:
+            heads.append(Header('broker'))
+        heads.append(Header("subscription"))
+        heads.append(Header("queue"))
+        heads.append(Header("connection"))
+        heads.append(Header("processName"))
+        heads.append(Header("processId"))
+        heads.append(Header("browsing", Header.Y))
+        heads.append(Header("acknowledged", Header.Y))
+        heads.append(Header("exclusive", Header.Y))
+        heads.append(Header("creditMode"))
+        heads.append(Header("delivered", Header.KMG))
+        rows = []
+        for broker in self.brokers:
+            for oid in broker.subscriptions:
+                s = broker.subscriptions[oid]
+                row = []
+                if self.cluster:
+                    row.append(broker.getName())
+                row.append(s.name)
+                row.append(self.qmf.getObjects(_objectId=s.queueRef)[0].name)
+                connectionRef = 
self.qmf.getObjects(_objectId=s.sessionRef)[0].connectionRef
+                
row.append(self.qmf.getObjects(_objectId=connectionRef)[0].address)
+                
row.append(self.qmf.getObjects(_objectId=connectionRef)[0].remoteProcessName)
+                
row.append(self.qmf.getObjects(_objectId=connectionRef)[0].remotePid)
+                row.append(s.browsing)
+                row.append(s.acknowledged)
+                row.append(s.exclusive)
+                row.append(s.creditMode)
+                row.append(s.delivered)
+                rows.append(row)
+        title = "Subscriptions"
+        if self.cluster:
+            title += " for cluster '%s'" % self.cluster.clusterName
+        if _sortcol:
+            sorter = Sorter(heads, rows, _sortcol, _limit, _increasing)
+            dispRows = sorter.getSorted()
+        else:
+            dispRows = rows
+        disp.formattedTable(title, heads, dispRows)
+
     def displayMain(self, main, subs):
         if   main == 'b': self.displayBroker(subs)
         elif main == 'c': self.displayConn(subs)
         elif main == 's': self.displaySession(subs)
         elif main == 'e': self.displayExchange(subs)
         elif main == 'q': self.displayQueue(subs)
+        elif main == 'u': self.displaySubscriptions(subs)
 
     def display(self):
         self._getCluster()
@@ -406,7 +457,7 @@
 
 try:
     longOpts = ("top", "numeric", "sort-by=", "limit=", "increasing", 
"timeout=")
-    (optlist, encArgs) = getopt.gnu_getopt(sys.argv[1:], "bceqS:L:I", longOpts)
+    (optlist, encArgs) = getopt.gnu_getopt(sys.argv[1:], "bcequS:L:I", 
longOpts)
 except:
     Usage()
 
@@ -431,7 +482,7 @@
         _limit = int(opt[1])
     elif len(opt[0]) == 2:
         char = opt[0][1]
-        if "bcseq".find(char) != -1:
+        if "bcequ".find(char) != -1:
             _types += char
         else:
             Usage()



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to