Author: aconway
Date: Wed Jan 25 18:48:31 2012
New Revision: 1235869
URL: http://svn.apache.org/viewvc?rev=1235869&view=rev
Log:
QPID-3603: Set connection.start client-properties argument from python.
The client-properties can be specified for old-API, new-API and
QMF connections.
Modified:
qpid/branches/qpid-3603-2/qpid/cpp/src/tests/test_env.sh.in
qpid/branches/qpid-3603-2/qpid/extras/qmf/src/py/qmf/console.py
qpid/branches/qpid-3603-2/qpid/python/qpid/delegates.py
qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/driver.py
qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/endpoints.py
Modified: qpid/branches/qpid-3603-2/qpid/cpp/src/tests/test_env.sh.in
URL:
http://svn.apache.org/viewvc/qpid/branches/qpid-3603-2/qpid/cpp/src/tests/test_env.sh.in?rev=1235869&r1=1235868&r2=1235869&view=diff
==============================================================================
--- qpid/branches/qpid-3603-2/qpid/cpp/src/tests/test_env.sh.in (original)
+++ qpid/branches/qpid-3603-2/qpid/cpp/src/tests/test_env.sh.in Wed Jan 25
18:48:31 2012
@@ -55,7 +55,7 @@ export RECEIVER_EXEC=$QPID_TEST_EXEC_DIR
export SENDER_EXEC=$QPID_TEST_EXEC_DIR/sender
# Path
-export
PATH=$top_builddir/src:$builddir:$srcdir:$PYTHON_COMMANDS:$QPID_TEST_EXEC_DIR:$PATH
+export
PATH=$top_builddir/src:$builddir:$srcdir:$PYTHON_COMMANDS:$QPID_TEST_EXEC_DIR:$PYTHON_DIR/commands:$PATH
# Modules
export TEST_STORE_LIB=$testmoduledir/test_store.so
Modified: qpid/branches/qpid-3603-2/qpid/extras/qmf/src/py/qmf/console.py
URL:
http://svn.apache.org/viewvc/qpid/branches/qpid-3603-2/qpid/extras/qmf/src/py/qmf/console.py?rev=1235869&r1=1235868&r2=1235869&view=diff
==============================================================================
--- qpid/branches/qpid-3603-2/qpid/extras/qmf/src/py/qmf/console.py (original)
+++ qpid/branches/qpid-3603-2/qpid/extras/qmf/src/py/qmf/console.py Wed Jan 25
18:48:31 2012
@@ -640,7 +640,7 @@ class Session:
return "QMF Console Session Manager (brokers: %d)" % len(self.brokers)
- def addBroker(self, target="localhost", timeout=None, mechanisms=None):
+ def addBroker(self, target="localhost", timeout=None, mechanisms=None,
**connectArgs):
""" Connect to a Qpid broker. Returns an object of type Broker.
Will raise an exception if the session is not managing the connection and
the connection setup to the broker fails.
@@ -650,7 +650,7 @@ class Session:
else:
url = BrokerURL(target)
broker = Broker(self, url.host, url.port, mechanisms, url.authName,
url.authPass,
- ssl = url.scheme == URL.AMQPS, connTimeout=timeout)
+ ssl = url.scheme == URL.AMQPS, connTimeout=timeout,
**connectArgs)
self.brokers.append(broker)
return broker
@@ -2240,7 +2240,8 @@ class Broker(Thread):
self.typecode = typecode
self.data = data
- def __init__(self, session, host, port, authMechs, authUser, authPass,
ssl=False, connTimeout=None):
+ def __init__(self, session, host, port, authMechs, authUser, authPass,
+ ssl=False, connTimeout=None, **connectArgs):
""" Create a broker proxy and setup a connection to the broker. Will raise
an exception if the connection fails and the session is not configured to
retry connection setup (manageConnections = False).
@@ -2274,7 +2275,7 @@ class Broker(Thread):
self.amqpSessionId = "%s.%d.%d" % (platform.uname()[1], os.getpid(),
Broker.nextSeq)
Broker.nextSeq += 1
self.last_age_check = time()
-
+ self.connectArgs = connectArgs
# thread control
self.setDaemon(True)
self.setName("Thread for broker: %s:%d" % (host, port))
@@ -2426,7 +2427,8 @@ class Broker(Thread):
else:
connSock = sock
self.conn = Connection(connSock, username=self.authUser,
password=self.authPass,
- mechanism = self.mechanisms, host=self.host,
service="qpidd")
+ mechanism = self.mechanisms, host=self.host,
service="qpidd",
+ **self.connectArgs)
def aborted():
raise Timeout("Waiting for connection to be established with broker")
oldAborted = self.conn.aborted
Modified: qpid/branches/qpid-3603-2/qpid/python/qpid/delegates.py
URL:
http://svn.apache.org/viewvc/qpid/branches/qpid-3603-2/qpid/python/qpid/delegates.py?rev=1235869&r1=1235868&r2=1235869&view=diff
==============================================================================
--- qpid/branches/qpid-3603-2/qpid/python/qpid/delegates.py (original)
+++ qpid/branches/qpid-3603-2/qpid/python/qpid/delegates.py Wed Jan 25 18:48:31
2012
@@ -159,7 +159,8 @@ class Client(Delegate):
def __init__(self, connection, username=None, password=None,
mechanism=None, heartbeat=None, **kwargs):
Delegate.__init__(self, connection)
-
+ self.client_properties=Client.PROPERTIES.copy()
+ self.client_properties.update(kwargs.get("client_properties",{}))
##
## self.acceptableMechanisms is the list of SASL mechanisms that the
client is willing to
## use. If it's None, then any mechanism is acceptable.
@@ -215,7 +216,8 @@ class Client(Delegate):
mech = "ANONYMOUS"
if not mech in mech_list:
raise Closed("No acceptable SASL authentication mechanism available")
- ch.connection_start_ok(client_properties=Client.PROPERTIES,
mechanism=mech, response=initial)
+ ch.connection_start_ok(client_properties=self.client_properties,
+ mechanism=mech, response=initial)
def connection_secure(self, ch, secure):
resp = None
Modified: qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/driver.py
URL:
http://svn.apache.org/viewvc/qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/driver.py?rev=1235869&r1=1235868&r2=1235869&view=diff
==============================================================================
--- qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/driver.py (original)
+++ qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/driver.py Wed Jan 25
18:48:31 2012
@@ -706,7 +706,10 @@ class Engine:
mech, initial = self._sasl.start(" ".join(mechs))
except sasl.SASLError, e:
raise AuthenticationFailure(text=str(e))
- self.write_op(ConnectionStartOk(client_properties=CLIENT_PROPERTIES,
+
+ client_properties = CLIENT_PROPERTIES.copy()
+ client_properties.update(self.connection.client_properties)
+ self.write_op(ConnectionStartOk(client_properties=client_properties,
mechanism=mech, response=initial))
def do_connection_secure(self, secure):
Modified: qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/endpoints.py
URL:
http://svn.apache.org/viewvc/qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/endpoints.py?rev=1235869&r1=1235868&r2=1235869&view=diff
==============================================================================
--- qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/endpoints.py (original)
+++ qpid/branches/qpid-3603-2/qpid/python/qpid/messaging/endpoints.py Wed Jan
25 18:48:31 2012
@@ -160,6 +160,7 @@ class Connection(Endpoint):
self.address_ttl = options.get("address_ttl", 60)
self.tcp_nodelay = options.get("tcp_nodelay", False)
+ self.client_properties = options.get("client_properties", {})
self.options = options
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]