[rhmessaging-commits] rhmessaging commits: r2320 - in mgmt/trunk: mint/python/mint and 1 other directories.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Tue Aug 19 10:50:32 EDT 2008


Author: justi9
Date: 2008-08-19 10:50:32 -0400 (Tue, 19 Aug 2008)
New Revision: 2320

Modified:
   mgmt/trunk/cumin/python/cumin/model.py
   mgmt/trunk/cumin/python/cumin/queue.py
   mgmt/trunk/cumin/python/cumin/widgets.py
   mgmt/trunk/cumin/python/cumin/widgets.strings
   mgmt/trunk/mint/python/mint/schema.py
   mgmt/trunk/mint/sql/schema.sql
Log:
whenry's patch to allow purging n messages from the top of a queue

Modified: mgmt/trunk/cumin/python/cumin/model.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/model.py	2008-08-18 18:19:16 UTC (rev 2319)
+++ mgmt/trunk/cumin/python/cumin/model.py	2008-08-19 14:50:32 UTC (rev 2320)
@@ -848,7 +848,7 @@
             return "Purge"
 
         def do_invoke(self, queue, args, completion):
-            queue.purge(self.cumin_model.data, completion)
+            queue.purge(self.cumin_model.data, completion, args["request"])
 
     class Remove(CuminAction):
         def show(self, session, queue):

Modified: mgmt/trunk/cumin/python/cumin/queue.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/queue.py	2008-08-18 18:19:16 UTC (rev 2319)
+++ mgmt/trunk/cumin/python/cumin/queue.py	2008-08-19 14:50:32 UTC (rev 2320)
@@ -412,12 +412,18 @@
     def render_cancel_content(self, session, queue):
         return "No, Cancel"
 
-class QueuePurge(CuminConfirmForm):
+class QueuePurge(CuminFieldForm):
+    def __init__(self, app, name):
+        super(QueuePurge, self).__init__(app, name)
+
+        self.purge_request = MultiplicityField(app, "purge_request", self)
+        self.add_field(self.purge_request)
+
     def get_args(self, session):
         return self.frame.get_args(session)
 
     def render_title(self, session, queue):
-        return "Purge Queue '%s'" % queue.name
+        return "Purge Messages from  Queue '%s'" % queue.name
 
     def process_cancel(self, session, queue):
         branch = session.branch()
@@ -425,13 +431,25 @@
         self.page.set_redirect_url(session, branch.marshal())
 
     def process_submit(self, session, queue):
+        request_amt = self.purge_request.get(session)
+        args = dict()
+
+        if request_amt == "all":
+            args["request"] = 0
+        elif request_amt == "top":
+            args["request"] = 1
+        elif request_amt == "N":
+            args["request"] = self.purge_request.top_n.get_n_value(session)
+        else:
+            raise Exception("Wrong Value")
+
         action = self.app.model.queue.purge
-        action.invoke(queue)
+        action.invoke(queue, args)
 
         self.process_cancel(session, queue)
 
     def render_submit_content(self, session, queue):
-        return "Yes, Purge Queue '%s'" % queue.name
+        return "Yes, Purge Messages from Queue '%s'" % queue.name
 
     def render_cancel_content(self, session, queue):
         return "No, Cancel"
@@ -445,8 +463,12 @@
 
     def process_item(self, session, id):
         queue = Queue.get(id)
+
+        args = dict()
+        args["request"] = 0
+
         action = self.app.model.queue.purge
-        action.invoke(queue)
+        action.invoke(queue, args)
 
     def render_title(self, session):
         return "Purge Queues"

Modified: mgmt/trunk/cumin/python/cumin/widgets.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/widgets.py	2008-08-18 18:19:16 UTC (rev 2319)
+++ mgmt/trunk/cumin/python/cumin/widgets.py	2008-08-19 14:50:32 UTC (rev 2320)
@@ -765,6 +765,60 @@
         def render_title(self, session):
             return "Non-exclusive"
 
+class MultiplicityField(RadioField):
+    def __init__(self, app, name, form):
+        super(MultiplicityField, self).__init__(app, name, form)
+
+        param = Parameter(app, "param")
+        param.default = "all"
+        self.add_parameter(param)
+        self.set_parameter(param)
+
+        self.add_option(self.All(app, "all", form))
+        self.add_option(self.Top(app, "top", form))
+        self.top_n = self.TopN(app, "topn", form)
+        self.add_option(self.top_n)
+
+    def render_title(self, session):
+        return "Select all, the top message or the top n messages"
+
+    class All(RadioFieldOption):
+        def render_value(self, session):
+            return "all"
+
+        def render_title(self, session):
+            return "All"
+
+    class Top(RadioFieldOption):
+        def render_value(self, session):
+            return "top"
+
+        def render_title(self, session):
+            return "Top message"
+
+    class TopN(RadioFieldOption):
+        def __init__(self, app, name, form):
+            super(MultiplicityField.TopN, self).__init__(app, name, form)
+        
+            self.__n_value = IntegerParameter(app, "arg")
+            form.add_form_parameter(self.__n_value)
+            self.add_parameter(self.__n_value)
+
+        def render_value(self, session):
+            return "N"
+
+        def render_arg_name(self, session):
+            return self.__n_value.path
+            
+        def render_arg_value(self, session):
+            return 0
+
+        def get_n_value(self, session):
+            return self.__n_value.get(session)
+
+        def render_title(self, session):
+            return 
+
 class AutoDeleteField(RadioField):
     def __init__(self, app, name, form):
         super(AutoDeleteField, self).__init__(app, name, form)

