[rhmessaging-commits] rhmessaging commits: r2248 - mgmt/trunk/cumin/python/cumin.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Tue Aug 5 16:47:27 EDT 2008
Author: eallen
Date: 2008-08-05 16:47:27 -0400 (Tue, 05 Aug 2008)
New Revision: 2248
Modified:
mgmt/trunk/cumin/python/cumin/model.py
Log:
Added Queue.bind and Exchange.remove
Modified: mgmt/trunk/cumin/python/cumin/model.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/model.py 2008-08-05 20:43:48 UTC (rev 2247)
+++ mgmt/trunk/cumin/python/cumin/model.py 2008-08-05 20:47:27 UTC (rev 2248)
@@ -1,7 +1,7 @@
-from mint import *
+from mint.schema import *
from wooly import *
from wooly.parameters import *
-from time import mktime
+from time import *
from datetime import datetime, timedelta
from types import *
from logging import getLogger
@@ -142,9 +142,6 @@
else:
return self.name
- def get_modifier(self, session):
- pass
-
def invoke(self, object, args={}):
invoc = CuminActionInvocation(self, object)
@@ -171,6 +168,15 @@
def do_invoke(self, object, args, completion):
pass
+ def getSessionFromRegistration(self, reg):
+ conn = self.cumin_model.data.getConnectionByRegistration(reg)
+ #for sess in conn.mconn.sessions:
+ # if conn.mconn.sessions[sess].name == conn.getSessionId():
+ # #this is active management session
+ # return conn.mconn.sessions[sess]
+ return conn.mconn.session(str(uuid4()))
+
+
class CuminActionInvocation(object):
def __init__(self, action, object):
self.action = action
@@ -182,10 +188,6 @@
def get_description(self, session):
verb = self.action.get_title(session)
- modifier = self.action.get_modifier(session)
- if modifier:
- verb = verb + modifier
-
if self.object:
cls = self.action.cumin_model.get_class_by_object(self.object)
object = cls.get_object_title(session, self.object)
@@ -555,6 +557,18 @@
def get_object_name(self, broker):
return broker.id
+def do_bind(session, queue, binding_info):
+ for exchange in binding_info:
+ if "key" in binding_info[exchange]:
+ binding_key = binding_info[exchange]["key"]
+ else:
+ binding_key = None
+
+ session.exchange_bind(queue=queue.name,
+ exchange=binding_info[exchange]["name"],
+ binding_key=binding_key,
+ arguments=binding_info[exchange]["arguments"])
+
class CuminQueue(RemoteClass):
def __init__(self, model):
super(CuminQueue, self).__init__(model, "queue", Queue, QueueStats)
@@ -729,6 +743,9 @@
action = self.Add(self, "add")
action.summary = True
+ action = self.Bind(self, "bind")
+ action.summary = True
+
def get_title(self, session):
return "Queue"
@@ -761,55 +778,48 @@
return "Remove"
def do_invoke(self, queue, args, completion):
- # once qpid management supports queue_delete
- # replace the rest of this method with
- #queue.delete(self.cumin_model.data, completion)
-
reg = queue.vhost.broker.registration
- conn = self.cumin_model.data.getConnectionByRegistration(reg)
- for sess in conn.mconn.sessions:
- if conn.mconn.sessions[sess].name == conn.getSessionId():
- #this is management session
- msess = conn.mconn.sessions[sess]
- msess.queue_delete(queue=queue.name)
- break
+ session = self.getSessionFromRegistration(reg)
+ session.queue_delete(queue=queue.name)
- #sess = conn.mconn.session(str(uuid4()))
- #sess.queue_delete(queue=queue.name)
completion("OK")
+ class Bind(CuminAction):
+ def show(self, session, queue):
+ frame = self.cumin_class.show_object(session, queue)
+ frame = frame.show_queue(session, queue)
+ return frame.show_queue_binding_add(session)
+
+ def get_title(self, session):
+ return "Bind"
+
+ def do_invoke(self, queue, args, completion):
+ reg = queue.vhost.broker.registration
+ session = self.getSessionFromRegistration(reg)
+ binding_info = args['exchange_keys']
+ do_bind(session, queue, binding_info)
+
+ completion("OK")
+
class Add(CuminAction):
def get_title(self, session):
- return "Add New Queue"
+ return "Add"
- def get_modifier(self, session):
- return " to "
-
def show(self, session, queue):
frame = self.cumin_class.show_object(session, queue)
return frame.show_queue_add(session)
- def do_invoke(self, reg, args, completion):
- conn = self.cumin_model.data.getConnectionByRegistration(reg)
- for sess in conn.mconn.sessions:
- if conn.mconn.sessions[sess].name == conn.getSessionId():
- #this is management session
- msess = conn.mconn.sessions[sess]
- msess.queue_declare(queue=args['queue'],
- exclusive=(args['exclusive'] == "exclusive"),
- durable=(args['durable'] == "durable"),
- auto_delete=(args['auto_delete'] == "autodel"))
-
- # optionally bind to exchanges
- exchange_keys = args['exchange_keys']
- for exchange_name in exchange_keys:
- msess.exchange_bind(queue=args['queue'],
- exchange=exchange_name,
- binding_key=exchange_keys[exchange_name])
-
- break
-
-
+ def do_invoke(self, queue, args, completion):
+ reg = args["reg"]
+ session = self.getSessionFromRegistration(reg)
+ session.queue_declare(queue=queue.name,
+ exclusive=queue.exclusive,
+ durable=queue.durable,
+ auto_delete=queue.autoDelete)
+
+ # optionally bind to exchanges
+ binding_info = args['exchange_keys']
+ do_bind(session, queue, binding_info)
completion("OK")
class CuminExchange(RemoteClass):
@@ -864,7 +874,9 @@
stat.unit = "message"
stat.category = "io"
- action = self.Add(self, "add")
+ self.Add(self, "add")
+
+ action = self.Remove(self, "remove")
action.summary = True
def show_object(self, session, exchange):
@@ -887,20 +899,32 @@
class Add(CuminAction):
def get_title(self, session):
- return "Add New Exchange"
+ return "Add"
def show(self, session, exchange):
frame = self.cumin_class.show_object(session, exchange)
return frame.show_exchange_add(session)
- def do_invoke(self, reg, exchange, completion):
- conn = self.cumin_model.data.getConnectionByRegistration(reg)
- for sess in conn.mconn.sessions:
- if conn.mconn.sessions[sess].name == conn.getSessionId():
- #this is management session
- msess = conn.mconn.sessions[sess]
- msess.exchange_declare(exchange=exchange.name,
+ def do_invoke(self, exchange, reg, completion):
+ session = self.getSessionFromRegistration(reg)
+ session.exchange_declare(exchange=exchange.name,
type=exchange.type)
+ # if the above call fails, an exception is
+ # raised and we won't get here
+ completion("OK")
+
+ class Remove(CuminAction):
+ def get_title(self, session):
+ return "Remove"
+
+ def show(self, session, exchange):
+ frame = self.cumin_class.show_object(session, exchange)
+ frame = frame.show_exchange(session, exchange)
+ return frame.show_remove(session)
+
+ def do_invoke(self, exchange, reg, completion):
+ session = self.getSessionFromRegistration(reg)
+ session.exchange_delete(exchange=exchange.name)
completion("OK")
@@ -916,12 +940,34 @@
stat.title = "Msgs. Matched"
stat.unit = "message"
+ action = self.Remove(self, "remove")
+ action.summary = True
+
def get_title(self, session):
return "Binding"
def get_object_name(self, binding):
- return ""
+ return "between %s and %s" % (binding.exchange.name, binding.queue.name)
+ class Remove(CuminAction):
+ def get_title(self, session):
+ return "Remove"
+
+ def show(self, session, binding):
+ frame = self.cumin_class.show_object(session, binding)
+ frame = frame.show_exchange(session, binding)
+ return frame.show_remove(session)
+
+ def do_invoke(self, binding, args, completion):
+ reg = binding.exchange.vhost.broker.registration
+ session = self.getSessionFromRegistration(reg)
+ session.exchange_unbind (queue=binding.queue.name,
+ exchange=binding.exchange.name,
+ binding_key=binding.bindingKey)
+
+ completion("OK")
+
+
class CuminRoute(RemoteClass):
def __init__(self, model):
super(CuminRoute, self).__init__(model, "route",
More information about the rhmessaging-commits
mailing list