[rhmessaging-commits] rhmessaging commits: r1618 - in mgmt/cumin/python: wooly and 1 other directory.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Tue Jan 29 07:34:41 EST 2008


Author: justi9
Date: 2008-01-29 07:34:41 -0500 (Tue, 29 Jan 2008)
New Revision: 1618

Modified:
   mgmt/cumin/python/cumin/client.py
   mgmt/cumin/python/cumin/model.py
   mgmt/cumin/python/cumin/page.py
   mgmt/cumin/python/cumin/queue.py
   mgmt/cumin/python/wooly/tables.py
Log:
Interim check in of a "jobs" ui, for displaying the status of the
users actions.



Modified: mgmt/cumin/python/cumin/client.py
===================================================================
--- mgmt/cumin/python/cumin/client.py	2008-01-28 20:57:09 UTC (rev 1617)
+++ mgmt/cumin/python/cumin/client.py	2008-01-29 12:34:41 UTC (rev 1618)
@@ -221,11 +221,9 @@
         self.page().set_redirect_url(session, branch.marshal())
 
     def process_item(self, session, id):
-        try:
-            client = Client.get(id)
-            client.close(self.app.model.data, client.managedBroker, doit)
-        except Exception, e:
-            self.add_error(session, e)
+        client = Client.get(id)
+        action = self.app.model.client.close
+        action.invoke(client)
 
     def render_item_content(self, session, id):
         return "Close Client %s" % Client.get(id).address
@@ -334,11 +332,9 @@
         self.page().set_redirect_url(session, branch.marshal())
 
     def process_item(self, session, id):
-        try:
-            session_ = Session.get(id)
-            session_.detach(self.app.model.data, session_.managedBroker, doit)
-        except Exception, e:
-            self.add_error(session, e)
+        session_ = Session.get(id)
+        action = self.app.model.session.detach
+        action.invoke(session_)
 
     def render_item_content(self, session, id):
         return "Detach Session '%s'" % Session.get(id).name
@@ -355,11 +351,9 @@
         self.page().set_redirect_url(session, branch.marshal())
 
     def process_item(self, session, id):
-        try:
-            session_ = Session.get(id)
-            session_.close(self.app.model.data, session_.managedBroker, doit)
-        except Exception, e:
-            self.add_error(session, e)
+        session_ = Session.get(id)
+        action = self.app.model.session.close
+        action.invoke(session_)
 
     def render_item_content(self, session, id):
         return "Close Session '%s'" % Session.get(id).name

Modified: mgmt/cumin/python/cumin/model.py
===================================================================
--- mgmt/cumin/python/cumin/model.py	2008-01-28 20:57:09 UTC (rev 1617)
+++ mgmt/cumin/python/cumin/model.py	2008-01-29 12:34:41 UTC (rev 1618)
@@ -19,6 +19,8 @@
         self.client = CuminClient(self)
         self.session = CuminSession(self)
 
+        self.action_invocations = set()
+
     def check(self):
         self.data.check()
 
@@ -46,17 +48,24 @@
         self.mint_stats_class = None
         
         self.stats = list()
+        self.actions = list()
 
         self.model.add_class(self)
 
     def add_stat(self, stat):
         self.stats.append(stat)
+        setattr(self, stat.name, stat)
 
+    # XXX get rid of this
     def get_stat(self, name):
         for stat in self.stats:
             if stat.name == name:
                 return stat
 
+    def add_action(self, action):
+        self.actions.append(action)
+        setattr(self, action.name, action)
+
     def get_object_name(self, object):
         return object.name
 
@@ -81,6 +90,42 @@
             
         writer.write("</%s>" % self.name)
 
+class CuminAction(object):
+    def __init__(self, cls, name):
+        self.model = cls.model
+        self.cumin_class = cls
+        self.name = name
+        self.title = None
+
+        self.cumin_class.add_action(self)
+
+    def invoke(self, object):
+        invoc = CuminActionInvocation(self)
+
+        def callback(status, args):
+            invoc.status = status
+            invoc.args = args
+            invoc.show()
+
+        self.do_invoke(object, callback)
+
+        self.model.action_invocations.add(invoc)
+
+        return invoc
+
+    def do_invoke(self, object, callback):
+        pass
+
+class CuminActionInvocation(object):
+    def __init__(self, action):
+        self.action = action
+        self.when = datetime.now()
+        self.error = None
+        self.args = None
+
+    def show(self):
+        print "action", self.action.name, self.when, self.error, self.args
+
 class CuminStat(object):
     def __init__(self, cls, name, type):
         self.model = cls.model
@@ -360,6 +405,15 @@
         stat.unit = "byte"
         stat.categories = ("byte", "persistent")
 
+        self.Purge(self, "purge")
+    
+    class Purge(CuminAction):
+        def get_title(self, session):
+            return "Purge"
+
+        def do_invoke(self, object, callback):
+            object.purge(self.model.data, object.managedBroker, callback)
+
 class CuminExchange(CuminClass):
     def __init__(self, model):
         super(CuminExchange, self).__init__(model, "exchange", Exchange)
@@ -448,9 +502,18 @@
         stat.unit = "frame"
         stat.categories = ("general")
 
+        self.Close(self, "close")
+
     def get_object_name(self, client):
         return client.address
 
+    class Close(CuminAction):
+        def get_title(self, session):
+            return "Close"
+
+        def do_invoke(self, object, callback):
+            object.close(self.model.data, object.managedBroker, callback)
+
 class CuminSession(CuminClass):
     def __init__(self, model):
         super(CuminSession, self).__init__(model, "session", Session)