Modified: mgmt/trunk/cumin/python/cumin/widgets.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/widgets.strings	2008-08-18 18:19:16 UTC (rev 2319)
+++ mgmt/trunk/cumin/python/cumin/widgets.strings	2008-08-19 14:50:32 UTC (rev 2320)
@@ -343,6 +343,13 @@
 <th><input id="{id}" type="checkbox"
     onclick="checkAll('{id}', '{form_id}', '{elem_name}')"/></th>
 
+[TopN.html]
+<div>
+   <input type="radio" name="{name}" id="{id}" value="{value}" tabindex="{tab_index}" {checked_attr} {disabled_attr}/>
+   Top
+   <input type="text" name="{arg_name}" value="{arg_value}" /> messages
+</div>
+
 [FormHelp.javascript]
 function help_window(href) {
 	var left = screen.availWidth / 2;
@@ -361,4 +368,3 @@
 
 [FormHelp.html]
 	<a class="help action" id="help_link" href="{help_href}">Help</a>
-    
\ No newline at end of file

Modified: mgmt/trunk/mint/python/mint/schema.py
===================================================================
--- mgmt/trunk/mint/python/mint/schema.py	2008-08-18 18:19:16 UTC (rev 2319)
+++ mgmt/trunk/mint/python/mint/schema.py	2008-08-19 14:50:32 UTC (rev 2320)
@@ -75,7 +75,7 @@
                     callback, args=actualArgs)
 
   def echo(self, model, callback, sequence, body):
-    """Request a response to test the path to the management agent"""
+    """Request a response to test the path to the management broker"""
     actualArgs = dict()
     actualArgs["sequence"] = sequence
     actualArgs["body"] = body
@@ -122,10 +122,11 @@
   managedBroker = StringCol(length=1000, default=None)
   statsCurr = ForeignKey('AgentStats', cascade='null', default=None)
   statsPrev = ForeignKey('AgentStats', cascade='null', default=None)
-  sessionName = StringCol(length=1000, default=None)
+  clientConnection = ForeignKey('ClientConnection', cascade='null', default=None)
   label = StringCol(length=1000, default=None)
   registeredTo = BigIntCol(default=None)
   systemId = BLOBCol(default=None)
+  objectIdBank = IntCol(default=None)
 
   classInfos = dict() # brokerId => classInfo
 
@@ -189,9 +190,10 @@
 
   classInfos = dict() # brokerId => classInfo
 
-  def purge(self, model, callback):
-    """Discard all messages on queue"""
+  def purge(self, model, callback, request):
+    """Discard all or some messages on a queue"""
     actualArgs = dict()
+    actualArgs["request"] = request
     conn = model.connections[self.managedBroker]
     classInfo = self.classInfos[self.managedBroker]
     conn.callMethod(self.idOriginal, classInfo, "purge",
@@ -639,6 +641,9 @@
 classToSchemaNameMap['Agent'] = 'Agent'
 schemaNameToClassMap['Agent'] = Agent
 
+ClientConnection.sqlmeta.addJoin(SQLMultipleJoin('Agent', joinMethodName='agents'))
+
+
 Agent.sqlmeta.addJoin(SQLMultipleJoin('AgentStats', joinMethodName='stats'))
 
 classToSchemaNameMap['Vhost'] = 'Vhost'

Modified: mgmt/trunk/mint/sql/schema.sql
===================================================================
--- mgmt/trunk/mint/sql/schema.sql	2008-08-18 18:19:16 UTC (rev 2319)
+++ mgmt/trunk/mint/sql/schema.sql	2008-08-19 14:50:32 UTC (rev 2320)
@@ -65,10 +65,11 @@
     managed_broker VARCHAR(1000),
     stats_curr_id INT,
     stats_prev_id INT,
-    session_name VARCHAR(1000),
+    client_connection_id INT,
     label VARCHAR(1000),
     registered_to BIGINT,
-    system_id BYTEA
+    system_id BYTEA,
+    object_id_bank INT
 );
 
 CREATE TABLE agent_stats (
@@ -464,6 +465,8 @@
 
 ALTER TABLE agent ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id) REFERENCES agent_stats (id) ON DELETE SET NULL;
 
+ALTER TABLE agent ADD CONSTRAINT client_connection_id_exists FOREIGN KEY (client_connection_id) REFERENCES client_connection (id) ON DELETE SET NULL;
+
 ALTER TABLE agent_stats ADD CONSTRAINT agent_id_exists FOREIGN KEY (agent_id) REFERENCES agent (id) ON DELETE SET NULL;
 
 ALTER TABLE binding ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id) REFERENCES binding_stats (id) ON DELETE SET NULL;




More information about the rhmessaging-commits mailing list