[rhmessaging-commits] rhmessaging commits: r2227 - mgmt/trunk/cumin/python/cumin.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Fri Jul 25 15:38:33 EDT 2008


Author: eallen
Date: 2008-07-25 15:38:33 -0400 (Fri, 25 Jul 2008)
New Revision: 2227

Added:
   mgmt/trunk/cumin/python/cumin/brokerlink.py
   mgmt/trunk/cumin/python/cumin/brokerlink.strings
Log:
New files for Broker Links and Link Routes(bridges)

Added: mgmt/trunk/cumin/python/cumin/brokerlink.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/brokerlink.py	                        (rev 0)
+++ mgmt/trunk/cumin/python/cumin/brokerlink.py	2008-07-25 19:38:33 UTC (rev 2227)
@@ -0,0 +1,203 @@
+from wooly import *
+from wooly.widgets import *
+from wooly.forms import *
+from wooly.resources import *
+
+from stat import *
+from model import *
+from widgets import *
+from parameters import *
+from formats import *
+from util import *
+
+strings = StringCatalog(__file__)
+
+class PeerSet(CuminTable):
+    def __init__(self, app, name):
+        super(PeerSet, self).__init__(app, name)
+
+        col = self.AddressColumn(app, "addr")
+        self.add_column(col)
+
+        col = self.DurableColumn(app, "durable")
+        self.add_column(col)
+
+        col = self.StateColumn(app, "state")
+        self.add_column(col)
+
+        col = self.LastErrorColumn(app, "last_error")
+        self.add_column(col)
+
+        #col = self.FromPeerColumn(app, "from_peer")
+        #self.add_column(col)
+
+        #col = self.ToPeerColumn(app, "to_peer")
+        #self.add_column(col)
+
+    def get_args(self, session):
+        reg = self.frame.get_object(session)
+        return (reg.getDefaultVhost(),)
+
+    def render_title(self, session, vhost):
+        count = self.get_item_count(session, vhost)
+        return "Broker Links %s" % fmt_count(count)
+
+    def render_sql_where(self, session, vhost):
+        return "where v.id = %(vhost_id)r"
+
+    def get_sql_values(self, session, vhost):
+        return {"vhost_id": vhost.id}
+
+    class AddressColumn(SqlTableColumn):
+        def render_title(self, session, data):
+            return "Address"
+
+        def render_content(self, session, data):
+            peer = Identifiable(data["id"])
+            branch = session.branch()
+            self.frame.show_peer(branch, peer).show_view(branch)
+            name = "%s:%i" % (data["host"], data["port"])
+            return fmt_olink(branch, peer, name=name)
+
+        def get_orderby_sql(self, session):
+            dir = self.parent.is_reversed(session) and "desc" or "asc"
+            return "order by host, port %s" % dir
+
+    class StateColumn(SqlTableColumn):
+        def render_title(self, session, data):
+            return "State"
+
+    class LastErrorColumn(SqlTableColumn):
+        def render_title(self, session, data):
+            return "Last Error"
+        
+    class DurableColumn(SqlTableColumn):
+        def render_title(self, session, data):
+            return "Durable"
+
+    class FromPeerColumn(NullSortColumn, FreshDataOnlyColumn):
+        def render_title(self, session, data):
+            return "Bytes from Broker"
+
+        def render_value(self, session, value):
+            return fmt_rate(value)
+
+    class ToPeerColumn(NullSortColumn, FreshDataOnlyColumn):
+        def render_title(self, session, data):
+            return "Bytes to Broker"
+
+        def render_value(self, session, value):
+            return fmt_rate(value)
+
+class PeerFrame(CuminFrame):
+    def __init__(self, app, name):
+        super(PeerFrame, self).__init__(app, name)
+
+        self.object = PeerParameter(app, "id")
+        self.add_parameter(self.object)
+
+        view = PeerView(app, "view")
+        self.add_mode(view)
+        self.set_view_mode(view)
+        
+    def render_title(self, session, peer):
+        return super(PeerFrame, self).render_title(session, peer)
+
+class PeerStatus(CuminStatus):
+    def render_messages_received(self, session, peer):
+        return self.app.model.exchange.msgReceives.rate_html(peer)
+
+    def render_messages_routed(self, session, peer):
+        return self.app.model.exchange.msgRoutes.rate_html(peer)
+
+    def render_messages_dropped(self, session, peer):
+        return self.app.model.exchange.msgDrops.value(peer)
+
+    def render_bytes_received(self, session, peer):
+        return self.app.model.exchange.byteReceives.rate_html(peer)
+
+    def render_bytes_routed(self, session, peer):
+        return self.app.model.exchange.byteRoutes.rate_html(peer)
+
+    def render_bytes_dropped(self, session, peer):
+        return self.app.model.exchange.byteDrops.value(peer)
+
+class PeerView(CuminView):
+    def __init__(self, app, name):
+        super(PeerView, self).__init__(app, name)
+
+        status = PeerStatus(app, "status")
+        self.add_child(status)
+
+        self.__tabs = TabbedModeSet(app, "tabs")
+        self.add_child(self.__tabs)
+
+        #self.__tabs.add_tab(PeerStats(app, "stats"))
+
+        self.__routes = PeerRouteSet(app, "routes")
+        self.__tabs.add_tab(self.__routes)
+
+        self.__tabs.add_tab(CuminDetails(app, "details"))
+
+    def show_routes(self, session):
+        return self.__tabs.show_mode(session, self.__routes);
+
+    def render_script(self, session, peer):
+        data = "model.xml?class=peer;id=%i" % peer.id
+        return "wooly.setIntervalUpdate('%s', updatePeer, 3000)" % data
+
+class PeerRouteSet(RouteSet):
+    def get_args(self, session):
+        return self.frame.get_args(session)
+
+    def render_title(self, session, peer):
+        return "Link Routes %s" % \
+            fmt_count(self.get_item_count(session, peer))
+
+    def get_item_count(self, session, peer):
+        return peer.bridges.count()
+
+    def do_get_items(self, session, peer):
+        start, end = self.get_bounds(session)
+        return peer.bridges[start:end]
+
+    def render_item_destination(self, session, route):
+        return route.link.managedBroker
+    
+    def render_item_src(self, session, route):
+        return "%s:%d" % (route.link.host, route.link.port)
+    
+    def render_item_exchange(self, session, route):
+        return route.dest
+    
+    def render_item_routing_key(self, session, route):
+        return route.key
+
+class PeerStats(TabbedModeSet):
+    def __init__(self, app, name):
+        super(PeerStats, self).__init__(app, name)
+
+        self.add_child(StatSet(app, "io", "io"))
+        self.add_child(StatSet(app, "general", "general"))
+
+        chart = self.ReceiveRouteDropRateChart(app, "recvroutedrop")
+        self.add_child(chart)
+
+        chart = StatValueChart(app, "producers")
+        chart.stats = ("producerCount",)
+        self.add_child(chart)
+
+    def render_title(self, session):
+        return "Statistics"
+
+    class ReceiveRouteDropRateChart(StatValueChart):
+        def __init__(self, app, name):
+            super(PeerStats.ReceiveRouteDropRateChart, self).__init__ \
+                (app, name)
+
+            self.stats = ("msgReceives", "msgRoutes", "msgDrops")
+            self.mode = "rate"
+
+        def render_title(self, session, exchange):
+            return "Messages Received, Routed, and Dropped"
+