@@ -470,3 +533,38 @@
         stat = CuminStat(self, "attached", "bool")
         stat.title = "Attached"
         stat.categories = ("general")
+
+        self.Close(self, "close")
+        self.Detach(self, "detach")
+        self.ResetLifespan(self, "resetLifespan")
+        self.SolicitAck(self, "solicitAck")
+
+    class Close(CuminAction):
+        def get_title(self, session):
+            return "Close"
+
+        def do_invoke(self, object, callback):
+            object.close(self.model.data, object.managedBroker, callback)
+
+    class Detach(CuminAction):
+        def get_title(self, session):
+            return "Detach"
+
+        def do_invoke(self, object, callback):
+            object.detach(self.model.data, object.managedBroker, callback)
+
+    class ResetLifespan(CuminAction):
+        def get_title(self, session):
+            return "Reset Lifespan"
+
+        def do_invoke(self, object, callback):
+            object.resetLifespan(self.model.data, object.managedBroker,
+                                 callback)
+
+    class SolicitAck(CuminAction):
+        def get_title(self, session):
+            return "Solicit Acknowledgment"
+
+        def do_invoke(self, object, callback):
+            object.solicitAck(self.model.data, object.managedBroker,
+                              callback)

Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py	2008-01-28 20:57:09 UTC (rev 1617)
+++ mgmt/cumin/python/cumin/page.py	2008-01-29 12:34:41 UTC (rev 1618)
@@ -164,6 +164,43 @@
         object = frame.get_object(session, self.object.get(session))
         return frame.render_title(session, object)
 
+class ActionInvocationSet(ItemTable):
+    def __init__(self, app, name):
+        super(ActionInvocationSet, self).__init__(app, name)
+
+        col = self.ActionColumn(app, "action")
+        self.add_column(col)
+
+        col = self.WhenColumn(app, "when")
+        self.add_column(col)
+
+        col = self.StatusColumn(app, "status")
+        self.add_column(col)
+
+    class ActionColumn(ItemTableColumn):
+        def get_title(self, session, object):
+            return "Action"
+
+        def render_content(self, session, item):
+            return item.action.name
+
+    class WhenColumn(ItemTableColumn):
+        def get_title(self, session, object):
+            return "When"
+
+        def render_content(self, session, item):
+            return fmt_datetime(item.when)
+
+    class StatusColumn(ItemTableColumn):
+        def get_title(self, session, object):
+            return "Status"
+
+        def render_content(self, session, item):
+            return item.error
+
+    def do_get_items(self, session, object):
+        return sorted_by(self.app.model.action_invocations, "when")
+
 class MainView(TabSet):
     def __init__(self, app, name):
         super(MainView, self).__init__(app, name)
@@ -173,6 +210,7 @@
         #self.add_tab(BrokerProfileSet(app, "profiles"))
         #self.add_tab(BrokerClusterSet(app, "clusters"))
         #self.add_tab(self.TagTab(app, "tags"))
+        self.add_tab(self.ActionTab(app, "actions"))
 
     def show_broker_group(self, session, group):
         mode = self.show_mode(session, self.brokers)
@@ -185,3 +223,7 @@
     class TagTab(Widget):
         def get_title(self, session, model):
             return "Tags"
+
+    class ActionTab(ActionInvocationSet):
+        def get_title(self, session, model):
+            return "Actions"

Modified: mgmt/cumin/python/cumin/queue.py
===================================================================
--- mgmt/cumin/python/cumin/queue.py	2008-01-28 20:57:09 UTC (rev 1617)
+++ mgmt/cumin/python/cumin/queue.py	2008-01-29 12:34:41 UTC (rev 1618)
@@ -481,11 +481,9 @@
         self.page().set_redirect_url(session, branch.marshal())
 
     def process_item(self, session, id):
-        try:
-            queue = Queue.get(id)
-            queue.purge(self.app.model.data, queue.managedBroker, doit)
-        except Exception, e:
-            self.add_error(session, e)
+        queue = Queue.get(id)
+        action = self.app.model.queue.purge
+        action.invoke(queue)
 
     def render_item_content(self, session, id):
         return "Purge Queue '%s'" % Queue.get(id).name

Modified: mgmt/cumin/python/wooly/tables.py
===================================================================
--- mgmt/cumin/python/wooly/tables.py	2008-01-28 20:57:09 UTC (rev 1617)
+++ mgmt/cumin/python/wooly/tables.py	2008-01-29 12:34:41 UTC (rev 1618)
@@ -78,16 +78,11 @@
         column, object = args
         return column.get_class_attr(session)
 
-    def render_cells(self, session, data):
-        data_map = dict()
-
-        for col, datum in zip(self.columns, data):
-            data_map[col.name] = datum
-
+    def render_cells(self, session, item):
         writer = Writer()
 
         for col in self.columns:
-            writer.write(col.render(session, data_map))
+            writer.write(col.render(session, item))
 
         return writer.to_string()
 
@@ -239,15 +234,6 @@
 
             return cursor
 
-    def render_items(self, session, object):
-        writer = Writer()
-        cursor = self.get_items(session, object)
-
-        for row in cursor:
-            self.item_tmpl.render(session, row, writer)
-
-        return writer.to_string()
-
     def render_cells(self, session, data):
         data_map = dict()
 




More information about the rhmessaging-commits mailing list