diff options
author | Pavel Moravec <pmoravec@apache.org> | 2014-06-26 08:42:04 +0000 |
---|---|---|
committer | Pavel Moravec <pmoravec@apache.org> | 2014-06-26 08:42:04 +0000 |
commit | 9435ad0cc0e49ad0e3fbf8e6b0696405c811f84c (patch) | |
tree | edb63691b36c88e6cc94dd423b679db20fe33838 /python | |
parent | beadf1e2c88cac3ffe5f94fbba9f711aaeea8007 (diff) | |
download | qpid-python-9435ad0cc0e49ad0e3fbf8e6b0696405c811f84c.tar.gz |
QPID-5836: [Python client] Report error when encountering unrecognized connection option
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1605704 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python')
-rw-r--r-- | python/qpid/messaging/endpoints.py | 91 |
1 files changed, 50 insertions, 41 deletions
diff --git a/python/qpid/messaging/endpoints.py b/python/qpid/messaging/endpoints.py index e69d7a10ae..a1d1af10b8 100644 --- a/python/qpid/messaging/endpoints.py +++ b/python/qpid/messaging/endpoints.py @@ -129,52 +129,61 @@ class Connection(Endpoint): @rtype: Connection @return: a disconnected Connection """ - if url is None: - url = options.get("host") + # List of all attributes + opt_keys = ['host', 'transport', 'port', 'heartbeat', 'username', 'password', 'sasl_mechanisms', 'sasl_service', 'sasl_min_ssf', 'sasl_max_ssf', 'reconnect', 'reconnect_timeout', 'reconnect_interval', 'reconnect_interval_min', 'reconnect_interval_max', 'reconnect_limit', 'reconnect_urls', 'reconnect_log', 'address_ttl', 'tcp_nodelay', 'ssl_keyfile', 'ssl_certfile', 'ssl_trustfile', 'ssl_skip_hostname_check', 'client_properties', 'protocol' ] + # Create all attributes on self and set to None. + for key in opt_keys: + setattr(self, key, None) + # Get values from options, check for invalid options + for (key, value) in options.iteritems(): + if key in opt_keys: + setattr(self, key, value) + else: + raise ConnectionError("Unknown connection option %s with value %s" %(key, value)) + + # Now handle items that need special treatment or have speical defaults: + if self.host: + url = default(url, self.host) if isinstance(url, basestring): - url = URL(url) + url = URL(url) self.host = url.host - if options.has_key("transport"): - self.transport = options.get("transport") - elif url.scheme == url.AMQP: - self.transport = "tcp" - elif url.scheme == url.AMQPS: - self.transport = "ssl" - else: - self.transport = "tcp" + + if self.transport is None: + if url.scheme == url.AMQP: + self.transport = "tcp" + elif url.scheme == url.AMQPS: + self.transport = "ssl" + else: + self.transport = "tcp" if self.transport in ("ssl", "tcp+tls"): - self.port = default(url.port, options.get("port", AMQPS_PORT)) + self.port = default(url.port, default(self.port, AMQPS_PORT)) else: - self.port = default(url.port, options.get("port", AMQP_PORT)) - self.heartbeat = options.get("heartbeat") - self.username = default(url.user, options.get("username", None)) - self.password = default(url.password, options.get("password", None)) - self.auth_username = None + self.port = default(url.port, default(self.port, AMQP_PORT)) - self.sasl_mechanisms = options.get("sasl_mechanisms") - self.sasl_service = options.get("sasl_service", "qpidd") - self.sasl_min_ssf = options.get("sasl_min_ssf") - self.sasl_max_ssf = options.get("sasl_max_ssf") - - self.reconnect = options.get("reconnect", False) - self.reconnect_timeout = options.get("reconnect_timeout") - reconnect_interval = options.get("reconnect_interval") - self.reconnect_interval_min = options.get("reconnect_interval_min", - default(reconnect_interval, 1)) - self.reconnect_interval_max = options.get("reconnect_interval_max", - default(reconnect_interval, 2*60)) - self.reconnect_limit = options.get("reconnect_limit") - self.reconnect_urls = options.get("reconnect_urls", []) - self.reconnect_log = options.get("reconnect_log", True) - - self.address_ttl = options.get("address_ttl", 60) - self.tcp_nodelay = options.get("tcp_nodelay", False) - - self.ssl_keyfile = options.get("ssl_keyfile", None) - self.ssl_certfile = options.get("ssl_certfile", None) - self.ssl_trustfile = options.get("ssl_trustfile", None) - self.ssl_skip_hostname_check = options.get("ssl_skip_hostname_check", False) - self.client_properties = options.get("client_properties", {}) + if self.protocol and self.protocol != "amqp0-10": + raise ConnectionError("Connection option 'protocol' value '" + value + "' unsupported (must be amqp0-10)") + + self.username = default(url.user, self.username) + self.password = default(url.password, self.password) + self.auth_username = None + self.sasl_service = default(self.sasl_service, "qpidd") + + self.reconnect = default(self.reconnect, False) + self.reconnect_interval_min = default(self.reconnect_interval_min, + default(self.reconnect_interval, 1)) + self.reconnect_interval_max = default(self.reconnect_interval_max, + default(self.reconnect_interval, 2*60)) + self.reconnect_urls = default(self.reconnect_urls, []) + self.reconnect_log = default(self.reconnect_log, True) + + self.address_ttl = default(self.address_ttl, 60) + self.tcp_nodelay = default(self.tcp_nodelay, False) + + self.ssl_keyfile = default(self.ssl_keyfile, None) + self.ssl_certfile = default(self.ssl_certfile, None) + self.ssl_trustfile = default(self.ssl_trustfile, None) + self.ssl_skip_hostname_check = default(self.ssl_skip_hostname_check, False) + self.client_properties = default(self.client_properties, {}) self.options = options |