rhmessaging commits: r1755 - in mgmt: cumin/python/cumin and 2 other directories.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 16:57:37 -0500 (Mon, 03 Mar 2008)
New Revision: 1755
Modified:
mgmt/
mgmt/cumin/python/cumin/
mgmt/cumin/python/wooly/
mgmt/mint/python/mint/
Log:
svn ignore pyc files at the top level
Property changes on: mgmt
___________________________________________________________________
Name: svn:ignore
+ *.pyc
Property changes on: mgmt/cumin/python/cumin
___________________________________________________________________
Name: svn:ignore
- *.pyc
Property changes on: mgmt/cumin/python/wooly
___________________________________________________________________
Name: svn:ignore
- *.pyc
Property changes on: mgmt/mint/python/mint
___________________________________________________________________
Name: svn:ignore
- *.pyc
18 years, 1 month
rhmessaging commits: r1754 - in mgmt: mint/python/mint and 1 other directory.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 16:43:05 -0500 (Mon, 03 Mar 2008)
New Revision: 1754
Modified:
mgmt/cumin/python/cumin/__init__.py
mgmt/cumin/python/cumin/model.py
mgmt/mint/python/mint/__init__.py
mgmt/mint/python/mint/schema.py
mgmt/mint/python/mint/schemaparser.py
Log:
Repairs mint method calls, so they now work with the new managment
api. Eliminates the brokerId argument to method calls on mint
classes, since that bit information is already present on the object.
Modified: mgmt/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/cumin/python/cumin/__init__.py 2008-03-03 17:30:06 UTC (rev 1753)
+++ mgmt/cumin/python/cumin/__init__.py 2008-03-03 21:43:05 UTC (rev 1754)
@@ -78,7 +78,7 @@
while True:
for reg in BrokerRegistration.select():
if reg.broker is None or reg.broker.managedBroker not in \
- self.model.data.connectedBrokers:
+ self.model.data.connections:
attempts = self.attempts.get(reg, 0)
attempts += 1
Modified: mgmt/cumin/python/cumin/model.py
===================================================================
--- mgmt/cumin/python/cumin/model.py 2008-03-03 17:30:06 UTC (rev 1753)
+++ mgmt/cumin/python/cumin/model.py 2008-03-03 21:43:05 UTC (rev 1754)
@@ -529,7 +529,7 @@
return "Purge"
def do_invoke(self, object, args, completion):
- object.purge(self.model.data, object.managedBroker, completion)
+ object.purge(self.model.data, completion)
class CuminExchange(CuminClass):
def __init__(self, model):
@@ -634,7 +634,7 @@
return "Close"
def do_invoke(self, object, args, completion):
- object.close(self.model.data, object.managedBroker, completion)
+ object.close(self.model.data, completion)
class CuminSession(CuminClass):
def __init__(self, model):
@@ -668,30 +668,28 @@
return "Close"
def do_invoke(self, object, args, completion):
- object.close(self.model.data, object.managedBroker, completion)
+ object.close(self.model.data, completion)
class Detach(CuminAction):
def get_title(self, session):
return "Detach"
def do_invoke(self, object, args, completion):
- object.detach(self.model.data, object.managedBroker, completion)
+ object.detach(self.model.data, completion)
class ResetLifespan(CuminAction):
def get_title(self, session):
return "Reset Lifespan"
def do_invoke(self, object, args, completion):
- object.resetLifespan(self.model.data, object.managedBroker,
- completion)
+ object.resetLifespan(self.model.data, completion)
class SolicitAck(CuminAction):
def get_title(self, session):
return "Solicit Acknowledgment"
def do_invoke(self, object, args, completion):
- object.solicitAck(self.model.data, object.managedBroker,
- completion)
+ object.solicitAck(self.model.data, completion)
class CuminBrokerRegistration(CuminClass):
def __init__(self, model):
Modified: mgmt/mint/python/mint/__init__.py
===================================================================
--- mgmt/mint/python/mint/__init__.py 2008-03-03 17:30:06 UTC (rev 1753)
+++ mgmt/mint/python/mint/__init__.py 2008-03-03 21:43:05 UTC (rev 1754)
@@ -151,6 +151,7 @@
def __init__(self, model, host, port):
self.model = model
self.key = "%s:%i" % (host, port)
+ self.objs = OriginalIdDict()
spec = qpid.spec.load(model.specPath)
self.client = qpid.client.Client(host, port, spec)
@@ -158,15 +159,11 @@
self.model.configCallback,
self.model.instCallback,
self.model.methodCallback)
- #self.mclient.schemaListener(self.model.schemaCallback)
+ self.mclient.schemaListener(self.model.schemaCallback)
self.state = None # in (None, "opening", "opened", "closing", "closed")
self.exception = None
- #self.broker.configListener(self.key, self.model.configCallback)
- #self.broker.instrumentationListener(self.key, self.model.instCallback)
- #self.broker.methodListener(self.key, self.model.methodCallback)
-
def isOpen(self):
return self.state == "opened"
@@ -179,7 +176,7 @@
# XXX I want this to happen after broker start, but the
# callbacks rely on the broker being in the connectedBrokers
# dict
- self.model.connectedBrokers[self.key] = ConnectedBroker()
+ self.model.connections[self.key] = self
self.client.start({})
self.mchan = managementChannel(self.client.channel(1),
@@ -189,8 +186,6 @@
self.mclient.addChannel(self.mchan)
- #self.model.connections[self.key] = self
-
self.state = "opened"
except Exception, e:
self.exception = e
@@ -198,6 +193,18 @@
finally:
self.model.lock.release()
+ def callMethod(self, objId, className, methodName, callback, args):
+ self.model.lock.acquire()
+ try:
+ self.model.currentMethodId += 1
+ seq = self.model.currentMethodId
+ self.model.outstandingMethodCalls[seq] = callback
+ finally:
+ self.model.lock.release()
+
+ self.mclient.callMethod(self.mchan, seq, objId,
+ className, methodName, args)
+
def close(self):
self.state = "closing"
@@ -206,8 +213,8 @@
try:
self.mclient.removeChannel(self.mchan)
- #del self.model.connections[self.key]
- del self.model.connectedBrokers[self.key]
+ del self.model.connections[self.key]
+
self.state = "closed"
except Exception, e:
self.exception = e
@@ -215,17 +222,17 @@
finally:
self.model.lock.release()
-class ConnectedBroker:
- def __init__(self):
- self.objs = OriginalIdDict()
-
def getByOriginalId(self, objType, idOriginal, create=False, args={}):
return self.objs.getByOriginalId(objType, idOriginal, create, args)
- def getByIndexAttrib(self, objType, indexAttrib, indexValue, parent, create=False, args={}):
- return self.objs.getByIndexAttrib(objType, indexAttrib, indexValue, create, args)
+ def getByIndexAttrib(self, objType, indexAttrib, indexValue, parent,
+ create=False, args={}):
+ return self.objs.getByIndexAttrib(objType, indexAttrib, indexValue,
+ create, args)
class MintModel:
+ staticInstance = None
+
def __init__(self, dataUri, specPath, debug=False):
self.dataUri = dataUri
self.specPath = specPath
@@ -233,10 +240,13 @@
self.currentMethodId = 1
self.outstandingMethodCalls = dict()
- self.connectedBrokers = dict()
+ self.connections = dict()
self.lock = Lock()
+ assert MintModel.staticInstance is None
+ MintModel.staticInstance = self
+
def check(self):
try:
connectionForURI(self.dataUri)
@@ -275,20 +285,27 @@
keys.append(key)
return keys
- def configCallback(self, broker, classInfo, list, timestamps):
+ def schemaCallback(self, brokerId, classInfo,
+ configs, metric, methods, events):
+ cls = schema.schemaNameToClassMap.get(classInfo[1])
+
+ if cls:
+ cls.classInfos[brokerId] = classInfo
+
+ def configCallback(self, brokerId, classInfo, list, timestamps):
self.log("\nCONFIG---------------------------------------------------")
objectName = classInfo[1]
self.log(objectName)
d = self.sanitizeDict(dict(list))
- connectedBroker = self.connectedBrokers[broker]
- d["managedBroker"] = broker
+ conn = self.connections[brokerId]
+ d["managedBroker"] = brokerId
d["recTime"] = datetime.fromtimestamp(timestamps[0]/1000000000)
d["creationTime"] = datetime.fromtimestamp(timestamps[1]/1000000000)
self.log(d)
for parentKey in self.findParentKeys(d):
convertedKey = self.convertRefKey(parentKey)
- d[convertedKey] = connectedBroker.getByOriginalId(schema.schemaNameToClassMap[convertedKey], d.pop(parentKey))
- obj = connectedBroker.getByOriginalId(schema.schemaNameToClassMap[objectName], d["idOriginal"], create=True)
+ d[convertedKey] = conn.getByOriginalId(schema.schemaNameToClassMap[convertedKey], d.pop(parentKey))
+ obj = conn.getByOriginalId(schema.schemaNameToClassMap[objectName], d["idOriginal"], create=True)
try:
obj.set(**d)
@@ -299,15 +316,15 @@
self.log("END CONFIG---------------------------------------------------\n")
return obj
- def instCallback(self, broker, classInfo, list, timestamps):
+ def instCallback(self, brokerId, classInfo, list, timestamps):
self.log("\nINST---------------------------------------------------")
objectName = classInfo[1]
self.log(objectName)
d = self.sanitizeDict(dict(list))
- connectedBroker = self.connectedBrokers[broker]
+ conn = self.connections[brokerId]
d["recTime"] = datetime.fromtimestamp(timestamps[0]/1000000000)
self.log(d)
- obj = connectedBroker.getByOriginalId(schema.schemaNameToClassMap[objectName], d[self.convertIdKey("id")])
+ obj = conn.getByOriginalId(schema.schemaNameToClassMap[objectName], d[self.convertIdKey("id")])
d[objectName] = obj
objNameStats = eval("schema.%sStats" % (schema.schemaNameToClassMap[objectName].__name__))
objStats = objNameStats.__new__(objNameStats)
Modified: mgmt/mint/python/mint/schema.py
===================================================================
--- mgmt/mint/python/mint/schema.py 2008-03-03 17:30:06 UTC (rev 1753)
+++ mgmt/mint/python/mint/schema.py 2008-03-03 21:43:05 UTC (rev 1754)
@@ -1,3 +1,4 @@
+import mint
from sqlobject import *
from datetime import datetime
@@ -14,6 +15,8 @@
statsPrev = ForeignKey('SystemStats', cascade='null', default=None)
sysId = StringCol(length=1000, default=None)
+ classInfos = dict() # brokerId => classInfo
+
class SystemStats(SQLObject):
class sqlmeta:
lazyUpdate = True
@@ -27,6 +30,8 @@
version = StringCol(length=1000, default=None)
machine = StringCol(length=1000, default=None)
+ classInfos = dict() # brokerId => classInfo
+
System.sqlmeta.addJoin(SQLMultipleJoin('SystemStats', joinMethodName='stats'))
@@ -53,36 +58,42 @@
dataDirEnabled = BoolCol(default=None)
dataDir = StringCol(length=1000, default=None)
- def joinCluster(self, model, managedBroker, callbackMethod, clusterName):
+ classInfos = dict() # brokerId => classInfo
+
+ def joinCluster(self, model, callback, clusterName):
actualArgs = dict()
actualArgs["clusterName"] = clusterName
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "joinCluster", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "joinCluster",
+ callback, args=actualArgs)
- def leaveCluster(self, model, managedBroker, callbackMethod):
+ def leaveCluster(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "leaveCluster", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "leaveCluster",
+ callback, args=actualArgs)
- def echo(self, model, managedBroker, callbackMethod, sequence, body):
+ def echo(self, model, callback, sequence, body):
"""Request a response to test the path to the management agent"""
actualArgs = dict()
actualArgs["sequence"] = sequence
actualArgs["body"] = body
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "echo", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "echo",
+ callback, args=actualArgs)
- def connect(self, model, managedBroker, callbackMethod, host, port):
+ def connect(self, model, callback, host, port):
"""Establish a connection to another broker"""
actualArgs = dict()
actualArgs["host"] = host
actualArgs["port"] = port
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "connect", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "connect",
+ callback, args=actualArgs)
System.sqlmeta.addJoin(SQLMultipleJoin('Broker', joinMethodName='brokers'))
@@ -95,6 +106,8 @@
recTime = TimestampCol(default=None)
broker = ForeignKey('Broker', cascade='null', default=None)
+ classInfos = dict() # brokerId => classInfo
+
Broker.sqlmeta.addJoin(SQLMultipleJoin('BrokerStats', joinMethodName='stats'))
@@ -112,6 +125,8 @@
broker = ForeignKey('Broker', cascade='null', default=None)
name = StringCol(length=1000, default=None)
+ classInfos = dict() # brokerId => classInfo
+
Broker.sqlmeta.addJoin(SQLMultipleJoin('Vhost', joinMethodName='vhosts'))
@@ -123,6 +138,8 @@
recTime = TimestampCol(default=None)
vhost = ForeignKey('Vhost', cascade='null', default=None)
+ classInfos = dict() # brokerId => classInfo
+
Vhost.sqlmeta.addJoin(SQLMultipleJoin('VhostStats', joinMethodName='stats'))
@@ -143,12 +160,15 @@
autoDelete = BoolCol(default=None)
exclusive = BoolCol(default=None)
- def purge(self, model, managedBroker, callbackMethod):
+ classInfos = dict() # brokerId => classInfo
+
+ def purge(self, model, callback):
"""Discard all messages on queue"""
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "purge", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "purge",
+ callback, args=actualArgs)
Vhost.sqlmeta.addJoin(SQLMultipleJoin('Queue', joinMethodName='queues'))
@@ -204,6 +224,8 @@
messageLatencyAverage = BigIntCol(default=None)
messageLatencySamples = BigIntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Queue.sqlmeta.addJoin(SQLMultipleJoin('QueueStats', joinMethodName='stats'))
@@ -222,6 +244,8 @@
name = StringCol(length=1000, default=None)
type = StringCol(length=1000, default=None)
+ classInfos = dict() # brokerId => classInfo
+
Vhost.sqlmeta.addJoin(SQLMultipleJoin('Exchange', joinMethodName='exchanges'))
@@ -245,6 +269,8 @@
byteDrops = BigIntCol(default=None)
byteRoutes = BigIntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Exchange.sqlmeta.addJoin(SQLMultipleJoin('ExchangeStats', joinMethodName='stats'))
@@ -263,6 +289,8 @@
queue = ForeignKey('Queue', cascade='null', default=None)
bindingKey = StringCol(length=1000, default=None)
+ classInfos = dict() # brokerId => classInfo
+
Exchange.sqlmeta.addJoin(SQLMultipleJoin('Binding', joinMethodName='bindings'))
Queue.sqlmeta.addJoin(SQLMultipleJoin('Binding', joinMethodName='bindings'))
@@ -277,6 +305,8 @@
binding = ForeignKey('Binding', cascade='null', default=None)
msgMatched = BigIntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Binding.sqlmeta.addJoin(SQLMultipleJoin('BindingStats', joinMethodName='stats'))
@@ -294,11 +324,14 @@
vhost = ForeignKey('Vhost', cascade='null', default=None)
address = StringCol(length=1000, default=None)
- def close(self, model, managedBroker, callbackMethod):
+ classInfos = dict() # brokerId => classInfo
+
+ def close(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "close", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "close",
+ callback, args=actualArgs)
Vhost.sqlmeta.addJoin(SQLMultipleJoin('Client', joinMethodName='clients'))
@@ -317,6 +350,8 @@
bytesFromClient = BigIntCol(default=None)
bytesToClient = BigIntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Client.sqlmeta.addJoin(SQLMultipleJoin('ClientStats', joinMethodName='stats'))
@@ -334,13 +369,16 @@
vhost = ForeignKey('Vhost', cascade='null', default=None)
address = StringCol(length=1000, default=None)
- def close(self, model, managedBroker, callbackMethod):
+ classInfos = dict() # brokerId => classInfo
+
+ def close(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "close", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "close",
+ callback, args=actualArgs)
- def bridge(self, model, managedBroker, callbackMethod, src, dest, key, src_is_queue, src_is_local):
+ def bridge(self, model, callback, src, dest, key, src_is_queue, src_is_local):
"""Bridge messages over the link"""
actualArgs = dict()
actualArgs["src"] = src
@@ -348,9 +386,10 @@
actualArgs["key"] = key
actualArgs["src_is_queue"] = src_is_queue
actualArgs["src_is_local"] = src_is_local
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "bridge", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "bridge",
+ callback, args=actualArgs)
Vhost.sqlmeta.addJoin(SQLMultipleJoin('Link', joinMethodName='links'))
@@ -369,6 +408,8 @@
bytesFromPeer = BigIntCol(default=None)
bytesToPeer = BigIntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Link.sqlmeta.addJoin(SQLMultipleJoin('LinkStats', joinMethodName='stats'))
@@ -391,11 +432,14 @@
srcIsQueue = BoolCol(default=None)
srcIsLocal = BoolCol(default=None)
- def close(self, model, managedBroker, callbackMethod):
+ classInfos = dict() # brokerId => classInfo
+
+ def close(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "close", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "close",
+ callback, args=actualArgs)
Link.sqlmeta.addJoin(SQLMultipleJoin('Bridge', joinMethodName='bridges'))
@@ -408,6 +452,8 @@
recTime = TimestampCol(default=None)
bridge = ForeignKey('Bridge', cascade='null', default=None)
+ classInfos = dict() # brokerId => classInfo
+
Bridge.sqlmeta.addJoin(SQLMultipleJoin('BridgeStats', joinMethodName='stats'))
@@ -428,29 +474,35 @@
client = ForeignKey('Client', cascade='null', default=None)
detachedLifespan = IntCol(default=None)
- def solicitAck(self, model, managedBroker, callbackMethod):
+ classInfos = dict() # brokerId => classInfo
+
+ def solicitAck(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "solicitAck", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "solicitAck",
+ callback, args=actualArgs)
- def detach(self, model, managedBroker, callbackMethod):
+ def detach(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "detach", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "detach",
+ callback, args=actualArgs)
- def resetLifespan(self, model, managedBroker, callbackMethod):
+ def resetLifespan(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "resetLifespan", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "resetLifespan",
+ callback, args=actualArgs)
- def close(self, model, managedBroker, callbackMethod):
+ def close(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "close", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "close",
+ callback, args=actualArgs)
Vhost.sqlmeta.addJoin(SQLMultipleJoin('Session', joinMethodName='sessions'))
@@ -468,6 +520,8 @@
expireTime = BigIntCol(default=None)
framesOutstanding = IntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Session.sqlmeta.addJoin(SQLMultipleJoin('SessionStats', joinMethodName='stats'))
@@ -485,25 +539,30 @@
session = ForeignKey('Session', cascade='null', default=None)
name = StringCol(length=1000, default=None)
- def throttle(self, model, managedBroker, callbackMethod, strength):
+ classInfos = dict() # brokerId => classInfo
+
+ def throttle(self, model, callback, strength):
"""Apply extra rate limiting to destination: 0 = Normal, 10 = Maximum"""
actualArgs = dict()
actualArgs["strength"] = strength
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "throttle", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "throttle",
+ callback, args=actualArgs)
- def stop(self, model, managedBroker, callbackMethod):
+ def stop(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "stop", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "stop",
+ callback, args=actualArgs)
- def start(self, model, managedBroker, callbackMethod):
+ def start(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "start", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "start",
+ callback, args=actualArgs)
Session.sqlmeta.addJoin(SQLMultipleJoin('Destination', joinMethodName='destinations'))
@@ -521,6 +580,8 @@
msgCredits = IntCol(default=None)
byteCredits = IntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Destination.sqlmeta.addJoin(SQLMultipleJoin('DestinationStats', joinMethodName='stats'))
@@ -538,6 +599,8 @@
destination = ForeignKey('Destination', cascade='null', default=None)
exchange = ForeignKey('Exchange', cascade='null', default=None)
+ classInfos = dict() # brokerId => classInfo
+
Destination.sqlmeta.addJoin(SQLMultipleJoin('Producer', joinMethodName='producers'))
Exchange.sqlmeta.addJoin(SQLMultipleJoin('Producer', joinMethodName='producers'))
@@ -553,6 +616,8 @@
msgsProduced = BigIntCol(default=None)
bytesProduced = BigIntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Producer.sqlmeta.addJoin(SQLMultipleJoin('ProducerStats', joinMethodName='stats'))
@@ -570,11 +635,14 @@
destination = ForeignKey('Destination', cascade='null', default=None)
queue = ForeignKey('Queue', cascade='null', default=None)
- def close(self, model, managedBroker, callbackMethod):
+ classInfos = dict() # brokerId => classInfo
+
+ def close(self, model, callback):
actualArgs = dict()
- methodId = model.registerCallback(callbackMethod)
- model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
- classToSchemaNameMap[self.__class__.__name__], "close", args=actualArgs, packageName="qpid")
+ conn = model.connections[self.managedBroker]
+ classInfo = self.classInfos[self.managedBroker]
+ conn.callMethod(self.idOriginal, classInfo, "close",
+ callback, args=actualArgs)
Destination.sqlmeta.addJoin(SQLMultipleJoin('Consumer', joinMethodName='consumers'))
@@ -594,6 +662,8 @@
unackedMessagesLow = IntCol(default=None)
unackedMessagesHigh = IntCol(default=None)
+ classInfos = dict() # brokerId => classInfo
+
Consumer.sqlmeta.addJoin(SQLMultipleJoin('ConsumerStats', joinMethodName='stats'))
Modified: mgmt/mint/python/mint/schemaparser.py
===================================================================
--- mgmt/mint/python/mint/schemaparser.py 2008-03-03 17:30:06 UTC (rev 1753)
+++ mgmt/mint/python/mint/schemaparser.py 2008-03-03 21:43:05 UTC (rev 1754)
@@ -9,7 +9,8 @@
self.pythonFilePath = pythonFilePath
self.dsn = dsn
self.style = MixedCaseUnderscoreStyle()
- self.pythonOutput = "from sqlobject import *\n"
+ self.pythonOutput = "import mint\n"
+ self.pythonOutput += "from sqlobject import *\n"
self.pythonOutput += "from datetime import datetime\n"
self.additionalPythonOutput = ""
self.currentClass = ""
@@ -86,6 +87,9 @@
args += "length=4000"
self.generateAttrib(self.attrNameFromDbColumn(elem["@name"]), self.dataTypesMap[elem["@type"]], args)
+ self.pythonOutput += "\n"
+ self.pythonOutput += " classInfos = dict() # brokerId => classInfo\n"
+
def startClass(self, schemaName, stats=False):
if (stats):
origPythonName = self.style.dbTableToPythonClass(schemaName)
@@ -126,13 +130,13 @@
formalArgs = formalArgs[:-2]
else:
formalArgs = ""
- self.pythonOutput += "\n def %s(self, model, managedBroker, callbackMethod%s):\n" % (elem["@name"], formalArgs)
+ self.pythonOutput += "\n def %s(self, model, callback%s):\n" % (elem["@name"], formalArgs)
self.pythonOutput += comment
self.pythonOutput += actualArgs
- self.pythonOutput += " methodId = model.registerCallback(callbackMethod)\n"
- self.pythonOutput += " model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \\\n"
- self.pythonOutput += " classToSchemaNameMap[self.__class__.__name__], \"%s\", " % (elem["@name"])
- self.pythonOutput += "args=actualArgs, packageName=\"qpid\")\n"
+ self.pythonOutput += " conn = model.connections[self.managedBroker]\n"
+ self.pythonOutput += " classInfo = self.classInfos[self.managedBroker]\n"
+ self.pythonOutput += " conn.callMethod(self.idOriginal, classInfo, \"%s\",\n" % elem["@name"]
+ self.pythonOutput += " callback, args=actualArgs)\n"
def endClass(self):
if (self.additionalPythonOutput != ""):
18 years, 1 month
rhmessaging commits: r1753 - in mgmt: notes and 1 other directory.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 12:30:06 -0500 (Mon, 03 Mar 2008)
New Revision: 1753
Modified:
mgmt/cumin/python/cumin/broker.py
mgmt/cumin/python/cumin/client.py
mgmt/cumin/python/cumin/queue.py
mgmt/cumin/python/cumin/system.py
mgmt/cumin/python/cumin/widgets.py
mgmt/cumin/python/cumin/widgets.strings
mgmt/notes/justin-todo.txt
Log:
Add a checkbox to table headers for selecting or deselecting all table
items.
Modified: mgmt/cumin/python/cumin/broker.py
===================================================================
--- mgmt/cumin/python/cumin/broker.py 2008-03-03 17:28:57 UTC (rev 1752)
+++ mgmt/cumin/python/cumin/broker.py 2008-03-03 17:30:06 UTC (rev 1753)
@@ -20,7 +20,7 @@
def __init__(self, app, name):
super(BrokerSet, self).__init__(app, name)
- self.ids = CheckboxIdColumn(app, "id")
+ self.ids = CheckboxIdColumn(app, "id", self)
self.add_column(self.ids)
self.add_form_parameter(self.ids)
Modified: mgmt/cumin/python/cumin/client.py
===================================================================
--- mgmt/cumin/python/cumin/client.py 2008-03-03 17:28:57 UTC (rev 1752)
+++ mgmt/cumin/python/cumin/client.py 2008-03-03 17:30:06 UTC (rev 1753)
@@ -15,7 +15,7 @@
def __init__(self, app, name):
super(ClientSet, self).__init__(app, name)
- self.ids = CheckboxIdColumn(app, "id")
+ self.ids = CheckboxIdColumn(app, "id", self)
self.add_column(self.ids)
col = self.AddressColumn(app, "addr")
@@ -329,7 +329,7 @@
def __init__(self, app, name):
super(ClientSessionSet, self).__init__(app, name)
- self.ids = CheckboxIdColumn(app, "id")
+ self.ids = CheckboxIdColumn(app, "id", self)
self.add_column(self.ids)
col = self.NameColumn(app, "name")
Modified: mgmt/cumin/python/cumin/queue.py
===================================================================
--- mgmt/cumin/python/cumin/queue.py 2008-03-03 17:28:57 UTC (rev 1752)
+++ mgmt/cumin/python/cumin/queue.py 2008-03-03 17:30:06 UTC (rev 1753)
@@ -20,7 +20,7 @@
def __init__(self, app, name):
super(QueueSet, self).__init__(app, name)
- self.ids = CheckboxIdColumn(app, "id")
+ self.ids = CheckboxIdColumn(app, "id", self)
self.add_column(self.ids)
col = self.NameColumn(app, "name")
Modified: mgmt/cumin/python/cumin/system.py
===================================================================
--- mgmt/cumin/python/cumin/system.py 2008-03-03 17:28:57 UTC (rev 1752)
+++ mgmt/cumin/python/cumin/system.py 2008-03-03 17:30:06 UTC (rev 1753)
@@ -13,7 +13,7 @@
def __init__(self, app, name):
super(SystemSet, self).__init__(app, name)
- self.ids = CheckboxIdColumn(app, "id")
+ self.ids = CheckboxIdColumn(app, "id", self)
self.add_column(self.ids)
self.add_form_parameter(self.ids)
Modified: mgmt/cumin/python/cumin/widgets.py
===================================================================
--- mgmt/cumin/python/cumin/widgets.py 2008-03-03 17:28:57 UTC (rev 1752)
+++ mgmt/cumin/python/cumin/widgets.py 2008-03-03 17:30:06 UTC (rev 1753)
@@ -494,25 +494,35 @@
return fmt_rate(stat.rate(binding), "msg", "sec")
class CheckboxIdColumn(SqlTableColumn):
- def __init__(self, app, name):
+ def __init__(self, app, name, form):
super(CheckboxIdColumn, self).__init__(app, name)
+ self.form = form
+ self.header_class = CheckboxIdColumnHeader
+
param = IntegerParameter(app, "param")
self.add_parameter(param)
- self.__list = ListParameter(app, "id", param)
- self.add_parameter(self.__list)
+ self.ids = ListParameter(app, "id", param)
+ self.add_parameter(self.ids)
def get(self, session):
- return self.__list.get(session)
+ return self.ids.get(session)
def clear(self, session):
- self.__list.set(session, list())
+ self.ids.set(session, list())
def do_render(self, session, data):
- name = self.__list.path()
+ name = self.ids.path()
id = data[self.name]
- attr = id in self.__list.get(session) and "checked=\"checked\"" or ""
+ attr = id in self.ids.get(session) and "checked=\"checked\"" or ""
t = "<td><input type=\"checkbox\" name=\"%s\" value=\"%i\" %s/></td>"
return t % (name, id, attr)
+
+class CheckboxIdColumnHeader(ItemTableColumnHeader):
+ def render_form_id(self, session, object):
+ return self.column.form.path()
+
+ def render_elem_name(self, session, object):
+ return self.column.ids.path()
Modified: mgmt/cumin/python/cumin/widgets.strings
===================================================================
--- mgmt/cumin/python/cumin/widgets.strings 2008-03-03 17:28:57 UTC (rev 1752)
+++ mgmt/cumin/python/cumin/widgets.strings 2008-03-03 17:30:06 UTC (rev 1753)
@@ -186,3 +186,21 @@
[TableHeader.item_html]
<th class="{item_class}"><a href="{item_href}">{item_content}</a></th>
+
+[CheckboxIdColumnHeader.javascript]
+function checkAll(control_id, form_id, elem_name) {
+ control = document.getElementById(control_id)
+ form = document.getElementById(form_id);
+
+ for (i = 0; i < form.elements.length; i++) {
+ elem = form.elements[i];
+
+ if (elem.name == elem_name) {
+ elem.checked = control.checked;
+ }
+ }
+}
+
+[CheckboxIdColumnHeader.html]
+<th><input id="{id}" type="checkbox"
+ onclick="checkAll('{id}', '{form_id}', '{elem_name}')"/></th>
Modified: mgmt/notes/justin-todo.txt
===================================================================
--- mgmt/notes/justin-todo.txt 2008-03-03 17:28:57 UTC (rev 1752)
+++ mgmt/notes/justin-todo.txt 2008-03-03 17:30:06 UTC (rev 1753)
@@ -1,7 +1,5 @@
Current
- * Bulk actions: Add javascript for the check-all behavior
-
* Tables: Add sort direction icon
* Tables: Make null values in tables dashes, not zeroes
18 years, 1 month
rhmessaging commits: r1752 - mgmt/cumin/bin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 12:28:57 -0500 (Mon, 03 Mar 2008)
New Revision: 1752
Modified:
mgmt/cumin/bin/cumin-bench
Log:
cli improvements to cumin-bench like those done for cumin and cumin-test
Modified: mgmt/cumin/bin/cumin-bench
===================================================================
--- mgmt/cumin/bin/cumin-bench 2008-03-03 17:26:37 UTC (rev 1751)
+++ mgmt/cumin/bin/cumin-bench 2008-03-03 17:28:57 UTC (rev 1752)
@@ -18,8 +18,8 @@
--profile"""
sys.exit(1)
-def do_main(home, data, hits):
- app = Cumin(home, data)
+def do_main(home, data, spec, hits):
+ app = Cumin(home, data, spec)
app.enable_debug()
@@ -44,13 +44,14 @@
if "-h" in sys.argv or "--help" in sys.argv:
usage()
- home = os.environ.get("CUMIN_HOME")
+ home = os.environ.get("CUMIN_HOME", os.path.normpath("/usr/share/cumin"))
+ spec = os.environ.get("AMQP_SPEC",
+ os.path.normpath("/usr/share/amqp/amqp.0-10-preview.xml"))
- if not home:
- home = os.path.normpath("/usr/share/cumin")
-
config = Config()
+ config.add_param("home", "s", home)
config.add_param("data", "s", "postgresql://cumin@localhost/cumin")
+ config.add_param("spec", "s", spec)
config.add_param("hits", "i", 1000)
config.add_param("profile", "b", False)
@@ -60,8 +61,9 @@
config.prt()
- home = os.environ["CUMIN_HOME"]
+ home = config.get("home")
data = config.get("data")
+ spec = config.get("spec")
hits = config.get("hits")
profile = config.get("profile")
@@ -72,7 +74,8 @@
prof = Profile()
try:
- statement = "do_main('%s', '%s', %i)" % (home, data, hits)
+ statement = "do_main('%s', '%s', '%s', %i)" % \
+ (home, data, spec, hits)
prof.run(statement)
@@ -94,7 +97,7 @@
stats.strip_dirs()
else:
- do_main(home, data, hits)
+ do_main(home, data, spec, hits)
if __name__ == "__main__":
main()
18 years, 1 month
rhmessaging commits: r1751 - mgmt/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 12:26:37 -0500 (Mon, 03 Mar 2008)
New Revision: 1751
Modified:
mgmt/cumin/python/cumin/page.py
Log:
Fix an NPE that shows up under cumin-bench
Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py 2008-03-03 15:32:36 UTC (rev 1750)
+++ mgmt/cumin/python/cumin/page.py 2008-03-03 17:26:37 UTC (rev 1751)
@@ -187,7 +187,7 @@
try:
user = ConsoleUser.selectBy(name=name)[0]
except IndexError:
- pass
+ user = None
if user:
user.lastLoggedOut = datetime.now()
18 years, 1 month
rhmessaging commits: r1750 - mgmt/cumin/python/wooly.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 10:32:36 -0500 (Mon, 03 Mar 2008)
New Revision: 1750
Modified:
mgmt/cumin/python/wooly/tables.py
mgmt/cumin/python/wooly/tables.strings
Log:
Render table headers using a distinct widget, so that the rendering
can be changed by different column implementations.
Modified: mgmt/cumin/python/wooly/tables.py
===================================================================
--- mgmt/cumin/python/wooly/tables.py 2008-03-03 13:33:49 UTC (rev 1749)
+++ mgmt/cumin/python/wooly/tables.py 2008-03-03 15:32:36 UTC (rev 1750)
@@ -12,6 +12,7 @@
self.cell_tmpl = Template(self, "cell_html")
self.columns = list()
+ self.headers_by_column = dict()
self.scolumn = Parameter(app, "col")
self.add_parameter(self.scolumn)
@@ -24,9 +25,16 @@
self.columns.append(column)
self.add_child(column)
+ header = column.header_class(self.app, "head", column)
+ self.set_header(column, header)
+
if self.scolumn.default is None:
self.scolumn.default = column.name
+ def set_header(self, column, header):
+ self.headers_by_column[column] = header
+ self.add_child(header)
+
def get_selected_column(self, session):
name = self.scolumn.get(session)
for column in self.columns:
@@ -52,32 +60,11 @@
writer = Writer()
for column in self.columns:
- self.header_html.render(session, (column, object), writer)
+ header = self.headers_by_column[column]
+ writer.write(header.render(session, object))
return writer.to_string()
- #def render_header_class(self, session, column):
- # return " ".join(column.get_classes(session))
-
- def render_header_href(self, session, args):
- column, object = args
- branch = session.branch()
-
- if column.name == self.scolumn.get(session):
- self.reversed.set(branch, not self.reversed.get(session))
-
- self.scolumn.set(branch, column.name)
-
- return branch.marshal()
-
- def render_header_content(self, session, args):
- column, object = args
- return column.get_title(session, object)
-
- def render_header_class_attr(self, session, args):
- column, object = args
- return column.get_class_attr(session)
-
def render_cells(self, session, item):
writer = Writer()
@@ -95,6 +82,7 @@
def __init__(self, app, name):
super(ItemTableColumn, self).__init__(app, name)
+ self.header_class = ItemTableColumnHeader
self.alignment = None
def get_column_key(self, session):
@@ -114,6 +102,29 @@
def render_value(self, session, value):
return str(value)
+class ItemTableColumnHeader(Widget):
+ def __init__(self, app, name, column):
+ super(ItemTableColumnHeader, self).__init__(app, name)
+
+ self.column = column
+
+ def render_href(self, session, object):
+ branch = session.branch()
+
+ if self.column.name == self.parent.scolumn.get(session):
+ self.parent.reversed.set(branch,
+ not self.parent.reversed.get(session))
+
+ self.parent.scolumn.set(branch, self.column.name)
+
+ return branch.marshal()
+
+ def render_content(self, session, object):
+ return self.column.get_title(session, object)
+
+ def render_class_attr(self, session, args):
+ return self.column.get_class_attr(session)
+
class SqlTable(ItemTable):
def __init__(self, app, name):
super(SqlTable, self).__init__(app, name)
Modified: mgmt/cumin/python/wooly/tables.strings
===================================================================
--- mgmt/cumin/python/wooly/tables.strings 2008-03-03 13:33:49 UTC (rev 1749)
+++ mgmt/cumin/python/wooly/tables.strings 2008-03-03 15:32:36 UTC (rev 1750)
@@ -4,8 +4,8 @@
<tbody>{items}</tbody>
</table>
-[ItemTable.header_html]
-<th {header_class_attr}><a href="{header_href}">{header_content}</a></th>
-
[ItemTable.item_html]
<tr>{cells}</tr>
+
+[ItemTableColumnHeader.html]
+<th {class_attr}><a href="{href}">{content}</a></th>
18 years, 1 month
rhmessaging commits: r1749 - mgmt/cumin/python/wooly.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 08:33:49 -0500 (Mon, 03 Mar 2008)
New Revision: 1749
Modified:
mgmt/cumin/python/wooly/tables.py
Log:
Don't generate broken html
Modified: mgmt/cumin/python/wooly/tables.py
===================================================================
--- mgmt/cumin/python/wooly/tables.py 2008-03-03 13:17:48 UTC (rev 1748)
+++ mgmt/cumin/python/wooly/tables.py 2008-03-03 13:33:49 UTC (rev 1749)
@@ -101,7 +101,7 @@
return self.name
def get_class_attr(self, session):
- return self.alignment == "right" and "class=\"ralign\""
+ return self.alignment == "right" and "class=\"ralign\"" or ""
def do_render(self, session, data):
content = self.render_content(session, data)
18 years, 1 month
rhmessaging commits: r1748 - in mgmt: notes and 1 other directory.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 08:17:48 -0500 (Mon, 03 Mar 2008)
New Revision: 1748
Modified:
mgmt/cumin/python/cumin/__init__.py
mgmt/cumin/python/cumin/model.py
mgmt/notes/justin-todo.txt
Log:
Rename data_url param to data_uri
Modified: mgmt/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/cumin/python/cumin/__init__.py 2008-03-03 13:08:47 UTC (rev 1747)
+++ mgmt/cumin/python/cumin/__init__.py 2008-03-03 13:17:48 UTC (rev 1748)
@@ -20,13 +20,13 @@
from action import ActionPage
class Cumin(Application):
- def __init__(self, home, data_url, spec_path):
+ def __init__(self, home, data_uri, spec_path):
super(Cumin, self).__init__()
self.home = home
self.add_resource_dir(os.path.join(self.home, "resources"))
- self.model = CuminModel(self, data_url, spec_path)
+ self.model = CuminModel(self, data_uri, spec_path)
self.broker_connect_thread = BrokerConnectThread(self.model)
self.main_page = CuminPage(self, "index.html")
Modified: mgmt/cumin/python/cumin/model.py
===================================================================
--- mgmt/cumin/python/cumin/model.py 2008-03-03 13:08:47 UTC (rev 1747)
+++ mgmt/cumin/python/cumin/model.py 2008-03-03 13:17:48 UTC (rev 1748)
@@ -11,9 +11,9 @@
from parameters import *
class CuminModel(object):
- def __init__(self, app, data_url, spec_path):
+ def __init__(self, app, data_uri, spec_path):
self.app = app
- self.data = MintModel(data_url, spec_path)
+ self.data = MintModel(data_uri, spec_path)
self.classes = list()
self.invocations = set()
Modified: mgmt/notes/justin-todo.txt
===================================================================
--- mgmt/notes/justin-todo.txt 2008-03-03 13:08:47 UTC (rev 1747)
+++ mgmt/notes/justin-todo.txt 2008-03-03 13:17:48 UTC (rev 1748)
@@ -10,8 +10,6 @@
Deferred
- * Rename data_url to data_uri
-
* Blow up if we try to call set_redirect_url twice in a session
* Need to add cherrypy bsd license to binary dist?
18 years, 1 month
rhmessaging commits: r1747 - in mgmt: cumin/python/cumin and 4 other directories.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-03 08:08:47 -0500 (Mon, 03 Mar 2008)
New Revision: 1747
Modified:
mgmt/cumin/bin/cumin
mgmt/cumin/bin/cumin-test
mgmt/cumin/python/cumin/__init__.py
mgmt/cumin/python/cumin/model.py
mgmt/mint/bin/mint-test
mgmt/mint/python/mint/__init__.py
mgmt/mint/python/mint/schema.py
mgmt/mint/python/mint/schemaparser.py
mgmt/mint/sql/schema.sql
mgmt/notes/justin-todo.txt
Log:
Updates mint with the newest management api changes.
Improves the command line interfaces of mint-test and cumin-test a
little. You can now directly override cumin home and the spec file
location.
Modified: mgmt/cumin/bin/cumin
===================================================================
--- mgmt/cumin/bin/cumin 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/cumin/bin/cumin 2008-03-03 13:08:47 UTC (rev 1747)
@@ -16,8 +16,8 @@
sys.exit(1)
-def do_main(home, data, port, debug):
- app = Cumin(home, data)
+def do_main(home, data, spec, port, debug):
+ app = Cumin(home, data, spec)
if debug:
app.enable_debug()
@@ -54,13 +54,14 @@
if "-h" in sys.argv or "--help" in sys.argv:
usage()
- home = os.environ.get("CUMIN_HOME")
+ home = os.environ.get("CUMIN_HOME", os.path.normpath("/usr/share/cumin"))
+ spec = os.environ.get("AMQP_SPEC",
+ os.path.normpath("/usr/share/amqp/amqp.0-10-preview.xml"))
- if not home:
- home = os.path.normpath("/usr/share/cumin")
-
config = Config()
+ config.add_param("home", "s", home)
config.add_param("data", "s", "postgresql://cumin@localhost/cumin")
+ config.add_param("spec", "s", spec)
config.add_param("port", "i", 80)
config.add_param("debug", "b", False)
@@ -70,11 +71,13 @@
config.prt()
+ home = config.get("home")
data = config.get("data")
+ spec = config.get("spec")
port = config.get("port")
debug = config.get("debug")
- do_main(home, data, port, debug)
+ do_main(home, data, spec, port, debug)
if __name__ == "__main__":
try:
Modified: mgmt/cumin/bin/cumin-test
===================================================================
--- mgmt/cumin/bin/cumin-test 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/cumin/bin/cumin-test 2008-03-03 13:08:47 UTC (rev 1747)
@@ -12,16 +12,18 @@
print """Usage: cumin-test OPTIONS...
Options:
-h, --help Print this message
- --data URL Connect to database at URL
+ --home PATH Use home directory at PATH
+ --data URI Connect to database at URI
(default postgesql://cumin@localhost/cumin)
+ --spec PATH Use AMQP spec file at PATH
--broker ADDRESS Register new test broker at ADDRESS
(default localhost:5672)
--profile
--debug"""
sys.exit(1)
-def do_main(home, data, broker_host, broker_port, debug):
- app = Cumin(home, data)
+def do_main(home, data, spec, broker_host, broker_port, debug):
+ app = Cumin(home, data, spec)
if debug or bench:
app.enable_debug()
@@ -46,13 +48,15 @@
if "-h" in sys.argv or "--help" in sys.argv:
usage()
- home = os.environ.get("CUMIN_HOME")
+ home = os.environ.get("CUMIN_HOME", os.path.normpath("/usr/share/cumin"))
+ spec = os.environ.get("AMQP_SPEC",
+ os.path.normpath("/usr/share/amqp/amqp.0-10-preview.xml"))
- if not home:
- home = os.path.normpath("/usr/share/cumin")
-
config = Config()
+
+ config.add_param("home", "s", home)
config.add_param("data", "s", "postgresql://cumin@localhost/cumin")
+ config.add_param("spec", "s", spec)
config.add_param("broker", "s", "localhost:5672")
config.add_param("debug", "b", True)
config.add_param("profile", "b", False)
@@ -63,8 +67,9 @@
config.prt()
- home = os.environ["CUMIN_HOME"]
+ home = config.get("home")
data = config.get("data")
+ spec = config.get("spec")
broker = config.get("broker")
debug = config.get("debug")
profile = config.get("profile")
@@ -78,7 +83,7 @@
prof = Profile()
try:
- statement = "do_main('%s', '%s', %s, %i, %r)" \
+ statement = "do_main('%s', '%s', '%s', %s, %i, %r)" \
% (home, data, host, port, debug)
prof.run(statement)
@@ -101,7 +106,7 @@
stats.strip_dirs()
else:
- do_main(home, data, host, port, debug)
+ do_main(home, data, spec, host, port, debug)
if __name__ == "__main__":
main()
Modified: mgmt/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/cumin/python/cumin/__init__.py 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/cumin/python/cumin/__init__.py 2008-03-03 13:08:47 UTC (rev 1747)
@@ -20,13 +20,13 @@
from action import ActionPage
class Cumin(Application):
- def __init__(self, home, data_url):
+ def __init__(self, home, data_url, spec_path):
super(Cumin, self).__init__()
self.home = home
self.add_resource_dir(os.path.join(self.home, "resources"))
- self.model = CuminModel(self, data_url)
+ self.model = CuminModel(self, data_url, spec_path)
self.broker_connect_thread = BrokerConnectThread(self.model)
self.main_page = CuminPage(self, "index.html")
Modified: mgmt/cumin/python/cumin/model.py
===================================================================
--- mgmt/cumin/python/cumin/model.py 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/cumin/python/cumin/model.py 2008-03-03 13:08:47 UTC (rev 1747)
@@ -11,9 +11,9 @@
from parameters import *
class CuminModel(object):
- def __init__(self, app, data_url):
+ def __init__(self, app, data_url, spec_path):
self.app = app
- self.data = MintModel(data_url)
+ self.data = MintModel(data_url, spec_path)
self.classes = list()
self.invocations = set()
Modified: mgmt/mint/bin/mint-test
===================================================================
--- mgmt/mint/bin/mint-test 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/mint/bin/mint-test 2008-03-03 13:08:47 UTC (rev 1747)
@@ -1,18 +1,18 @@
#!/usr/bin/env python
-import sys
-from qpid.management import ManagedBroker
+import sys, os
from time import sleep
from mint import *
def usage():
- print "Usage: mint-test DATABASE-URI BROKER-ADDRESS"
- print "Example: mint-test postgresql://cumin@postgresql/cumin localhost:5672"
+ print "Usage: mint-test [DATABASE-URI] [BROKER-ADDRESS]"
+ print "Example: mint-test postgresql://cumin@localhost/cumin localhost:5672"
sys.exit(1)
-def do_main(uri, host, port):
- model = MintModel(uri)
+def do_main(uri, spec, host, port):
+ model = MintModel(uri, spec, debug=True)
+ model.check()
model.init()
conn = BrokerConnection(model, host, port)
@@ -25,14 +25,25 @@
conn.close()
def main():
- if len(sys.argv) != 3:
+ if "-h" in sys.argv or "--help" in sys.argv:
usage()
- uri, addr = sys.argv[1:]
+ try:
+ uri = sys.argv[1]
+ except IndexError:
+ uri = "postgresql://cumin@localhost/cumin"
+
+ try:
+ addr = sys.argv[2]
+ except IndexError:
+ addr = "localhost:5672"
+
+ spec = os.environ.get("AMQP_SPEC",
+ os.path.normpath("/usr/share/amqp/amqp.0-10-preview.xml"))
host, port = addr.split(":")
try:
- do_main(uri, host, int(port))
+ do_main(uri, spec, host, int(port))
except KeyboardInterrupt:
pass
Modified: mgmt/mint/python/mint/__init__.py
===================================================================
--- mgmt/mint/python/mint/__init__.py 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/mint/python/mint/__init__.py 2008-03-03 13:08:47 UTC (rev 1747)
@@ -1,5 +1,5 @@
-import socket
-from qpid.management import ManagedBroker
+import os, socket, qpid
+from qpid.management import managementChannel, managementClient
from datetime import *
from sqlobject import *
from threading import Lock
@@ -22,9 +22,12 @@
joinMethodName="registrations"))
class BrokerRegistration(SQLObject):
- name = StringCol(length=1000, default=None)
- host = StringCol(length=1000, default=None)
- port = SmallIntCol(default=None)
+ class sqlmeta:
+ lazyUpdate = True
+
+ name = StringCol(length=1000, default=None, unique=True, notNone=True)
+ host = StringCol(length=1000, default=None, notNone=True)
+ port = SmallIntCol(default=None, notNone=True)
broker = ForeignKey("Broker", cascade="null", default=None)
groups = SQLRelatedJoin("BrokerGroup",
intermediateTable="broker_group_mapping",
@@ -46,33 +49,51 @@
print_exc()
class BrokerGroup(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
name = StringCol(length=1000, default=None)
brokers = SQLRelatedJoin("BrokerRegistration",
intermediateTable="broker_group_mapping",
createRelatedTable=False)
class BrokerGroupMapping(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
brokerRegistration = ForeignKey("BrokerRegistration", notNull=True,
cascade=True)
brokerGroup = ForeignKey("BrokerGroup", notNull=True, cascade=True)
unique = index.DatabaseIndex(brokerRegistration, brokerGroup, unique=True)
class BrokerCluster(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
name = StringCol(length=1000, default=None)
brokers = SQLMultipleJoin("BrokerRegistration", joinColumn="cluster_id")
class BrokerProfile(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
name = StringCol(length=1000, default=None)
brokers = SQLMultipleJoin("BrokerRegistration", joinColumn="profile_id")
properties = SQLMultipleJoin("ConfigProperty", joinColumn="profile_id")
class ConfigProperty(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
name = StringCol(length=1000, default=None)
value = StringCol(length=1000, default=None)
type = StringCol(length=1, default="s")
class ConsoleUser(SQLObject):
- name = StringCol(length=1000, default=None)
+ class sqlmeta:
+ lazyUpdate = True
+
+ name = StringCol(length=1000, default=None, unique=True, notNone=True)
password = StringCol(length=1000, default=None)
lastChallenged = TimestampCol(default=None)
lastLoggedOut = TimestampCol(default=None)
@@ -130,13 +151,21 @@
def __init__(self, model, host, port):
self.model = model
self.key = "%s:%i" % (host, port)
- self.broker = ManagedBroker(host=host, port=port)
+
+ spec = qpid.spec.load(model.specPath)
+ self.client = qpid.client.Client(host, port, spec)
+ self.mclient = managementClient(spec, None,
+ self.model.configCallback,
+ self.model.instCallback,
+ self.model.methodCallback)
+ #self.mclient.schemaListener(self.model.schemaCallback)
+
self.state = None # in (None, "opening", "opened", "closing", "closed")
self.exception = None
- self.broker.configListener(self.key, self.model.configCallback)
- self.broker.instrumentationListener(self.key, self.model.instCallback)
- self.broker.methodListener(self.key, self.model.methodCallback)
+ #self.broker.configListener(self.key, self.model.configCallback)
+ #self.broker.instrumentationListener(self.key, self.model.instCallback)
+ #self.broker.methodListener(self.key, self.model.methodCallback)
def isOpen(self):
return self.state == "opened"
@@ -144,16 +173,22 @@
def open(self):
self.state = "opening"
+ self.model.lock.acquire()
try:
- self.model.lock.acquire()
try:
# XXX I want this to happen after broker start, but the
# callbacks rely on the broker being in the connectedBrokers
# dict
- self.model.connectedBrokers[self.key] = ConnectedBroker(self.broker)
+ self.model.connectedBrokers[self.key] = ConnectedBroker()
- self.broker.start()
+ self.client.start({})
+ self.mchan = managementChannel(self.client.channel(1),
+ self.mclient.topicCb,
+ self.mclient.replyCb,
+ self.key)
+ self.mclient.addChannel(self.mchan)
+
#self.model.connections[self.key] = self
self.state = "opened"
@@ -166,13 +201,11 @@
def close(self):
self.state = "closing"
+ self.model.lock.acquire()
try:
- self.model.lock.acquire()
try:
- if not self.broker.isConnected():
- raise Exception("Broker not connected")
+ self.mclient.removeChannel(self.mchan)
- self.broker.stop()
#del self.model.connections[self.key]
del self.model.connectedBrokers[self.key]
self.state = "closed"
@@ -183,8 +216,7 @@
self.model.lock.release()
class ConnectedBroker:
- def __init__(self, managedBroker):
- self.managedBroker = managedBroker
+ def __init__(self):
self.objs = OriginalIdDict()
def getByOriginalId(self, objType, idOriginal, create=False, args={}):
@@ -194,12 +226,15 @@
return self.objs.getByIndexAttrib(objType, indexAttrib, indexValue, create, args)
class MintModel:
- def __init__(self, dataUri, debug=False):
+ def __init__(self, dataUri, specPath, debug=False):
self.dataUri = dataUri
+ self.specPath = specPath
+ self.debug = debug
+
self.currentMethodId = 1
self.outstandingMethodCalls = dict()
self.connectedBrokers = dict()
- self.debug = debug
+
self.lock = Lock()
def check(self):
@@ -240,8 +275,9 @@
keys.append(key)
return keys
- def configCallback(self, broker, objectName, list, timestamps):
+ def configCallback(self, broker, classInfo, list, timestamps):
self.log("\nCONFIG---------------------------------------------------")
+ objectName = classInfo[1]
self.log(objectName)
d = self.sanitizeDict(dict(list))
connectedBroker = self.connectedBrokers[broker]
@@ -263,8 +299,9 @@
self.log("END CONFIG---------------------------------------------------\n")
return obj
- def instCallback(self, broker, objectName, list, timestamps):
+ def instCallback(self, broker, classInfo, list, timestamps):
self.log("\nINST---------------------------------------------------")
+ objectName = classInfo[1]
self.log(objectName)
d = self.sanitizeDict(dict(list))
connectedBroker = self.connectedBrokers[broker]
Modified: mgmt/mint/python/mint/schema.py
===================================================================
--- mgmt/mint/python/mint/schema.py 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/mint/python/mint/schema.py 2008-03-03 13:08:47 UTC (rev 1747)
@@ -21,6 +21,11 @@
idOriginal = BigIntCol(default=None)
recTime = TimestampCol(default=None)
system = ForeignKey('System', cascade='null', default=None)
+ osName = StringCol(length=1000, default=None)
+ nodeName = StringCol(length=1000, default=None)
+ release = StringCol(length=1000, default=None)
+ version = StringCol(length=1000, default=None)
+ machine = StringCol(length=1000, default=None)
System.sqlmeta.addJoin(SQLMultipleJoin('SystemStats', joinMethodName='stats'))
@@ -42,13 +47,11 @@
maxConns = SmallIntCol(default=None)
connBacklog = SmallIntCol(default=None)
stagingThreshold = IntCol(default=None)
- storeLib = StringCol(length=1000, default=None)
- asyncStore = BoolCol(default=None)
mgmtPubInterval = SmallIntCol(default=None)
- initialDiskPageSize = IntCol(default=None)
- initialPagesPerQueue = IntCol(default=None)
clusterName = StringCol(length=1000, default=None)
version = StringCol(length=1000, default=None)
+ dataDirEnabled = BoolCol(default=None)
+ dataDir = StringCol(length=1000, default=None)
def joinCluster(self, model, managedBroker, callbackMethod, clusterName):
actualArgs = dict()
@@ -72,6 +75,15 @@
model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
classToSchemaNameMap[self.__class__.__name__], "echo", args=actualArgs, packageName="qpid")
+ def connect(self, model, managedBroker, callbackMethod, host, port):
+ """Establish a connection to another broker"""
+ actualArgs = dict()
+ actualArgs["host"] = host
+ actualArgs["port"] = port
+ methodId = model.registerCallback(callbackMethod)
+ model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
+ classToSchemaNameMap[self.__class__.__name__], "connect", args=actualArgs, packageName="qpid")
+
System.sqlmeta.addJoin(SQLMultipleJoin('Broker', joinMethodName='brokers'))
@@ -189,7 +201,8 @@
unackedMessagesHigh = IntCol(default=None)
messageLatencyMin = BigIntCol(default=None)
messageLatencyMax = BigIntCol(default=None)
- messageLatencyAvg = BigIntCol(default=None)
+ messageLatencyAverage = BigIntCol(default=None)
+ messageLatencySamples = BigIntCol(default=None)
Queue.sqlmeta.addJoin(SQLMultipleJoin('QueueStats', joinMethodName='stats'))
@@ -307,6 +320,97 @@
Client.sqlmeta.addJoin(SQLMultipleJoin('ClientStats', joinMethodName='stats'))
+class Link(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
+ idOriginal = BigIntCol(default=None)
+ recTime = TimestampCol(default=None)
+ creationTime = TimestampCol(default=None)
+ deletionTime = TimestampCol(default=None)
+ managedBroker = StringCol(length=1000, default=None)
+ statsCurr = ForeignKey('LinkStats', cascade='null', default=None)
+ statsPrev = ForeignKey('LinkStats', cascade='null', default=None)
+ vhost = ForeignKey('Vhost', cascade='null', default=None)
+ address = StringCol(length=1000, default=None)
+
+ def close(self, model, managedBroker, callbackMethod):
+ actualArgs = dict()
+ methodId = model.registerCallback(callbackMethod)
+ model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
+ classToSchemaNameMap[self.__class__.__name__], "close", args=actualArgs, packageName="qpid")
+
+ def bridge(self, model, managedBroker, callbackMethod, src, dest, key, src_is_queue, src_is_local):
+ """Bridge messages over the link"""
+ actualArgs = dict()
+ actualArgs["src"] = src
+ actualArgs["dest"] = dest
+ actualArgs["key"] = key
+ actualArgs["src_is_queue"] = src_is_queue
+ actualArgs["src_is_local"] = src_is_local
+ methodId = model.registerCallback(callbackMethod)
+ model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
+ classToSchemaNameMap[self.__class__.__name__], "bridge", args=actualArgs, packageName="qpid")
+
+Vhost.sqlmeta.addJoin(SQLMultipleJoin('Link', joinMethodName='links'))
+
+
+class LinkStats(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
+ idOriginal = BigIntCol(default=None)
+ recTime = TimestampCol(default=None)
+ link = ForeignKey('Link', cascade='null', default=None)
+ closing = BoolCol(default=None)
+ authIdentity = StringCol(length=1000, default=None)
+ framesFromPeer = BigIntCol(default=None)
+ framesToPeer = BigIntCol(default=None)
+ bytesFromPeer = BigIntCol(default=None)
+ bytesToPeer = BigIntCol(default=None)
+
+Link.sqlmeta.addJoin(SQLMultipleJoin('LinkStats', joinMethodName='stats'))
+
+
+class Bridge(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
+ idOriginal = BigIntCol(default=None)
+ recTime = TimestampCol(default=None)
+ creationTime = TimestampCol(default=None)
+ deletionTime = TimestampCol(default=None)
+ managedBroker = StringCol(length=1000, default=None)
+ statsCurr = ForeignKey('BridgeStats', cascade='null', default=None)
+ statsPrev = ForeignKey('BridgeStats', cascade='null', default=None)
+ link = ForeignKey('Link', cascade='null', default=None)
+ channelId = SmallIntCol(default=None)
+ src = StringCol(length=1000, default=None)
+ dest = StringCol(length=1000, default=None)
+ key = StringCol(length=1000, default=None)
+ srcIsQueue = BoolCol(default=None)
+ srcIsLocal = BoolCol(default=None)
+
+ def close(self, model, managedBroker, callbackMethod):
+ actualArgs = dict()
+ methodId = model.registerCallback(callbackMethod)
+ model.connectedBrokers[managedBroker].managedBroker.method(methodId, self.idOriginal, \
+ classToSchemaNameMap[self.__class__.__name__], "close", args=actualArgs, packageName="qpid")
+
+Link.sqlmeta.addJoin(SQLMultipleJoin('Bridge', joinMethodName='bridges'))
+
+
+class BridgeStats(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
+ idOriginal = BigIntCol(default=None)
+ recTime = TimestampCol(default=None)
+ bridge = ForeignKey('Bridge', cascade='null', default=None)
+
+Bridge.sqlmeta.addJoin(SQLMultipleJoin('BridgeStats', joinMethodName='stats'))
+
+
class Session(SQLObject):
class sqlmeta:
lazyUpdate = True
@@ -509,6 +613,10 @@
schemaNameToClassMap['binding'] = Binding
classToSchemaNameMap['Client'] = 'client'
schemaNameToClassMap['client'] = Client
+classToSchemaNameMap['Link'] = 'link'
+schemaNameToClassMap['link'] = Link
+classToSchemaNameMap['Bridge'] = 'bridge'
+schemaNameToClassMap['bridge'] = Bridge
classToSchemaNameMap['Session'] = 'session'
schemaNameToClassMap['session'] = Session
classToSchemaNameMap['Destination'] = 'destination'
Modified: mgmt/mint/python/mint/schemaparser.py
===================================================================
--- mgmt/mint/python/mint/schemaparser.py 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/mint/python/mint/schemaparser.py 2008-03-03 13:08:47 UTC (rev 1747)
@@ -24,7 +24,7 @@
self.dataTypesMap["uint8"] = self.dataTypesMap["hilo8"] = self.dataTypesMap["count8"] = self.dataTypesMap["mma8"] = "SmallIntCol"
self.dataTypesMap["uint16"] = self.dataTypesMap["hilo16"] = self.dataTypesMap["count16"] = self.dataTypesMap["mma16"] = "SmallIntCol"
self.dataTypesMap["uint32"] = self.dataTypesMap["hilo32"] = self.dataTypesMap["count32"] = self.dataTypesMap["mma32"] = "IntCol"
- self.dataTypesMap["uint64"] = self.dataTypesMap["hilo64"] = self.dataTypesMap["count64"] = self.dataTypesMap["mma64"] = "BigIntCol"
+ self.dataTypesMap["uint64"] = self.dataTypesMap["hilo64"] = self.dataTypesMap["count64"] = self.dataTypesMap["mma64"] = self.dataTypesMap["mmaTime"] = "BigIntCol"
self.dataTypesMap["absTime"] = self.dataTypesMap["deltaTime"] = "BigIntCol"
self.dataTypesMap["bool"] = "BoolCol"
self.dataTypesMap["sstr"] = self.dataTypesMap["lstr"] = "StringCol"
Modified: mgmt/mint/sql/schema.sql
===================================================================
--- mgmt/mint/sql/schema.sql 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/mint/sql/schema.sql 2008-03-03 13:08:47 UTC (rev 1747)
@@ -22,9 +22,9 @@
CREATE TABLE broker_registration (
id SERIAL PRIMARY KEY,
- name VARCHAR(1000),
- host VARCHAR(1000),
- port SMALLINT,
+ name VARCHAR(1000) NOT NULL UNIQUE,
+ host VARCHAR(1000) NOT NULL,
+ port SMALLINT NOT NULL,
broker_id INT,
cluster_id INT,
profile_id INT
@@ -39,7 +39,7 @@
CREATE TABLE console_user (
id SERIAL PRIMARY KEY,
- name VARCHAR(1000),
+ name VARCHAR(1000) NOT NULL UNIQUE,
password VARCHAR(1000),
last_challenged TIMESTAMP,
last_logged_out TIMESTAMP
@@ -67,6 +67,31 @@
msg_matched BIGINT
);
+CREATE TABLE bridge (
+ id SERIAL PRIMARY KEY,
+ id_original BIGINT,
+ rec_time TIMESTAMP,
+ creation_time TIMESTAMP,
+ deletion_time TIMESTAMP,
+ managed_broker VARCHAR(1000),
+ stats_curr_id INT,
+ stats_prev_id INT,
+ link_id INT,
+ channel_id SMALLINT,
+ src VARCHAR(1000),
+ dest VARCHAR(1000),
+ key VARCHAR(1000),
+ src_is_queue BOOL,
+ src_is_local BOOL
+);
+
+CREATE TABLE bridge_stats (
+ id SERIAL PRIMARY KEY,
+ id_original BIGINT,
+ rec_time TIMESTAMP,
+ bridge_id INT
+);
+
CREATE TABLE broker (
id SERIAL PRIMARY KEY,
id_original BIGINT,
@@ -82,13 +107,11 @@
max_conns SMALLINT,
conn_backlog SMALLINT,
staging_threshold INT,
- store_lib VARCHAR(1000),
- async_store BOOL,
mgmt_pub_interval SMALLINT,
- initial_disk_page_size INT,
- initial_pages_per_queue INT,
cluster_name VARCHAR(1000),
- version VARCHAR(1000)
+ version VARCHAR(1000),
+ data_dir_enabled BOOL,
+ data_dir VARCHAR(1000)
);
CREATE TABLE broker_stats (
@@ -207,6 +230,32 @@
byte_routes BIGINT
);
+CREATE TABLE link (
+ id SERIAL PRIMARY KEY,
+ id_original BIGINT,
+ rec_time TIMESTAMP,
+ creation_time TIMESTAMP,
+ deletion_time TIMESTAMP,
+ managed_broker VARCHAR(1000),
+ stats_curr_id INT,
+ stats_prev_id INT,
+ vhost_id INT,
+ address VARCHAR(1000)
+);
+
+CREATE TABLE link_stats (
+ id SERIAL PRIMARY KEY,
+ id_original BIGINT,
+ rec_time TIMESTAMP,
+ link_id INT,
+ closing BOOL,
+ auth_identity VARCHAR(1000),
+ frames_from_peer BIGINT,
+ frames_to_peer BIGINT,
+ bytes_from_peer BIGINT,
+ bytes_to_peer BIGINT
+);
+
CREATE TABLE producer (
id SERIAL PRIMARY KEY,
id_original BIGINT,
@@ -291,7 +340,8 @@
unacked_messages_high INT,
message_latency_min BIGINT,
message_latency_max BIGINT,
- message_latency_avg BIGINT
+ message_latency_average BIGINT,
+ message_latency_samples BIGINT
);
CREATE TABLE session (
@@ -336,7 +386,12 @@
id SERIAL PRIMARY KEY,
id_original BIGINT,
rec_time TIMESTAMP,
- system_id INT
+ system_id INT,
+ os_name VARCHAR(1000),
+ node_name VARCHAR(1000),
+ release VARCHAR(1000),
+ version VARCHAR(1000),
+ machine VARCHAR(1000)
);
CREATE TABLE vhost (
@@ -379,6 +434,14 @@
ALTER TABLE binding_stats ADD CONSTRAINT binding_id_exists FOREIGN KEY (binding_id) REFERENCES binding (id) ON DELETE SET NULL;
+ALTER TABLE bridge ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id) REFERENCES bridge_stats (id) ON DELETE SET NULL;
+
+ALTER TABLE bridge ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id) REFERENCES bridge_stats (id) ON DELETE SET NULL;
+
+ALTER TABLE bridge ADD CONSTRAINT link_id_exists FOREIGN KEY (link_id) REFERENCES link (id) ON DELETE SET NULL;
+
+ALTER TABLE bridge_stats ADD CONSTRAINT bridge_id_exists FOREIGN KEY (bridge_id) REFERENCES bridge (id) ON DELETE SET NULL;
+
ALTER TABLE broker ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id) REFERENCES broker_stats (id) ON DELETE SET NULL;
ALTER TABLE broker ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id) REFERENCES broker_stats (id) ON DELETE SET NULL;
@@ -421,6 +484,14 @@
ALTER TABLE exchange_stats ADD CONSTRAINT exchange_id_exists FOREIGN KEY (exchange_id) REFERENCES exchange (id) ON DELETE SET NULL;
+ALTER TABLE link ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id) REFERENCES link_stats (id) ON DELETE SET NULL;
+
+ALTER TABLE link ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id) REFERENCES link_stats (id) ON DELETE SET NULL;
+
+ALTER TABLE link ADD CONSTRAINT vhost_id_exists FOREIGN KEY (vhost_id) REFERENCES vhost (id) ON DELETE SET NULL;
+
+ALTER TABLE link_stats ADD CONSTRAINT link_id_exists FOREIGN KEY (link_id) REFERENCES link (id) ON DELETE SET NULL;
+
ALTER TABLE producer ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id) REFERENCES producer_stats (id) ON DELETE SET NULL;
ALTER TABLE producer ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id) REFERENCES producer_stats (id) ON DELETE SET NULL;
Modified: mgmt/notes/justin-todo.txt
===================================================================
--- mgmt/notes/justin-todo.txt 2008-03-01 20:00:42 UTC (rev 1746)
+++ mgmt/notes/justin-todo.txt 2008-03-03 13:08:47 UTC (rev 1747)
@@ -8,12 +8,10 @@
* Get rid of single object confirms
- * Add broker reg name unique constraint and validation
-
- * Add unique constraint to user name, and deal with it in cumin-admin
-
Deferred
+ * Rename data_url to data_uri
+
* Blow up if we try to call set_redirect_url twice in a session
* Need to add cherrypy bsd license to binary dist?
18 years, 1 month
rhmessaging commits: r1746 - mgmt/basil/python/basil.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-03-01 15:00:42 -0500 (Sat, 01 Mar 2008)
New Revision: 1746
Modified:
mgmt/basil/python/basil/__init__.py
Log:
Add a handler for method callbacks
Modified: mgmt/basil/python/basil/__init__.py
===================================================================
--- mgmt/basil/python/basil/__init__.py 2008-03-01 19:26:44 UTC (rev 1745)
+++ mgmt/basil/python/basil/__init__.py 2008-03-01 20:00:42 UTC (rev 1746)
@@ -13,7 +13,7 @@
self.packages = list()
self.method_sequence = 1
- self.outstanding_calls = dict()
+ self.method_calls = dict() # seq => (object, name, callback, kwargs)
self.lock = Lock()
@@ -43,6 +43,18 @@
finally:
self.lock.release()
+ def on_callback(self, context_id, seq, status_code, status_text, args):
+ self.lock.acquire()
+ try:
+ object, name, callback, kwargs = self.method_calls.pop(seq)
+ finally:
+ self.lock.release()
+
+ if callback:
+ callback(status_code, status_text, args)
+ else:
+ print object, name, "->", status_code, status_text, args
+
def get_package(self, class_info):
name = class_info[0].replace(".", "_")
@@ -114,7 +126,7 @@
setattr(self.python_class, spec[0], None)
for name in methods:
- def meth(this, callback, **kwargs):
+ def meth(this, callback=None, **kwargs):
this.basil_call(name, callback, **kwargs)
setattr(self.python_class, name, meth)
@@ -171,7 +183,7 @@
conn = model.connections[self.basil_context_id]
client, chan = conn.client, conn.chan
- model.outstanding_calls[seq] = callback
+ model.method_calls[seq] = (self, name, callback, kwargs)
client.method(chan, seq, self.basil_object_id, self.basil_class_info,
name, kwargs)
@@ -190,7 +202,7 @@
None,
self.model.on_config,
self.model.on_metric,
- self.context_id)
+ self.model.on_callback)
self.client.schemaListener(self.model.on_schema)
self.chan = None
@@ -209,4 +221,3 @@
def close(self):
self.client.removeChannel(self.chan)
- self.client.close()
18 years, 1 month