[rhmessaging-commits] rhmessaging commits: r1156 - in mgmt: notes and 1 other directory.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Wed Oct 24 11:38:06 EDT 2007
Author: justi9
Date: 2007-10-24 11:38:06 -0400 (Wed, 24 Oct 2007)
New Revision: 1156
Added:
mgmt/cumin/python/cumin/broker.py
mgmt/cumin/python/cumin/broker.strings
mgmt/cumin/python/cumin/brokergroup.py
mgmt/cumin/python/cumin/brokergroup.strings
mgmt/cumin/python/cumin/brokerprofile.py
mgmt/cumin/python/cumin/brokerprofile.strings
Removed:
mgmt/cumin/python/cumin/server.py
mgmt/cumin/python/cumin/server.strings
mgmt/cumin/python/cumin/servergroup.py
mgmt/cumin/python/cumin/servergroup.strings
mgmt/cumin/python/cumin/serverprofile.py
mgmt/cumin/python/cumin/serverprofile.strings
Modified:
mgmt/notes/Todo
Log:
Completion of the server->broker rename.
Copied: mgmt/cumin/python/cumin/broker.py (from rev 1155, mgmt/cumin/python/cumin/server.py)
===================================================================
--- mgmt/cumin/python/cumin/broker.py (rev 0)
+++ mgmt/cumin/python/cumin/broker.py 2007-10-24 15:38:06 UTC (rev 1156)
@@ -0,0 +1,401 @@
+from wooly import *
+from wooly.widgets import *
+
+from configproperty import *
+from virtualhost import *
+from widgets import *
+from parameters import *
+from util import *
+from random import random
+
+strings = StringCatalog(__file__)
+
+class BrokerSet(ItemSet):
+ def render_title(self, session, model):
+ return "Brokers (%i)" % len(model.get_brokers())
+
+ def get_items(self, session, model):
+ return sorted_by(model.get_brokers())
+
+ def render_item_link(self, session, broker):
+ branch = session.branch()
+ self.page().show_broker(branch, broker).show_view(branch)
+
+ return mlink(branch.marshal(), "Broker", broker.name)
+
+ def render_item_group_link(self, session, broker):
+ group = broker.get_broker_group()
+
+ if group:
+ branch = session.branch()
+ self.page().show_broker_group(branch, group).show_view(branch)
+
+ return mlink(branch.marshal(), "BrokerGroup", group.name)
+ else:
+ return none()
+
+ def render_item_profile_link(self, session, broker):
+ profile = broker.get_broker_profile()
+
+ if profile:
+ branch = session.branch()
+ self.page().show_broker_profile(branch, profile).show_view(branch)
+
+ return mlink(branch.marshal(), "BrokerProfile", profile.name)
+ else:
+ return none()
+
+ def render_item_cluster_link(self, session, broker):
+ cluster = broker.get_cluster()
+
+ if cluster:
+ branch = session.branch()
+ self.page().show_cluster(branch, cluster).show_view(branch)
+
+ return mlink(branch.marshal(), "Cluster", cluster.name)
+ else:
+ return none()
+
+ def render_item_status(self, session, broker):
+ return "0 errors, 0 warnings"
+
+ def render_item_load(self, session, broker):
+ return "%.2f" % random()
+
+class BrokerSetForm(BrokerSet, Form):
+ def __init__(self, app, name):
+ super(BrokerSetForm, self).__init__(app, name)
+
+ self.broker = BrokerParameter(app, "param")
+ self.add_parameter(self.broker)
+ self.add_form_parameter(self.broker)
+
+ self.brokers = ListParameter(app, "ids", self.broker)
+ self.add_parameter(self.brokers)
+ self.add_form_parameter(self.brokers)
+
+ self.submit = self.Submit(app, "submit", self)
+ self.add_child(self.submit)
+
+ def do_process(self, session, model):
+ if self.submit.get(session):
+ self.submit.set(session, False)
+
+ for broker in self.brokers.get(session):
+ print "broker", broker
+
+ session.set_redirect(session.marshal())
+
+ def render_item_checkbox_name(self, session, broker):
+ return self.brokers.path()
+
+ def render_item_checkbox_value(self, session, broker):
+ return self.broker.marshal(broker)
+
+ def render_item_checkbox_checked_attr(self, session, broker):
+ return broker in self.brokers.get(session) and "checked=\"checked\""
+
+ class Submit(FormButton):
+ def render_content(self, session, model):
+ return "Submit"
+
+class BrokerFrame(CuminFrame):
+ def __init__(self, app, name):
+ super(BrokerFrame, self).__init__(app, name)
+
+ self.param = BrokerParameter(app, "id")
+ self.add_parameter(self.param)
+ self.set_object_parameter(self.param)
+
+ self.view = BrokerView(app, "view")
+ self.add_mode(self.view)
+
+ self.vhost = VirtualHostFrame(app, "vhost")
+ self.add_mode(self.vhost)
+
+ self.prop = BrokerConfigPropertyForm(app, "prop")
+ self.add_mode(self.prop)
+
+ def show_view(self, session):
+ return self.show_mode(session, self.view)
+
+ def show_virtual_host(self, session, vhost):
+ self.vhost.set_object(session, vhost)
+ return self.show_mode(session, self.vhost)
+
+ def show_config_property(self, session, prop):
+ self.prop.set_config_property(session, prop)
+ frame = self.show_mode(session, self.prop)
+ return self.page().set_current_frame(session, frame)
+
+ def render_title(self, session, broker):
+ return "Broker '%s'" % broker.name
+
+class BrokerConfigPropertyForm(CuminForm, Frame):
+ def __init__(self, app, name):
+ super(BrokerConfigPropertyForm, self).__init__(app, name)
+
+ self.param = ConfigPropertyParameter(app, "param")
+ self.add_parameter(self.param)
+
+ self.source = Parameter(app, "source")
+ self.source.set_default("local")
+ self.add_parameter(self.source)
+
+ self.profile = RadioInput(app, "profile", self)
+ self.profile.set_parameter(self.source)
+ self.profile.set_value("profile")
+ self.add_child(self.profile)
+
+ self.pvalue = TextInput(app, "profile_value", self)
+ self.pvalue.set_disabled(True)
+ self.add_child(self.pvalue)
+
+ self.broker = RadioInput(app, "broker", self)
+ self.broker.set_parameter(self.source)
+ self.broker.set_value("broker")
+ self.add_child(self.broker)
+
+ self.svalue = TextInput(app, "broker_value", self)
+ self.svalue.set_disabled(True)
+ self.add_child(self.svalue)
+
+ self.local = RadioInput(app, "local", self)
+ self.local.set_parameter(self.source)
+ self.local.set_value("local")
+ self.add_child(self.local)
+
+ self.lvalue = TextInput(app, "local_value", self)
+ self.add_child(self.lvalue)
+
+ def get_object(self, session, object):
+ return self.param.get(session)
+
+ def set_config_property(self, session, prop):
+ return self.param.set(session, prop)
+
+ def process_cancel(self, session, prop):
+ branch = session.branch()
+ self.page().show_broker(branch, prop.get_broker()).show_view(branch)
+ session.set_redirect(branch.marshal())
+
+ def process_submit(self, session, prop):
+ source = self.source.get(session)
+
+ if source == "profile":
+ prop.value = get_profile_value(prop)
+ elif source == "broker":
+ prop.value = prop.broker_value
+ elif source == "local":
+ prop.value = self.lvalue.get(session)
+ else:
+ raise Exception()
+
+ self.process_cancel(session, prop)
+
+ def process_display(self, session, prop):
+ self.pvalue.set(session, get_profile_value(prop))
+ self.svalue.set(session, prop.broker_value)
+ self.lvalue.set(session, prop.value)
+
+ def render_title(self, session, prop):
+ return "Edit Property '%s'" % prop.name
+
+def get_profile_value(prop):
+ profile = prop.get_broker().get_broker_profile()
+ value = None
+
+ if profile:
+ for p in profile.config_property_items():
+ if p.name == prop.name:
+ value = p.value
+
+ return value
+
+class BrokerView(Widget):
+ def __init__(self, app, name):
+ super(BrokerView, self).__init__(app, name)
+
+ self.tabs = TabSet(app, "tabs")
+ self.add_child(self.tabs)
+
+ self.tabs.add_tab(self.BrokerVirtualHostTab(app, "vhosts"))
+ self.config = self.BrokerConfigTab(app, "config")
+ self.tabs.add_tab(self.config)
+ self.tabs.add_tab(self.BrokerStatsTab(app, "stats"))
+ self.tabs.add_tab(self.BrokerLogTab(app, "log"))
+
+ def show_config(self, session):
+ return self.tabs.show_mode(session, self.config)
+
+ def render_title(self, session, broker):
+ return "Broker '%s'" % broker.name
+
+ def render_name(self, session, broker):
+ return broker.name
+
+ def render_cluster_link(self, session, broker):
+ cluster = broker.get_cluster()
+
+ if cluster:
+ branch = session.branch()
+ self.page().show_cluster(branch, cluster).show_view(branch)
+ html = mlink(branch.marshal(), "Cluster", cluster.name)
+ else:
+ html = none()
+
+ return html
+
+ def render_profile_link(self, session, broker):
+ profile = broker.get_broker_profile()
+
+ if profile:
+ branch = session.branch()
+ self.page().show_broker_profile(branch, profile).show_view(branch)
+ html = mlink(branch.marshal(), "BrokerProfile", profile.name)
+ else:
+ html = none()
+
+ return html
+
+ def render_version(self, session, broker):
+ return "1.0"
+
+ class BrokerVirtualHostTab(VirtualHostSet):
+ def render_title(self, session, broker):
+ return "Functional Hosts (%i)" % len(broker.virtual_host_items())
+
+ def get_items(self, session, broker):
+ return sorted_by(broker.virtual_host_items())
+
+ class BrokerConfigTab(ConfigPropertySet):
+ def render_title(self, session, broker):
+ return "Configuration"
+
+ def get_items(self, session, broker):
+ return sorted_by(broker.config_property_items())
+
+ def maybe_highlight(self, value, comparedto):
+ if str(value) != str(comparedto):
+ value = "<span class=\"BrokerConfigTab diff\">%s</span>" \
+ % value
+
+ return value
+
+ def render_item_broker_value(self, session, prop):
+ return self.maybe_highlight(prop.broker_value, prop.value)
+
+ def render_item_profile_value(self, session, prop):
+ value = get_profile_value(prop)
+ return self.maybe_highlight(value, prop.value)
+
+ def render_item_edit_href(self, session, prop):
+ branch = session.branch()
+ frame = self.page().show_broker(branch, prop.get_broker())
+ frame.show_config_property(branch, prop)
+ return branch.marshal()
+
+ class BrokerStatsTab(Widget):
+ def render_title(self, session, broker):
+ return "Statistics"
+
+ class BrokerLogTab(Widget):
+ def render_title(self, session, broker):
+ return "Log Messages"
+
+class BrokerBrowser(Widget):
+ def __init__(self, app, name):
+ super(BrokerBrowser, self).__init__(app, name)
+
+ self.group_tmpl = Template(self, "group_html")
+ self.profile_tmpl = Template(self, "profile_html")
+ self.cluster_tmpl = Template(self, "cluster_html")
+
+ self.group = BrokerGroupParameter(app, "group")
+ self.add_parameter(self.group)
+
+ self.profile = BrokerProfileParameter(app, "profile")
+ self.add_parameter(self.profile)
+
+ self.cluster = ClusterParameter(app, "cluster")
+ self.add_parameter(self.cluster)
+
+ self.brokers = self.BrowserBrokers(app, "brokers")
+ self.add_child(self.brokers)
+
+ class BrowserBrokers(BrokerSetForm):
+ def get_items(self, session, model):
+ brokers = sorted_by(model.get_brokers())
+ group = self.parent.group.get(session)
+ profile = self.parent.profile.get(session)
+ cluster = self.parent.cluster.get(session)
+
+ for broker in model.get_brokers():
+ if group and group not in broker.broker_group_items():
+ brokers.remove(broker)
+
+ if profile and profile is not broker.get_broker_profile():
+ try:
+ brokers.remove(broker)
+ except ValueError:
+ pass
+
+ if cluster and cluster is not broker.get_cluster():
+ try:
+ brokers.remove(broker)
+ except ValueError:
+ pass
+
+ return brokers
+
+ def render_none(self, session, model):
+ return none()
+
+ def render_clear_filters_href(self, session, model):
+ branch = session.branch()
+ self.group.set(branch, None)
+ self.profile.set(branch, None)
+ self.cluster.set(branch, None)
+ return branch.marshal()
+
+ def render_group_filters(self, session, model):
+ groups = sorted_by(model.get_broker_groups())
+ return self._render_filters(session, groups, self.group_tmpl)
+
+ def render_group_link(self, session, group):
+ return self._render_filter_link(session, group, self.group)
+
+ def render_profile_filters(self, session, model):
+ profiles = sorted_by(model.get_broker_profiles())
+ return self._render_filters(session, profiles, self.profile_tmpl)
+
+ def render_profile_link(self, session, profile):
+ return self._render_filter_link(session, profile, self.profile)
+
+ def render_cluster_filters(self, session, model):
+ clusters = sorted_by(model.get_clusters())
+ return self._render_filters(session, clusters, self.cluster_tmpl)
+
+ def render_cluster_link(self, session, cluster):
+ return self._render_filter_link(session, cluster, self.cluster)
+
+ def _render_filters(self, session, collection, template):
+ writer = Writer()
+
+ for object in collection:
+ template.render(session, object, writer)
+
+ template.render(session, None, writer)
+
+ return writer.to_string()
+
+ def _render_filter_link(self, session, object, param):
+ branch = session.branch()
+ param.set(branch, object)
+ href = branch.marshal()
+
+ name = object and object.name or "Any"
+
+ class_ = param.get(session) is object and "selected"
+
+ return link(href, name, class_)
Copied: mgmt/cumin/python/cumin/broker.strings (from rev 1155, mgmt/cumin/python/cumin/server.strings)
===================================================================
--- mgmt/cumin/python/cumin/broker.strings (rev 0)
+++ mgmt/cumin/python/cumin/broker.strings 2007-10-24 15:38:06 UTC (rev 1156)
@@ -0,0 +1,195 @@
+[BrokerSet.html]
+<table class="mobjects">
+ <tr>
+ <th>Broker</th>
+ <th>Profile</th>
+ <th>Cluster</th>
+ <th>Status</th>
+ </tr>
+
+ {items}
+</table>
+
+[BrokerSet.item_html]
+<tr>
+ <td>{item_link}</td>
+ <td>{item_profile_link}</td>
+ <td>{item_cluster_link}</td>
+ <td>0 errors, 0 warnings</td>
+</tr>
+
+[BrokerSetForm.html]
+<form id="{id}" method="post" action="?">
+ <!-- <select onchange="document.getElementById('{id}.submit').submit()"> -->
+ <select>
+ <option>Act on Selection...</option>
+ <optgroup label="Actions">
+ <option>Shutdown</option>
+ <option>Load Balance</option>
+ </optgroup>
+ <optgroup label="Add to Group">
+ <option>East Coast</option>
+ <option>West Coast</option>
+ <option>Marketing</option>
+ <option>Sales</option>
+ </optgroup>
+ </select>
+ {submit}
+ <br/><br/>
+
+ <table class="mobjects">
+ <tr>
+ <th><input type="checkbox"/></th>
+ <th>Broker</th>
+ <th>Profile</th>
+ <th>Cluster</th>
+ <th>Status</th>
+ <th>Load</th>
+ </tr>
+
+ {items}
+ </table>
+ {hidden_inputs}
+</form>
+
+[BrokerSetForm.item_html]
+<tr>
+ <td><input type="checkbox" name="{item_checkbox_name}" value="{item_checkbox_value}" {item_checkbox_checked_attr}/></td>
+ <td>{item_link}</td>
+ <td>{item_profile_link}</td>
+ <td>{item_cluster_link}</td>
+ <td>{item_status}</td>
+ <td>{item_load}</td>
+</tr>
+
+[BrokerConfigTab.css]
+.BrokerConfigTab.diff {
+ background-color: #ff9;
+}
+
+[BrokerConfigTab.html]
+<ul class="actions">
+ <li><a href="">Apply Configuration to Broker</a></li>
+ <li><a href="">Add Property</a></li>
+</ul>
+
+<table class="mobjects">
+ <tr>
+ <th>Property</th>
+ <th>Configured Value</th>
+ <th>Broker Value</th>
+ <th>Profile Value</th>
+ <th></th>
+ </tr>
+
+ {items}
+</table>
+
+[BrokerConfigTab.item_html]
+<tr>
+ <td>{item_name}</td>
+ <td>{item_value}</td>
+ <td>{item_broker_value}</td>
+ <td>{item_profile_value}</td>
+ <td><a class="action" href="{item_edit_href}">Edit</a></td>
+</tr>
+
+[BrokerConfigPropertyForm.css]
+.BrokerConfigPropertyForm div.value {
+ margin: 1em 2em;
+}
+
+[BrokerConfigPropertyForm.html]
+<form id="{id}" class="BrokerConfigPropertyForm mform" method="post" action="?">
+ <div class="head">
+ <h1>{title}</h1>
+ </div>
+ <div class="body">
+ <span class="legend">Value</span>
+ <fieldset>
+ <div class="field">
+ {profile} Use the value from the broker profile
+ <div class="value">{profile_value}</div>
+ </div>
+ <div class="field">
+ {broker} Use the value currently set on the broker
+ <div class="value">{broker_value}</div>
+ </div>
+ <div class="field">
+ {local} Set a new value
+ <div class="value">{local_value}</div>
+ </div>
+ </fieldset>
+
+ {hidden_inputs}
+ </div>
+ <div class="foot">
+ <div style="display: block; float: left;"><button>Help</button></div>
+ {cancel}
+ {submit}
+ </div>
+</form>
+<script defer="defer">
+(function() {
+ var elem = wooly.doc().elem("{id}").node.elements[1];
+ elem.focus();
+ elem.select();
+}())
+</script>
+
+[BrokerView.html]
+<div class="oblock">
+ <div class="mstatus green" id="{id}">
+ <h2>Broker Status</h2>
+
+ <div>0 errors, 0 warnings</div>
+ </div>
+
+ <h1>{title}</h1>
+
+ <dl class="properties">
+ <dt>Name</dt><dd>{name}</dd>
+ <dt>Cluster</dt><dd>{cluster_link}</dd>
+ <dt>Broker Profile</dt><dd>{profile_link}</dd>
+ <dt>Software Version</dt><dd>{version}</dd>
+ </dl>
+
+ <ul class="actions">
+ <li><a href="">Shutdown This Broker</a></li>
+ </ul>
+
+ {tabs}
+</div>
+
+[BrokerBrowser.html]
+<table class="browser">
+ <tr>
+ <td class="nav">
+ <ul class="actions">
+ <li><a href="{clear_filters_href}">Clear Filters</a></li>
+ </ul>
+
+ <h2>Filter by Group</h2>
+ <ul class="slist">{group_filters}</ul>
+ <h2>Filter by Profile</h2>
+ <ul class="slist">{profile_filters}</ul>
+ <h2>Filter by Cluster</h2>
+ <ul class="slist">{cluster_filters}</ul>
+ </td>
+ <td class="view">
+ <ul class="actions">
+ <li><a href="">Register New Brokers</a></li>
+ </ul>
+ {brokers}
+ </td>
+ </tr>
+</div>
+
+[BrokerBrowser.group_html]
+<li>{group_link}</li>
+
+[BrokerBrowser.profile_html]
+<li>{profile_link}</li>
+
+[BrokerBrowser.cluster_html]
+<li>{cluster_link}</li>
Copied: mgmt/cumin/python/cumin/brokergroup.py (from rev 1155, mgmt/cumin/python/cumin/servergroup.py)
===================================================================
--- mgmt/cumin/python/cumin/brokergroup.py (rev 0)
+++ mgmt/cumin/python/cumin/brokergroup.py 2007-10-24 15:38:06 UTC (rev 1156)
@@ -0,0 +1,132 @@
+from wooly import *
+from wooly.widgets import *
+
+from broker import BrokerSet
+from model import *
+from widgets import *
+from parameters import *
+from util import *
+
+strings = StringCatalog(__file__)
+
+class BrokerGroupSet(ItemSet):
+ def render_title(self, session, model):
+ return "Broker Groups (%i)" % len(model.get_broker_groups())
+
+ def render_group_add_href(self, session, model):
+ branch = session.branch()
+ self.page().show_broker_group_add(branch)
+ return branch.marshal()
+
+ def get_items(self, session, model):
+ return sorted_by(model.get_broker_groups())
+
+ def render_item_link(self, session, group):
+ href = self.page().broker_group_href(session, group)
+ return mlink(href, "BrokerGroup", group.name)
+
+ def render_item_config(self, session, group):
+ count = len(group.broker_items())
+ return "%i broker%s" % (count, count == 1 and "" or "s")
+
+ def render_item_status(self, session, group):
+ return "0 errors, 0 warnings"
+
+ def render_none(self, session, group):
+ return none()
+
+class BrokerGroupFrame(CuminFrame):
+ def __init__(self, app, name):
+ super(BrokerGroupFrame, self).__init__(app, name)
+
+ self.param = BrokerGroupParameter(app, "id")
+ self.add_parameter(self.param)
+ self.set_object_parameter(self.param)
+
+ self.view = BrokerGroupView(app, "view")
+ self.add_child(self.view)
+ self.set_view_mode(self.view)
+
+ self.edit = BrokerGroupEdit(app, "edit")
+ self.add_child(self.edit)
+ self.set_edit_mode(self.edit)
+
+ def render_title(self, session, group):
+ return "Broker Group '%s'" % group.name
+
+class BrokerGroupView(Widget):
+ def __init__(self, app, name):
+ super(BrokerGroupView, self).__init__(app, name)
+
+ self.tabs = TabSet(app, "tabs")
+ self.add_child(self.tabs)
+
+ self.tabs.add_tab(self.GroupBrokerTab(app, "brokers"))
+
+ def render_title(self, session, group):
+ return "Broker Group '%s'" % group.name
+
+ def render_name(self, session, group):
+ return group.name
+
+ def render_category(self, session, group):
+ return group.get_type().name
+
+ def render_edit_href(self, session, group):
+ branch = session.branch()
+ self.page().show_broker_group(branch, group).show_edit(branch)
+ return branch.marshal()
+
+ class GroupBrokerTab(BrokerSet):
+ def get_items(self, session, group):
+ return sorted_by(group.broker_items())
+
+ def render_title(self, session, group):
+ return "Brokers (%i)" % len(group.broker_items())
+
+class BrokerGroupForm(CuminForm):
+ def __init__(self, app, name):
+ super(BrokerGroupForm, self).__init__(app, name)
+
+ self.group_name = TextInput(app, "name", self)
+ self.add_child(self.group_name)
+
+ def process_group(self, session, group):
+ group.lock()
+ try:
+ group.name = self.group_name.get(session)
+ group.set_type(self.app.model.get_broker_group_types()[0])
+ finally:
+ group.unlock()
+
+ branch = session.branch()
+ self.page().show_broker_group(branch, group).show_view(branch)
+ session.set_redirect(branch.marshal())
+
+class BrokerGroupAdd(BrokerGroupForm, Frame):
+ def process_cancel(self, session, model):
+ branch = session.branch()
+ self.page().show_view(branch)
+ session.set_redirect(branch.marshal())
+
+ def process_submit(self, session, model):
+ group = BrokerGroup(model)
+ self.process_group(session, group)
+
+ def render_title(self, session, model):
+ return "Add Group"
+
+class BrokerGroupEdit(BrokerGroupForm, Frame):
+ def process_cancel(self, session, group):
+ branch = session.branch()
+ self.parent.show_view(branch)
+ session.set_redirect(branch.marshal())
+
+ def process_submit(self, session, group):
+ self.process_group(session, group)
+
+ def process_display(self, session, group):
+ self.group_name.set(session, group.name)
+
+ def render_title(self, session, group):
+ return "Edit Group '%s'" % group.name
Copied: mgmt/cumin/python/cumin/brokergroup.strings (from rev 1155, mgmt/cumin/python/cumin/servergroup.strings)
===================================================================
--- mgmt/cumin/python/cumin/brokergroup.strings (rev 0)
+++ mgmt/cumin/python/cumin/brokergroup.strings 2007-10-24 15:38:06 UTC (rev 1156)
@@ -0,0 +1,74 @@
+[BrokerGroupSet.html]
+<ul class="actions">
+ <li><a href="{group_add_href}">Add Broker Group</a></li>
+</ul>
+
+<button>Shutdown</button>
+<button>Remove</button>
+
+<br/><br/>
+
+<table class="mobjects">
+ <tr>
+ <th><input type="checkbox"/></th>
+ <th>Broker Group</th>
+ <th>Configuration</th>
+ <th>Status</th>
+ </tr>
+
+ {items}
+</table>
+
+[BrokerGroupSet.item_html]
+<tr>
+ <td><input type="checkbox"/></td>
+ <td>{item_link}</td>
+ <td>{item_config}</td>
+ <td>{item_status}</td>
+</tr>
+
+[BrokerGroupView.html]
+<div class="mstatus green" id="{id}">
+ <h2>Broker Group Status</h2>
+
+ <div>0 errors, 0 warnings</div>
+</div>
+
+<h1>{title}</h1>
+
+<dl class="properties">
+ <dt>Name</dt><dd>{name}</dd>
+ <dt>Category</dt><dd>{category}</dd>
+</dl>
+
+<ul class="actions">
+ <li><a href="{edit_href}">Edit This Broker Group</a></li>
+ <li><a href="">Remove This Broker Group</a></li>
+</ul>
+
+{tabs}
+
+[BrokerGroupForm.html]
+<form id="{id}" class="BrokerGroupForm mform" method="post" action="?">
+ <div class="head">
+ <h1>{title}</h1>
+ </div>
+ <div class="body">
+ <span class="legend">Name</span>
+ <fieldset>{name}</fieldset>
+
+ {hidden_inputs}
+ </div>
+ <div class="foot">
+ <div style="display: block; float: left;"><button>Help</button></div>
+ {cancel}
+ {submit}
+ </div>
+</form>
+<script defer="defer">
+(function() {
+ var elem = wooly.doc().elem("{id}").node.elements[1];
+ elem.focus();
+ elem.select();
+}())
+</script>
Copied: mgmt/cumin/python/cumin/brokerprofile.py (from rev 1155, mgmt/cumin/python/cumin/serverprofile.py)
===================================================================
--- mgmt/cumin/python/cumin/brokerprofile.py (rev 0)
+++ mgmt/cumin/python/cumin/brokerprofile.py 2007-10-24 15:38:06 UTC (rev 1156)
@@ -0,0 +1,87 @@
+from wooly import *
+from wooly.widgets import *
+
+from configproperty import *
+from broker import *
+from widgets import *
+from parameters import *
+from util import *
+
+strings = StringCatalog(__file__)
+
+class BrokerProfileSet(ItemSet):
+ def get_items(self, session, model):
+ return sorted_by(model.get_broker_profiles())
+
+ def render_item_link(self, session, profile):
+ branch = session.branch()
+ frame = self.page().show_broker_profile(branch, profile)
+ frame.show_view(branch)
+ return mlink(branch.marshal(), "BrokerProfile", profile.name)
+
+class BrokerProfileFrame(CuminFrame):
+ def __init__(self, app, name):
+ super(BrokerProfileFrame, self).__init__(app, name)
+
+ self.param = BrokerProfileParameter(app, "id")
+ self.add_parameter(self.param)
+ self.set_object_parameter(self.param)
+
+ self.view = BrokerProfileView(app, "view")
+ self.add_mode(self.view)
+
+ def show_view(self, session):
+ return self.show_mode(session, self.view)
+
+ def render_title(self, session, profile):
+ return "Broker Profile '%s'" % profile.name
+
+class BrokerProfileView(Widget):
+ def __init__(self, app, name):
+ super(BrokerProfileView, self).__init__(app, name)
+
+ self.tabs = TabSet(app, "tabs")
+ self.add_child(self.tabs)
+
+ self.tabs.add_tab(self.ProfileConfigTab(app, "config"))
+ self.tabs.add_tab(self.ProfileBrokerTab(app, "brokers"))
+
+ def render_title(self, session, profile):
+ return "Broker Profile '%s'" % profile.name
+
+ def render_name(self, session, profile):
+ return profile.name
+
+ class ProfileConfigTab(ConfigPropertySet):
+ def get_items(self, session, profile):
+ return sorted_by(profile.config_property_items())
+
+ def render_title(self, session, profile):
+ return "Configuration"
+
+ class ProfileBrokerTab(BrokerSet):
+ def __init__(self, app, name):
+ super(BrokerProfileView.ProfileBrokerTab, self).__init__(app, name)
+
+ def render_title(self, session, profile):
+ return "Brokers (%i)" % len(profile.broker_items())
+
+ def get_items(self, session, profile):
+ return sorted_by(profile.broker_items())
+
+ def render_item_config_href(self, session, broker):
+ branch = session.branch()
+ frame = self.page().show_broker(branch, broker)
+ frame.show_view(branch).show_config(branch)
+ return branch.marshal()
+
+ def render_item_config_status(self, session, broker):
+ diffs = 0
+
+ for prop in broker.get_broker_profile().config_property_items():
+ for iprop in broker.config_property_items():
+ if iprop.name == prop.name:
+ if iprop.value != prop.value:
+ diffs += 1
+
+ return "%i difference(s)" % diffs
Copied: mgmt/cumin/python/cumin/brokerprofile.strings (from rev 1155, mgmt/cumin/python/cumin/serverprofile.strings)
===================================================================
--- mgmt/cumin/python/cumin/brokerprofile.strings (rev 0)
+++ mgmt/cumin/python/cumin/brokerprofile.strings 2007-10-24 15:38:06 UTC (rev 1156)
@@ -0,0 +1,71 @@
+[BrokerProfileSet.html]
+<table class="BrokerProfileSet mobjects">
+ <tr>
+ <th>Broker Profile</th>
+ </tr>
+
+ {items}
+</table>
+
+[BrokerProfileSet.item_html]
+<tr>
+ <td>{item_link}</td>
+</tr>
+
+[BrokerProfileView.html]
+<div class="oblock">
+ <h1>{title}</h1>
+
+ <dl class="properties">
+ <dt>Name</dt><dd>{name}</dd>
+ </dl>
+
+ <ul class="actions">
+ <li><a href="">Edit This Profile</a></li>
+ </ul>
+
+ {tabs}
+</div>
+
+[ProfileConfigTab.html]
+<ul class="actions">
+ <li><a href="">Add Property</a></li>
+</ul>
+
+<table class="mobjects">
+ <tr>
+ <th>Property</th>
+ <th>Configured Value</th>
+ <th></th>
+ </tr>
+
+ {items}
+</table>
+
+[ProfileConfigTab.item_html]
+<tr>
+ <td>{item_name}</td>
+ <td>{item_value}</td>
+ <td><a class="action" href="">Edit</a></td>
+</tr>
+
+[ProfileBrokerTab.html]
+<ul class="actions">
+ <li><a href="">Apply Profile Configuration to Brokers</a></li>
+</ul>
+
+<table class="mobjects">
+ <tr>
+ <th>Broker</th>
+ <th>Configuration Status</th>
+ <th></th>
+ </tr>
+
+ {items}
+</table>
+
+[ProfileBrokerTab.item_html]
+<tr>
+ <td>{item_link}</td>
+ <td><a href="{item_config_href}">{item_config_status}</a></td>
+</tr>
Deleted: mgmt/cumin/python/cumin/server.py
===================================================================
--- mgmt/cumin/python/cumin/server.py 2007-10-24 15:31:43 UTC (rev 1155)
+++ mgmt/cumin/python/cumin/server.py 2007-10-24 15:38:06 UTC (rev 1156)
@@ -1,401 +0,0 @@
-from wooly import *
-from wooly.widgets import *
-
-from configproperty import *
-from virtualhost import *
-from widgets import *
-from parameters import *
-from util import *
-from random import random
-
-strings = StringCatalog(__file__)
-
-class BrokerSet(ItemSet):
- def render_title(self, session, model):
- return "Brokers (%i)" % len(model.get_brokers())
-
- def get_items(self, session, model):
- return sorted_by(model.get_brokers())
-
- def render_item_link(self, session, broker):
- branch = session.branch()
- self.page().show_broker(branch, broker).show_view(branch)
-
- return mlink(branch.marshal(), "Broker", broker.name)
-
- def render_item_group_link(self, session, broker):
- group = broker.get_broker_group()
-
- if group:
- branch = session.branch()
- self.page().show_broker_group(branch, group).show_view(branch)
-
- return mlink(branch.marshal(), "BrokerGroup", group.name)
- else:
- return none()
-
- def render_item_profile_link(self, session, broker):
- profile = broker.get_broker_profile()
-
- if profile:
- branch = session.branch()
- self.page().show_broker_profile(branch, profile).show_view(branch)
-
- return mlink(branch.marshal(), "BrokerProfile", profile.name)
- else:
- return none()
-
- def render_item_cluster_link(self, session, broker):
- cluster = broker.get_cluster()
-
- if cluster:
- branch = session.branch()
- self.page().show_cluster(branch, cluster).show_view(branch)
-
- return mlink(branch.marshal(), "Cluster", cluster.name)
- else:
- return none()
-
- def render_item_status(self, session, broker):
- return "0 errors, 0 warnings"
-
- def render_item_load(self, session, broker):
- return "%.2f" % random()
-
-class BrokerSetForm(BrokerSet, Form):
- def __init__(self, app, name):
- super(BrokerSetForm, self).__init__(app, name)
-
- self.broker = BrokerParameter(app, "param")
- self.add_parameter(self.broker)
- self.add_form_parameter(self.broker)
-
- self.brokers = ListParameter(app, "ids", self.broker)
- self.add_parameter(self.brokers)
- self.add_form_parameter(self.brokers)
-
- self.submit = self.Submit(app, "submit", self)
- self.add_child(self.submit)
-
- def do_process(self, session, model):
- if self.submit.get(session):
- self.submit.set(session, False)
-
- for broker in self.brokers.get(session):
- print "broker", broker
-
- session.set_redirect(session.marshal())
-
- def render_item_checkbox_name(self, session, broker):
- return self.brokers.path()
-
- def render_item_checkbox_value(self, session, broker):
- return self.broker.marshal(broker)
-
- def render_item_checkbox_checked_attr(self, session, broker):
- return broker in self.brokers.get(session) and "checked=\"checked\""
-
- class Submit(FormButton):
- def render_content(self, session, model):
- return "Submit"
-
-class BrokerFrame(CuminFrame):
- def __init__(self, app, name):
- super(BrokerFrame, self).__init__(app, name)
-
- self.param = BrokerParameter(app, "id")
- self.add_parameter(self.param)
- self.set_object_parameter(self.param)
-
- self.view = BrokerView(app, "view")
- self.add_mode(self.view)
-
- self.vhost = VirtualHostFrame(app, "vhost")
- self.add_mode(self.vhost)
-
- self.prop = BrokerConfigPropertyForm(app, "prop")
- self.add_mode(self.prop)
-
- def show_view(self, session):
- return self.show_mode(session, self.view)
-
- def show_virtual_host(self, session, vhost):
- self.vhost.set_object(session, vhost)
- return self.show_mode(session, self.vhost)
-
- def show_config_property(self, session, prop):
- self.prop.set_config_property(session, prop)
- frame = self.show_mode(session, self.prop)
- return self.page().set_current_frame(session, frame)
-
- def render_title(self, session, broker):
- return "Broker '%s'" % broker.name
-
-class BrokerConfigPropertyForm(CuminForm, Frame):
- def __init__(self, app, name):
- super(BrokerConfigPropertyForm, self).__init__(app, name)
-
- self.param = ConfigPropertyParameter(app, "param")
- self.add_parameter(self.param)
-
- self.source = Parameter(app, "source")
- self.source.set_default("local")
- self.add_parameter(self.source)
-
- self.profile = RadioInput(app, "profile", self)
- self.profile.set_parameter(self.source)
- self.profile.set_value("profile")
- self.add_child(self.profile)
-
- self.pvalue = TextInput(app, "profile_value", self)
- self.pvalue.set_disabled(True)
- self.add_child(self.pvalue)
-
- self.broker = RadioInput(app, "broker", self)
- self.broker.set_parameter(self.source)
- self.broker.set_value("broker")
- self.add_child(self.broker)
-
- self.svalue = TextInput(app, "broker_value", self)
- self.svalue.set_disabled(True)
- self.add_child(self.svalue)
-
- self.local = RadioInput(app, "local", self)
- self.local.set_parameter(self.source)
- self.local.set_value("local")
- self.add_child(self.local)
-
- self.lvalue = TextInput(app, "local_value", self)
- self.add_child(self.lvalue)
-
- def get_object(self, session, object):
- return self.param.get(session)
-
- def set_config_property(self, session, prop):
- return self.param.set(session, prop)
-
- def process_cancel(self, session, prop):
- branch = session.branch()
- self.page().show_broker(branch, prop.get_broker()).show_view(branch)
- session.set_redirect(branch.marshal())
-
- def process_submit(self, session, prop):
- source = self.source.get(session)
-
- if source == "profile":
- prop.value = get_profile_value(prop)
- elif source == "broker":
- prop.value = prop.broker_value
- elif source == "local":
- prop.value = self.lvalue.get(session)
- else:
- raise Exception()
-
- self.process_cancel(session, prop)
-
- def process_display(self, session, prop):
- self.pvalue.set(session, get_profile_value(prop))
- self.svalue.set(session, prop.broker_value)
- self.lvalue.set(session, prop.value)
-
- def render_title(self, session, prop):
- return "Edit Property '%s'" % prop.name
-
-def get_profile_value(prop):
- profile = prop.get_broker().get_broker_profile()
- value = None
-
- if profile:
- for p in profile.config_property_items():
- if p.name == prop.name:
- value = p.value
-
- return value
-
-class BrokerView(Widget):
- def __init__(self, app, name):
- super(BrokerView, self).__init__(app, name)
-
- self.tabs = TabSet(app, "tabs")
- self.add_child(self.tabs)
-
- self.tabs.add_tab(self.BrokerVirtualHostTab(app, "vhosts"))
- self.config = self.BrokerConfigTab(app, "config")
- self.tabs.add_tab(self.config)
- self.tabs.add_tab(self.BrokerStatsTab(app, "stats"))
- self.tabs.add_tab(self.BrokerLogTab(app, "log"))
-
- def show_config(self, session):
- return self.tabs.show_mode(session, self.config)
-
- def render_title(self, session, broker):
- return "Broker '%s'" % broker.name
-
- def render_name(self, session, broker):
- return broker.name
-
- def render_cluster_link(self, session, broker):
- cluster = broker.get_cluster()
-
- if cluster:
- branch = session.branch()
- self.page().show_cluster(branch, cluster).show_view(branch)
- html = mlink(branch.marshal(), "Cluster", cluster.name)
- else:
- html = none()
-
- return html
-
- def render_profile_link(self, session, broker):
- profile = broker.get_broker_profile()
-
- if profile:
- branch = session.branch()
- self.page().show_broker_profile(branch, profile).show_view(branch)
- html = mlink(branch.marshal(), "BrokerProfile", profile.name)
- else:
- html = none()
-
- return html
-
- def render_version(self, session, broker):
- return "1.0"
-
- class BrokerVirtualHostTab(VirtualHostSet):
- def render_title(self, session, broker):
- return "Functional Hosts (%i)" % len(broker.virtual_host_items())
-
- def get_items(self, session, broker):
- return sorted_by(broker.virtual_host_items())
-
- class BrokerConfigTab(ConfigPropertySet):
- def render_title(self, session, broker):
- return "Configuration"
-
- def get_items(self, session, broker):
- return sorted_by(broker.config_property_items())
-
- def maybe_highlight(self, value, comparedto):
- if str(value) != str(comparedto):
- value = "<span class=\"BrokerConfigTab diff\">%s</span>" \
- % value
-
- return value
-
- def render_item_broker_value(self, session, prop):
- return self.maybe_highlight(prop.broker_value, prop.value)
-
- def render_item_profile_value(self, session, prop):
- value = get_profile_value(prop)
- return self.maybe_highlight(value, prop.value)
-
- def render_item_edit_href(self, session, prop):
- branch = session.branch()
- frame = self.page().show_broker(branch, prop.get_broker())
- frame.show_config_property(branch, prop)
- return branch.marshal()
-
- class BrokerStatsTab(Widget):
- def render_title(self, session, broker):
- return "Statistics"
-
- class BrokerLogTab(Widget):
- def render_title(self, session, broker):
- return "Log Messages"
-
-class BrokerBrowser(Widget):
- def __init__(self, app, name):
- super(BrokerBrowser, self).__init__(app, name)
-
- self.group_tmpl = Template(self, "group_html")
- self.profile_tmpl = Template(self, "profile_html")
- self.cluster_tmpl = Template(self, "cluster_html")
-
- self.group = BrokerGroupParameter(app, "group")
- self.add_parameter(self.group)
-
- self.profile = BrokerProfileParameter(app, "profile")
- self.add_parameter(self.profile)
-
- self.cluster = ClusterParameter(app, "cluster")
- self.add_parameter(self.cluster)
-
- self.brokers = self.BrowserBrokers(app, "brokers")
- self.add_child(self.brokers)
-
- class BrowserBrokers(BrokerSetForm):
- def get_items(self, session, model):
- brokers = sorted_by(model.get_brokers())
- group = self.parent.group.get(session)
- profile = self.parent.profile.get(session)
- cluster = self.parent.cluster.get(session)
-
- for broker in model.get_brokers():
- if group and group not in broker.broker_group_items():
- brokers.remove(broker)
-
- if profile and profile is not broker.get_broker_profile():
- try:
- brokers.remove(broker)
- except ValueError:
- pass
-
- if cluster and cluster is not broker.get_cluster():
- try:
- brokers.remove(broker)
- except ValueError:
- pass
-
- return brokers
-
- def render_none(self, session, model):
- return none()
-
- def render_clear_filters_href(self, session, model):
- branch = session.branch()
- self.group.set(branch, None)
- self.profile.set(branch, None)
- self.cluster.set(branch, None)
- return branch.marshal()
-
- def render_group_filters(self, session, model):
- groups = sorted_by(model.get_broker_groups())
- return self._render_filters(session, groups, self.group_tmpl)
-
- def render_group_link(self, session, group):
- return self._render_filter_link(session, group, self.group)
-
- def render_profile_filters(self, session, model):
- profiles = sorted_by(model.get_broker_profiles())
- return self._render_filters(session, profiles, self.profile_tmpl)
-
- def render_profile_link(self, session, profile):
- return self._render_filter_link(session, profile, self.profile)
-
- def render_cluster_filters(self, session, model):
- clusters = sorted_by(model.get_clusters())
- return self._render_filters(session, clusters, self.cluster_tmpl)
-
- def render_cluster_link(self, session, cluster):
- return self._render_filter_link(session, cluster, self.cluster)
-
- def _render_filters(self, session, collection, template):
- writer = Writer()
-
- for object in collection:
- template.render(session, object, writer)
-
- template.render(session, None, writer)
-
- return writer.to_string()
-
- def _render_filter_link(self, session, object, param):
- branch = session.branch()
- param.set(branch, object)
- href = branch.marshal()
-
- name = object and object.name or "Any"
-
- class_ = param.get(session) is object and "selected"
-
- return link(href, name, class_)
Deleted: mgmt/cumin/python/cumin/server.strings
===================================================================
--- mgmt/cumin/python/cumin/server.strings 2007-10-24 15:31:43 UTC (rev 1155)
+++ mgmt/cumin/python/cumin/server.strings 2007-10-24 15:38:06 UTC (rev 1156)
@@ -1,195 +0,0 @@
-[BrokerSet.html]
-<table class="mobjects">
- <tr>
- <th>Broker</th>
- <th>Profile</th>
- <th>Cluster</th>
- <th>Status</th>
- </tr>
-
- {items}
-</table>
-
-[BrokerSet.item_html]
-<tr>
- <td>{item_link}</td>
- <td>{item_profile_link}</td>
- <td>{item_cluster_link}</td>
- <td>0 errors, 0 warnings</td>
-</tr>
-
-[BrokerSetForm.html]
-<form id="{id}" method="post" action="?">
- <!-- <select onchange="document.getElementById('{id}.submit').submit()"> -->
- <select>
- <option>Act on Selection...</option>
- <optgroup label="Actions">
- <option>Shutdown</option>
- <option>Load Balance</option>
- </optgroup>
- <optgroup label="Add to Group">
- <option>East Coast</option>
- <option>West Coast</option>
- <option>Marketing</option>
- <option>Sales</option>
- </optgroup>
- </select>
- {submit}
- <br/><br/>
-
- <table class="mobjects">
- <tr>
- <th><input type="checkbox"/></th>
- <th>Broker</th>
- <th>Profile</th>
- <th>Cluster</th>
- <th>Status</th>
- <th>Load</th>
- </tr>
-
- {items}
- </table>
- {hidden_inputs}
-</form>
-
-[BrokerSetForm.item_html]
-<tr>
- <td><input type="checkbox" name="{item_checkbox_name}" value="{item_checkbox_value}" {item_checkbox_checked_attr}/></td>
- <td>{item_link}</td>
- <td>{item_profile_link}</td>
- <td>{item_cluster_link}</td>
- <td>{item_status}</td>
- <td>{item_load}</td>
-</tr>
-
-[BrokerConfigTab.css]
-.BrokerConfigTab.diff {
- background-color: #ff9;
-}
-
-[BrokerConfigTab.html]
-<ul class="actions">
- <li><a href="">Apply Configuration to Broker</a></li>
- <li><a href="">Add Property</a></li>
-</ul>
-
-<table class="mobjects">
- <tr>
- <th>Property</th>
- <th>Configured Value</th>
- <th>Broker Value</th>
- <th>Profile Value</th>
- <th></th>
- </tr>
-
- {items}
-</table>
-
-[BrokerConfigTab.item_html]
-<tr>
- <td>{item_name}</td>
- <td>{item_value}</td>
- <td>{item_broker_value}</td>
- <td>{item_profile_value}</td>
- <td><a class="action" href="{item_edit_href}">Edit</a></td>
-</tr>
-
-[BrokerConfigPropertyForm.css]
-.BrokerConfigPropertyForm div.value {
- margin: 1em 2em;
-}
-
-[BrokerConfigPropertyForm.html]
-<form id="{id}" class="BrokerConfigPropertyForm mform" method="post" action="?">
- <div class="head">
- <h1>{title}</h1>
- </div>
- <div class="body">
- <span class="legend">Value</span>
- <fieldset>
- <div class="field">
- {profile} Use the value from the broker profile
- <div class="value">{profile_value}</div>
- </div>
- <div class="field">
- {broker} Use the value currently set on the broker
- <div class="value">{broker_value}</div>
- </div>
- <div class="field">
- {local} Set a new value
- <div class="value">{local_value}</div>
- </div>
- </fieldset>
-
- {hidden_inputs}
- </div>
- <div class="foot">
- <div style="display: block; float: left;"><button>Help</button></div>
- {cancel}
- {submit}
- </div>
-</form>
-<script defer="defer">
-(function() {
- var elem = wooly.doc().elem("{id}").node.elements[1];
- elem.focus();
- elem.select();
-}())
-</script>
-
-[BrokerView.html]
-<div class="oblock">
- <div class="mstatus green" id="{id}">
- <h2>Broker Status</h2>
-
- <div>0 errors, 0 warnings</div>
- </div>
-
- <h1>{title}</h1>
-
- <dl class="properties">
- <dt>Name</dt><dd>{name}</dd>
- <dt>Cluster</dt><dd>{cluster_link}</dd>
- <dt>Broker Profile</dt><dd>{profile_link}</dd>
- <dt>Software Version</dt><dd>{version}</dd>
- </dl>
-
- <ul class="actions">
- <li><a href="">Shutdown This Broker</a></li>
- </ul>
-
- {tabs}
-</div>
-
-[BrokerBrowser.html]
-<table class="browser">
- <tr>
- <td class="nav">
- <ul class="actions">
- <li><a href="{clear_filters_href}">Clear Filters</a></li>
- </ul>
-
- <h2>Filter by Group</h2>
- <ul class="slist">{group_filters}</ul>
- <h2>Filter by Profile</h2>
- <ul class="slist">{profile_filters}</ul>
- <h2>Filter by Cluster</h2>
- <ul class="slist">{cluster_filters}</ul>
- </td>
- <td class="view">
- <ul class="actions">
- <li><a href="">Register New Brokers</a></li>
- </ul>
- {brokers}
- </td>
- </tr>
-</div>
-
-[BrokerBrowser.group_html]
-<li>{group_link}</li>
-
-[BrokerBrowser.profile_html]
-<li>{profile_link}</li>
-
-[BrokerBrowser.cluster_html]
-<li>{cluster_link}</li>
Deleted: mgmt/cumin/python/cumin/servergroup.py
===================================================================
--- mgmt/cumin/python/cumin/servergroup.py 2007-10-24 15:31:43 UTC (rev 1155)
+++ mgmt/cumin/python/cumin/servergroup.py 2007-10-24 15:38:06 UTC (rev 1156)
@@ -1,132 +0,0 @@
-from wooly import *
-from wooly.widgets import *
-
-from broker import BrokerSet
-from model import *
-from widgets import *
-from parameters import *
-from util import *
-
-strings = StringCatalog(__file__)
-
-class BrokerGroupSet(ItemSet):
- def render_title(self, session, model):
- return "Broker Groups (%i)" % len(model.get_broker_groups())
-
- def render_group_add_href(self, session, model):
- branch = session.branch()
- self.page().show_broker_group_add(branch)
- return branch.marshal()
-
- def get_items(self, session, model):
- return sorted_by(model.get_broker_groups())
-
- def render_item_link(self, session, group):
- href = self.page().broker_group_href(session, group)
- return mlink(href, "BrokerGroup", group.name)
-
- def render_item_config(self, session, group):
- count = len(group.broker_items())
- return "%i broker%s" % (count, count == 1 and "" or "s")
-
- def render_item_status(self, session, group):
- return "0 errors, 0 warnings"
-
- def render_none(self, session, group):
- return none()
-
-class BrokerGroupFrame(CuminFrame):
- def __init__(self, app, name):
- super(BrokerGroupFrame, self).__init__(app, name)
-
- self.param = BrokerGroupParameter(app, "id")
- self.add_parameter(self.param)
- self.set_object_parameter(self.param)
-
- self.view = BrokerGroupView(app, "view")
- self.add_child(self.view)
- self.set_view_mode(self.view)
-
- self.edit = BrokerGroupEdit(app, "edit")
- self.add_child(self.edit)
- self.set_edit_mode(self.edit)
-
- def render_title(self, session, group):
- return "Broker Group '%s'" % group.name
-
-class BrokerGroupView(Widget):
- def __init__(self, app, name):
- super(BrokerGroupView, self).__init__(app, name)
-
- self.tabs = TabSet(app, "tabs")
- self.add_child(self.tabs)
-
- self.tabs.add_tab(self.GroupBrokerTab(app, "brokers"))
-
- def render_title(self, session, group):
- return "Broker Group '%s'" % group.name
-
- def render_name(self, session, group):
- return group.name
-
- def render_category(self, session, group):
- return group.get_type().name
-
- def render_edit_href(self, session, group):
- branch = session.branch()
- self.page().show_broker_group(branch, group).show_edit(branch)
- return branch.marshal()
-
- class GroupBrokerTab(BrokerSet):
- def get_items(self, session, group):
- return sorted_by(group.broker_items())
-
- def render_title(self, session, group):
- return "Brokers (%i)" % len(group.broker_items())
-
-class BrokerGroupForm(CuminForm):
- def __init__(self, app, name):
- super(BrokerGroupForm, self).__init__(app, name)
-
- self.group_name = TextInput(app, "name", self)
- self.add_child(self.group_name)
-
- def process_group(self, session, group):
- group.lock()
- try:
- group.name = self.group_name.get(session)
- group.set_type(self.app.model.get_broker_group_types()[0])
- finally:
- group.unlock()
-
- branch = session.branch()
- self.page().show_broker_group(branch, group).show_view(branch)
- session.set_redirect(branch.marshal())
-
-class BrokerGroupAdd(BrokerGroupForm, Frame):
- def process_cancel(self, session, model):
- branch = session.branch()
- self.page().show_view(branch)
- session.set_redirect(branch.marshal())
-
- def process_submit(self, session, model):
- group = BrokerGroup(model)
- self.process_group(session, group)
-
- def render_title(self, session, model):
- return "Add Group"
-
-class BrokerGroupEdit(BrokerGroupForm, Frame):
- def process_cancel(self, session, group):
- branch = session.branch()
- self.parent.show_view(branch)
- session.set_redirect(branch.marshal())
-
- def process_submit(self, session, group):
- self.process_group(session, group)
-
- def process_display(self, session, group):
- self.group_name.set(session, group.name)
-
- def render_title(self, session, group):
- return "Edit Group '%s'" % group.name
Deleted: mgmt/cumin/python/cumin/servergroup.strings
===================================================================
--- mgmt/cumin/python/cumin/servergroup.strings 2007-10-24 15:31:43 UTC (rev 1155)
+++ mgmt/cumin/python/cumin/servergroup.strings 2007-10-24 15:38:06 UTC (rev 1156)
@@ -1,74 +0,0 @@
-[BrokerGroupSet.html]
-<ul class="actions">
- <li><a href="{group_add_href}">Add Broker Group</a></li>
-</ul>
-
-<button>Shutdown</button>
-<button>Remove</button>
-
-<br/><br/>
-
-<table class="mobjects">
- <tr>
- <th><input type="checkbox"/></th>
- <th>Broker Group</th>
- <th>Configuration</th>
- <th>Status</th>
- </tr>
-
- {items}
-</table>
-
-[BrokerGroupSet.item_html]
-<tr>
- <td><input type="checkbox"/></td>
- <td>{item_link}</td>
- <td>{item_config}</td>
- <td>{item_status}</td>
-</tr>
-
-[BrokerGroupView.html]
-<div class="mstatus green" id="{id}">
- <h2>Broker Group Status</h2>
-
- <div>0 errors, 0 warnings</div>
-</div>
-
-<h1>{title}</h1>
-
-<dl class="properties">
- <dt>Name</dt><dd>{name}</dd>
- <dt>Category</dt><dd>{category}</dd>
-</dl>
-
-<ul class="actions">
- <li><a href="{edit_href}">Edit This Broker Group</a></li>
- <li><a href="">Remove This Broker Group</a></li>
-</ul>
-
-{tabs}
-
-[BrokerGroupForm.html]
-<form id="{id}" class="BrokerGroupForm mform" method="post" action="?">
- <div class="head">
- <h1>{title}</h1>
- </div>
- <div class="body">
- <span class="legend">Name</span>
- <fieldset>{name}</fieldset>
-
- {hidden_inputs}
- </div>
- <div class="foot">
- <div style="display: block; float: left;"><button>Help</button></div>
- {cancel}
- {submit}
- </div>
-</form>
-<script defer="defer">
-(function() {
- var elem = wooly.doc().elem("{id}").node.elements[1];
- elem.focus();
- elem.select();
-}())
-</script>
Deleted: mgmt/cumin/python/cumin/serverprofile.py
===================================================================
--- mgmt/cumin/python/cumin/serverprofile.py 2007-10-24 15:31:43 UTC (rev 1155)
+++ mgmt/cumin/python/cumin/serverprofile.py 2007-10-24 15:38:06 UTC (rev 1156)
@@ -1,87 +0,0 @@
-from wooly import *
-from wooly.widgets import *
-
-from configproperty import *
-from broker import *
-from widgets import *
-from parameters import *
-from util import *
-
-strings = StringCatalog(__file__)
-
-class BrokerProfileSet(ItemSet):
- def get_items(self, session, model):
- return sorted_by(model.get_broker_profiles())
-
- def render_item_link(self, session, profile):
- branch = session.branch()
- frame = self.page().show_broker_profile(branch, profile)
- frame.show_view(branch)
- return mlink(branch.marshal(), "BrokerProfile", profile.name)
-
-class BrokerProfileFrame(CuminFrame):
- def __init__(self, app, name):
- super(BrokerProfileFrame, self).__init__(app, name)
-
- self.param = BrokerProfileParameter(app, "id")
- self.add_parameter(self.param)
- self.set_object_parameter(self.param)
-
- self.view = BrokerProfileView(app, "view")
- self.add_mode(self.view)
-
- def show_view(self, session):
- return self.show_mode(session, self.view)
-
- def render_title(self, session, profile):
- return "Broker Profile '%s'" % profile.name
-
-class BrokerProfileView(Widget):
- def __init__(self, app, name):
- super(BrokerProfileView, self).__init__(app, name)
-
- self.tabs = TabSet(app, "tabs")
- self.add_child(self.tabs)
-
- self.tabs.add_tab(self.ProfileConfigTab(app, "config"))
- self.tabs.add_tab(self.ProfileBrokerTab(app, "brokers"))
-
- def render_title(self, session, profile):
- return "Broker Profile '%s'" % profile.name
-
- def render_name(self, session, profile):
- return profile.name
-
- class ProfileConfigTab(ConfigPropertySet):
- def get_items(self, session, profile):
- return sorted_by(profile.config_property_items())
-
- def render_title(self, session, profile):
- return "Configuration"
-
- class ProfileBrokerTab(BrokerSet):
- def __init__(self, app, name):
- super(BrokerProfileView.ProfileBrokerTab, self).__init__(app, name)
-
- def render_title(self, session, profile):
- return "Brokers (%i)" % len(profile.broker_items())
-
- def get_items(self, session, profile):
- return sorted_by(profile.broker_items())
-
- def render_item_config_href(self, session, broker):
- branch = session.branch()
- frame = self.page().show_broker(branch, broker)
- frame.show_view(branch).show_config(branch)
- return branch.marshal()
-
- def render_item_config_status(self, session, broker):
- diffs = 0
-
- for prop in broker.get_broker_profile().config_property_items():
- for iprop in broker.config_property_items():
- if iprop.name == prop.name:
- if iprop.value != prop.value:
- diffs += 1
-
- return "%i difference(s)" % diffs
Deleted: mgmt/cumin/python/cumin/serverprofile.strings
===================================================================
--- mgmt/cumin/python/cumin/serverprofile.strings 2007-10-24 15:31:43 UTC (rev 1155)
+++ mgmt/cumin/python/cumin/serverprofile.strings 2007-10-24 15:38:06 UTC (rev 1156)
@@ -1,71 +0,0 @@
-[BrokerProfileSet.html]
-<table class="BrokerProfileSet mobjects">
- <tr>
- <th>Broker Profile</th>
- </tr>
-
- {items}
-</table>
-
-[BrokerProfileSet.item_html]
-<tr>
- <td>{item_link}</td>
-</tr>
-
-[BrokerProfileView.html]
-<div class="oblock">
- <h1>{title}</h1>
-
- <dl class="properties">
- <dt>Name</dt><dd>{name}</dd>
- </dl>
-
- <ul class="actions">
- <li><a href="">Edit This Profile</a></li>
- </ul>
-
- {tabs}
-</div>
-
-[ProfileConfigTab.html]
-<ul class="actions">
- <li><a href="">Add Property</a></li>
-</ul>
-
-<table class="mobjects">
- <tr>
- <th>Property</th>
- <th>Configured Value</th>
- <th></th>
- </tr>
-
- {items}
-</table>
-
-[ProfileConfigTab.item_html]
-<tr>
- <td>{item_name}</td>
- <td>{item_value}</td>
- <td><a class="action" href="">Edit</a></td>
-</tr>
-
-[ProfileBrokerTab.html]
-<ul class="actions">
- <li><a href="">Apply Profile Configuration to Brokers</a></li>
-</ul>
-
-<table class="mobjects">
- <tr>
- <th>Broker</th>
- <th>Configuration Status</th>
- <th></th>
- </tr>
-
- {items}
-</table>
-
-[ProfileBrokerTab.item_html]
-<tr>
- <td>{item_link}</td>
- <td><a href="{item_config_href}">{item_config_status}</a></td>
-</tr>
Modified: mgmt/notes/Todo
===================================================================
--- mgmt/notes/Todo 2007-10-24 15:31:43 UTC (rev 1155)
+++ mgmt/notes/Todo 2007-10-24 15:38:06 UTC (rev 1156)
@@ -107,3 +107,6 @@
* exch: link bindings, producers stats to respective views
* model: get rid of the old *_count stat fields and use the new ones
+
+ * Rename cluster to broker cluster, to avoid any future conflicts
+ with system clusters
More information about the rhmessaging-commits
mailing list