[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