[rhmessaging-commits] rhmessaging commits: r4342 - in mgmt/newdata/cumin/python/cumin: account and 2 other directories.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Fri Sep 24 17:53:28 EDT 2010
Author: justi9
Date: 2010-09-24 17:53:27 -0400 (Fri, 24 Sep 2010)
New Revision: 4342
Modified:
mgmt/newdata/cumin/python/cumin/account/widgets.py
mgmt/newdata/cumin/python/cumin/database.py
mgmt/newdata/cumin/python/cumin/grid/daemon.py
mgmt/newdata/cumin/python/cumin/messaging/binding.py
mgmt/newdata/cumin/python/cumin/messaging/broker.py
mgmt/newdata/cumin/python/cumin/messaging/brokergroup.py
mgmt/newdata/cumin/python/cumin/messaging/brokerlink.py
mgmt/newdata/cumin/python/cumin/messaging/queue.py
mgmt/newdata/cumin/python/cumin/parameters.py
mgmt/newdata/cumin/python/cumin/sqladapter.py
mgmt/newdata/cumin/python/cumin/stat.py
mgmt/newdata/cumin/python/cumin/widgets.py
Log:
More in the department of safe connection reuse and exception handling
Modified: mgmt/newdata/cumin/python/cumin/account/widgets.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/account/widgets.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/account/widgets.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -116,8 +116,7 @@
self.validate(session)
if not self.errors.get(session):
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
+ cursor = self.app.database.get_read_cursor()
cls = self.app.model.com_redhat_cumin.User
user = cls.get_object(cursor, name=name)
@@ -203,16 +202,20 @@
self.validate(session)
if not self.errors.get(session):
+ password = self.new0.get(session)
+
conn = self.app.database.get_connection()
- cursor = conn.cursor()
- password = self.new0.get(session)
+ try:
+ cursor = conn.cursor()
- user = session.client_session.attributes["login_session"].user
- user.password = crypt_password(password)
- user.save(cursor)
+ user = session.client_session.attributes["login_session"].user
+ user.password = crypt_password(password)
+ user.save(cursor)
- conn.commit()
+ conn.commit()
+ finally:
+ conn.close()
task = ObjectTask(self.app)
invoc = task.start(session, None)
Modified: mgmt/newdata/cumin/python/cumin/database.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/database.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/database.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -2,6 +2,8 @@
import re
import threading
+from psycopg2.extensions import *
+
from util import *
log = logging.getLogger("cumin.database")
@@ -20,14 +22,23 @@
#m = re.match(r"^([^:]+)://([^@]+)@([^/]+)/(.+)$", self.uri)
def get_connection(self):
- conn = getattr(self.thread_local, "connection", None)
+ return psycopg2.connect(self.dsn)
+ def get_read_connection(self):
+ key = "read_connection"
+ conn = getattr(self.thread_local, key, None)
+
if not conn or conn.closed:
- conn = psycopg2.connect(self.dsn)
- setattr(self.thread_local, "connection", conn)
+ conn = self.get_connection()
+ setattr(self.thread_local, key, conn)
+ conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
+
return conn
+ def get_read_cursor(self):
+ return self.get_read_connection().cursor()
+
def __repr__(self):
return self.__class__.__name__
Modified: mgmt/newdata/cumin/python/cumin/grid/daemon.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/daemon.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/grid/daemon.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -3,16 +3,11 @@
class DaemonFrameTask(ObjectFrameTask):
def get_master(self, system_name, invoc):
+ cursor = self.app.database.get_read_cursor()
+
cls = self.app.model.com_redhat_grid.Master
+ master = cls.get_object(cursor, System=system_name)
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
-
- try:
- master = cls.get_object(cursor, System=system_name)
- finally:
- conn.close()
-
if not master:
invoc.exception = Exception("Master daemon not running")
invoc.status = invoc.FAILED
@@ -58,16 +53,11 @@
class DaemonSelectorTask(ObjectSelectorTask):
def get_master(self, system_name, invoc):
+ cursor = self.app.database.get_read_cursor()
+
cls = self.app.model.com_redhat_grid.Master
+ master = cls.get_object(cursor, System=system_name)
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
-
- try:
- master = cls.get_object(cursor, System=system_name)
- finally:
- conn.close()
-
if not master:
invoc.exception = Exception("Master daemon not running")
invoc.status = invoc.FAILED
Modified: mgmt/newdata/cumin/python/cumin/messaging/binding.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/messaging/binding.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/messaging/binding.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -22,23 +22,20 @@
def do_invoke(self, invoc, binding):
assert isinstance(binding, RosemaryObject)
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
+ cursor = self.app.database.get_read_cursor()
queue = None
exchange = None
+
try:
- try:
- cls = self.app.model.org_apache_qpid_broker.Queue
- queue = cls.get_object_by_id(cursor, binding._queueRef_id)
- cls = self.app.model.org_apache_qpid_broker.Exchange
- exchange = cls.get_object_by_id(cursor, binding._exchangeRef_id)
- except Exception, e:
- invoc.status = "failed"
- invoc.exception = e
- log.exception(e)
- finally:
- conn.close()
+ cls = self.app.model.org_apache_qpid_broker.Queue
+ queue = cls.get_object_by_id(cursor, binding._queueRef_id)
+ cls = self.app.model.org_apache_qpid_broker.Exchange
+ exchange = cls.get_object_by_id(cursor, binding._exchangeRef_id)
+ except Exception, e:
+ invoc.status = "failed"
+ invoc.exception = e
+ log.exception(e)
if queue and exchange:
session = self.app.model.get_session_by_object(binding)
@@ -95,23 +92,20 @@
def do_invoke(self, invoc, binding):
assert isinstance(binding, RosemaryObject)
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
+ cursor = self.app.database.get_read_cursor()
queue = None
exchange = None
+
try:
- try:
- cls = self.app.model.org_apache_qpid_broker.Queue
- queue = cls.get_object_by_id(cursor, binding._queueRef_id)
- cls = self.app.model.org_apache_qpid_broker.Exchange
- exchange = cls.get_object_by_id(cursor, binding._exchangeRef_id)
- except Exception, e:
- invoc.status = "failed"
- invoc.exception = e
- log.exception(e)
- finally:
- conn.close()
+ cls = self.app.model.org_apache_qpid_broker.Queue
+ queue = cls.get_object_by_id(cursor, binding._queueRef_id)
+ cls = self.app.model.org_apache_qpid_broker.Exchange
+ exchange = cls.get_object_by_id(cursor, binding._exchangeRef_id)
+ except Exception, e:
+ invoc.status = "failed"
+ invoc.exception = e
+ log.exception(e)
if queue and exchange:
session = self.app.model.get_session_by_object(binding)
Modified: mgmt/newdata/cumin/python/cumin/messaging/broker.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/messaging/broker.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/messaging/broker.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -368,16 +368,19 @@
def do_invoke(self, invoc, broker, groups):
conn = self.app.database.get_connection()
- cursor = conn.cursor()
- cls = self.app.model.com_redhat_cumin.BrokerGroup
- all_groups = cls.get_selection(cursor)
- selected_ids = [x._id for x in groups]
+ try:
+ cursor = conn.cursor()
- cls = self.app.model.com_redhat_cumin.BrokerGroupMapping
- try:
+ cls = self.app.model.com_redhat_cumin.BrokerGroup
+ all_groups = cls.get_selection(cursor)
+ selected_ids = [x._id for x in groups]
+
+ cls = self.app.model.com_redhat_cumin.BrokerGroupMapping
+
for group in all_groups:
- existing_mapping = cls.get_selection(cursor, _broker_id=broker._id, _group_id=group._id)
+ existing_mapping = cls.get_selection \
+ (cursor, _broker_id=broker._id, _group_id=group._id)
if not group._id in selected_ids:
if len(existing_mapping) > 0:
existing_mapping[0].delete(cursor)
@@ -388,9 +391,9 @@
new_mapping._group_id = group._id
new_mapping.fake_qmf_values()
new_mapping.save(cursor)
+
+ conn.commit()
finally:
- cursor.close()
+ conn.close()
- conn.commit()
-
invoc.end()
Modified: mgmt/newdata/cumin/python/cumin/messaging/brokergroup.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/messaging/brokergroup.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/messaging/brokergroup.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -40,15 +40,16 @@
def do_invoke(self, invoc, group):
conn = self.app.database.get_connection()
- cursor = conn.cursor()
try:
+ cursor = conn.cursor()
+
group.delete(cursor)
+
+ conn.commit()
finally:
- cursor.close()
+ conn.close()
- conn.commit()
-
invoc.end()
class BrokerGroupInputSet(CheckboxInputSet):
@@ -123,22 +124,23 @@
def do_invoke(self, invoc, obj, name, description):
conn = self.app.database.get_connection()
- cursor = conn.cursor()
- cls = self.app.model.com_redhat_cumin.BrokerGroup
- group = cls.create_object(cursor)
+ try:
+ cursor = conn.cursor()
- group.name = name
- group.description = description
- group.fake_qmf_values()
+ cls = self.app.model.com_redhat_cumin.BrokerGroup
+ group = cls.create_object(cursor)
- try:
+ group.name = name
+ group.description = description
+ group.fake_qmf_values()
+
group.save(cursor)
+
+ conn.commit()
finally:
- cursor.close()
+ conn.close()
- conn.commit()
-
invoc.description = "Add broker group '%s'" % name
invoc.end()
@@ -173,15 +175,16 @@
group.description = description
conn = self.app.database.get_connection()
- cursor = conn.cursor()
try:
+ cursor = conn.cursor()
+
group.save(cursor)
+
+ conn.commit()
finally:
- cursor.close()
+ conn.close()
- conn.commit()
-
invoc.end()
class BrokerGroupEditForm(BrokerGroupForm):
@@ -215,15 +218,16 @@
def do_invoke(self, invoc, group):
conn = self.app.database.get_connection()
- cursor = conn.cursor()
try:
+ cursor = conn.cursor()
+
group.delete(cursor)
+
+ conn.commit()
finally:
- cursor.close()
+ conn.close()
- conn.commit()
-
invoc.end()
class BrokerEngroup(ObjectFrameTask):
Modified: mgmt/newdata/cumin/python/cumin/messaging/brokerlink.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/messaging/brokerlink.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/messaging/brokerlink.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -355,19 +355,11 @@
def do_invoke(self, invoc, vhost, host, port, durable, username,
password, transport):
- # XXX ugh. need to pass session into do_invoke instead of
- # this
+ cursor = self.app.database.get_read_cursor()
cls = self.app.model.org_apache_qpid_broker.Broker
+ obj = cls.get_object(cursor, _id=vhost._brokerRef_id)
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
-
- try:
- obj = cls.get_object(cursor, _id=vhost._brokerRef_id)
- finally:
- cursor.close()
-
if username == "anonymous":
mech = "ANONYMOUS"
else:
Modified: mgmt/newdata/cumin/python/cumin/messaging/queue.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/messaging/queue.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/messaging/queue.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -598,13 +598,11 @@
return "Move messages"
def do_invoke(self, invoc, vhost, src, dst, count):
+ cursor = self.app.database.get_read_cursor()
+
cls = self.app.model.org_apache_qpid_broker.Broker
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
- try:
- broker = cls.get_object_by_id(cursor, vhost._brokerRef_id)
- finally:
- cursor.close()
+ broker = cls.get_object_by_id(cursor, vhost._brokerRef_id)
+
self.qmf_call(invoc, broker, "queueMoveMessages", src, dst, count)
class MoveQueueMessages(MoveMessagesBase):
Modified: mgmt/newdata/cumin/python/cumin/parameters.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/parameters.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/parameters.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -34,14 +34,9 @@
self.cls = cls
def do_unmarshal(self, string):
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
+ cursor = self.app.database.get_read_cursor()
+ return self.cls.get_object_by_id(cursor, int(string))
- try:
- return self.cls.get_object_by_id(cursor, int(string))
- finally:
- cursor.close()
-
def do_marshal(self, obj):
return str(obj._id)
@@ -86,13 +81,9 @@
id = int(string)
cls = self.app.model.com_redhat_cumin.BrokerGroup
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
+ cursor = self.app.database.get_read_cursor()
- try:
- return cls.get_object_by_id(cursor, id)
- finally:
- cursor.close()
+ return cls.get_object_by_id(cursor, id)
class BrokerParameter(Parameter):
def do_unmarshal(self, string):
Modified: mgmt/newdata/cumin/python/cumin/sqladapter.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/sqladapter.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/sqladapter.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -16,15 +16,11 @@
def get_count(self, values):
# XXX urgh. I want session in here
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
+ cursor = self.app.database.get_read_cursor()
- try:
- self.query.execute(cursor, values, columns=("count(1)",))
+ self.query.execute(cursor, values, columns=("count(1)",))
- return cursor.fetchone()[0]
- finally:
- cursor.close()
+ return cursor.fetchone()[0]
def get_sql_options(self, options):
sql_options = SqlQueryOptions()
@@ -41,17 +37,13 @@
def get_data(self, values, options):
sql_options = self.get_sql_options(options)
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
+ cursor = self.app.database.get_read_cursor()
- try:
- self.query.execute(cursor, values,
- columns=self.columns,
- options=sql_options)
+ self.query.execute(cursor, values,
+ columns=self.columns,
+ options=sql_options)
- return cursor.fetchall()
- finally:
- cursor.close()
+ return cursor.fetchall()
class SqlField(DataAdapterField):
def __init__(self, adapter, column):
Modified: mgmt/newdata/cumin/python/cumin/stat.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/stat.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/stat.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -528,14 +528,10 @@
rosemary_package = self.app.model._packages_by_name[rpackage]
rosemary_class = rosemary_package._classes_by_name[rclass]
- id = self.widget.id.get(session)
- conn = self.app.database.get_connection()
- cursor = conn.cursor()
+ id = self.widget.id.get(session)
+ cursor = self.app.database.get_read_cursor()
- try:
- obj = rosemary_class.get_object(cursor, _id=id)
- finally:
- cursor.close()
+ obj = rosemary_class.get_object(cursor, _id=id)
self.set(session, obj)
Modified: mgmt/newdata/cumin/python/cumin/widgets.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/widgets.py 2010-09-24 15:37:19 UTC (rev 4341)
+++ mgmt/newdata/cumin/python/cumin/widgets.py 2010-09-24 21:53:27 UTC (rev 4342)
@@ -26,7 +26,7 @@
class CuminSqlDataSet(SqlDataSet):
def get_connection(self, session):
- return self.app.database.get_connection()
+ return self.app.database.get_read_connection()
class CuminHeartBeat(Widget):
""" the intent is to add stuff here """
@@ -770,7 +770,7 @@
return super(CuminTable.Links, self).do_render(session)
def get_connection(self, session):
- return self.app.database.get_connection()
+ return self.app.database.get_read_connection()
def do_process(self, session, *args):
super(CuminTable, self).do_process(session, *args)
@@ -1342,22 +1342,8 @@
self.error_tmpl = WidgetTemplate(self, "error_html")
self.not_found_tmpl = WidgetTemplate(self, "not_found_html")
- def service(self, session):
- try:
- return super(CuminPage, self).service(session)
- except PageRedirect:
- raise
- except:
- conn = self.app.database.get_connection()
-
- if not conn.closed:
- conn.rollback()
-
- raise
-
def do_process(self, session):
- conn = self.app.database.get_connection()
- session.cursor = conn.cursor()
+ session.cursor = self.app.database.get_read_cursor()
if not self.authorized(session):
page = self.app.login_page
More information about the rhmessaging-commits
mailing list