rhmessaging commits: r1118 - in store/trunk/cpp/lib: jrnl and 1 other directory.
by rhmessaging-commits@lists.jboss.org
Author: cctrieloff
Date: 2007-10-19 11:37:15 -0400 (Fri, 19 Oct 2007)
New Revision: 1118
Modified:
store/trunk/cpp/lib/BdbMessageStore.cpp
store/trunk/cpp/lib/TxnCtxt.h
store/trunk/cpp/lib/jrnl/data_tok.cpp
store/trunk/cpp/lib/jrnl/data_tok.hpp
store/trunk/cpp/lib/jrnl/jcntl.cpp
Log:
async mem clean up with intrusive_ptr
Modified: store/trunk/cpp/lib/BdbMessageStore.cpp
===================================================================
--- store/trunk/cpp/lib/BdbMessageStore.cpp 2007-10-19 15:16:19 UTC (rev 1117)
+++ store/trunk/cpp/lib/BdbMessageStore.cpp 2007-10-19 15:37:15 UTC (rev 1118)
@@ -30,6 +30,7 @@
#include "BindingDbt.h"
#include "IdPairDbt.h"
#include "StringDbt.h"
+#include <boost/intrusive_ptr.hpp>
using namespace rhm::bdbstore;
using namespace qpid::broker;
@@ -829,49 +830,39 @@
Buffer buffer(buff,size);
buffer.putLong(headerSize);
message.encode(buffer);
- //buffer.flip();
-
- DataTokenImpl* dtokp = NULL;
try {
if ( queue && usingJrnl()){
- dtokp = new DataTokenImpl;
- // deleted this in the callback...
+ boost::intrusive_ptr<DataTokenImpl> dtokp(new DataTokenImpl);
+ dtokp->ref();
dtokp->setSourceMessage (&message);
dtokp->set_rid(message.getPersistenceId()); // set the messageID into the Journal header (record-id)
-// unsigned aio_sleep_cnt = 0;
bool written = false;
while (!written)
{
JournalImpl* jc = static_cast<JournalImpl*>(queue->getExternalQueueStore());
rhm::journal::iores eres;
if (txn->getXid().empty()){
- eres = jc->enqueue_data_record(buff, size, size, dtokp, false);
+ eres = jc->enqueue_data_record(buff, size, size, dtokp.get(), false);
}else {
- eres = jc->enqueue_txn_data_record(buff, size, size, dtokp, txn->getXid(), false);
+ eres = jc->enqueue_txn_data_record(buff, size, size, dtokp.get(), txn->getXid(), false);
}
switch (eres)
{
case rhm::journal::RHM_IORES_SUCCESS:
- if (dtokp->wstate() >= DataTokenImpl::ENQ_SUBM)
+ if (dtokp.get()->wstate() >= DataTokenImpl::ENQ_SUBM)
written = true;
break;
case rhm::journal::RHM_IORES_AIO_WAIT:
-/* if (++aio_sleep_cnt >= MAX_AIO_SLEEPS){
- delete dtokp;
- THROW_STORE_EXCEPTION("Error storing message -- AIO timeout for: " + queue->getName());
- }*/
usleep(AIO_SLEEP_TIME); // TODO move sleep to wait for IO in get events
jc->get_wr_events();
break;
case rhm::journal::RHM_IORES_FULL:
- delete dtokp;
THROW_STORE_FULL_EXCEPTION("Error storing message -- Journal full :" + queue->getName());
break;
default:
- delete dtokp;
assert( "Store Error: Unexpected msg state");
}
}
@@ -886,7 +877,6 @@
}catch ( journal::jexception& e) {
std::string str;
// std::cout << "-------------" << e << std::endl;
- if (dtokp) delete dtokp;
THROW_STORE_EXCEPTION("Enqueue failed: " +e.to_string(str) );
}catch (DbException& e) {
THROW_STORE_EXCEPTION_2("Error storing message", e);
@@ -948,7 +938,8 @@
{
// unsigned aio_sleep_cnt = 0;
bool written = false;
- DataTokenImpl* ddtokp = new DataTokenImpl;
+ boost::intrusive_ptr<DataTokenImpl> ddtokp(new DataTokenImpl);
+ ddtokp->ref();
ddtokp->setSourceMessage (&msg);
ddtokp->set_rid(messageIdSequence.next());
ddtokp->set_dequeue_rid(msg.getPersistenceId());
@@ -965,13 +956,12 @@
rhm::journal::iores dres;
try {
if (tid.empty()){
- dres = jc->dequeue_data_record(ddtokp);
+ dres = jc->dequeue_data_record(ddtokp.get());
} else {
- dres = jc->dequeue_txn_data_record(ddtokp, tid);
+ dres = jc->dequeue_txn_data_record(ddtokp.get(), tid);
}
} catch (rhm::journal::jexception& e) {
std::string str;
- //delete ddtokp;
THROW_STORE_EXCEPTION("Error dequeuing message" + e.to_string(str));
}
switch (dres)
@@ -981,15 +971,10 @@
written = true;
break;
case rhm::journal::RHM_IORES_AIO_WAIT:
-/* if (++aio_sleep_cnt >= MAX_AIO_SLEEPS){
- delete ddtokp;
- THROW_STORE_EXCEPTION("Error dequeuing message -- AIO timeout for: " + queue.getName());
- } */
usleep(AIO_SLEEP_TIME); // TODO add sleep time to get events call as option
jc->get_wr_events();
break;
default:
- delete ddtokp;
assert( "Store Error: Unexpected msg state");
}
}
Modified: store/trunk/cpp/lib/TxnCtxt.h
===================================================================
--- store/trunk/cpp/lib/TxnCtxt.h 2007-10-19 15:16:19 UTC (rev 1117)
+++ store/trunk/cpp/lib/TxnCtxt.h 2007-10-19 15:37:15 UTC (rev 1118)
@@ -32,6 +32,7 @@
#include "JournalImpl.h"
#include "DataTokenImpl.h"
#include <boost/format.hpp>
+#include <boost/intrusive_ptr.hpp>
namespace rhm{
namespace bdbstore{
@@ -64,19 +65,19 @@
for (TxnCtxt::ipqdef::iterator i = impactedQueues.begin(); i != impactedQueues.end(); i++) {
JournalImpl* jc = static_cast<JournalImpl*>(*i);
if (jc && loggedtx) { /* if using journal */
- DataTokenImpl* dtokp = new DataTokenImpl;
+ boost::intrusive_ptr<DataTokenImpl> dtokp(new DataTokenImpl);
+ dtokp->ref();
dtokp->set_rid(loggedtx->next());
try{
if (commit)
- jc->txn_commit(dtokp, getXid());
+ jc->txn_commit(dtokp.get(), getXid());
else
{
- jc->txn_abort(dtokp, getXid());
+ jc->txn_abort(dtokp.get(), getXid());
}
} catch (rhm::journal::jexception& e) {
std::string str;
//std::cout << "Error commit" << e << std::endl;
- delete dtokp;
THROW_STORE_EXCEPTION("Error commit" + e.to_string(str));
}
Modified: store/trunk/cpp/lib/jrnl/data_tok.cpp
===================================================================
--- store/trunk/cpp/lib/jrnl/data_tok.cpp 2007-10-19 15:16:19 UTC (rev 1117)
+++ store/trunk/cpp/lib/jrnl/data_tok.cpp 2007-10-19 15:37:15 UTC (rev 1118)
@@ -33,6 +33,7 @@
#include <jrnl/data_tok.hpp>
#include <sstream>
+#include <iostream>
#include <jrnl/jerrno.hpp>
namespace rhm
@@ -40,11 +41,25 @@
namespace journal
{
+void intrusive_ptr_add_ref(data_tok* tok)
+{
+ tok->ref();
+}
+
+void intrusive_ptr_release(data_tok* tok)
+{
+ tok->unref();
+ if (tok->refcnt() == 0)
+ delete tok;
+}
+
+
// Static members
u_int64_t data_tok::_cnt = 0;
data_tok::data_tok():
+ _ref_cnt(0),
_wstate(NONE),
_rstate(UNREAD),
_dsize(0),
Modified: store/trunk/cpp/lib/jrnl/data_tok.hpp
===================================================================
--- store/trunk/cpp/lib/jrnl/data_tok.hpp 2007-10-19 15:16:19 UTC (rev 1117)
+++ store/trunk/cpp/lib/jrnl/data_tok.hpp 2007-10-19 15:37:15 UTC (rev 1118)
@@ -100,6 +100,7 @@
};
private:
+ size_t _ref_cnt; ///< Ref count for auto cleanup
pthread_mutex_t _mutex;
static u_int64_t _cnt;
u_int64_t _icnt;
@@ -118,6 +119,9 @@
data_tok();
~data_tok();
+ inline size_t refcnt(void) { return _ref_cnt;}
+ inline void ref(void) { _ref_cnt++; }
+ inline void unref(void) { _ref_cnt--; }
inline qpid::broker::PersistableMessage* getSourceMessage(){return _sourceMsg;}
inline void setSourceMessage(qpid::broker::PersistableMessage* msg) {_sourceMsg = msg;}
@@ -163,6 +167,10 @@
void reset();
};
+
+ void intrusive_ptr_add_ref(data_tok* r);
+ void intrusive_ptr_release(data_tok* r);
+
} // namespace journal
} // namespace rhm
Modified: store/trunk/cpp/lib/jrnl/jcntl.cpp
===================================================================
--- store/trunk/cpp/lib/jrnl/jcntl.cpp 2007-10-19 15:16:19 UTC (rev 1117)
+++ store/trunk/cpp/lib/jrnl/jcntl.cpp 2007-10-19 15:37:15 UTC (rev 1118)
@@ -604,7 +604,7 @@
}
}
this_dtok_list.pop_front();
- delete dtokp;
+ intrusive_ptr_release(dtokp);
}
}
@@ -628,7 +628,7 @@
}
}
this_dtok_list.pop_front();
- delete dtokp;
+ intrusive_ptr_release( dtokp);
}
}
18 years, 6 months
rhmessaging commits: r1117 - in mgmt: misc and 1 other directories.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2007-10-19 11:16:19 -0400 (Fri, 19 Oct 2007)
New Revision: 1117
Added:
mgmt/misc/boneyard.py
mgmt/misc/boneyard.strings
Modified:
mgmt/cumin/python/cumin/cluster.py
mgmt/cumin/python/cumin/cluster.strings
mgmt/cumin/python/cumin/page.py
mgmt/cumin/python/cumin/server.py
mgmt/cumin/python/cumin/server.strings
mgmt/cumin/python/cumin/servergroup.py
mgmt/notes/Todo
Log:
Moves out-of-service code to boneyard.py. Uses the updated server set
in the cluster and group views.
Modified: mgmt/cumin/python/cumin/cluster.py
===================================================================
--- mgmt/cumin/python/cumin/cluster.py 2007-10-19 14:40:44 UTC (rev 1116)
+++ mgmt/cumin/python/cumin/cluster.py 2007-10-19 15:16:19 UTC (rev 1117)
@@ -39,19 +39,6 @@
def render_server_status(self, session, server):
return random() < 0.25 and "red" or "green"
-class ClusterServerSet(ItemSet):
- def render_title(self, session, cluster):
- return "Servers (%i)" % len(cluster.server_items())
-
- def get_items(self, session, cluster):
- return sorted_by(cluster.server_items())
-
- def render_item_link(self, session, server):
- branch = session.branch()
- self.page().show_server(branch, server).show_view(branch)
-
- return mlink(branch.marshal(), "Server", server.name)
-
class ClusterFrame(CuminFrame):
def __init__(self, app, name):
super(ClusterFrame, self).__init__(app, name)
@@ -90,9 +77,9 @@
self.tabs = TabSet(app, "tabs")
self.add_child(self.tabs)
- self.tabs.add_tab(self.ServerTab(app, "servers"))
- self.tabs.add_tab(self.VirtualHostTab(app, "vhosts"))
- self.tabs.add_tab(self.StatsTab(app, "stats"))
+ self.tabs.add_tab(self.ClusterServerTab(app, "servers"))
+ self.tabs.add_tab(self.ClusterVirtualHostTab(app, "vhosts"))
+ self.tabs.add_tab(self.ClusterStatsTab(app, "stats"))
def render_title(self, session, cluster):
return "Cluster '%s'" % cluster.name
@@ -100,65 +87,20 @@
def render_name(self, session, cluster):
return cluster.name
- class ServerTab(ClusterServerSet):
- pass
+ class ClusterServerTab(ServerSet):
+ def render_title(self, session, cluster):
+ return "Servers (%i)" % len(cluster.server_items())
- class VirtualHostTab(VirtualHostSet):
+ def get_items(self, session, cluster):
+ return sorted_by(cluster.server_items())
+
+ class ClusterVirtualHostTab(VirtualHostSet):
def render_title(self, session, cluster):
return "Functional Hosts (%i)" % len(cluster.virtual_host_items())
def get_items(self, session, cluster):
return sorted_by(cluster.virtual_host_items())
- class StatsTab(Widget):
+ class ClusterStatsTab(Widget):
def render_title(self, session, cluster):
return "Statistics"
-
-class ClusterBrowser(ItemSet):
- def __init__(self, app, name):
- super(ClusterBrowser, self).__init__(app, name)
-
- self.param = ClusterParameter(app, "cluster")
- self.add_parameter(self.param)
-
- self.view = ClusterView(app, "view")
- self.add_child(self.view)
-
- def get_items(self, session, model):
- return sorted_by(model.get_clusters())
-
- def render_item_link(self, session, cluster):
- class_ = self.param.get(session) is cluster and "selected"
-
- branch = session.branch()
- self.param.set(branch, cluster)
- return link(branch.marshal(), cluster.name, class_)
-
- def render_add_cluster_href(self, session, cluster):
- branch = session.branch()
- #self.page().show_cluster_add(branch)
- return branch.marshal()
-
- def render_edit_cluster_href(self, session, cluster):
- if cluster:
- branch = session.branch()
- #self.page().show_cluster_edit(branch, cluster)
- return branch.marshal()
-
- def render_remove_cluster_href(self, session, cluster):
- if cluster:
- branch = session.branch()
- return branch.marshal()
-
- def render_view(self, session, model):
- object = self.param.get(session)
-
- if object:
- html = self.view.render(session, object)
- else:
- html = self.render_none(session, model)
-
- return html
-
- def render_none(self, session, model):
- return none()
Modified: mgmt/cumin/python/cumin/cluster.strings
===================================================================
--- mgmt/cumin/python/cumin/cluster.strings 2007-10-19 14:40:44 UTC (rev 1116)
+++ mgmt/cumin/python/cumin/cluster.strings 2007-10-19 15:16:19 UTC (rev 1117)
@@ -55,29 +55,31 @@
{tabs}
-[ServerTab.html]
+[ClusterServerTab.html]
<ul class="actions">
- <li><a href="">Add Server</a></li>
+ <li><a href="{add_server_href}">Add Server</a></li>
</ul>
<table class="mobjects">
<tr>
<th>Server</th>
+ <th>Profile</th>
<th>Status</th>
- <th></th>
+ <th>Load</th>
</tr>
{items}
</table>
-[ServerTab.item_html]
+[ClusterServerTab.item_html]
<tr>
<td>{item_link}</td>
- <td>0 errors, 0 warnings</td>
- <td><a class="action" href="">Remove</a></td>
+ <td>{item_profile_link}</td>
+ <td>{item_status}</td>
+ <td>{item_load}</td>
</tr>
-[VirtualHostTab.html]
+[ClusterVirtualHostTab.html]
<ul class="actions">
<li><a href="">Add Functional Host</a></li>
</ul>
@@ -92,56 +94,9 @@
{items}
</table>
-[VirtualHostTab.item_html]
+[ClusterVirtualHostTab.item_html]
<tr>
<td>{item_link}</td>
<td>10 queues, 5 exchanges</td>
<td><a class="action" href="">Remove</a></td>
</tr>
-
-[ConfigTab.html]
-<ul class="actions">
- <li><a href="">Edit This Configuration</a></li>
- <li><a href="">Apply to All Cluster Servers</a></li>
-</ul>
-
-<pre class="code">
-server "$SERVER" {
- include "/usr/local/cluster/common.conf";
-
- vhost "default" {
- store: bdb;
- transaction: journal;
- }
-
- vhost "devel" {
- max-queue-depth: 10000;
- store: memory;
- transaction: memory;
- }
-
- vhost "test" {
- }
-}
-</pre>
-
-[ClusterBrowser.html]
-<table class="browser">
- <tr>
- <td class="nav">
- <ul class="slist">{items}</ul>
-
- <ul class="actions">
- <li><a href="{add_cluster_href}">Add Cluster</a></li>
- <li><a href="{edit_cluster_href}">Edit Cluster</a></li>
- <li><a href="{remove_cluster_href}">Remove Cluster</a></li>
- </ul>
- </td>
- <td class="view">
- {view}
- </td>
- </tr>
-</div>
-
-[ClusterBrowser.item_html]
-<li>{item_link}</li>
Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py 2007-10-19 14:40:44 UTC (rev 1116)
+++ mgmt/cumin/python/cumin/page.py 2007-10-19 15:16:19 UTC (rev 1117)
@@ -2,8 +2,9 @@
from wooly.widgets import *
from wooly.resources import *
+from server import *
+from servergroup import *
from serverprofile import *
-from server import *
from cluster import *
from widgets import *
from util import *
Modified: mgmt/cumin/python/cumin/server.py
===================================================================
--- mgmt/cumin/python/cumin/server.py 2007-10-19 14:40:44 UTC (rev 1116)
+++ mgmt/cumin/python/cumin/server.py 2007-10-19 15:16:19 UTC (rev 1117)
@@ -1,7 +1,6 @@
from wooly import *
from wooly.widgets import *
-from servergroup import *
from configproperty import *
from virtualhost import *
from widgets import *
@@ -264,98 +263,6 @@
def render_title(self, session, server):
return "Log Messages"
-class OldServerBrowser(Widget):
- def __init__(self, app, name):
- super(OldServerBrowser, self).__init__(app, name)
-
- self.param = ServerGroupParameter(app, "group")
- self.add_parameter(self.param)
-
- self.groups = self.BrowserGroups(app, "groups")
- self.add_child(self.groups)
-
- self.servers = self.BrowserServers(app, "servers")
- self.add_child(self.servers)
-
- def get_object(self, session, object):
- return self.param.get(session)
-
- def set_object(self, session, group):
- return self.param.set(session, group)
-
- def render_title(self, session, group):
- return "Servers (%i)" % len(self.app.model.get_servers())
-
- def render_all_servers_link(self, session, group):
- class_ = group is None and "selected"
-
- branch = session.branch()
- self.set_object(branch, None)
- return link(branch.marshal(), "All Servers", class_)
-
- def render_add_group_href(self, session, group):
- branch = session.branch()
- self.page().show_server_group_add(branch)
- return branch.marshal()
-
- def render_edit_group_href(self, session, group):
- if group:
- branch = session.branch()
- self.page().show_server_group_edit(branch, group)
- return branch.marshal()
-
- def render_remove_group_href(self, session, group):
- if group:
- branch = session.branch()
- return branch.marshal()
-
- def render_groups(self, session, group):
- return self.groups.render(session, self.app.model)
-
- class BrowserGroups(Widget):
- def __init__(self, app, name):
- super(ServerBrowser.BrowserGroups, self).__init__(app, name)
-
- self.type_tmpl = Template(self, "type_html")
- self.group_tmpl = Template(self, "group_html")
-
- def get_items(self, session, model):
- return sorted_by(model.get_server_group_types())
-
- def render_types(self, session, model):
- writer = Writer()
-
- for type in self.get_items(session, model):
- self.type_tmpl.render(session, type, writer)
-
- return writer.to_string()
-
- def render_type_name(self, session, type):
- return type.name
-
- def render_groups(self, session, type):
- writer = Writer()
-
- for group in sorted_by(type.server_group_items()):
- self.group_tmpl.render(session, group, writer)
-
- return writer.to_string()
-
- def render_group_link(self, session, group):
- branch = session.branch()
- self.parent.param.set(branch, group)
-
- selected = self.parent.param.get(session) is group
-
- return mlink(branch.marshal(), "ServerGroup", group.name, selected)
-
- class BrowserServers(ServerSet):
- def get_items(self, session, group):
- if group:
- return sorted_by(group.server_items())
- else:
- return sorted_by(self.app.model.get_servers())
-
class ServerBrowser(Widget):
def __init__(self, app, name):
super(ServerBrowser, self).__init__(app, name)
@@ -384,6 +291,7 @@
cluster = self.parent.cluster.get(session)
for server in model.get_servers():
+ # XXX simplify with a loop
if group and group not in server.server_group_items():
servers.remove(server)
Modified: mgmt/cumin/python/cumin/server.strings
===================================================================
--- mgmt/cumin/python/cumin/server.strings 2007-10-19 14:40:44 UTC (rev 1116)
+++ mgmt/cumin/python/cumin/server.strings 2007-10-19 15:16:19 UTC (rev 1117)
@@ -116,68 +116,6 @@
{tabs}
</div>
-[ServerBrowser.css]
-.ServerBrowser.groups {
- float: left;
- width: 20%;
-}
-
-.ServerBrowser.groups ul {
- margin: 0 0 1em 0;
-}
-
-.ServerBrowser.groups ul.groups a:before {
- content: url(resource?name=radio-button.png);
- vertical-align: -10%;
- margin: 0 0.5em 0 0;
-}
-
-.ServerBrowser.groups ul.groups a.selected:before {
- content: url(resource?name=radio-button-checked.png);
-}
-
-.ServerBrowser.groups h2 {
- color: #564979;
- font-size: 0.9em;
- border-bottom: 1px dotted #ddd;
- width: 80%;
- margin: 0 0 0.5em 0;
-}
-
-.ServerBrowser.servers {
- width: 80%;
-}
-
-[OldServerBrowser.html]
-<div class="ServerBrowser groups">
- <ul class="groups"><li>{all_servers_link}</li></ul>
-
- {groups}
-
- <ul class="actions">
- <li><a href="{add_group_href}">Add Group</a></li>
- <li><a href="{edit_group_href}">Edit Group</a></li>
- <li><a href="{remove_group_href}">Remove Group</a></li>
- </ul>
-</div>
-<div class="ServerBrowser servers">
- <ul class="actions">
- <li><a href="">Register New Servers</a></li>
- </ul>
-
- {servers}
-</div>
-
-[BrowserGroups.html]
-{types}
-
-[BrowserGroups.type_html]
-<h2>{type_name}</h2>
-<ul class="groups">{groups}</ul>
-
-[BrowserGroups.group_html]
-<li>{group_link}</li>
-
[ServerBrowser.html]
<table class="browser">
<tr>
Modified: mgmt/cumin/python/cumin/servergroup.py
===================================================================
--- mgmt/cumin/python/cumin/servergroup.py 2007-10-19 14:40:44 UTC (rev 1116)
+++ mgmt/cumin/python/cumin/servergroup.py 2007-10-19 15:16:19 UTC (rev 1117)
@@ -1,6 +1,7 @@
from wooly import *
from wooly.widgets import *
+from server import ServerSet
from model import *
from widgets import *
from parameters import *
@@ -68,7 +69,10 @@
self.page().show_server_group(branch, group).show_edit(branch)
return branch.marshal()
- class GroupServerTab(Widget):
+ class GroupServerTab(ServerSet):
+ def get_items(self, session, group):
+ return sorted_by(group.server_items())
+
def render_title(self, session, group):
return "Servers (%i)" % len(group.server_items())
Added: mgmt/misc/boneyard.py
===================================================================
--- mgmt/misc/boneyard.py (rev 0)
+++ mgmt/misc/boneyard.py 2007-10-19 15:16:19 UTC (rev 1117)
@@ -0,0 +1,140 @@
+class ServerBrowser(Widget):
+ def __init__(self, app, name):
+ super(ServerBrowser, self).__init__(app, name)
+
+ self.param = ServerGroupParameter(app, "group")
+ self.add_parameter(self.param)
+
+ self.groups = self.BrowserGroups(app, "groups")
+ self.add_child(self.groups)
+
+ self.servers = self.BrowserServers(app, "servers")
+ self.add_child(self.servers)
+
+ def get_object(self, session, object):
+ return self.param.get(session)
+
+ def set_object(self, session, group):
+ return self.param.set(session, group)
+
+ def render_title(self, session, group):
+ return "Servers (%i)" % len(self.app.model.get_servers())
+
+ def render_all_servers_link(self, session, group):
+ class_ = group is None and "selected"
+
+ branch = session.branch()
+ self.set_object(branch, None)
+ return link(branch.marshal(), "All Servers", class_)
+
+ def render_add_group_href(self, session, group):
+ branch = session.branch()
+ self.page().show_server_group_add(branch)
+ return branch.marshal()
+
+ def render_edit_group_href(self, session, group):
+ if group:
+ branch = session.branch()
+ self.page().show_server_group_edit(branch, group)
+ return branch.marshal()
+
+ def render_remove_group_href(self, session, group):
+ if group:
+ branch = session.branch()
+ return branch.marshal()
+
+ def render_groups(self, session, group):
+ return self.groups.render(session, self.app.model)
+
+ class BrowserGroups(Widget):
+ def __init__(self, app, name):
+ super(ServerBrowser.BrowserGroups, self).__init__(app, name)
+
+ self.type_tmpl = Template(self, "type_html")
+ self.group_tmpl = Template(self, "group_html")
+
+ def get_items(self, session, model):
+ return sorted_by(model.get_server_group_types())
+
+ def render_types(self, session, model):
+ writer = Writer()
+
+ for type in self.get_items(session, model):
+ self.type_tmpl.render(session, type, writer)
+
+ return writer.to_string()
+
+ def render_type_name(self, session, type):
+ return type.name
+
+ def render_groups(self, session, type):
+ writer = Writer()
+
+ for group in sorted_by(type.server_group_items()):
+ self.group_tmpl.render(session, group, writer)
+
+ return writer.to_string()
+
+ def render_group_link(self, session, group):
+ branch = session.branch()
+ self.parent.param.set(branch, group)
+
+ selected = self.parent.param.get(session) is group
+
+ return mlink(branch.marshal(), "ServerGroup", group.name, selected)
+
+ class BrowserServers(ServerSet):
+ def get_items(self, session, group):
+ if group:
+ return sorted_by(group.server_items())
+ else:
+ return sorted_by(self.app.model.get_servers())
+
+class ClusterBrowser(ItemSet):
+ def __init__(self, app, name):
+ super(ClusterBrowser, self).__init__(app, name)
+
+ self.param = ClusterParameter(app, "cluster")
+ self.add_parameter(self.param)
+
+ self.view = ClusterView(app, "view")
+ self.add_child(self.view)
+
+ def get_items(self, session, model):
+ return sorted_by(model.get_clusters())
+
+ def render_item_link(self, session, cluster):
+ class_ = self.param.get(session) is cluster and "selected"
+
+ branch = session.branch()
+ self.param.set(branch, cluster)
+ return link(branch.marshal(), cluster.name, class_)
+
+ def render_add_cluster_href(self, session, cluster):
+ branch = session.branch()
+ #self.page().show_cluster_add(branch)
+ return branch.marshal()
+
+ def render_edit_cluster_href(self, session, cluster):
+ if cluster:
+ branch = session.branch()
+ #self.page().show_cluster_edit(branch, cluster)
+ return branch.marshal()
+
+ def render_remove_cluster_href(self, session, cluster):
+ if cluster:
+ branch = session.branch()
+ return branch.marshal()
+
+ def render_view(self, session, model):
+ object = self.param.get(session)
+
+ if object:
+ html = self.view.render(session, object)
+ else:
+ html = self.render_none(session, model)
+
+ return html
+
+ def render_none(self, session, model):
+ return none()
Added: mgmt/misc/boneyard.strings
===================================================================
--- mgmt/misc/boneyard.strings (rev 0)
+++ mgmt/misc/boneyard.strings 2007-10-19 15:16:19 UTC (rev 1117)
@@ -0,0 +1,82 @@
+[ServerBrowser.css]
+.ServerBrowser.groups {
+ float: left;
+ width: 20%;
+}
+
+.ServerBrowser.groups ul {
+ margin: 0 0 1em 0;
+}
+
+.ServerBrowser.groups ul.groups a:before {
+ content: url(resource?name=radio-button.png);
+ vertical-align: -10%;
+ margin: 0 0.5em 0 0;
+}
+
+.ServerBrowser.groups ul.groups a.selected:before {
+ content: url(resource?name=radio-button-checked.png);
+}
+
+.ServerBrowser.groups h2 {
+ color: #564979;
+ font-size: 0.9em;
+ border-bottom: 1px dotted #ddd;
+ width: 80%;
+ margin: 0 0 0.5em 0;
+}
+
+.ServerBrowser.servers {
+ width: 80%;
+}
+
+[ServerBrowser.html]
+<div class="ServerBrowser groups">
+ <ul class="groups"><li>{all_servers_link}</li></ul>
+
+ {groups}
+
+ <ul class="actions">
+ <li><a href="{add_group_href}">Add Group</a></li>
+ <li><a href="{edit_group_href}">Edit Group</a></li>
+ <li><a href="{remove_group_href}">Remove Group</a></li>
+ </ul>
+</div>
+<div class="ServerBrowser servers">
+ <ul class="actions">
+ <li><a href="">Register New Servers</a></li>
+ </ul>
+
+ {servers}
+</div>
+
+[BrowserGroups.html]
+{types}
+
+[BrowserGroups.type_html]
+<h2>{type_name}</h2>
+<ul class="groups">{groups}</ul>
+
+[BrowserGroups.group_html]
+<li>{group_link}</li>
+
+[ClusterBrowser.html]
+<table class="browser">
+ <tr>
+ <td class="nav">
+ <ul class="slist">{items}</ul>
+
+ <ul class="actions">
+ <li><a href="{add_cluster_href}">Add Cluster</a></li>
+ <li><a href="{edit_cluster_href}">Edit Cluster</a></li>
+ <li><a href="{remove_cluster_href}">Remove Cluster</a></li>
+ </ul>
+ </td>
+ <td class="view">
+ {view}
+ </td>
+ </tr>
+</div>
+
+[ClusterBrowser.item_html]
+<li>{item_link}</li>
Modified: mgmt/notes/Todo
===================================================================
--- mgmt/notes/Todo 2007-10-19 14:40:44 UTC (rev 1116)
+++ mgmt/notes/Todo 2007-10-19 15:16:19 UTC (rev 1117)
@@ -101,3 +101,5 @@
* Make the groups browser use common code with the cluster browser
* Rename ServerGroupType to ServerGroupCategory
+
+ * Add a frame() accessor to Widget
\ No newline at end of file
18 years, 6 months
rhmessaging commits: r1116 - mgmt/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2007-10-19 10:40:44 -0400 (Fri, 19 Oct 2007)
New Revision: 1116
Modified:
mgmt/cumin/python/cumin/page.py
mgmt/cumin/python/cumin/page.strings
mgmt/cumin/python/cumin/servergroup.py
mgmt/cumin/python/cumin/servergroup.strings
mgmt/cumin/python/cumin/widgets.py
Log:
Fills out server group forms after the change to the proposed layout.
Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py 2007-10-19 13:43:30 UTC (rev 1115)
+++ mgmt/cumin/python/cumin/page.py 2007-10-19 14:40:44 UTC (rev 1116)
@@ -37,9 +37,6 @@
self.group_add = ServerGroupAdd(app, "groupadd")
self.add_mode(self.group_add)
- self.group_edit = ServerGroupEdit(app, "groupedit")
- self.add_mode(self.group_edit)
-
self.profile = ServerProfileFrame(app, "profile")
self.add_mode(self.profile)
@@ -77,31 +74,26 @@
frame = self.show_mode(session, self.server)
frame.set_object(session, server)
- return self.page().set_current_frame(session, frame)
+ return self.set_current_frame(session, frame)
def show_server_group(self, session, group):
frame = self.show_mode(session, self.group)
frame.set_object(session, group)
- return self.page().set_current_frame(session, frame)
+ return self.set_current_frame(session, frame)
def show_server_group_add(self, session):
frame = self.show_mode(session, self.group_add)
- return self.page().set_current_frame(session, frame)
+ return self.set_current_frame(session, frame)
- def show_server_group_edit(self, session, group):
- frame = self.show_mode(session, self.group_edit)
- frame.set_object(session, group)
- return self.page().set_current_frame(session, frame)
-
def show_cluster(self, session, cluster):
frame = self.show_mode(session, self.cluster)
frame.set_object(session, cluster)
- return self.page().set_current_frame(session, frame)
+ return self.set_current_frame(session, frame)
def show_server_profile(self, session, profile):
frame = self.show_mode(session, self.profile)
frame.set_object(session, profile)
- return self.page().set_current_frame(session, frame)
+ return self.set_current_frame(session, frame)
def show_virtual_host(self, session, vhost):
server = vhost.get_server()
@@ -116,7 +108,7 @@
frame = frame.show_virtual_host(session, vhost)
- return self.page().set_current_frame(session, frame)
+ return self.set_current_frame(session, frame)
def show_queue(self, session, queue):
frame = self.show_virtual_host(session, queue.virtual_host)
@@ -186,6 +178,11 @@
def render_title(self, session, model):
return "Server Groups (%i)" % len(model.get_server_groups())
+ def render_group_add_href(self, session, model):
+ branch = session.branch()
+ self.page().show_server_group_add(branch)
+ return branch.marshal()
+
class ServerProfileTab(ServerProfileSet):
def render_title(self, session, model):
return "Server Profiles (%i)" % len(model.get_server_profiles())
Modified: mgmt/cumin/python/cumin/page.strings
===================================================================
--- mgmt/cumin/python/cumin/page.strings 2007-10-19 13:43:30 UTC (rev 1115)
+++ mgmt/cumin/python/cumin/page.strings 2007-10-19 14:40:44 UTC (rev 1116)
@@ -253,6 +253,10 @@
background-color: #564979;
}
+form.mform .head h1 {
+ margin: 0;
+}
+
form.mform .foot {
text-align: right;
border-top: 1px solid #ddd;
@@ -429,7 +433,7 @@
[ServerGroupTab.html]
<ul class="actions">
- <li><a href="">Add Server Group</a></li>
+ <li><a href="{group_add_href}">Add Server Group</a></li>
</ul>
<table class="mobjects">
Modified: mgmt/cumin/python/cumin/servergroup.py
===================================================================
--- mgmt/cumin/python/cumin/servergroup.py 2007-10-19 13:43:30 UTC (rev 1115)
+++ mgmt/cumin/python/cumin/servergroup.py 2007-10-19 14:40:44 UTC (rev 1116)
@@ -1,6 +1,7 @@
from wooly import *
from wooly.widgets import *
+from model import *
from widgets import *
from parameters import *
from util import *
@@ -35,19 +36,15 @@
self.view = ServerGroupView(app, "view")
self.add_child(self.view)
+ self.set_view_mode(self.view)
self.edit = ServerGroupEdit(app, "edit")
self.add_child(self.edit)
+ self.set_edit_mode(self.edit)
- def show_view(self, session):
- return self.show_mode(session, self.view)
-
def render_title(self, session, group):
return "Server Group '%s'" % group.name
- def render_href(self, session, group):
- return self.page().server_group_href(session, group)
-
class ServerGroupView(Widget):
def __init__(self, app, name):
super(ServerGroupView, self).__init__(app, name)
@@ -66,6 +63,11 @@
def render_category(self, session, group):
return group.get_type().name
+ def render_edit_href(self, session, group):
+ branch = session.branch()
+ self.page().show_server_group(branch, group).show_edit(branch)
+ return branch.marshal()
+
class GroupServerTab(Widget):
def render_title(self, session, group):
return "Servers (%i)" % len(group.server_items())
@@ -77,12 +79,7 @@
self.group_name = TextInput(app, "name", self)
self.add_child(self.group_name)
- def process_submit(self, session, object):
- if object is self.app.model:
- group = ServerGroup(object)
- else:
- group = object
-
+ def process_group(self, session, group):
group.lock()
try:
group.name = self.group_name.get(session)
@@ -91,31 +88,31 @@
group.unlock()
branch = session.branch()
- self.page().show_server_group(branch, group)
+ self.page().show_server_group(branch, group).show_view(branch)
session.set_redirect(branch.marshal())
+class ServerGroupAdd(ServerGroupForm, Frame):
def process_cancel(self, session, model):
branch = session.branch()
self.page().show_view(branch)
session.set_redirect(branch.marshal())
-
-class ServerGroupAdd(ServerGroupForm, Frame):
+
+ def process_submit(self, session, model):
+ group = ServerGroup(model)
+ self.process_group(session, group)
+
def render_title(self, session, model):
return "Add Group"
class ServerGroupEdit(ServerGroupForm, Frame):
- def __init__(self, app, name):
- super(ServerGroupEdit, self).__init__(app, name)
+ def process_cancel(self, session, group):
+ branch = session.branch()
+ self.parent.show_view(branch)
+ session.set_redirect(branch.marshal())
- self.param = ServerGroupParameter(app, "id")
- self.add_parameter(self.param)
-
- def get_object(self, session, object):
- return self.param.get(session)
+ def process_submit(self, session, group):
+ self.process_group(session, group)
- def set_object(self, session, group):
- self.param.set(session, group)
-
def process_display(self, session, group):
self.group_name.set(session, group.name)
Modified: mgmt/cumin/python/cumin/servergroup.strings
===================================================================
--- mgmt/cumin/python/cumin/servergroup.strings 2007-10-19 13:43:30 UTC (rev 1115)
+++ mgmt/cumin/python/cumin/servergroup.strings 2007-10-19 14:40:44 UTC (rev 1116)
@@ -31,7 +31,7 @@
</dl>
<ul class="actions">
- <li><a href="">Edit This Server Group</a></li>
+ <li><a href="{edit_href}">Edit This Server Group</a></li>
<li><a href="">Remove This Server Group</a></li>
</ul>
Modified: mgmt/cumin/python/cumin/widgets.py
===================================================================
--- mgmt/cumin/python/cumin/widgets.py 2007-10-19 13:43:30 UTC (rev 1115)
+++ mgmt/cumin/python/cumin/widgets.py 2007-10-19 14:40:44 UTC (rev 1116)
@@ -19,6 +19,8 @@
super(CuminFrame, self).__init__(app, name)
self.__param = None
+ self.__view_mode = None
+ self.__edit_mode = None
def set_object_parameter(self, param):
self.__param = param
@@ -29,15 +31,24 @@
def set_object(self, session, object):
return self.__param.set(session, object)
+ def set_view_mode(self, mode):
+ self.__view_mode = mode
+
def show_view(self, session):
- pass
+ self.show_mode(session, self.__view_mode)
+ def set_edit_mode(self, mode):
+ self.__edit_mode = mode
+
+ def show_edit(self, session):
+ self.show_mode(session, self.__edit_mode)
+
def do_process(self, session, object):
self.page().get_frames(session).append(self)
super(CuminFrame, self).do_process(session, object)
- def render_href(self, session, vhost):
+ def render_href(self, session, object):
branch = session.branch()
self.page().set_current_frame(branch, self)
self.show_view(branch)
18 years, 6 months
rhmessaging commits: r1115 - mgmt/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2007-10-19 09:43:30 -0400 (Fri, 19 Oct 2007)
New Revision: 1115
Modified:
mgmt/cumin/python/cumin/page.py
mgmt/cumin/python/cumin/page.strings
mgmt/cumin/python/cumin/server.py
mgmt/cumin/python/cumin/server.strings
Log:
Blows away the discussed vs. proposed top-level switch in favor of the
proposed views. Removes some of the older variants of tabs.
Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py 2007-10-19 01:34:08 UTC (rev 1114)
+++ mgmt/cumin/python/cumin/page.py 2007-10-19 13:43:30 UTC (rev 1115)
@@ -165,33 +165,11 @@
def __init__(self, app, name):
super(MainView, self).__init__(app, name)
- self.tabs = self.DiscussedTabs(app, "tabs")
- self.add_tab(self.tabs)
+ self.add_tab(self.ServerTab(app, "servers"))
+ self.add_tab(self.ServerGroupTab(app, "groups"))
+ self.add_tab(self.ServerProfileTab(app, "profiles"))
+ self.add_tab(self.ClusterTab(app, "clusters"))
- self.servers = self.ServerTab(app, "servers")
- self.tabs.add_tab(self.servers)
-
- self.tabs.add_tab(self.ClusterTab(app, "clusters"))
- self.tabs.add_tab(self.ServerProfileTab(app, "profiles"))
-
- # Proposed
-
- self.proposed = self.ProposedTabs(app, "proposed")
- self.add_tab(self.proposed)
-
- self.proposed.add_tab(self.PServerTab(app, "servers"))
- self.proposed.add_tab(self.ServerGroupTab(app, "groups"))
- self.proposed.add_tab(self.ServerProfileTab(app, "profiles"))
- self.proposed.add_tab(self.PClusterTab(app, "clusters"))
-
- class DiscussedTabs(TabSet):
- def render_title(self, session, object):
- return "Discussed"
-
- class ProposedTabs(TabSet):
- def render_title(self, session, object):
- return "Proposed"
-
def show_server_group(self, session, group):
mode = self.show_mode(session, self.servers)
mode.set_object(session, group)
@@ -204,22 +182,14 @@
def render_title(self, session, model):
return "Servers (%i)" % len(model.get_servers())
- class ClusterTab(ClusterBrowser):
+ class ServerGroupTab(ServerGroupSet):
def render_title(self, session, model):
- return "Clusters (%i)" % len(model.get_clusters())
+ return "Server Groups (%i)" % len(model.get_server_groups())
class ServerProfileTab(ServerProfileSet):
def render_title(self, session, model):
return "Server Profiles (%i)" % len(model.get_server_profiles())
- class ServerGroupTab(ServerGroupSet):
+ class ClusterTab(ClusterSet):
def render_title(self, session, model):
- return "Server Groups (%i)" % len(model.get_server_groups())
-
- class PServerTab(PServerBrowser):
- def render_title(self, session, model):
- return "Servers (%i)" % len(model.get_servers())
-
- class PClusterTab(ClusterSet):
- def render_title(self, session, model):
return "Clusters (%i)" % len(model.get_clusters())
Modified: mgmt/cumin/python/cumin/page.strings
===================================================================
--- mgmt/cumin/python/cumin/page.strings 2007-10-19 01:34:08 UTC (rev 1114)
+++ mgmt/cumin/python/cumin/page.strings 2007-10-19 13:43:30 UTC (rev 1115)
@@ -423,8 +423,8 @@
<div class="oblock">
<h1>{title}</h1>
- <ul class="radiotabs tabs">{tabs}</ul>
- <div class="radiotabs mode">{mode}</div>
+ <ul class="TabSet tabs">{tabs}</ul>
+ <div class="TabSet mode">{mode}</div>
</div>
[ServerGroupTab.html]
@@ -455,7 +455,7 @@
{items}
</table>
-[PClusterTab.html]
+[ClusterTab.html]
<ul class="actions">
<li><a href="">Add Cluster</a></li>
</ul>
Modified: mgmt/cumin/python/cumin/server.py
===================================================================
--- mgmt/cumin/python/cumin/server.py 2007-10-19 01:34:08 UTC (rev 1114)
+++ mgmt/cumin/python/cumin/server.py 2007-10-19 13:43:30 UTC (rev 1115)
@@ -155,8 +155,6 @@
else:
raise Exception()
- print "yoyo", source, prop.value
-
self.process_cancel(session, prop)
def process_display(self, session, prop):
@@ -266,9 +264,9 @@
def render_title(self, session, server):
return "Log Messages"
-class ServerBrowser(Widget):
+class OldServerBrowser(Widget):
def __init__(self, app, name):
- super(ServerBrowser, self).__init__(app, name)
+ super(OldServerBrowser, self).__init__(app, name)
self.param = ServerGroupParameter(app, "group")
self.add_parameter(self.param)
@@ -358,9 +356,9 @@
else:
return sorted_by(self.app.model.get_servers())
-class PServerBrowser(Widget):
+class ServerBrowser(Widget):
def __init__(self, app, name):
- super(PServerBrowser, self).__init__(app, name)
+ super(ServerBrowser, self).__init__(app, name)
self.group_tmpl = Template(self, "group_html")
self.profile_tmpl = Template(self, "profile_html")
@@ -454,4 +452,3 @@
class_ = param.get(session) is object and "selected"
return link(href, name, class_)
-
Modified: mgmt/cumin/python/cumin/server.strings
===================================================================
--- mgmt/cumin/python/cumin/server.strings 2007-10-19 01:34:08 UTC (rev 1114)
+++ mgmt/cumin/python/cumin/server.strings 2007-10-19 13:43:30 UTC (rev 1115)
@@ -148,7 +148,7 @@
width: 80%;
}
-[ServerBrowser.html]
+[OldServerBrowser.html]
<div class="ServerBrowser groups">
<ul class="groups"><li>{all_servers_link}</li></ul>
@@ -178,10 +178,7 @@
[BrowserGroups.group_html]
<li>{group_link}</li>
-[PServerBrowser.css]
-
-
-[PServerBrowser.html]
+[ServerBrowser.html]
<table class="browser">
<tr>
<td class="nav">
@@ -205,13 +202,13 @@
</tr>
</div>
-[PServerBrowser.group_html]
+[ServerBrowser.group_html]
<li>{group_link}</li>
-[PServerBrowser.profile_html]
+[ServerBrowser.profile_html]
<li>{profile_link}</li>
-[PServerBrowser.cluster_html]
+[ServerBrowser.cluster_html]
<li>{cluster_link}</li>
[BrowserServers.html]
18 years, 6 months
rhmessaging commits: r1114 - store/trunk/cpp/lib.
by rhmessaging-commits@lists.jboss.org
Author: cctrieloff
Date: 2007-10-18 21:34:08 -0400 (Thu, 18 Oct 2007)
New Revision: 1114
Modified:
store/trunk/cpp/lib/BdbMessageStore.cpp
store/trunk/cpp/lib/BdbMessageStore.h
Log:
- add flush for async
- get config for dir + async from broker
Modified: store/trunk/cpp/lib/BdbMessageStore.cpp
===================================================================
--- store/trunk/cpp/lib/BdbMessageStore.cpp 2007-10-18 17:19:49 UTC (rev 1113)
+++ store/trunk/cpp/lib/BdbMessageStore.cpp 2007-10-19 01:34:08 UTC (rev 1114)
@@ -42,6 +42,7 @@
static const u_int8_t MESSAGE_MESSAGE = 1;
static const u_int8_t BASIC_MESSAGE = 2;
+bool BdbMessageStore::useAsync;
unsigned int TxnCtxt::count = 0;
@@ -54,12 +55,23 @@
bindingDb(&env, 0),
enqueueXidDb(&env, 0),
dequeueXidDb(&env, 0),
- prepareXidDb(&env, 0)
-
+ prepareXidDb(&env, 0),
+ isInit(false),
+ envPath(envpath)
+
{
+
+
+}
+
+void BdbMessageStore::init(const std::string& dir, const bool async)
+{
+ useAsync = async;
+ if (dir.size()>0) storeDir = dir;
+
TxnCtxt txn;
try {
- env.open(envpath, DB_THREAD | DB_CREATE | DB_INIT_TXN | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_USE_ENVIRON, 0);
+ env.open(envPath, DB_THREAD | DB_CREATE | DB_INIT_TXN | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_USE_ENVIRON, 0);
txn.begin(env);
open(queueDb, txn.get(), "queues.db", false);
@@ -78,11 +90,13 @@
txn.abort();
throw e;
}
+
+ isInit = true;
}
void BdbMessageStore::open(Db& db, DbTxn* txn, const char* file, bool dupKey)
{
- if(dupKey) db.set_flags(DB_DUPSORT);
+ if(dupKey) db.set_flags(DB_DUPSORT);
db.open(txn, file, 0, DB_BTREE, DB_CREATE | DB_THREAD, 0);
dbs.push_back(&db);
}
@@ -103,6 +117,7 @@
void BdbMessageStore::truncate()
{
+ checkInit();
DbTxn* txn;
env.txn_begin(0, &txn, 0);
u_int32_t count;
@@ -125,6 +140,7 @@
void BdbMessageStore::create(PersistableQueue& queue)
{
+ checkInit();
if (queue.getPersistenceId()) {
THROW_STORE_EXCEPTION("Queue already created: " + queue.getName());
}
@@ -151,6 +167,7 @@
void BdbMessageStore::destroy(PersistableQueue& queue)
{
+ checkInit();
destroy(queueDb, queue);
qpid::broker::ExternalQueueStore* eqs = queue.getExternalQueueStore();
if (eqs)
@@ -164,6 +181,7 @@
void BdbMessageStore::create(const PersistableExchange& exchange)
{
+ checkInit();
if (exchange.getPersistenceId()) {
THROW_STORE_EXCEPTION("Exchange already created: " + exchange.getName());
}
@@ -179,6 +197,7 @@
void BdbMessageStore::destroy(const PersistableExchange& exchange)
{
+ checkInit();
destroy(exchangeDb, exchange);
//need to also delete bindings
IdDbt key(exchange.getPersistenceId());
@@ -210,6 +229,7 @@
void BdbMessageStore::bind(const PersistableExchange& e, const PersistableQueue& q,
const std::string& k, const FieldTable& a)
{
+ checkInit();
IdDbt key(e.getPersistenceId());
BindingDbt value(e, q, k, a);
TxnCtxt txn;
@@ -221,6 +241,7 @@
void BdbMessageStore::unbind(const PersistableExchange& e, const PersistableQueue& q,
const std::string& k, const FieldTable& a)
{
+ checkInit();
IdDbt key(e.getPersistenceId());
BindingDbt value(e, q, k, a);
@@ -237,6 +258,7 @@
void BdbMessageStore::recover(RecoveryManager& registry)
{
+ checkInit();
txn_list prepared;
recoverXids(prepared);
@@ -623,6 +645,7 @@
void BdbMessageStore::stage(PersistableMessage& msg)
{
+ checkInit();
TxnCtxt txn;
txn.begin(env);
@@ -642,6 +665,7 @@
}
void BdbMessageStore::destroy(PersistableMessage& msg)
{
+ checkInit();
u_int64_t messageId (msg.getPersistenceId());
if (messageId) {
Dbt key (&messageId, sizeof(messageId));
@@ -675,6 +699,7 @@
void BdbMessageStore::appendContent(const PersistableMessage& msg, const std::string& data)
{
+ checkInit();
u_int64_t messageId (msg.getPersistenceId());
if (messageId != 0) {
try {
@@ -702,6 +727,7 @@
}
void BdbMessageStore::loadContent(const PersistableMessage& msg, std::string& data, u_int64_t offset, u_int32_t length)
{
+ checkInit();
u_int64_t realOffset = offset + sizeof(u_int32_t)/*header length*/+ msg.encodedHeaderSize();
u_int64_t messageId (msg.getPersistenceId());
if (messageId != 0) {
@@ -729,8 +755,21 @@
}
}
+void BdbMessageStore::flush(const qpid::broker::PersistableQueue& queue)
+{
+ checkInit();
+ try {
+ JournalImpl* jc = static_cast<JournalImpl*>(queue.getExternalQueueStore());
+ if (jc) jc->flush();
+ }catch ( journal::jexception& e) {
+ std::string str;
+ THROW_STORE_EXCEPTION("Flush failed: " + e.to_string(str) );
+ }
+}
+
void BdbMessageStore::enqueue(TransactionContext* ctxt, PersistableMessage& msg, const PersistableQueue& queue)
{
+ checkInit();
u_int64_t queueId (queue.getPersistenceId());
u_int64_t messageId (msg.getPersistenceId());
if (queueId == 0) {
@@ -846,7 +885,7 @@
}
}catch ( journal::jexception& e) {
std::string str;
- std::cout << "-------------" << e << std::endl;
+// std::cout << "-------------" << e << std::endl;
if (dtokp) delete dtokp;
THROW_STORE_EXCEPTION("Enqueue failed: " +e.to_string(str) );
}catch (DbException& e) {
@@ -856,6 +895,7 @@
void BdbMessageStore::dequeue(TransactionContext* ctxt, PersistableMessage& msg, const PersistableQueue& queue)
{
+ checkInit();
u_int64_t queueId (queue.getPersistenceId());
u_int64_t messageId (msg.getPersistenceId());
if (messageId == 0) {
@@ -974,6 +1014,7 @@
u_int32_t BdbMessageStore::outstandingQueueAIO(const qpid::broker::PersistableQueue& /*queue*/)
{
+ checkInit();
return 0;
}
@@ -1034,6 +1075,7 @@
auto_ptr<TransactionContext> BdbMessageStore::begin()
{
+ checkInit();
// pass sequence number for c/a when using jrnl
TxnCtxt* txn(new TxnCtxt(&messageIdSequence ));
txn->begin(env);
@@ -1042,6 +1084,7 @@
std::auto_ptr<qpid::broker::TPCTransactionContext> BdbMessageStore::begin(const std::string& xid)
{
+ checkInit();
IdSequence* jtx = NULL;
if (usingJrnl()) jtx = &messageIdSequence;
@@ -1053,6 +1096,7 @@
void BdbMessageStore::prepare(qpid::broker::TPCTransactionContext& ctxt)
{
+ checkInit();
TPCTxnCtxt* txn = dynamic_cast<TPCTxnCtxt*>(&ctxt);
if(!txn) throw InvalidTransactionContextException();
@@ -1075,7 +1119,7 @@
void BdbMessageStore::commit(TransactionContext& ctxt)
{
-std::cout << " commit1" << std::flush;
+ checkInit();
TxnCtxt* txn(check(&ctxt));
if (txn->isTPC()) {
completed(*dynamic_cast<TPCTxnCtxt*>(txn), enqueueXidDb, dequeueXidDb, true);
@@ -1086,6 +1130,7 @@
void BdbMessageStore::abort(TransactionContext& ctxt)
{
+ checkInit();
TxnCtxt* txn(check(&ctxt));
if (txn->isTPC()) {
completed(*dynamic_cast<TPCTxnCtxt*>(txn), dequeueXidDb, enqueueXidDb, false);
@@ -1152,7 +1197,7 @@
string BdbMessageStore::getJrnlBaseDir()
{
std::stringstream dir;
- dir << "/var/rhm/" ;
+ dir << storeDir<< "/rhm/" ;
return dir.str();
}
@@ -1167,7 +1212,6 @@
dir << getJrnlBaseDir();
dir << std::setw(4);
dir << std::setfill('0');
-// const char* str = queueName; //queue.getName().c_str();
u_int32_t count = 0;
for (u_int32_t i=0; i < strlen(queueName); i++)
count += queueName[i];
Modified: store/trunk/cpp/lib/BdbMessageStore.h
===================================================================
--- store/trunk/cpp/lib/BdbMessageStore.h 2007-10-18 17:19:49 UTC (rev 1113)
+++ store/trunk/cpp/lib/BdbMessageStore.h 2007-10-19 01:34:08 UTC (rev 1114)
@@ -71,6 +71,10 @@
IdSequence queueIdSequence;
IdSequence exchangeIdSequence;
IdSequence messageIdSequence;
+ static bool useAsync;
+ std::string storeDir;
+ bool isInit;
+ const char* envPath;
void recoverQueues(TxnCtxt& txn, qpid::broker::RecoveryManager& recovery, queue_index& index,
txn_list& locked, message_index& messages);
@@ -113,12 +117,13 @@
void createJrnlQueue(const qpid::broker::PersistableQueue& queue);
string getJrnlDir(const qpid::broker::PersistableQueue& queue); //for exmaple /var/rhm/ + queueDir/
string getJrnlDir(const char* queueName);
- static inline bool usingJrnl() {return false;} // make configurable
+ static inline bool usingJrnl() {return useAsync;}
string getJrnlBaseDir();
+ inline void checkInit() { if (!isInit) init("/var",false); isInit = true;}
-
public:
BdbMessageStore(const char* envpath = 0);
+ void init(const std::string& dir, const bool async);
~BdbMessageStore();
void truncate();
@@ -149,6 +154,7 @@
void dequeue(qpid::broker::TransactionContext* ctxt,
qpid::broker::PersistableMessage& msg,
const qpid::broker::PersistableQueue& queue);
+ void flush(const qpid::broker::PersistableQueue& queue);
u_int32_t outstandingQueueAIO(const qpid::broker::PersistableQueue& queue);
18 years, 6 months
rhmessaging commits: r1113 - mgmt/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2007-10-18 13:19:49 -0400 (Thu, 18 Oct 2007)
New Revision: 1113
Modified:
mgmt/cumin/python/cumin/cluster.strings
mgmt/cumin/python/cumin/page.strings
mgmt/cumin/python/cumin/server.py
mgmt/cumin/python/cumin/server.strings
Log:
Adds a working clear filters link. Adds some more (as yet cosmetic)
fields and columns. Adds add links to each of the top-level tabs.
Modified: mgmt/cumin/python/cumin/cluster.strings
===================================================================
--- mgmt/cumin/python/cumin/cluster.strings 2007-10-18 17:15:28 UTC (rev 1112)
+++ mgmt/cumin/python/cumin/cluster.strings 2007-10-18 17:19:49 UTC (rev 1113)
@@ -125,31 +125,6 @@
}
</pre>
-[ClusterBrowser.css]
-.browser {
- width: 100%;
-}
-
-.browser .nav {
- width: 20%;
-}
-
-.browser .nav ul {
- margin: 0 0 1em 0;
-}
-
-.ClusterBrowser.groups h2 {
- color: #564979;
- font-size: 0.9em;
- border-bottom: 1px dotted #ddd;
- width: 80%;
- margin: 0 0 0.5em 0;
-}
-
-.browser .view {
- width: 80%;
-}
-
[ClusterBrowser.html]
<table class="browser">
<tr>
Modified: mgmt/cumin/python/cumin/page.strings
===================================================================
--- mgmt/cumin/python/cumin/page.strings 2007-10-18 17:15:28 UTC (rev 1112)
+++ mgmt/cumin/python/cumin/page.strings 2007-10-18 17:19:49 UTC (rev 1113)
@@ -99,6 +99,7 @@
h2 {
font-size: 1em;
font-weight: normal;
+ margin: 0 0 0.5em 0;
}
.oblock {
@@ -453,3 +454,18 @@
{items}
</table>
+
+[PClusterTab.html]
+<ul class="actions">
+ <li><a href="">Add Cluster</a></li>
+</ul>
+
+<table class="ClusterSet mobjects">
+ <tr>
+ <th>Cluster</th>
+ <th>Configuration</th>
+ <th>Status</th>
+ </tr>
+
+ {items}
+</table>
Modified: mgmt/cumin/python/cumin/server.py
===================================================================
--- mgmt/cumin/python/cumin/server.py 2007-10-18 17:15:28 UTC (rev 1112)
+++ mgmt/cumin/python/cumin/server.py 2007-10-18 17:19:49 UTC (rev 1113)
@@ -406,6 +406,13 @@
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_server_groups())
return self._render_filters(session, groups, self.group_tmpl)
Modified: mgmt/cumin/python/cumin/server.strings
===================================================================
--- mgmt/cumin/python/cumin/server.strings 2007-10-18 17:15:28 UTC (rev 1112)
+++ mgmt/cumin/python/cumin/server.strings 2007-10-18 17:19:49 UTC (rev 1113)
@@ -162,8 +162,7 @@
</div>
<div class="ServerBrowser servers">
<ul class="actions">
- <li><a href="">Add Server</a></li>
- <li><a href="">Shutdown Servers</a></li>
+ <li><a href="">Register New Servers</a></li>
</ul>
{servers}
@@ -187,7 +186,7 @@
<tr>
<td class="nav">
<ul class="actions">
- <li><a href="">Clear Filters</a></li>
+ <li><a href="{clear_filters_href}">Clear Filters</a></li>
</ul>
<h2>Filter by Group</h2>
@@ -199,7 +198,7 @@
</td>
<td class="view">
<ul class="actions">
- <li><a href="">Register Servers</a></li>
+ <li><a href="">Register New Servers</a></li>
</ul>
{servers}
</td>
@@ -217,6 +216,22 @@
[BrowserServers.html]
<form>
+
+<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>
+<br/><br/>
+
<table class="mobjects">
<tr>
<th><input type="checkbox"/></th>
18 years, 6 months
rhmessaging commits: r1112 - store/trunk/cpp.
by rhmessaging-commits@lists.jboss.org
Author: nunofsantos
Date: 2007-10-18 13:15:28 -0400 (Thu, 18 Oct 2007)
New Revision: 1112
Modified:
store/trunk/cpp/Makefile.am
store/trunk/cpp/rhm.spec.in
Log:
add rhmd shell script, wrapper for qpidd shell script
Modified: store/trunk/cpp/Makefile.am
===================================================================
--- store/trunk/cpp/Makefile.am 2007-10-18 16:09:13 UTC (rev 1111)
+++ store/trunk/cpp/Makefile.am 2007-10-18 17:15:28 UTC (rev 1112)
@@ -1,7 +1,7 @@
AUTOMAKE_OPTIONS = 1.9.6 foreign
ACLOCAL_AMFLAGS = -I m4
-EXTRA_DIST = README etc/rhmd etc/rhmd.conf
+EXTRA_DIST = README etc/rhmd etc/rhmd.conf etc/rhmd.sh
sysconf_DATA = etc/rhmd.conf
Modified: store/trunk/cpp/rhm.spec.in
===================================================================
--- store/trunk/cpp/rhm.spec.in 2007-10-18 16:09:13 UTC (rev 1111)
+++ store/trunk/cpp/rhm.spec.in 2007-10-18 17:15:28 UTC (rev 1112)
@@ -38,7 +38,7 @@
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
install -Dp -m0755 etc/rhmd %{buildroot}%{_initrddir}/rhmd
-#install -Dp -m0555 etc/rhmd.conf %{buildroot}%{_sysconfdir}/rhmd.conf
+install -Dp -m0755 etc/rhmd.sh %{buildroot}%{_sbindir}/rhmd
rm -f %{buildroot}%_libdir/*.a
rm -f %{buildroot}%_libdir/*.la
rm -f %{buildroot}%_libdir/*.so
@@ -55,6 +55,7 @@
%_libdir/libbdbstore.so.0
%_libdir/libbdbstore.so.0.1.0
%_initrddir/rhmd
+%_sbindir/rhmd
%config(noreplace) %_sysconfdir/rhmd.conf
%post
18 years, 6 months
rhmessaging commits: r1111 - in mgmt: notes and 1 other directory.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2007-10-18 12:09:13 -0400 (Thu, 18 Oct 2007)
New Revision: 1111
Modified:
mgmt/cumin/python/cumin/page.py
mgmt/cumin/python/cumin/page.strings
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/notes/Todo
Log:
Adds a bunch of stub links for the demonstration, and adds more filter
types to the proposed server view.
Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py 2007-10-18 14:22:03 UTC (rev 1110)
+++ mgmt/cumin/python/cumin/page.py 2007-10-18 16:09:13 UTC (rev 1111)
@@ -172,7 +172,7 @@
self.tabs.add_tab(self.servers)
self.tabs.add_tab(self.ClusterTab(app, "clusters"))
- self.tabs.add_tab(self.ProfileTab(app, "profiles"))
+ self.tabs.add_tab(self.ServerProfileTab(app, "profiles"))
# Proposed
@@ -181,7 +181,7 @@
self.proposed.add_tab(self.PServerTab(app, "servers"))
self.proposed.add_tab(self.ServerGroupTab(app, "groups"))
- self.proposed.add_tab(self.ProfileTab(app, "profiles"))
+ self.proposed.add_tab(self.ServerProfileTab(app, "profiles"))
self.proposed.add_tab(self.PClusterTab(app, "clusters"))
class DiscussedTabs(TabSet):
@@ -208,13 +208,7 @@
def render_title(self, session, model):
return "Clusters (%i)" % len(model.get_clusters())
- class ProfileTab(Widget):
- def __init__(self, app, name):
- super(MainView.ProfileTab, self).__init__(app, name)
-
- self.profiles = ServerProfileSet(app, "profiles")
- self.add_child(self.profiles)
-
+ class ServerProfileTab(ServerProfileSet):
def render_title(self, session, model):
return "Server Profiles (%i)" % len(model.get_server_profiles())
@@ -229,4 +223,3 @@
class PClusterTab(ClusterSet):
def render_title(self, session, model):
return "Clusters (%i)" % len(model.get_clusters())
-
Modified: mgmt/cumin/python/cumin/page.strings
===================================================================
--- mgmt/cumin/python/cumin/page.strings 2007-10-18 14:22:03 UTC (rev 1110)
+++ mgmt/cumin/python/cumin/page.strings 2007-10-18 16:09:13 UTC (rev 1111)
@@ -425,3 +425,31 @@
<ul class="radiotabs tabs">{tabs}</ul>
<div class="radiotabs mode">{mode}</div>
</div>
+
+[ServerGroupTab.html]
+<ul class="actions">
+ <li><a href="">Add Server Group</a></li>
+</ul>
+
+<table class="mobjects">
+ <tr>
+ <th>Server</th>
+ <th>Configuration</th>
+ <th>Status</th>
+ </tr>
+
+ {items}
+</table>
+
+[ServerProfileTab.html]
+<ul class="actions">
+ <li><a href="">Add Server Profile</a></li>
+</ul>
+
+<table class="mobjects">
+ <tr>
+ <th>Server Profile</th>
+ </tr>
+
+ {items}
+</table>
Modified: mgmt/cumin/python/cumin/server.py
===================================================================
--- mgmt/cumin/python/cumin/server.py 2007-10-18 14:22:03 UTC (rev 1110)
+++ mgmt/cumin/python/cumin/server.py 2007-10-18 16:09:13 UTC (rev 1111)
@@ -7,6 +7,7 @@
from widgets import *
from parameters import *
from util import *
+from random import random
strings = StringCatalog(__file__)
@@ -56,6 +57,12 @@
else:
return none()
+ def render_item_status(self, session, server):
+ return "0 errors, 0 warnings"
+
+ def render_item_load(self, session, server):
+ return "%.2f" % random()
+
class ServerFrame(CuminFrame):
def __init__(self, app, name):
super(ServerFrame, self).__init__(app, name)
@@ -351,7 +358,7 @@
else:
return sorted_by(self.app.model.get_servers())
-class PServerBrowser(ServerSet):
+class PServerBrowser(Widget):
def __init__(self, app, name):
super(PServerBrowser, self).__init__(app, name)
@@ -368,22 +375,37 @@
self.cluster = ClusterParameter(app, "cluster")
self.add_parameter(self.cluster)
- def get_items(self, session, model):
- servers = sorted_by(model.get_servers())
- group = self.group.get(session)
- cluster = self.cluster.get(session)
+ self.servers = self.BrowserServers(app, "servers")
+ self.add_child(self.servers)
- for server in model.get_servers():
- if group and group not in server.server_group_items():
- servers.remove(server)
+ class BrowserServers(ServerSet):
+ def get_items(self, session, model):
+ servers = sorted_by(model.get_servers())
+ group = self.parent.group.get(session)
+ profile = self.parent.profile.get(session)
+ cluster = self.parent.cluster.get(session)
- if cluster and cluster is not server.get_cluster():
- # XXX
- if server in servers:
+ for server in model.get_servers():
+ if group and group not in server.server_group_items():
servers.remove(server)
- return servers
+ if profile and profile is not server.get_server_profile():
+ try:
+ servers.remove(server)
+ except ValueError:
+ pass
+
+ if cluster and cluster is not server.get_cluster():
+ try:
+ servers.remove(server)
+ except ValueError:
+ pass
+ return servers
+
+ def render_none(self, session, model):
+ return none()
+
def render_group_filters(self, session, model):
groups = sorted_by(model.get_server_groups())
return self._render_filters(session, groups, self.group_tmpl)
@@ -391,6 +413,13 @@
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_server_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)
Modified: mgmt/cumin/python/cumin/server.strings
===================================================================
--- mgmt/cumin/python/cumin/server.strings 2007-10-18 14:22:03 UTC (rev 1110)
+++ mgmt/cumin/python/cumin/server.strings 2007-10-18 16:09:13 UTC (rev 1111)
@@ -179,26 +179,29 @@
[BrowserGroups.group_html]
<li>{group_link}</li>
+[PServerBrowser.css]
+
+
[PServerBrowser.html]
<table class="browser">
<tr>
<td class="nav">
+ <ul class="actions">
+ <li><a 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">
- <table class="mobjects">
- <tr>
- <th>Server</th>
- <th>Profile</th>
- <th>Cluster</th>
- <th>Status</th>
- </tr>
-
- {items}
- </table>
+ <ul class="actions">
+ <li><a href="">Register Servers</a></li>
+ </ul>
+ {servers}
</td>
</tr>
</div>
@@ -212,3 +215,28 @@
[PServerBrowser.cluster_html]
<li>{cluster_link}</li>
+[BrowserServers.html]
+<form>
+<table class="mobjects">
+ <tr>
+ <th><input type="checkbox"/></th>
+ <th>Server</th>
+ <th>Profile</th>
+ <th>Cluster</th>
+ <th>Status</th>
+ <th>Load</th>
+ </tr>
+
+ {items}
+</table>
+</form>
+
+[BrowserServers.item_html]
+<tr>
+ <td><input type="checkbox"/ name="server" value="{item_id}"></td>
+ <td>{item_link}</td>
+ <td>{item_profile_link}</td>
+ <td>{item_cluster_link}</td>
+ <td>{item_status}</td>
+ <td>{item_load}</td>
+</tr>
Modified: mgmt/cumin/python/cumin/servergroup.py
===================================================================
--- mgmt/cumin/python/cumin/servergroup.py 2007-10-18 14:22:03 UTC (rev 1110)
+++ mgmt/cumin/python/cumin/servergroup.py 2007-10-18 16:09:13 UTC (rev 1111)
@@ -63,6 +63,9 @@
def render_name(self, session, group):
return group.name
+ def render_category(self, session, group):
+ return group.get_type().name
+
class GroupServerTab(Widget):
def render_title(self, session, group):
return "Servers (%i)" % len(group.server_items())
Modified: mgmt/cumin/python/cumin/servergroup.strings
===================================================================
--- mgmt/cumin/python/cumin/servergroup.strings 2007-10-18 14:22:03 UTC (rev 1110)
+++ mgmt/cumin/python/cumin/servergroup.strings 2007-10-18 16:09:13 UTC (rev 1111)
@@ -27,10 +27,12 @@
<dl class="properties">
<dt>Name</dt><dd>{name}</dd>
+ <dt>Category</dt><dd>{category}</dd>
</dl>
<ul class="actions">
<li><a href="">Edit This Server Group</a></li>
+ <li><a href="">Remove This Server Group</a></li>
</ul>
{tabs}
Modified: mgmt/notes/Todo
===================================================================
--- mgmt/notes/Todo 2007-10-18 14:22:03 UTC (rev 1110)
+++ mgmt/notes/Todo 2007-10-18 16:09:13 UTC (rev 1111)
@@ -99,3 +99,5 @@
* Add a CuminItemSet with add/edit/remove href parts
* Make the groups browser use common code with the cluster browser
+
+ * Rename ServerGroupType to ServerGroupCategory
18 years, 6 months
rhmessaging commits: r1110 - mgmt/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2007-10-18 10:22:03 -0400 (Thu, 18 Oct 2007)
New Revision: 1110
Modified:
mgmt/cumin/python/cumin/page.py
mgmt/cumin/python/cumin/page.strings
mgmt/cumin/python/cumin/server.py
mgmt/cumin/python/cumin/server.strings
mgmt/cumin/python/cumin/widgets.py
Log:
Adds the new alternative server browser to the proposed view.
Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py 2007-10-17 19:33:06 UTC (rev 1109)
+++ mgmt/cumin/python/cumin/page.py 2007-10-18 14:22:03 UTC (rev 1110)
@@ -179,7 +179,7 @@
self.proposed = self.ProposedTabs(app, "proposed")
self.add_tab(self.proposed)
- #self.proposed.add_tab(self.PServerTab(app, "servers"))
+ self.proposed.add_tab(self.PServerTab(app, "servers"))
self.proposed.add_tab(self.ServerGroupTab(app, "groups"))
self.proposed.add_tab(self.ProfileTab(app, "profiles"))
self.proposed.add_tab(self.PClusterTab(app, "clusters"))
@@ -222,6 +222,10 @@
def render_title(self, session, model):
return "Server Groups (%i)" % len(model.get_server_groups())
+ class PServerTab(PServerBrowser):
+ def render_title(self, session, model):
+ return "Servers (%i)" % len(model.get_servers())
+
class PClusterTab(ClusterSet):
def render_title(self, session, model):
return "Clusters (%i)" % len(model.get_clusters())
Modified: mgmt/cumin/python/cumin/page.strings
===================================================================
--- mgmt/cumin/python/cumin/page.strings 2007-10-17 19:33:06 UTC (rev 1109)
+++ mgmt/cumin/python/cumin/page.strings 2007-10-18 14:22:03 UTC (rev 1110)
@@ -366,6 +366,30 @@
content: url(resource?name=radio-button-checked.png);
}
+.browser {
+ width: 100%;
+}
+
+.browser .nav {
+ width: 20%;
+}
+
+.browser .nav ul {
+ margin: 0 0 1em 0;
+}
+
+.ClusterBrowser.groups h2 {
+ color: #564979;
+ font-size: 0.9em;
+ border-bottom: 1px dotted #ddd;
+ width: 80%;
+ margin: 0 0 0.5em 0;
+}
+
+.browser .view {
+ width: 80%;
+}
+
[CuminPage.html]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Modified: mgmt/cumin/python/cumin/server.py
===================================================================
--- mgmt/cumin/python/cumin/server.py 2007-10-17 19:33:06 UTC (rev 1109)
+++ mgmt/cumin/python/cumin/server.py 2007-10-18 14:22:03 UTC (rev 1110)
@@ -15,7 +15,7 @@
return "Servers (%i)" % len(model.get_servers())
def get_items(self, session, model):
- return sortedby(model.get_servers())
+ return sorted_by(model.get_servers())
def render_item_link(self, session, server):
branch = session.branch()
@@ -23,6 +23,28 @@
return mlink(branch.marshal(), "Server", server.name)
+ def render_item_group_link(self, session, server):
+ group = server.get_server_group()
+
+ if group:
+ branch = session.branch()
+ self.page().show_server_group(branch, group).show_view(branch)
+
+ return mlink(branch.marshal(), "ServerGroup", group.name)
+ else:
+ return none()
+
+ def render_item_profile_link(self, session, server):
+ profile = server.get_server_profile()
+
+ if profile:
+ branch = session.branch()
+ self.page().show_server_profile(branch, profile).show_view(branch)
+
+ return mlink(branch.marshal(), "ServerProfile", profile.name)
+ else:
+ return none()
+
def render_item_cluster_link(self, session, server):
cluster = server.get_cluster()
@@ -328,3 +350,72 @@
return sorted_by(group.server_items())
else:
return sorted_by(self.app.model.get_servers())
+
+class PServerBrowser(ServerSet):
+ def __init__(self, app, name):
+ super(PServerBrowser, 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 = ServerGroupParameter(app, "group")
+ self.add_parameter(self.group)
+
+ self.profile = ServerProfileParameter(app, "profile")
+ self.add_parameter(self.profile)
+
+ self.cluster = ClusterParameter(app, "cluster")
+ self.add_parameter(self.cluster)
+
+ def get_items(self, session, model):
+ servers = sorted_by(model.get_servers())
+ group = self.group.get(session)
+ cluster = self.cluster.get(session)
+
+ for server in model.get_servers():
+ if group and group not in server.server_group_items():
+ servers.remove(server)
+
+ if cluster and cluster is not server.get_cluster():
+ # XXX
+ if server in servers:
+ servers.remove(server)
+
+ return servers
+
+ def render_group_filters(self, session, model):
+ groups = sorted_by(model.get_server_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_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_)
+
Modified: mgmt/cumin/python/cumin/server.strings
===================================================================
--- mgmt/cumin/python/cumin/server.strings 2007-10-17 19:33:06 UTC (rev 1109)
+++ mgmt/cumin/python/cumin/server.strings 2007-10-18 14:22:03 UTC (rev 1110)
@@ -2,6 +2,7 @@
<table class="mobjects">
<tr>
<th>Server</th>
+ <th>Profile</th>
<th>Cluster</th>
<th>Status</th>
</tr>
@@ -12,6 +13,7 @@
[ServerSet.item_html]
<tr>
<td>{item_link}</td>
+ <td>{item_profile_link}</td>
<td>{item_cluster_link}</td>
<td>0 errors, 0 warnings</td>
</tr>
@@ -176,3 +178,37 @@
[BrowserGroups.group_html]
<li>{group_link}</li>
+
+[PServerBrowser.html]
+<table class="browser">
+ <tr>
+ <td class="nav">
+ <h2>Filter by Group</h2>
+ <ul class="slist">{group_filters}</ul>
+ <h2>Filter by Cluster</h2>
+ <ul class="slist">{cluster_filters}</ul>
+ </td>
+ <td class="view">
+ <table class="mobjects">
+ <tr>
+ <th>Server</th>
+ <th>Profile</th>
+ <th>Cluster</th>
+ <th>Status</th>
+ </tr>
+
+ {items}
+ </table>
+ </td>
+ </tr>
+</div>
+
+[PServerBrowser.group_html]
+<li>{group_link}</li>
+
+[PServerBrowser.profile_html]
+<li>{profile_link}</li>
+
+[PServerBrowser.cluster_html]
+<li>{cluster_link}</li>
+
Modified: mgmt/cumin/python/cumin/widgets.py
===================================================================
--- mgmt/cumin/python/cumin/widgets.py 2007-10-17 19:33:06 UTC (rev 1109)
+++ mgmt/cumin/python/cumin/widgets.py 2007-10-18 14:22:03 UTC (rev 1110)
@@ -5,8 +5,8 @@
strings = StringCatalog(__file__)
def link(href, content, class_=""):
- return "<a %s href=\"%s\">%s</a>" % \
- (class_ and "class=\"%s\"" % class_ or "", href, content)
+ return "<a%shref=\"%s\">%s</a>" % \
+ (class_ and " class=\"%s\" " % class_ or " ", href, content)
def mlink(href, variety, name, selected=False):
return link(href, name, selected and "selected")
18 years, 6 months
rhmessaging commits: r1109 - mgmt/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2007-10-17 15:33:06 -0400 (Wed, 17 Oct 2007)
New Revision: 1109
Modified:
mgmt/cumin/python/cumin/page.py
mgmt/cumin/python/cumin/servergroup.py
mgmt/cumin/python/cumin/servergroup.strings
Log:
Adds a server group frame and connects it to the proposed tab set.
Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py 2007-10-17 18:48:17 UTC (rev 1108)
+++ mgmt/cumin/python/cumin/page.py 2007-10-17 19:33:06 UTC (rev 1109)
@@ -31,8 +31,8 @@
self.server = ServerFrame(app, "server")
self.add_mode(self.server)
- self.cluster = ClusterFrame(app, "cluster")
- self.add_mode(self.cluster)
+ self.group = ServerGroupFrame(app, "group")
+ self.add_mode(self.group)
self.group_add = ServerGroupAdd(app, "groupadd")
self.add_mode(self.group_add)
@@ -43,6 +43,9 @@
self.profile = ServerProfileFrame(app, "profile")
self.add_mode(self.profile)
+ self.cluster = ClusterFrame(app, "cluster")
+ self.add_mode(self.cluster)
+
def save_session(self, session):
if self.app.debug:
self.app.debug.sessions.append(session)
@@ -77,10 +80,9 @@
return self.page().set_current_frame(session, frame)
def show_server_group(self, session, group):
- mode = self.show_view(session)
- mode.show_server_group(session, group)
- self.page().set_current_frame(session, self)
- return mode
+ frame = self.show_mode(session, self.group)
+ frame.set_object(session, group)
+ return self.page().set_current_frame(session, frame)
def show_server_group_add(self, session):
frame = self.show_mode(session, self.group_add)
@@ -126,6 +128,11 @@
frame = frame.show_exchange(session, exchange)
return self.set_current_frame(session, frame)
+ def server_group_href(self, session, group):
+ branch = session.branch()
+ self.show_server_group(branch, group).show_view(branch)
+ return branch.marshal()
+
def render_class(self, session, object):
return self.modal.get(session) and "modal"
@@ -173,6 +180,7 @@
self.add_tab(self.proposed)
#self.proposed.add_tab(self.PServerTab(app, "servers"))
+ self.proposed.add_tab(self.ServerGroupTab(app, "groups"))
self.proposed.add_tab(self.ProfileTab(app, "profiles"))
self.proposed.add_tab(self.PClusterTab(app, "clusters"))
@@ -200,10 +208,6 @@
def render_title(self, session, model):
return "Clusters (%i)" % len(model.get_clusters())
- class PClusterTab(ClusterSet):
- def render_title(self, session, model):
- return "Clusters (%i)" % len(model.get_clusters())
-
class ProfileTab(Widget):
def __init__(self, app, name):
super(MainView.ProfileTab, self).__init__(app, name)
@@ -213,3 +217,12 @@
def render_title(self, session, model):
return "Server Profiles (%i)" % len(model.get_server_profiles())
+
+ class ServerGroupTab(ServerGroupSet):
+ def render_title(self, session, model):
+ return "Server Groups (%i)" % len(model.get_server_groups())
+
+ class PClusterTab(ClusterSet):
+ def render_title(self, session, model):
+ return "Clusters (%i)" % len(model.get_clusters())
+
Modified: mgmt/cumin/python/cumin/servergroup.py
===================================================================
--- mgmt/cumin/python/cumin/servergroup.py 2007-10-17 18:48:17 UTC (rev 1108)
+++ mgmt/cumin/python/cumin/servergroup.py 2007-10-17 19:33:06 UTC (rev 1109)
@@ -8,15 +8,65 @@
strings = StringCatalog(__file__)
class ServerGroupSet(ItemSet):
- def render_item_content(self, session, group):
- branch = session.branch()
- self.page().show_server_group(branch, group).show_view(branch)
+ def get_items(self, session, model):
+ return sorted_by(model.get_server_groups())
+
+ def render_item_link(self, session, group):
+ href = self.page().server_group_href(session, group)
+ return mlink(href, "ServerGroup", group.name)
- return mlink(branch.marshal(), "ServerGroup", group.name)
+ def render_item_config(self, session, group):
+ count = len(group.server_items())
+ return "%i server%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 ServerGroupFrame(CuminFrame):
+ def __init__(self, app, name):
+ super(ServerGroupFrame, self).__init__(app, name)
+
+ self.param = ServerGroupParameter(app, "id")
+ self.add_parameter(self.param)
+ self.set_object_parameter(self.param)
+
+ self.view = ServerGroupView(app, "view")
+ self.add_child(self.view)
+
+ self.edit = ServerGroupEdit(app, "edit")
+ self.add_child(self.edit)
+
+ def show_view(self, session):
+ return self.show_mode(session, self.view)
+
+ def render_title(self, session, group):
+ return "Server Group '%s'" % group.name
+
+ def render_href(self, session, group):
+ return self.page().server_group_href(session, group)
+
+class ServerGroupView(Widget):
+ def __init__(self, app, name):
+ super(ServerGroupView, self).__init__(app, name)
+
+ self.tabs = TabSet(app, "tabs")
+ self.add_child(self.tabs)
+
+ self.tabs.add_tab(self.GroupServerTab(app, "servers"))
+
+ def render_title(self, session, group):
+ return "Server Group '%s'" % group.name
+
+ def render_name(self, session, group):
+ return group.name
+
+ class GroupServerTab(Widget):
+ def render_title(self, session, group):
+ return "Servers (%i)" % len(group.server_items())
+
class ServerGroupForm(CuminForm):
def __init__(self, app, name):
super(ServerGroupForm, self).__init__(app, name)
Modified: mgmt/cumin/python/cumin/servergroup.strings
===================================================================
--- mgmt/cumin/python/cumin/servergroup.strings 2007-10-17 18:48:17 UTC (rev 1108)
+++ mgmt/cumin/python/cumin/servergroup.strings 2007-10-17 19:33:06 UTC (rev 1109)
@@ -1,3 +1,40 @@
+[ServerGroupSet.html]
+<table class="mobjects">
+ <tr>
+ <th>Server</th>
+ <th>Configuration</th>
+ <th>Status</th>
+ </tr>
+
+ {items}
+</table>
+
+[ServerGroupSet.item_html]
+<tr>
+ <td>{item_link}</td>
+ <td>{item_config}</td>
+ <td>{item_status}</td>
+</tr>
+
+[ServerGroupView.html]
+<div class="mstatus green" id="{id}">
+ <h2>Server Group Status</h2>
+
+ <div>0 errors, 0 warnings</div>
+</div>
+
+<h1>{title}</h1>
+
+<dl class="properties">
+ <dt>Name</dt><dd>{name}</dd>
+</dl>
+
+<ul class="actions">
+ <li><a href="">Edit This Server Group</a></li>
+</ul>
+
+{tabs}
+
[ServerGroupForm.html]
<form id="{id}" class="ServerGroupForm mform" method="post" action="?">
<div class="head">
18 years, 6 months