[rhmessaging-commits] rhmessaging commits: r2283 - mgmt/trunk/cumin/python/cumin.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Tue Aug 12 14:12:20 EDT 2008
Author: eallen
Date: 2008-08-12 14:12:20 -0400 (Tue, 12 Aug 2008)
New Revision: 2283
Modified:
mgmt/trunk/cumin/python/cumin/broker.py
mgmt/trunk/cumin/python/cumin/brokerlink.py
mgmt/trunk/cumin/python/cumin/brokerlink.strings
mgmt/trunk/cumin/python/cumin/model.py
Log:
Added Broker Link actions:
- Add
- Close multiple
- Close one
Modified: mgmt/trunk/cumin/python/cumin/broker.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/broker.py 2008-08-12 17:33:40 UTC (rev 2282)
+++ mgmt/trunk/cumin/python/cumin/broker.py 2008-08-12 18:12:20 UTC (rev 2283)
@@ -170,12 +170,18 @@
self.__peer = PeerFrame(app, "peer")
self.add_mode(self.__peer)
+
+ self.__broker_add = BrokerLinkAdd(app, "brokeradd")
+ self.add_mode(self.__broker_add)
self.__conn = ConnectionFrame(app, "conn")
self.add_mode(self.__conn)
self.__conns_close = ConnectionSetClose(app, "connsclose")
self.add_mode(self.__conns_close)
+
+ self.__broker_links_close = BrokerSetClose(app, "brokersclose")
+ self.add_mode(self.__broker_links_close)
def show_queue(self, session, queue):
self.__queue.set_object(session, queue)
@@ -221,6 +227,14 @@
self.page.set_current_frame(session, self.__peer)
return self.show_mode(session, self.__peer)
+ def show_broker_link_add(self, session):
+ self.page.set_current_frame(session, self.__broker_add)
+ return self.show_mode(session, self.__broker_add)
+
+ def show_broker_links_close(self, session):
+ self.page.set_current_frame(session, self.__broker_links_close)
+ return self.show_mode(session, self.__broker_links_close)
+
def show_connection(self, session, conn):
self.__conn.set_object(session, conn)
self.page.set_current_frame(session, self.__conn)
Modified: mgmt/trunk/cumin/python/cumin/brokerlink.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/brokerlink.py 2008-08-12 17:33:40 UTC (rev 2282)
+++ mgmt/trunk/cumin/python/cumin/brokerlink.py 2008-08-12 18:12:20 UTC (rev 2283)
@@ -12,10 +12,13 @@
strings = StringCatalog(__file__)
-class PeerSet(CuminTable):
+class PeerSet(CuminTable, Form):
def __init__(self, app, name):
super(PeerSet, self).__init__(app, name)
+ self.ids = CheckboxIdColumn(app, "id", self)
+ self.add_column(self.ids)
+
col = self.AddressColumn(app, "addr")
self.add_column(col)
@@ -33,7 +36,15 @@
#col = self.ToPeerColumn(app, "to_peer")
#self.add_column(col)
+
+ self.__close = self.Close(app, "close", self)
+ self.add_child(self.__close)
+ def render_add_broker_link_url(self, session, vhost):
+ branch = session.branch()
+ self.frame.show_broker_link_add(branch)
+ return branch.marshal()
+
def get_args(self, session):
reg = self.frame.get_object(session)
return (reg.getDefaultVhost(),)
@@ -89,6 +100,19 @@
def render_value(self, session, value):
return fmt_rate(value)
+ class Close(FormButton):
+ def render_content(self, session):
+ return "Close"
+
+ def process_submit(self, session):
+ ids = self.parent.ids.get(session)
+ self.parent.ids.clear(session)
+
+ branch = session.branch()
+ frame = self.frame.show_broker_links_close(branch)
+ frame.ids.set(branch, ids)
+ self.page.set_redirect_url(session, branch.marshal())
+
class PeerFrame(CuminFrame):
def __init__(self, app, name):
super(PeerFrame, self).__init__(app, name)
@@ -99,10 +123,40 @@
view = PeerView(app, "view")
self.add_mode(view)
self.set_view_mode(view)
-
+
+ remove = LinkRemove(app, "remove")
+ self.add_mode(remove)
+ self.set_remove_mode(remove)
+
def render_title(self, session, peer):
return super(PeerFrame, self).render_title(session, peer)
+class LinkRemove(CuminConfirmForm):
+ def get_args(self, session):
+ return self.frame.get_args(session)
+
+ def process_cancel(self, session, link):
+ branch = session.branch()
+ self.frame.show_view(branch)
+ self.page.set_redirect_url(session, branch.marshal())
+
+ def process_submit(self, session, link):
+ action = self.app.model.link.close
+ action.invoke(link)
+
+ branch = session.branch()
+ self.frame.frame.show_view(branch)
+ self.page.set_redirect_url(session, branch.marshal())
+
+ def render_title(self, session, link):
+ return "Close Broker Link '%s:%d'" % (link.host, link.port)
+
+ def render_submit_content(self, session, link):
+ return "Yes, Close Broker Link"
+
+ def render_cancel_content(self, session, link):
+ return "No, Cancel"
+
class PeerStatus(CuminStatus):
def render_messages_received(self, session, peer):
return self.app.model.exchange.msgReceives.rate_html(peer)
@@ -201,3 +255,144 @@
def render_title(self, session, exchange):
return "Messages Received, Routed, and Dropped"
+class BrokerLinkAdd(CuminFieldForm):
+ def __init__(self, app, name):
+ super(BrokerLinkAdd, self).__init__(app, name)
+
+ self.host = DictParameter(app, "host")
+ self.add_parameter(self.host)
+ self.add_form_parameter(self.host)
+
+ self.durable = DurabilityField(app, "durable", self)
+ self.add_field(self.durable)
+
+ self.errors = dict()
+
+ def render_title(self, session, *args):
+ reg = self.frame.get_object(session)
+ return "Add Broker Link to '%s'" % reg.name
+
+ def render_broker_name_path(self, session, *args):
+ return "_".join((self.host.path, "name"))
+
+ def render_broker_port_path(self, session, *args):
+ return "_".join((self.host.path, "port"))
+
+ def render_broker_name_value(self, session, *args):
+ host = self.host.get(session)
+ if "name" in host:
+ return host["name"]
+
+ def render_broker_port_value(self, session, *args):
+ host = self.host.get(session)
+ if "port" in host:
+ return host["port"]
+
+ def render_broker_username_path(self, session, *args):
+ return "_".join((self.host.path, "username"))
+
+ def render_broker_password_path(self, session, *args):
+ return "_".join((self.host.path, "password"))
+
+ def render_broker_username_value(self, session, *args):
+ host = self.host.get(session)
+ if "username" in host:
+ return host["username"]
+
+ def render_broker_password_value(self, session, *args):
+ host = self.host.get(session)
+ if "password" in host:
+ return host["password"]
+
+ def render_broker_name_error(self, session, *args):
+ if "name" in self.errors:
+ return "<ul class=\"errors\" style=\"float:left;\"><li>%s</li></ul>" % \
+ self.errors["name"]
+
+ def render_broker_port_error(self, session, *args):
+ if "port" in self.errors:
+ return "<ul class=\"errors\" style=\"float:left;\"><li>%s</li></ul>" % \
+ self.errors["port"]
+
+ def process_cancel(self, session):
+ self.host.clear(session)
+ branch = session.branch()
+ self.frame.show_view(branch)
+ self.page.set_redirect_url(session, branch.marshal())
+
+ def validate(self, session):
+ self.errors = dict()
+
+ host = self.host.get(session)
+ if not "name" in host:
+ self.errors["name"] = "Host name is required"
+ if "port" in host:
+ port = host["port"]
+ try:
+ # ensure a number and remove surrounding spaces
+ port = str(int(port))
+ except:
+ self.errors["port"] = "Port must be a number"
+
+ return not len(self.errors)
+
+ def process_submit(self, session):
+
+ super_error = super(BrokerLinkAdd, self).validate(session)
+
+ if self.validate(session) and not super_error:
+ host = self.host.get(session)
+ username = "anonymous"
+ password = ""
+ port = 5672
+ addr = host["name"]
+
+ if "port" in host:
+ port = int(host["port"])
+
+ durable = self.durable.get(session)
+ if "username" in host:
+ username = host["username"]
+ if "password" in host:
+ password = host["password"]
+
+ link = Link()
+ link.host = addr
+ link.port = port
+ link.useSsl = False
+ link.durable = (durable == "durable")
+ reg = self.frame.get_object(session)
+
+ args = {"reg": reg,
+ "username": username,
+ "password": password}
+
+ action = self.app.model.broker.add_link
+ action.invoke(link, args)
+
+ # navigate back to main queue frame
+ self.process_cancel(session)
+
+class BrokerSetClose(CuminBulkActionForm):
+ def process_return(self, session):
+ branch = session.branch()
+ self.frame.show_view(branch)
+ self.page.set_current_frame(branch, self.frame)
+ self.page.set_redirect_url(session, branch.marshal())
+
+ def process_item(self, session, id):
+ link = Link.get(id)
+ action = self.app.model.link.close
+ action.invoke(link)
+
+ def render_title(self, session):
+ return "Close Broker Link"
+
+ def render_form_heading(self, session, *args):
+ return "Close Link to:"
+
+ def render_item_content(self, session, id):
+ link = Link.get(id)
+ return "Broker: %s:%d" % (link.host, link.port)
+
+
\ No newline at end of file
Modified: mgmt/trunk/cumin/python/cumin/brokerlink.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/brokerlink.strings 2008-08-12 17:33:40 UTC (rev 2282)
+++ mgmt/trunk/cumin/python/cumin/brokerlink.strings 2008-08-12 18:12:20 UTC (rev 2283)
@@ -20,6 +20,33 @@
join vhost as v on v.id = l.vhost_id
{sql_where}
+[PeerSet.html]
+<form id="{id}" method="post" action="?">
+
+ <ul class="actions">
+ <li><a class="nav" href="{add_broker_link_url}">Add Broker Link</a></li>
+ </ul>
+
+ <div class="sactions">
+ <h2>Act on Selected Broker Links:</h2>
+ {close}
+ </div>
+
+ <table class="mobjects">
+ <thead>
+ <tr>
+ <th class="setnav" colspan="{column_count}">
+ <div class="rfloat">{page}</div>
+ {count}
+ </th>
+ </tr>
+ <tr>{headers}</tr>
+ </thead>
+ <tbody>{items}</tbody>
+ </table>
+ <div>{hidden_inputs}</div>
+</form>
+
[PeerRouteSet.html]
<div class="rfloat">{page}</div>
<ul class="radiotabs"> </ul>
@@ -42,3 +69,59 @@
<td>{item_exchange}</td>
<td>{item_routing_key}</td>
</tr>
+
+[BrokerLinkAdd.css]
+div.field div.input_prompt {
+ width: 5em;
+ padding-right: 1em;
+ float:left;
+}
+
+div.multiple div.inputs {
+ margin-bottom: 0.25em;
+}
+
+div.multiple div.field {
+ margin-bottom: 1em;
+}
+
+div.field div.input_prompt:after {
+ content: ":";
+}
+
+div.field div.inputs input {
+ float:left;
+}
+div.field div.inputs:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: left;
+ visibility: hidden;
+}
+
+[BrokerLinkAdd.html]
+<form id="{id}" class="mform" method="post" action="?">
+ <div class="head">{title}</div>
+ <div class="body multiple">
+ <div class="field">
+ <div class="title">Source Broker</div>
+ <div class="inputs"><div class="input_prompt">Address</div><input type="text" name="{broker_name_path}" value="{broker_name_value}" tabindex="100" size="32"/>{broker_name_error}</div>
+ <div class="inputs"><div class="input_prompt">Port</div><input type="text" name="{broker_port_path}" value="{broker_port_value}" tabindex="100" size="5"/>{broker_port_error}</div>
+ <div class="inputs"><div class="input_prompt">Username</div><input type="text" name="{broker_username_path}" value="{broker_username_value}" tabindex="100" size="32"/></div>
+ <div class="inputs"><div class="input_prompt">Password</div><input type="text" name="{broker_password_path}" value="{broker_password_value}" tabindex="100" size="32"/></div>
+ </div>
+ {fields}
+ </div>
+ {form_error}
+ <div class="foot">
+ {help}
+ {submit}
+ {cancel}
+ </div>
+ <div>{hidden_inputs}</div>
+</form>
+<script type="text/javascript">
+ wooly.doc().elembyid("{id}").node.elements[0].focus();
+</script>
+
Modified: mgmt/trunk/cumin/python/cumin/model.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/model.py 2008-08-12 17:33:40 UTC (rev 2282)
+++ mgmt/trunk/cumin/python/cumin/model.py 2008-08-12 18:12:20 UTC (rev 2283)
@@ -12,7 +12,6 @@
from parameters import *
-
log = getLogger("cumin.model")
class CuminModel(object):
@@ -558,6 +557,9 @@
action = self.AddExchange(self, "add_exchange")
action.summary = True
+ action = self.AddLink(self, "add_link")
+ action.summary = True
+
action = self.AddQueue(self, "add_queue")
action.summary = True
@@ -590,6 +592,31 @@
# raised and we won't get here
completion("OK")
+ class AddLink(CuminAction):
+ def get_title(self, session):
+ return "Add Broker Link"
+
+ def get_verb(self, session):
+ return "Add"
+
+ def show(self, session, exchange):
+ frame = self.cumin_class.show_object(session, exchange)
+ return frame.show_broker_link_add(session)
+
+ def do_invoke(self, link, args, completion):
+ reg = args["reg"]
+ username = args["username"]
+ password = args["password"]
+ if username == "anonymous":
+ authMechanism = "ANONYMOUS"
+ else:
+ authMechanism = "PLAIN"
+
+ broker = reg._get_broker()
+ broker.connect(self.cumin_model.data, completion,
+ link.host, link.port, link.useSsl, link.durable,
+ authMechanism, username, password)
+
class AddQueue(CuminAction):
def get_title(self, session):
return "Add Queue"
@@ -1178,12 +1205,31 @@
stat.unit = "byte"
stat.category = "io"
+ action = self.Close(self, "close")
+ action.summary = True
+
def get_title(self, session):
return "Broker Link"
def get_object_name(self, link):
return "%s:%d" % (link.host, link.port)
+ def show_object(self, session, link):
+ frame = self.cumin_model.show_main(session)
+ return frame.show_broker(session, link.vhost.broker.registration)
+
+ class Close(CuminAction):
+ def show(self, session, link):
+ frame = self.cumin_class.show_object(session, link)
+ frame = frame.show_peer(session, link)
+ return frame.show_remove(session)
+
+ def get_title(self, session):
+ return "Close"
+
+ def do_invoke(self, link, args, completion):
+ link.close(self.cumin_model.data, completion)
+
class CuminStore(RemoteClass):
def __init__(self, model):
super(CuminStore, self).__init__(model, "store", Store, StoreStats)
More information about the rhmessaging-commits
mailing list