Added: mgmt/trunk/cumin/python/cumin/brokerlink.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/brokerlink.strings	                        (rev 0)
+++ mgmt/trunk/cumin/python/cumin/brokerlink.strings	2008-07-25 19:38:33 UTC (rev 2227)
@@ -0,0 +1,44 @@
+[PeerSet.sql]
+select
+  l.id,
+  l.host,
+  l.port,
+  l.durable,
+  c.state,
+  c.last_error
+from link as l
+join vhost as v on v.id = l.vhost_id
+left outer join link_stats as c on c.id = l.stats_curr_id
+left outer join link_stats as p on p.id = l.stats_prev_id
+{sql_where}
+{sql_orderby}
+{sql_limit}
+
+[PeerSet.count_sql]
+select count(*)
+from link as l
+join vhost as v on v.id = l.vhost_id
+{sql_where}
+
+[PeerRouteSet.html]
+<div class="rfloat">{page}</div>
+<ul class="radiotabs">&nbsp;</ul>
+
+<table class="ExchangeBindingSet mobjects">
+  <tr>
+    <th>Destination</th>
+    <th>Source</th>
+    <th>Exchange</th>
+    <th>Routing Key</th>
+  </tr>
+
+  {items}
+</table>
+
+[PeerRouteSet.item_html]
+<tr>
+  <td>{item_destination}</a></td>
+  <td>{item_src}</td>
+  <td>{item_exchange}</td>
+  <td>{item_routing_key}</td>
+</tr>




More information about the rhmessaging-commits mailing list